aboutsummaryrefslogtreecommitdiffstats
path: root/libavformat/av1.c
diff options
context:
space:
mode:
authorJan Ekström <jeebjp@gmail.com>2020-11-23 18:00:44 +0200
committerJan Ekström <jeebjp@gmail.com>2020-11-24 10:13:55 +0200
commit4688017d9a1c2633c5888de5a0580d29e7680d54 (patch)
treebddbbf154010ed15983d10aca12e22243394ed39 /libavformat/av1.c
parent8fbc139e6143297b8f88bc5145778787b64f4381 (diff)
downloadffmpeg-4688017d9a1c2633c5888de5a0580d29e7680d54.tar.gz
avformat/av1: add support for passing through MP4/Matroska av1c
Diffstat (limited to 'libavformat/av1.c')
-rw-r--r--libavformat/av1.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/libavformat/av1.c b/libavformat/av1.c
index 0cbffb1fd8..5512c4e0f7 100644
--- a/libavformat/av1.c
+++ b/libavformat/av1.c
@@ -375,6 +375,20 @@ int ff_isom_write_av1c(AVIOContext *pb, const uint8_t *buf, int size)
if (size <= 0)
return AVERROR_INVALIDDATA;
+ if (buf[0] & 0x80) {
+ // first bit is nonzero, the passed data does not consist purely of
+ // OBUs. Expect that the data is already in AV1CodecConfigurationRecord
+ // format.
+ int config_record_version = buf[0] & 0x7f;
+ if (config_record_version != 1 || size < 4) {
+ return AVERROR_INVALIDDATA;
+ }
+
+ avio_write(pb, buf, size);
+
+ return 0;
+ }
+
ret = avio_open_dyn_buf(&meta_pb);
if (ret < 0)
return ret;