diff options
| author | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-08-23 19:16:09 +0000 |
|---|---|---|
| committer | trialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38> | 2011-08-23 19:16:09 +0000 |
| commit | 9d0107a8349252311ca21227182de35601934d37 (patch) | |
| tree | ce8042cef6464dffa2e597416e0e0d5c393ca2b0 | |
| parent | 064e421bb2399d63535896c3acc08972259a4551 (diff) | |
| download | qmmp-9d0107a8349252311ca21227182de35601934d37.tar.gz qmmp-9d0107a8349252311ca21227182de35601934d37.tar.bz2 qmmp-9d0107a8349252311ca21227182de35601934d37.zip | |
added mms metadata support
git-svn-id: http://svn.code.sf.net/p/qmmp-dev/code/trunk/qmmp@2313 90c681e8-e032-0410-971d-27865f9a5e38
| -rw-r--r-- | src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp | 45 |
1 files changed, 42 insertions, 3 deletions
diff --git a/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp b/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp index f3694e924..a7d22e9cf 100644 --- a/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp +++ b/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp @@ -145,12 +145,51 @@ bool DecoderFFmpeg::initialize() qDebug("DecoderFFmpeg: av_open_input_stream() failed"); return false; } - AVCodec *codec; - av_find_stream_info(ic); if(ic->pb) ic->pb->eof_reached = 0; + if (input()->isSequential()) + { + QMap<Qmmp::MetaData, QString> metaData; + AVMetadataTag *album = av_metadata_get(ic->metadata,"album",0,0); + if(!album) + album = av_metadata_get(ic->metadata,"WM/AlbumTitle",0,0); + AVMetadataTag *artist = av_metadata_get(ic->metadata,"artist",0,0); + if(!artist) + artist = av_metadata_get(ic->metadata,"author",0,0); + AVMetadataTag *comment = av_metadata_get(ic->metadata,"comment",0,0); + AVMetadataTag *genre = av_metadata_get(ic->metadata,"genre",0,0); + AVMetadataTag *title = av_metadata_get(ic->metadata,"title",0,0); + AVMetadataTag *year = av_metadata_get(ic->metadata,"WM/Year",0,0); + if(!year) + year = av_metadata_get(ic->metadata,"year",0,0); + if(!year) + year = av_metadata_get(ic->metadata,"date",0,0); + AVMetadataTag *track = av_metadata_get(ic->metadata,"track",0,0); + if(!track) + track = av_metadata_get(ic->metadata,"WM/Track",0,0); + if(!track) + track = av_metadata_get(ic->metadata,"WM/TrackNumber",0,0); + + if(album) + metaData.insert(Qmmp::ALBUM, QString::fromUtf8(album->value).trimmed()); + if(artist) + metaData.insert(Qmmp::ARTIST, QString::fromUtf8(artist->value).trimmed()); + if(comment) + metaData.insert(Qmmp::COMMENT, QString::fromUtf8(comment->value).trimmed()); + if(genre) + metaData.insert(Qmmp::GENRE, QString::fromUtf8(genre->value).trimmed()); + if(title) + metaData.insert(Qmmp::TITLE, QString::fromUtf8(title->value).trimmed()); + if(year) + metaData.insert(Qmmp::YEAR, year->value); + if(track) + metaData.insert(Qmmp::TRACK, track->value); + metaData.insert(Qmmp::URL, m_path); + StateHandler::instance()->dispatch(metaData); + } + ic->flags |= AVFMT_FLAG_GENPTS; av_read_play(ic); for (wma_idx = 0; wma_idx < (int)ic->nb_streams; wma_idx++) @@ -174,7 +213,7 @@ bool DecoderFFmpeg::initialize() #else dump_format(ic,0,0,0); #endif - codec = avcodec_find_decoder(c->codec_id); + AVCodec *codec = avcodec_find_decoder(c->codec_id); if (!codec) { |
