[FFmpeg-devel] [PATCH] avformat/libopenmpt: Query duration and metadata after selecting subsong
Jörn Heusipp
osmanx at problemloesungsmaschine.de
Sun Sep 17 16:35:50 EEST 2017
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.
Signed-off-by: Jörn Heusipp <osmanx at problemloesungsmaschine.de>
---
libavformat/libopenmpt.c | 17 +++++++++--------
1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/libavformat/libopenmpt.c b/libavformat/libopenmpt.c
index a7e3859..af6eb1a 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);
--
1.9.1
More information about the ffmpeg-devel
mailing list