diff options
Diffstat (limited to 'demux/demux_lavf.c')
-rw-r--r-- | demux/demux_lavf.c | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/demux/demux_lavf.c b/demux/demux_lavf.c index 9626bdf918..881d38b4df 100644 --- a/demux/demux_lavf.c +++ b/demux/demux_lavf.c @@ -864,16 +864,6 @@ static void update_metadata(demuxer_t *demuxer) priv->avfc->event_flags = 0; demux_metadata_changed(demuxer); } - - for (int n = 0; n < priv->num_streams; n++) { - AVStream *st = priv->streams[n]->sh ? priv->avfc->streams[n] : NULL; - if (st && st->event_flags & AVSTREAM_EVENT_FLAG_METADATA_UPDATED) { - st->event_flags = 0; - struct mp_tags *tags = talloc_zero(NULL, struct mp_tags); - mp_tags_copy_from_av_dictionary(tags, st->metadata); - demux_set_stream_tags(demuxer, priv->streams[n]->sh, tags); - } - } } static int interrupt_cb(void *ctx) @@ -1214,6 +1204,14 @@ static bool demux_lavf_read_packet(struct demuxer *demux, } } + if (st->event_flags & AVSTREAM_EVENT_FLAG_METADATA_UPDATED) { + st->event_flags = 0; + struct mp_tags *tags = talloc_zero(NULL, struct mp_tags); + mp_tags_copy_from_av_dictionary(tags, st->metadata); + double pts = MP_PTS_OR_DEF(dp->pts, dp->dts); + demux_stream_tags_changed(demux, stream, tags, pts); + } + *mp_pkt = dp; return true; } |