From: Andriy Gelman <andriy.gel...@gmail.com>

Currently a bsf is inserted to extract OBU headers which are propagated
as packet side data. The side data is used in matroska to insert out of
band extradata.

Support to fetch extradata directly from av1 was added in commit
f8d6a1653476662a7b00a1564afe37516adeba1a in libaom. So there is no need
to insert a bsf if extradata can be fetched.

Signed-off-by: Andriy Gelman <andriy.gel...@gmail.com>
---
 libavcodec/libaomenc.c | 14 +++++++++++++-
 1 file changed, 13 insertions(+), 1 deletion(-)

diff --git a/libavcodec/libaomenc.c b/libavcodec/libaomenc.c
index 2b0581b15a..27ee630382 100644
--- a/libavcodec/libaomenc.c
+++ b/libavcodec/libaomenc.c
@@ -879,6 +879,18 @@ static av_cold int aom_init(AVCodecContext *avctx,
         return AVERROR(ENOMEM);
 
     if (avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER) {
+        aom_fixed_buf_t *aom_buf;
+        aom_buf = aom_codec_get_global_headers(&ctx->encoder);
+        if (aom_buf) {
+            avctx->extradata = av_mallocz(aom_buf->sz + 
AV_INPUT_BUFFER_PADDING_SIZE);
+            memcpy(avctx->extradata, aom_buf->buf, aom_buf->sz);
+            avctx->extradata_size = aom_buf->sz;
+            av_free(aom_buf->buf);
+            av_freep(&aom_buf);
+        }
+    }
+
+    if (!avctx->extradata && avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER) {
         const AVBitStreamFilter *filter = 
av_bsf_get_by_name("extract_extradata");
         int ret;
 
@@ -976,7 +988,7 @@ static int storeframe(AVCodecContext *avctx, struct 
FrameListData *cx_frame,
 #endif
     }
 
-    if (avctx->flags & AV_CODEC_FLAG_GLOBAL_HEADER) {
+    if (ctx->bsf) {
         ret = av_bsf_send_packet(ctx->bsf, pkt);
         if (ret < 0) {
             av_log(avctx, AV_LOG_ERROR, "extract_extradata filter "
-- 
2.27.0

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to