本文整理汇总了C++中taglib::id3v2::AttachedPictureFrame::type方法的典型用法代码示例。如果您正苦于以下问题:C++ AttachedPictureFrame::type方法的具体用法?C++ AttachedPictureFrame::type怎么用?C++ AttachedPictureFrame::type使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类taglib::id3v2::AttachedPictureFrame
的用法示例。
在下文中一共展示了AttachedPictureFrame::type方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: if
QImage
ID3v2TagHelper::embeddedCover() const
{
TagLib::ID3v2::FrameList apicList = m_tag->frameListMap()[fieldName( Meta::valHasCover ).toCString()];
TagLib::ID3v2::AttachedPictureFrame *cover = NULL;
TagLib::ID3v2::AttachedPictureFrame *otherCover = NULL;
for( TagLib::ID3v2::FrameList::ConstIterator it = apicList.begin(); it != apicList.end(); ++it )
{
TagLib::ID3v2::AttachedPictureFrame *currFrame =
dynamic_cast< TagLib::ID3v2::AttachedPictureFrame * >( *it );
if( currFrame->picture().size() < MIN_COVER_SIZE )
continue;
if( currFrame->type() == TagLib::ID3v2::AttachedPictureFrame::FrontCover )
{
cover = currFrame;
}
else if( currFrame->type() == TagLib::ID3v2::AttachedPictureFrame::Other )
{
otherCover = currFrame;
}
}
if( !cover && otherCover )
cover = otherCover;
if( !cover )
return QImage();
return QImage::fromData( ( uchar * )( cover->picture().data() ), cover->picture().size() );
}
示例2: exportPictures
bool MetaDSF::exportPictures(const char *prefix) const
{
std::map<std::string, unsigned int> counter;
TagLib::ID3v2::FrameList l = _i->_file.ID3v2Tag()->frameList("APIC");
TagLib::ID3v2::FrameList::ConstIterator it;
for (it = l.begin(); it != l.end(); ++it) {
TagLib::ID3v2::AttachedPictureFrame *f =
static_cast<TagLib::ID3v2::AttachedPictureFrame *>(*it);
std::string fname = prefix;
std::string tname = picTypeDesc[f->type()].toCString();
std::string ext = MIMETypeToExtMap[f->mimeType()].toCString();
if (counter.find(tname) == counter.end())
counter[tname] = 1;
else
counter[tname] += 1;
fname += "_";
fname += tname;
fname += "_";
fname += std::to_string(counter[tname]);
fname += ".";
fname += ext;
//std::cout << "fname = " << fname << std::endl;
writeFileFromVector(fname.c_str(), f->picture());
}
return true;
}
示例3: malloc
/* GET ALBUM COVER
*/
const char * tag_data_get_cover (TagDatac * data, uint * len)
{
TagLib::ID3v2::AttachedPictureFrame * pic = NULL;
if (!(reinterpret_cast<TagData *>(data))->id3v2 || (reinterpret_cast<TagData *>(data))->id3v2->frameListMap()["APIC"].isEmpty())
{
*len = 0;
return NULL;
}
TagLib::ID3v2::FrameList::ConstIterator it;
TagLib::ID3v2::FrameList l = (reinterpret_cast<TagData *>(data))->id3v2->frameListMap()["APIC"];
for(it=l.begin(); it!=l.end(); ++it)
{
TagLib::ID3v2::AttachedPictureFrame * t = dynamic_cast<TagLib::ID3v2::AttachedPictureFrame*>(*it);
if (pic == NULL)
pic = t;
if (t->type () == TagLib::ID3v2::AttachedPictureFrame::FrontCover)
{
pic = t;
break;
}
}
if (pic == NULL)
{
*len = 0;
return NULL;
}
*len = pic->picture ().size ();
const char * out = (const char *) malloc (*len);
memcpy ((void *) out, pic->picture ().data(), *len);
return out;
}
示例4:
bool
ID3v2TagHelper::hasEmbeddedCover() const
{
TagLib::ID3v2::FrameList apicList = m_tag->frameListMap()[fieldName( Meta::valHasCover ).toCString()];
for( TagLib::ID3v2::FrameList::ConstIterator it = apicList.begin(); it != apicList.end(); ++it )
{
TagLib::ID3v2::AttachedPictureFrame *currFrame =
dynamic_cast< TagLib::ID3v2::AttachedPictureFrame * >( *it );
if( currFrame->picture().size() < MIN_COVER_SIZE )
continue;
if( currFrame->type() == TagLib::ID3v2::AttachedPictureFrame::FrontCover ||
currFrame->type() == TagLib::ID3v2::AttachedPictureFrame::Other )
return true;
}
return false;
}
示例5: deletePictures
int MetaDSF::deletePictures(const TagLib::String &ptype)
{
TagLib::ID3v2::FrameList l = _i->_file.ID3v2Tag()->frameList("APIC");
TagLib::ID3v2::FrameList dl; // a list of frames to be deleted
TagLib::ID3v2::FrameList::ConstIterator it;
std::string pt = ptype.toCString();
// retrieve a list of frames that matches the given type
for (it = l.begin(); it != l.end(); it++) {
TagLib::ID3v2::AttachedPictureFrame *f =
static_cast<TagLib::ID3v2::AttachedPictureFrame *>(*it);
TagLib::ID3v2::AttachedPictureFrame::Type t =
static_cast<TagLib::ID3v2::AttachedPictureFrame::Type>(std::stoi(pt,
0, 16));
if (f->type() == t) {
dl.append(f);
}
}
_i->deleteFrames(dl);
_i->_changed = true;
return dl.size();
}
示例6: if
//.........这里部分代码省略.........
// Preference is TXXX frames, RVA2 frame, then LAME header
auto trackGainFrame = TagLib::ID3v2::UserTextIdentificationFrame::find(const_cast<TagLib::ID3v2::Tag *>(tag), "REPLAYGAIN_TRACK_GAIN");
auto trackPeakFrame = TagLib::ID3v2::UserTextIdentificationFrame::find(const_cast<TagLib::ID3v2::Tag *>(tag), "REPLAYGAIN_TRACK_PEAK");
auto albumGainFrame = TagLib::ID3v2::UserTextIdentificationFrame::find(const_cast<TagLib::ID3v2::Tag *>(tag), "REPLAYGAIN_ALBUM_GAIN");
auto albumPeakFrame = TagLib::ID3v2::UserTextIdentificationFrame::find(const_cast<TagLib::ID3v2::Tag *>(tag), "REPLAYGAIN_ALBUM_PEAK");
if(!trackGainFrame)
trackGainFrame = TagLib::ID3v2::UserTextIdentificationFrame::find(const_cast<TagLib::ID3v2::Tag *>(tag), "replaygain_track_gain");
if(trackGainFrame) {
SFB::CFString str(trackGainFrame->fieldList().back().toCString(true), kCFStringEncodingUTF8);
double num = CFStringGetDoubleValue(str);
AddDoubleToDictionary(dictionary, Metadata::kTrackGainKey, num);
AddDoubleToDictionary(dictionary, Metadata::kReferenceLoudnessKey, 89.0);
foundReplayGain = true;
}
if(!trackPeakFrame)
trackPeakFrame = TagLib::ID3v2::UserTextIdentificationFrame::find(const_cast<TagLib::ID3v2::Tag *>(tag), "replaygain_track_peak");
if(trackPeakFrame) {
SFB::CFString str(trackPeakFrame->fieldList().back().toCString(true), kCFStringEncodingUTF8);
double num = CFStringGetDoubleValue(str);
AddDoubleToDictionary(dictionary, Metadata::kTrackPeakKey, num);
}
if(!albumGainFrame)
albumGainFrame = TagLib::ID3v2::UserTextIdentificationFrame::find(const_cast<TagLib::ID3v2::Tag *>(tag), "replaygain_album_gain");
if(albumGainFrame) {
SFB::CFString str(albumGainFrame->fieldList().back().toCString(true), kCFStringEncodingUTF8);
double num = CFStringGetDoubleValue(str);
AddDoubleToDictionary(dictionary, Metadata::kAlbumGainKey, num);
AddDoubleToDictionary(dictionary, Metadata::kReferenceLoudnessKey, 89.0);
foundReplayGain = true;
}
if(!albumPeakFrame)
albumPeakFrame = TagLib::ID3v2::UserTextIdentificationFrame::find(const_cast<TagLib::ID3v2::Tag *>(tag), "replaygain_album_peak");
if(albumPeakFrame) {
SFB::CFString str(albumPeakFrame->fieldList().back().toCString(true), kCFStringEncodingUTF8);
double num = CFStringGetDoubleValue(str);
AddDoubleToDictionary(dictionary, Metadata::kAlbumPeakKey, num);
}
// If nothing found check for RVA2 frame
if(!foundReplayGain) {
frameList = tag->frameListMap()["RVA2"];
for(auto frameIterator : tag->frameListMap()["RVA2"]) {
TagLib::ID3v2::RelativeVolumeFrame *relativeVolume = dynamic_cast<TagLib::ID3v2::RelativeVolumeFrame *>(frameIterator);
if(!relativeVolume)
continue;
// Attempt to use the master volume if present
auto channels = relativeVolume->channels();
auto channelType = TagLib::ID3v2::RelativeVolumeFrame::MasterVolume;
// Fall back on whatever else exists in the frame
if(!channels.contains(TagLib::ID3v2::RelativeVolumeFrame::MasterVolume))
channelType = channels.front();
float volumeAdjustment = relativeVolume->volumeAdjustment(channelType);
if(TagLib::String("track", TagLib::String::Latin1) == relativeVolume->identification()) {
if((int)volumeAdjustment)
AddFloatToDictionary(dictionary, Metadata::kTrackGainKey, volumeAdjustment);
}
else if(TagLib::String("album", TagLib::String::Latin1) == relativeVolume->identification()) {
if((int)volumeAdjustment)
AddFloatToDictionary(dictionary, Metadata::kAlbumGainKey, volumeAdjustment);
}
// Fall back to track gain if identification is not specified
else {
if((int)volumeAdjustment)
AddFloatToDictionary(dictionary, Metadata::kTrackGainKey, volumeAdjustment);
}
}
}
// Extract album art if present
for(auto it : tag->frameListMap()["APIC"]) {
TagLib::ID3v2::AttachedPictureFrame *frame = dynamic_cast<TagLib::ID3v2::AttachedPictureFrame *>(it);
if(frame) {
SFB::CFData data((const UInt8 *)frame->picture().data(), (CFIndex)frame->picture().size());
SFB::CFString description;
if(!frame->description().isEmpty())
description = CFString(frame->description().toCString(true), kCFStringEncodingUTF8);
attachedPictures.push_back(std::make_shared<AttachedPicture>(data, (AttachedPicture::Type)frame->type(), description));
}
}
return true;
}
示例7: if
void cMediaInfo::readTagV2(ID3v2::Tag* lpTag)
{
m_iID3v2Version = lpTag->header()->majorVersion();
m_iID3v2Revision = lpTag->header()->revisionNumber();
m_iID3v2Size = lpTag->header()->tagSize();
for(ID3v2::FrameList::ConstIterator it = lpTag->frameList().begin();it != lpTag->frameList().end();it++)
{
QString szID = QString("%1").arg((*it)->frameID().data()).left(4);
if(!szID.compare("TIT1"))
m_szContentGroupDescription = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TIT2"))
m_szTitle = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TIT3"))
m_szSubTitle = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TALB"))
m_szAlbum = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TOAL"))
m_szOriginalAlbum = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TRCK"))
m_szTrackNumber = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TPOS"))
m_szPartOfSet = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TSST"))
m_szSubTitleOfSet = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TSRC"))
m_szInternationalStandardRecordingCode = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TPE1"))
m_szLeadArtist = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TPE2"))
m_szBand = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TPE3"))
m_szConductor = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TPE4"))
m_szInterpret = QString::fromStdWString((*it)->toString().toWString()).split("\r\n");
else if(!szID.compare("TOPE"))
m_szOriginalArtist = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TEXT"))
m_szTextWriter = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TOLY"))
m_szOriginalTextWriter = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TCOM"))
m_szComposer = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TENC"))
m_szEncodedBy = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TBPM"))
m_iBeatsPerMinute = QString::fromStdWString((*it)->toString().toWString()).toInt();
else if(!szID.compare("TLEN") && m_iLength == 0)
m_iLength = QString::fromStdWString((*it)->toString().toWString()).toInt();
else if(!szID.compare("TLAN"))
m_szLanguage = QString::fromStdWString((*it)->toString().toWString()).split("\r\n");
else if(!szID.compare("TCON"))
m_szContentType = QString::fromStdWString((*it)->toString().toWString()).split("\r\n");
else if(!szID.compare("TFLT"))
m_szFileType = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TMED"))
m_szMediaType = QString::fromStdWString((*it)->toString().toWString()).split("\r\n");
else if(!szID.compare("TMOO"))
m_szMood = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TCOP"))
m_szCopyright = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TPRO"))
m_szProducedNotice = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TPUB"))
m_szPublisher = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TOWN"))
m_szFileOwner = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TRSN"))
m_szInternetRadioStationName = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TRSO"))
m_szInternetRadioStationOwner = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TOFN"))
m_szOriginalFilename = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TDLY"))
m_iPlaylistDelay = QString::fromStdWString((*it)->toString().toWString()).toInt();
else if(!szID.compare("TDEN"))
m_encodingTime = str2TS(QString::fromStdWString((*it)->toString().toWString()));
else if(!szID.compare("TDOR"))
m_originalReleaseTime = str2TS(QString::fromStdWString((*it)->toString().toWString()));
else if(!szID.compare("TDRC"))
m_recordingTime = str2TS(QString::fromStdWString((*it)->toString().toWString()));
else if(!szID.compare("TDRL"))
m_releaseTime = str2TS(QString::fromStdWString((*it)->toString().toWString()));
else if(!szID.compare("TDTG"))
m_taggingTime = str2TS(QString::fromStdWString((*it)->toString().toWString()));
else if(!szID.compare("TSSE"))
m_szswhwSettings = QString(QString::fromStdWString((*it)->toString().toWString())).split("\r\n");
else if(!szID.compare("TSOA"))
m_szAlbumSortOrder = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TSOP"))
m_szPerformerSortOrder = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("TSOT"))
m_szTitleSortOrder = QString::fromStdWString((*it)->toString().toWString());
else if(!szID.compare("SYLT"))
{
TagLib::ID3v2::SynchronizedLyricsFrame* lpLyrics = static_cast<TagLib::ID3v2::SynchronizedLyricsFrame *> (*it);
m_szSynchronizedLyricsLanguage = QString(lpLyrics->language().data()).left(3);
String::Type type = lpLyrics->textEncoding();
//.........这里部分代码省略.........