diff options
Diffstat (limited to 'demux')
-rw-r--r-- | demux/demux.c | 6 | ||||
-rw-r--r-- | demux/demux.h | 1 | ||||
-rw-r--r-- | demux/demux_lavf.c | 1 |
3 files changed, 8 insertions, 0 deletions
diff --git a/demux/demux.c b/demux/demux.c index ceaa9db79c..63a1c16690 100644 --- a/demux/demux.c +++ b/demux/demux.c @@ -713,6 +713,12 @@ char *mp_tags_get_bstr(struct mp_tags *tags, bstr key) return NULL; } +void mp_tags_clear(struct mp_tags *tags) +{ + *tags = (struct mp_tags){0}; + talloc_free_children(tags); +} + int demux_info_add(demuxer_t *demuxer, const char *opt, const char *param) { return demux_info_add_bstr(demuxer, bstr0(opt), bstr0(param)); diff --git a/demux/demux.h b/demux/demux.h index 2c8211e246..928a5e7d3e 100644 --- a/demux/demux.h +++ b/demux/demux.h @@ -304,6 +304,7 @@ void mp_tags_set_str(struct mp_tags *tags, const char *key, const char *value); void mp_tags_set_bstr(struct mp_tags *tags, bstr key, bstr value); char *mp_tags_get_str(struct mp_tags *tags, const char *key); char *mp_tags_get_bstr(struct mp_tags *tags, bstr key); +void mp_tags_clear(struct mp_tags *tags); bool demux_matroska_uid_cmp(struct matroska_segment_uid *a, struct matroska_segment_uid *b); diff --git a/demux/demux_lavf.c b/demux/demux_lavf.c index c92e4850b2..ee78575de6 100644 --- a/demux/demux_lavf.c +++ b/demux/demux_lavf.c @@ -528,6 +528,7 @@ static void update_metadata(demuxer_t *demuxer, AVPacket *pkt) AVDictionary *dict = NULL; av_packet_unpack_dictionary(md, md_size, &dict); if (dict) { + mp_tags_clear(demuxer->metadata); add_metadata(demuxer, dict); av_dict_free(&dict); } |