本文整理汇总了C++中AttachedPictureFrame::mimeType方法的典型用法代码示例。如果您正苦于以下问题:C++ AttachedPictureFrame::mimeType方法的具体用法?C++ AttachedPictureFrame::mimeType怎么用?C++ AttachedPictureFrame::mimeType使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AttachedPictureFrame
的用法示例。
在下文中一共展示了AttachedPictureFrame::mimeType方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: LOG
/*!
* \brief Read the albumart images from the file
*
* \param tag The ID3v2 tag object in which to look for Album Art
* \returns A QList containing a list of AlbumArtImage's
* with the type and description of the APIC tag.
*/
AlbumArtList MetaIOID3::readAlbumArt(TagLib::ID3v2::Tag *tag)
{
AlbumArtList artlist;
if (!tag->frameListMap()["APIC"].isEmpty())
{
TagLib::ID3v2::FrameList apicframes = tag->frameListMap()["APIC"];
for(TagLib::ID3v2::FrameList::Iterator it = apicframes.begin();
it != apicframes.end(); ++it)
{
AttachedPictureFrame *frame =
static_cast<AttachedPictureFrame *>(*it);
// Assume a valid image would have at least
// 100 bytes of data (1x1 indexed gif is 35 bytes)
if (frame->picture().size() < 100)
{
LOG(VB_GENERAL, LOG_NOTICE,
"Music Scanner - Discarding APIC frame "
"with size less than 100 bytes");
continue;
}
AlbumArtImage *art = new AlbumArtImage();
if (frame->description().isEmpty())
art->m_description.clear();
else
art->m_description = TStringToQString(frame->description());
art->m_embedded = true;
art->m_hostname = gCoreContext->GetHostName();
QString ext = getExtFromMimeType(
TStringToQString(frame->mimeType()).toLower());
switch (frame->type())
{
case AttachedPictureFrame::FrontCover :
art->m_imageType = IT_FRONTCOVER;
art->m_filename = QString("front") + ext;
break;
case AttachedPictureFrame::BackCover :
art->m_imageType = IT_BACKCOVER;
art->m_filename = QString("back") + ext;
break;
case AttachedPictureFrame::Media :
art->m_imageType = IT_CD;
art->m_filename = QString("cd") + ext;
break;
case AttachedPictureFrame::LeafletPage :
art->m_imageType = IT_INLAY;
art->m_filename = QString("inlay") + ext;
break;
case AttachedPictureFrame::Artist :
art->m_imageType = IT_ARTIST;
art->m_filename = QString("artist") + ext;
break;
case AttachedPictureFrame::Other :
art->m_imageType = IT_UNKNOWN;
art->m_filename = QString("unknown") + ext;
break;
default:
LOG(VB_GENERAL, LOG_ERR, "Music Scanner - APIC tag found "
"with unsupported type");
delete art;
continue;
}
artlist.append(art);
}
}
return artlist;
}
示例2: get_attached_images
int internel_decoder::get_attached_images(char* url,stream_context *streamcontext){
stream_context *sc = streamcontext;
AVInputFormat *format = sc->pFormatCtx->iformat;
if(strcmp(format->name,"mp3") == 0){
sc->is_mp3 = 1;
}
/// If attached image of mp3 is not detected by ffmpeg then we use taglib to extract the attached image
if(strcmp(format->name,"mp3") == 0 && sc->videostream == -1){
TagLib::MPEG::File mp3File(url);
Tag * mp3Tag;
FrameList listOfMp3Frames;
AttachedPictureFrame * pictureFrame;
AVPacket packet;
//av_init_packet(&packet);
mp3Tag= mp3File.ID3v2Tag();
if(mp3Tag)
{
listOfMp3Frames = mp3Tag->frameListMap()["APIC"];
if(!listOfMp3Frames.isEmpty())
{
FrameList::ConstIterator it= listOfMp3Frames.begin();
// for(; it != listOfMp3Frames.end() ; it++)
// {
pictureFrame = static_cast<AttachedPictureFrame *> (*it);
//cout <<"mime-type:"<<pictureFrame->mimeType()<<endl;
AVCodec *codec;
const char *mime_attached = pictureFrame->mimeType().toCString(false);
const CodecMime *mime = ff_id3v2_mime_tags;
while (mime->id != AV_CODEC_ID_NONE) {
if (!av_strncasecmp(mime->str, mime_attached, sizeof(mime_attached))) {
codec = avcodec_find_decoder(mime->id);
cout <<"mime-type:"<<mime->str<<endl;
break;
}
mime++;
}
if(mime->id != AV_CODEC_ID_NONE){
av_new_packet (&packet, pictureFrame->picture().size());
memcpy(packet.data,pictureFrame->picture().data(),pictureFrame->picture().size());
// packet.data = (uint8_t*)pictureFrame->picture().data();
packet.size = pictureFrame->picture().size();
packet.flags = AV_PKT_FLAG_KEY;
pthread_mutex_lock(&sc->videolock);
sc->videobuffer.push(packet);
pthread_mutex_unlock(&sc->videolock);
sc->videoctx = avcodec_alloc_context3(NULL);
avcodec_open2(sc->videoctx,codec, NULL);
sc->attachedimage = 1;
AVFrame *frame = avcodec_alloc_frame();
int decode_ok;
int len;
while(true){
len = avcodec_decode_video2(sc->videoctx, frame, &decode_ok, &packet);
if(decode_ok || len < 0){
break;
}
}
if(len < 0){
sc->videoctx->width = 0;
sc->videoctx->height = 0;
sc->height = 0;
sc->width = 0;
av_free(frame);
return -1;
}else{
cout <<frame->height<<" - "<<frame->width<<endl;
sc->videoctx->width = frame->width;
sc->videoctx->height = frame->height;
sc->height = frame->height;
sc->width = frame->width;
av_free(frame);
}
}else{
return -1;
}
//break;
// }
} else{
return -1;
}
} else {
return -1;
}
//.........这里部分代码省略.........