diff mbox series

[FFmpeg-devel,4/6] avformat/av1: add support for passing through MP4/Matroska av1c

Message ID 20201123191046.28887-5-jeebjp@gmail.com
State Accepted
Commit 4688017d9a1c2633c5888de5a0580d29e7680d54
Headers show
Series Add support for utilizing av1c as extradata
Related show

Checks

Context Check Description
andriy/x86_make success Make finished
andriy/x86_make_fate success Make fate finished

Commit Message

Jan Ekström Nov. 23, 2020, 7:10 p.m. UTC
---
 libavformat/av1.c | 14 ++++++++++++++
 1 file changed, 14 insertions(+)
diff mbox series

Patch

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;