aboutsummaryrefslogtreecommitdiff
path: root/src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp
diff options
context:
space:
mode:
authortrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2011-08-23 19:16:09 +0000
committertrialuser02 <trialuser02@90c681e8-e032-0410-971d-27865f9a5e38>2011-08-23 19:16:09 +0000
commit9d0107a8349252311ca21227182de35601934d37 (patch)
treece8042cef6464dffa2e597416e0e0d5c393ca2b0 /src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp
parent064e421bb2399d63535896c3acc08972259a4551 (diff)
downloadqmmp-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
Diffstat (limited to 'src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp')
-rw-r--r--src/plugins/Input/ffmpeg/decoder_ffmpeg.cpp45
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)
{