diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2010-02-16 11:49:36 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2010-02-16 11:49:36 +0000 |
| commit | e6cdd7a53803f700e7edaa5dea2b0876ada17114 (patch) | |
| tree | 903e398c1a49ef82bfcd33089d78c47c6c439726 /src/plugins/Input/flac/flacmetadatamodel.cpp | |
| parent | 10204e543c9b32957205ce870f9a71f7b625065f (diff) | |
| download | qmmp-e6cdd7a53803f700e7edaa5dea2b0876ada17114.tar.gz qmmp-e6cdd7a53803f700e7edaa5dea2b0876ada17114.tar.bz2 qmmp-e6cdd7a53803f700e7edaa5dea2b0876ada17114.zip | |
added ogg flac support
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@1558 90c681e8-e032-0410-971d-27865f9a5e38
Diffstat (limited to 'src/plugins/Input/flac/flacmetadatamodel.cpp')
| -rw-r--r-- | src/plugins/Input/flac/flacmetadatamodel.cpp | 66 |
1 files changed, 53 insertions, 13 deletions
diff --git a/src/plugins/Input/flac/flacmetadatamodel.cpp b/src/plugins/Input/flac/flacmetadatamodel.cpp index 3c1366e25..39633b2aa 100644 --- a/src/plugins/Input/flac/flacmetadatamodel.cpp +++ b/src/plugins/Input/flac/flacmetadatamodel.cpp @@ -55,16 +55,39 @@ FLACMetaDataModel::~FLACMetaDataModel() QHash<QString, QString> FLACMetaDataModel::audioProperties() { QHash<QString, QString> ap; - TagLib::FLAC::File f (m_path.toLocal8Bit()); - if(!f.audioProperties()) + TagLib::FLAC::File *flacFile = 0; + TagLib::Ogg::FLAC::File *oggFlacFile = 0; + TagLib::FLAC::Properties *taglib_ap = 0; + qint64 size = 0; + if(m_path.endsWith(".flac")) + { + flacFile = new TagLib::FLAC::File(m_path.toLocal8Bit ()); + taglib_ap = flacFile->audioProperties(); + size = flacFile->length(); + } + else if(m_path.endsWith(".oga")) + { + oggFlacFile = new TagLib::Ogg::FLAC::File(m_path.toLocal8Bit ()); + taglib_ap = oggFlacFile->audioProperties(); + size = oggFlacFile->length(); + } + else return ap; - QString text = QString("%1").arg(f.audioProperties()->length()/60); - text +=":"+QString("%1").arg(f.audioProperties()->length()%60,2,10,QChar('0')); - ap.insert(tr("Length"), text); - ap.insert(tr("Sample rate"), QString("%1 " + tr("Hz")).arg(f.audioProperties()->sampleRate())); - ap.insert(tr("Channels"), QString("%1").arg(f.audioProperties()->channels())); - ap.insert(tr("Bitrate"), QString("%1 " + tr("kbps")).arg(f.audioProperties()->bitrate())); - ap.insert(tr("File size"), QString("%1 "+tr("KB")).arg(f.length()/1024)); + + if(taglib_ap) + { + QString text = QString("%1").arg(taglib_ap->length()/60); + text +=":"+QString("%1").arg(taglib_ap->length()%60,2,10,QChar('0')); + ap.insert(tr("Length"), text); + ap.insert(tr("Sample rate"), QString("%1 " + tr("Hz")).arg(taglib_ap->sampleRate())); + ap.insert(tr("Channels"), QString("%1").arg(taglib_ap->channels())); + ap.insert(tr("Bitrate"), QString("%1 " + tr("kbps")).arg(taglib_ap->bitrate())); + } + ap.insert(tr("File size"), QString("%1 "+tr("KB")).arg(size/1024)); + if(flacFile) + delete flacFile; + if(oggFlacFile) + delete oggFlacFile; return ap; } @@ -100,13 +123,27 @@ QString FLACMetaDataModel::coverPath() VorbisCommentModel::VorbisCommentModel(const QString &path) : TagModel(TagModel::Save) { - m_file = new TagLib::FLAC::File (path.toLocal8Bit().constData()); - m_tag = m_file->xiphComment(); + m_file = 0; + m_ogg_file = 0; + m_tag = 0; + if(path.endsWith(".flac")) + { + m_file = new TagLib::FLAC::File (path.toLocal8Bit().constData()); + m_tag = m_file->xiphComment(); + } + else if (path.endsWith(".oga")) + { + m_ogg_file = new TagLib::Ogg::FLAC::File(path.toLocal8Bit().constData()); + m_tag = m_ogg_file->tag(); + } } VorbisCommentModel::~VorbisCommentModel() { - delete m_file; + if(m_file) + delete m_file; + if(m_ogg_file) + delete m_ogg_file; } const QString VorbisCommentModel::name() @@ -192,5 +229,8 @@ void VorbisCommentModel::setValue(Qmmp::MetaData key, const QString &value) void VorbisCommentModel::save() { - m_file->save(); + if(m_file) + m_file->save(); + else if(m_ogg_file) + m_ogg_file->save(); } |
