[FFmpeg-cvslog] avformat/libopenmpt: Query duration and metadata after selecting subsong

Jörn Heusipp git at videolan.org
Sun Sep 24 18:53:12 EEST 2017


ffmpeg | branch: master | Jörn Heusipp <osmanx at problemloesungsmaschine.de> | Sun Sep 17 15:35:50 2017 +0200| [3d2da6d585509daddcd65f206b1a262c9c78cbce] | committer: Josh de Kock

avformat/libopenmpt: Query duration and metadata after selecting subsong

Duration depends on the selected subsong and thus must be queried after
selecting the subsong. There is no compelling reason to query other
metadata earlier either.

Tested with libopenmpt version: 0.2.8760-beta27
Libopenmpt configure options: --without-ogg --without-vorbis
--without-vorbisfile --without-portaudio --without-portaudiocpp
--without-mpg123 --without-pulseaudio --without-sndfile --without-flac

Signed-off-by: Jörn Heusipp <osmanx at problemloesungsmaschine.de>
Signed-off-by: Josh de Kock <josh at itanimul.li>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=3d2da6d585509daddcd65f206b1a262c9c78cbce
---

 libavformat/libopenmpt.c | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)

diff --git a/libavformat/libopenmpt.c b/libavformat/libopenmpt.c
index a7e385959a..af6eb1ac4a 100644
--- a/libavformat/libopenmpt.c
+++ b/libavformat/libopenmpt.c
@@ -93,14 +93,7 @@ static int read_header_openmpt(AVFormatContext *s)
     if (!openmpt->module)
             return AVERROR_INVALIDDATA;
 
-    openmpt->channels   = av_get_channel_layout_nb_channels(openmpt->layout);
-    openmpt->duration   = openmpt_module_get_duration_seconds(openmpt->module);
-
-    add_meta(s, "artist",  openmpt_module_get_metadata(openmpt->module, "artist"));
-    add_meta(s, "title",   openmpt_module_get_metadata(openmpt->module, "title"));
-    add_meta(s, "encoder", openmpt_module_get_metadata(openmpt->module, "tracker"));
-    add_meta(s, "comment", openmpt_module_get_metadata(openmpt->module, "message"));
-    add_meta(s, "date",    openmpt_module_get_metadata(openmpt->module, "date"));
+    openmpt->channels = av_get_channel_layout_nb_channels(openmpt->layout);
 
     if (openmpt->subsong >= openmpt_module_get_num_subsongs(openmpt->module)) {
         openmpt_module_destroy(openmpt->module);
@@ -120,6 +113,14 @@ static int read_header_openmpt(AVFormatContext *s)
         }
     }
 
+    openmpt->duration = openmpt_module_get_duration_seconds(openmpt->module);
+
+    add_meta(s, "artist",  openmpt_module_get_metadata(openmpt->module, "artist"));
+    add_meta(s, "title",   openmpt_module_get_metadata(openmpt->module, "title"));
+    add_meta(s, "encoder", openmpt_module_get_metadata(openmpt->module, "tracker"));
+    add_meta(s, "comment", openmpt_module_get_metadata(openmpt->module, "message"));
+    add_meta(s, "date",    openmpt_module_get_metadata(openmpt->module, "date"));
+
     st = avformat_new_stream(s, NULL);
     if (!st) {
         openmpt_module_destroy(openmpt->module);



More information about the ffmpeg-cvslog mailing list