Message ID | 1505655350-25301-1-git-send-email-osmanx@problemloesungsmaschine.de |
---|---|
State | Accepted |
Commit | 3d2da6d585509daddcd65f206b1a262c9c78cbce |
Headers | show |
On 17-9-2017 15:35, Jörn Heusipp <osmanx@problemloesungsmaschine.de> wrote: > 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@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); I've tested your patch and I can confirm FFmpeg now correctly shows the subsong duration.
On 09/17/2017 03:35 PM, Jörn Heusipp wrote: > 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@problemloesungsmaschine.de> > --- ping?
On 24/09/2017 15:35, Jörn Heusipp wrote: > > On 09/17/2017 03:35 PM, Jörn Heusipp wrote: >> 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@problemloesungsmaschine.de> >> --- > > ping? This looks fine I've tested with latest libopenmpt. Pushed. Thanks,
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);
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@problemloesungsmaschine.de> --- libavformat/libopenmpt.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-)