summaryrefslogtreecommitdiffstats
path: root/demux
diff options
context:
space:
mode:
Diffstat (limited to 'demux')
-rw-r--r--demux/demux.c6
-rw-r--r--demux/demux.h1
-rw-r--r--demux/demux_lavf.c1
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);
}