本文整理汇总了C++中taglib::FileRef::file方法的典型用法代码示例。如果您正苦于以下问题:C++ FileRef::file方法的具体用法?C++ FileRef::file怎么用?C++ FileRef::file使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类taglib::FileRef
的用法示例。
在下文中一共展示了FileRef::file方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: GetComposer
bool CCover::GetComposer(TagLib::FileRef& fr, std::string& composer)
{
TagLib::MPEG::File * mpgfile = NULL;
TagLib::Ogg::Vorbis::File * oggfile = NULL;
TagLib::FLAC::File * flacfile = NULL;
TagLib::Ogg::XiphComment * xiph = NULL;
TagLib::ID3v2::Tag * id3v2 = NULL;
#ifdef TAGLIB_HAVE_MP4
TagLib::MP4::File * mp4file = NULL;
TagLib::MP4::Tag * mp4 = NULL;
#endif
if ((oggfile = dynamic_cast<TagLib::Ogg::Vorbis::File*>(fr.file()))) {
xiph=oggfile->tag();
//log_debug("ogg");
} else if ((flacfile = dynamic_cast<TagLib::FLAC::File*>(fr.file()))) {
xiph=flacfile->xiphComment();
id3v2=flacfile->ID3v2Tag();
//log_debug("flac");
} else if ((mpgfile = dynamic_cast<TagLib::MPEG::File*>(fr.file()))) {
id3v2=mpgfile->ID3v2Tag();
//log_debug("mpg");
}
#ifdef TAGLIB_HAVE_MP4
else if ((mp4file = dynamic_cast<TagLib::MP4::File*>(fr.file()))) {
mp4=mp4file->tag();
}
#endif
#ifndef TAGLIB_HAVE_MP4
void* mp4 = NULL;
#endif
//log_debug4("xiph=%p, id3v2=%p, mp4=%p", xiph, id3v2, mp4);
bool retval = true;
if (xiph)
retval = xiph_get_field(xiph, "COMPOSER",composer);
else if (id3v2)
retval = id3v2_get_field(id3v2, "TCOM",composer);
#ifdef TAGLIB_HAVE_MP4
else if (mp4)
retval = mp4_get_field(mp4file, "\251wrt",composer);
#endif
else
retval = false;
//log_debug2("composer = %s", composer.c_str());
return retval;
}
示例2: tuneFromFile
Tune* tuneFromFile(const QString& file)
{
Tune* tune = new Tune(false);
tune->file = file;
TagLib::FileRef ref = fileName2TaglibRef(file);
if(!ref.isNull()) {
if(ref.tag()) {
TagLib::Tag* tag = ref.tag();
tune->artist = safeTagLibString2QString( tag->artist() );
tune->album = safeTagLibString2QString( tag->album() );
tune->title = safeTagLibString2QString( tag->title() );
tune->trackNumber = QString::number( tag->track() );
tune->genre = safeTagLibString2QString( tag->genre() );
}
Qomp::loadCover(tune, ref.file());
if(ref.audioProperties()) {
TagLib::AudioProperties *prop = ref.audioProperties();
tune->duration = Qomp::durationSecondsToString( prop->length() );
tune->bitRate = QString::number( prop->bitrate() );
}
tune->setMetadataResolved(true);
}
return tune;
}
示例3: GetEmbedded
/*
** Attempts to extract cover art from audio files.
**
*/
bool CCover::GetEmbedded(const TagLib::FileRef& fr, const std::wstring& target)
{
bool found = false;
if (TagLib::MPEG::File* file = dynamic_cast<TagLib::MPEG::File*>(fr.file()))
{
if (file->ID3v2Tag())
{
found = ExtractID3(file->ID3v2Tag(), target);
}
if (!found && file->APETag())
{
found = ExtractAPE(file->APETag(), target);
}
}
else if (TagLib::FLAC::File* file = dynamic_cast<TagLib::FLAC::File*>(fr.file()))
{
found = ExtractFLAC(file, target);
if (!found && file->ID3v2Tag())
{
found = ExtractID3(file->ID3v2Tag(), target);
}
}
else if (TagLib::ASF::File* file = dynamic_cast<TagLib::ASF::File*>(fr.file()))
{
found = ExtractASF(file, target);
}
else if (TagLib::APE::File* file = dynamic_cast<TagLib::APE::File*>(fr.file()))
{
if (file->APETag())
{
found = ExtractAPE(file->APETag(), target);
}
}
else if (TagLib::MPC::File* file = dynamic_cast<TagLib::MPC::File*>(fr.file()))
{
if (file->APETag())
{
found = ExtractAPE(file->APETag(), target);
}
}
return found;
}
示例4: GetCover
/*
** Attempts to extract cover art from audio files.
**
*/
bool QCoverArt::GetCover(const TagLib::FileRef& fr)
{
bool found = false;
if (TagLib::MPEG::File* file = dynamic_cast<TagLib::MPEG::File*>(fr.file()))
{
if (file->ID3v2Tag())
{
found = ExtractID3(file->ID3v2Tag());
}
if (!found && file->APETag())
{
found = ExtractAPE(file->APETag());
}
}
else if (TagLib::ASF::File* file = dynamic_cast<TagLib::ASF::File*>(fr.file()))
{
found = ExtractASF(file);
}
else if (TagLib::MP4::File* file = dynamic_cast<TagLib::MP4::File*>(fr.file()))
{
if (file->tag())
{
found = ExtractMP4(file);
}
}
else if (TagLib::FLAC::File* file = dynamic_cast<TagLib::FLAC::File*>(fr.file()))
{
found = ExtractFLAC(file);
if (!found && file->ID3v2Tag())
{
found = ExtractID3(file->ID3v2Tag());
}
}
else if (TagLib::APE::File* file = dynamic_cast<TagLib::APE::File*>(fr.file()))
{
if (file->APETag())
{
found = ExtractAPE(file->APETag());
}
}
else if (TagLib::MPC::File* file = dynamic_cast<TagLib::MPC::File*>(fr.file()))
{
if (file->APETag())
{
found = ExtractAPE(file->APETag());
}
}
else if (TagLib::WavPack::File* file = dynamic_cast<TagLib::WavPack::File*>(fr.file()))
{
if (file->APETag())
{
found = ExtractAPE(file->APETag());
}
}
return found;
}
示例5: eval
BlockResult Block::eval(const TagLib::FileRef& file)
{
TagLib::PropertyMap metadata = file.tag()->properties();
TagLib::StringList list;
std::stringstream ss;
// TODO: Needs to be refactored
// TODO: Add more
ss << file.audioProperties()->length();
list.append(ss.str());
metadata.insert("length", list);
list.clear();
ss.clear();
ss << file.audioProperties()->bitrate();
list.append(ss.str());
metadata.insert("bitrate", list);
list.clear();
ss.clear();
if (file.audioProperties()->channels() == 1) {
list.append("mono");
} else if (file.audioProperties()->channels() == 2) {
list.append("stereo");
} //TODO: Add more channels names
metadata.insert("channels", list);
list.clear();
ss.clear();
ss << file.audioProperties()->sampleRate();
list.append(ss.str());
metadata.insert("samplerate", list);
list.clear();
ss.clear();
list.append(file.file()->name());
metadata.insert("filename", list);
list.clear();
ss.clear();
return this->eval(metadata);
}
示例6: if
Meta::ReplayGainTagMap
Meta::readReplayGainTags( const TagLib::FileRef &fileref )
{
Meta::ReplayGainTagMap map;
// NB: we can't get replay gain info from MPC files, since it's stored in some magic place
// and not in the APE tags, and taglib doesn't let us access the information (unless
// we want to parse the file ourselves).
// FIXME: should we try getting the info from the MPC APE tag just in case?
if ( TagLib::MPEG::File *file = dynamic_cast<TagLib::MPEG::File *>( fileref.file() ) )
{
if ( file->ID3v2Tag() )
map = readID3v2Tags( file->ID3v2Tag() );
if ( map.isEmpty() && file->APETag() )
map = readAPETags( file->APETag() );
}
else if ( TagLib::Ogg::Vorbis::File *file = dynamic_cast<TagLib::Ogg::Vorbis::File *>( fileref.file() ) )
{
if ( file->tag() )
map = readXiphTags( file->tag() );
}
else if ( TagLib::FLAC::File *file = dynamic_cast<TagLib::FLAC::File *>( fileref.file() ) )
{
if ( file->xiphComment() )
map = readXiphTags( file->xiphComment() );
if ( map.isEmpty() && file->ID3v2Tag() )
map = readID3v2Tags( file->ID3v2Tag() );
}
else if ( TagLib::Ogg::FLAC::File *file = dynamic_cast<TagLib::Ogg::FLAC::File *>( fileref.file() ) )
{
if ( file->tag() )
map = readXiphTags( file->tag() );
}
else if ( TagLib::WavPack::File *file = dynamic_cast<TagLib::WavPack::File *>( fileref.file() ) )
{
if ( file->APETag() )
map = readAPETags( file->APETag() );
}
else if ( TagLib::TrueAudio::File *file = dynamic_cast<TagLib::TrueAudio::File *>( fileref.file() ) )
{
if ( file->ID3v2Tag() )
map = readID3v2Tags( file->ID3v2Tag() );
}
else if ( TagLib::Ogg::Speex::File *file = dynamic_cast<TagLib::Ogg::Speex::File *>( fileref.file() ) )
{
if ( file->tag() )
map = readXiphTags( file->tag() );
}
else if ( TagLib::MPC::File *file = dynamic_cast<TagLib::MPC::File *>( fileref.file() ) )
{
// This is NOT the correct way to get replay gain tags from MPC files, but
// taglib doesn't allow us access to the real information.
// This allows people to work around this issue by copying their replay gain
// information to the APE tag.
if ( file->APETag() )
map = readAPETags( file->APETag() );
}
else if ( TagLib::ASF::File *file = dynamic_cast<TagLib::ASF::File *>( fileref.file() ) )
{
if ( file->tag() )
map = readASFTags( file->tag() );
}
// See comment above
#ifdef DO_NOT_USE_THIS_UNTIL_FIXED
else if ( TagLib::MP4::File *file = dynamic_cast<TagLib::MP4::File *>( fileref.file() ) )
{
if ( file->tag() )
map = readMP4Tags( file->getMP4Tag() );
}
#endif
return map;
}