summaryrefslogtreecommitdiff
path: root/libavformat/asfdec_o.c
diff options
context:
space:
mode:
authorAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-11-12 17:57:37 +0100
committerAndreas Rheinhardt <andreas.rheinhardt@gmail.com>2020-11-15 18:20:54 +0100
commitbf4909f0a3ed0155343a64cd6611a6fe4ecd5c8d (patch)
treee9ff493ebf256fc2391bc7b0bccb8972f3234423 /libavformat/asfdec_o.c
parente83f27a21a6d2f602b55e541ef66e365400e9827 (diff)
avformat/asfdec_o: Export metadata that applies to the whole file
The ASF specification of Metadata Objects' stream number is as follows: "Specifies whether the entry applies to a specific digital media stream or whether it applies to the whole file. A value of 0 in this field indicates that it applies to the whole file; otherwise, the entry applies only to the indicated stream number and must be between 1 and 127." Yet the asf_o demuxer (the one originating from Libav) has always treated such metadata as if it applied to a stream even though no stream with a stream number may exist in a valid ASF file. This is fixed in this commit; it affected e.g. the file wma_with_metadata_library_object_tag_trimmed.wma from the FATE suite. Signed-off-by: Andreas Rheinhardt <andreas.rheinhardt@gmail.com>
Diffstat (limited to 'libavformat/asfdec_o.c')
-rw-r--r--libavformat/asfdec_o.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/libavformat/asfdec_o.c b/libavformat/asfdec_o.c
index 0a7e47d8cc..2dcbc16332 100644
--- a/libavformat/asfdec_o.c
+++ b/libavformat/asfdec_o.c
@@ -596,7 +596,8 @@ static int asf_read_metadata_obj(AVFormatContext *s, const GUIDParseTable *g)
} else {
if (st_num < ASF_MAX_STREAMS) {
if ((ret = process_metadata(s, name, name_len, val_len, type,
- &asf->asf_sd[st_num].asf_met)) < 0) {
+ st_num ? &asf->asf_sd[st_num].asf_met
+ : &s->metadata)) < 0) {
av_freep(&name);
break;
}