From patchwork Thu Feb 17 05:51:16 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vignesh Venkat X-Patchwork-Id: 34350 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:d078:0:0:0:0 with SMTP id x24csp352725nkx; Wed, 16 Feb 2022 21:52:11 -0800 (PST) X-Google-Smtp-Source: ABdhPJxMvQyR4qed8GEMAIm9dgxCSPJf4CglEZjUphxpwo27gROsD4Kh7LkbXHKDZK8Wv6bsdEMP X-Received: by 2002:a17:906:6c8f:b0:6cf:95c:5d78 with SMTP id s15-20020a1709066c8f00b006cf095c5d78mr1114199ejr.74.1645077130906; Wed, 16 Feb 2022 21:52:10 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1645077130; cv=none; d=google.com; s=arc-20160816; b=dnv/2zIlAChUv1t49gUAdzkodiUnK5yHhufq6xiFSKNUGH3zcHKoolMpFXPoauW2yW wQfXyyatwBjhYo6/FPVS2w20u+S8sUxemW3vh6Zsnwoy3wXY1snu4kize2JD68rX3Rg4 EFxUya+v29nnxdj06D4BNqeJFoy97JVU/X5eWsK+tHvZyDr3fYbyX8+HN/7QHB2lFmZt K/wF+zGlwi10Ob94FKFGrQSI5zS3kenkGelPsBFGBGvunsujZ1VFnv12nmBmDNUWgL0T QVjRmXYQLx1RQ5cYzIiBPV+NnXWvAt3+ycPbqsgFy9LlpeUWuX6dY9kKjFvd58rp8FQ9 nctg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:to:from:references:mime-version :message-id:in-reply-to:date:dkim-signature:delivered-to; bh=DiBUl03j8snRqoFmYXlE2wRMavK4KiscBsg9TdQPv7E=; b=ZiXAXvD7rMbLqmi8+O2e5tuukzU/NVl2djLD2l3LRH6IFNqRv2UgBaBsQjWuYs1O8t QddxLdmkAQmEM0//fN0V+rWk8Q2/6A6C8OZ8f4kEsyRZA/VcUpDArbp+rn3tuVWu+Xh8 1tmgBC6m2obvNZjy6ewywLRC3ypvKYWNhsoSwMwLrDUWqD6fA5oSWUrFBFioOSJSOUIA GszqUxLx0nLmxNdmeckaQsyuQsZpjOY0zwtwDOcEeQ6KjFldb4aLyNCkwBOfJuQ9ilF9 FZ4tDaG4hBZbyCd8hA+smFzk2IPXxywXMmMCESDYrPV11yFys2SJVshaGzepK5zTs9an pjAw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@google.com header.s=20210112 header.b=WAvTDv1t; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id d21si1102351ejc.473.2022.02.16.21.51.47; Wed, 16 Feb 2022 21:52:10 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@google.com header.s=20210112 header.b=WAvTDv1t; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 914FB68B26D; Thu, 17 Feb 2022 07:51:40 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-yb1-f201.google.com (mail-yb1-f201.google.com [209.85.219.201]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BE51368B15E for ; Thu, 17 Feb 2022 07:51:34 +0200 (EET) Received: by mail-yb1-f201.google.com with SMTP id m10-20020a25800a000000b0061daa5b7151so8795243ybk.10 for ; Wed, 16 Feb 2022 21:51:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20210112; h=date:in-reply-to:message-id:mime-version:references:subject:from:to :cc; bh=a77bd7zC6/6SkEBOItFsKS/zPUsCnRt9cpCmZ3BTAhM=; b=WAvTDv1tQqemcK8XQm8lsH94qA9hgqC9YNO1EKFpEmRu7Ayh5M7eMdCwDiKdQCUB2q ZXXD2AocQdyPaxL8UVfAl+3J/ZENG4x/bzyGPqA/5Rv3wKYg3pAoluTAhQlSaXJTwVFo okb3ya6Uuca+ytKkYnt4D8GCfig6StVSuWC4gyTpZ5APDAu4GtaegQ6ivG39f6LrfcjA AbkyBUZin2lh8ZuF9KyOl4ABg/Aujip1xlySqpyblkQ8tFlrFgAqiiLJ5EP71xzwvB1e V2lBTHsIcNsBl/PGbP8tVBK3wKgWY39zIi5CEn76wGo0rrQ9q2mA5bKCMceng7Q3G3qx jwkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:in-reply-to:message-id:mime-version :references:subject:from:to:cc; bh=a77bd7zC6/6SkEBOItFsKS/zPUsCnRt9cpCmZ3BTAhM=; b=wmJN9opCWEMS0CBKOcipIqOyXTMHD9R/7rw6F1H1jXkLRqLtJ5RDpMbF+tTbgfb2Ls +UY4v/ViM5PpQ8zO/DJrMFDUj+XeQ5zsf/MozK04M4VviNf/my35o+pH/u6dF32Hfn+H V9NErEVk0D7yYwTbz5aPXI+2HjPvY3ztfGrOmVMbxsGlErxOeUoSiaCuDsyR3kalRHe8 +amx6CaHB4j8gylFC+lzjkRXiJBSzWaM/nGlJ8TMzLtSn8FadLcVuFZY0uL2MhyWCxGt mUfZQ/BVuW+KRtT98VKYWtaFsjHMtMmvHDTf852T195hDDSxjvoUuQY2LnNZ+PX9gosR /s3A== X-Gm-Message-State: AOAM531GJqubgnwsdtS3YrtfK/y9QHuLAkt/KZiC4GBJiZL9MYDubxWv T5duGid8Es3w+qGiN9wwTisATUazWEUiDmUuJQ1/bPVmrNDa3jE6Jd+25AJ1ZVPnbQIz5A/hE38 3NFb47/dfFh4Wz6hplbC3dSk16SZvlxnu36d0z1V5vbJLqAfnZvRXQDBSKA0ykMw+I16d X-Received: from vigneshv3.mtv.corp.google.com ([2620:0:1000:2511:4804:9763:5ad6:9d1f]) (user=vigneshv job=sendgmr) by 2002:a81:bb51:0:b0:2d6:997b:131c with SMTP id a17-20020a81bb51000000b002d6997b131cmr772334ywl.64.1645077093583; Wed, 16 Feb 2022 21:51:33 -0800 (PST) Date: Wed, 16 Feb 2022 21:51:16 -0800 In-Reply-To: <20220217055117.3233501-1-vigneshv@google.com> Message-Id: <20220217055117.3233501-2-vigneshv@google.com> Mime-Version: 1.0 References: <20220217055117.3233501-1-vigneshv@google.com> X-Mailer: git-send-email 2.35.1.265.g69c8d7142f-goog From: Vignesh Venkatasubramanian To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH 2/3] avformat/av1: Add a parameter to av1c to omit seq header X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Vignesh Venkatasubramanian Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 4g8OQiuCng23 Add a parameter to omit seq header when generating the av1C atom. For now, this does not change any behavior. This will be used by a follow-up patch to add AVIF support. Signed-off-by: Vignesh Venkatasubramanian --- libavformat/av1.c | 7 +++++-- libavformat/av1.h | 4 +++- libavformat/matroskaenc.c | 4 ++-- libavformat/movenc.c | 2 +- 4 files changed, 11 insertions(+), 6 deletions(-) diff --git a/libavformat/av1.c b/libavformat/av1.c index 1fcfac2356..95ca7cc47f 100644 --- a/libavformat/av1.c +++ b/libavformat/av1.c @@ -361,7 +361,8 @@ int ff_av1_parse_seq_header(AV1SequenceParameters *seq, const uint8_t *buf, int return AVERROR_INVALIDDATA; } -int ff_isom_write_av1c(AVIOContext *pb, const uint8_t *buf, int size) +int ff_isom_write_av1c(AVIOContext *pb, const uint8_t *buf, int size, + int write_seq_header) { AVIOContext *meta_pb; AV1SequenceParameters seq_params; @@ -451,7 +452,9 @@ int ff_isom_write_av1c(AVIOContext *pb, const uint8_t *buf, int size) flush_put_bits(&pbc); avio_write(pb, header, sizeof(header)); - avio_write(pb, seq, seq_size); + if (write_seq_header) { + avio_write(pb, seq, seq_size); + } meta_size = avio_get_dyn_buf(meta_pb, &meta); if (meta_size) diff --git a/libavformat/av1.h b/libavformat/av1.h index f57dabe986..a393fbb78f 100644 --- a/libavformat/av1.h +++ b/libavformat/av1.h @@ -96,9 +96,11 @@ int ff_av1_parse_seq_header(AV1SequenceParameters *seq, const uint8_t *buf, int * @param pb pointer to the AVIOContext where the av1C box shall be written * @param buf input data buffer * @param size size in bytes of the input data buffer + * @param write_seq_header If 1, Sequence Header OBU will be written inside the + * av1C box. Otherwise, Sequence Header OBU will be omitted. * * @return >= 0 in case of success, a negative AVERROR code in case of failure */ -int ff_isom_write_av1c(AVIOContext *pb, const uint8_t *buf, int size); +int ff_isom_write_av1c(AVIOContext *pb, const uint8_t *buf, int size, int write_seq_header); #endif /* AVFORMAT_AV1_H */ diff --git a/libavformat/matroskaenc.c b/libavformat/matroskaenc.c index 38d9485288..5061961283 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -1087,7 +1087,7 @@ static int mkv_write_native_codecprivate(AVFormatContext *s, AVIOContext *pb, case AV_CODEC_ID_AV1: if (par->extradata_size) return ff_isom_write_av1c(dyn_cp, par->extradata, - par->extradata_size); + par->extradata_size, 1); else put_ebml_void(pb, 4 + 3); break; @@ -2663,7 +2663,7 @@ static int mkv_check_new_extra_data(AVFormatContext *s, const AVPacket *pkt) ret = avio_open_dyn_buf(&dyn_cp); if (ret < 0) return ret; - ff_isom_write_av1c(dyn_cp, side_data, side_data_size); + ff_isom_write_av1c(dyn_cp, side_data, side_data_size, 1); codecpriv_size = avio_get_dyn_buf(dyn_cp, &codecpriv); if ((ret = dyn_cp->error) < 0 || !codecpriv_size && (ret = AVERROR_INVALIDDATA)) { diff --git a/libavformat/movenc.c b/libavformat/movenc.c index 4c868919ae..1a746a67fd 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -1303,7 +1303,7 @@ static int mov_write_av1c_tag(AVIOContext *pb, MOVTrack *track) avio_wb32(pb, 0); ffio_wfourcc(pb, "av1C"); - ff_isom_write_av1c(pb, track->vos_data, track->vos_len); + ff_isom_write_av1c(pb, track->vos_data, track->vos_len, 1); return update_size(pb, pos); }