From patchwork Mon May 2 21:36:28 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Vignesh Venkat X-Patchwork-Id: 35545 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:a885:b0:7f:4be2:bd17 with SMTP id ca5csp88403pzb; Mon, 2 May 2022 14:36:43 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwUKWlDIe10KLK3vSZ55gEjJpqS6bmvxF3cv1uwEpBNOjSx6XRbd6S+lJXjsSVHPKK0C5Fl X-Received: by 2002:a17:906:559:b0:6f3:8ba6:39c8 with SMTP id k25-20020a170906055900b006f38ba639c8mr12961158eja.486.1651527403406; Mon, 02 May 2022 14:36:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1651527403; cv=none; d=google.com; s=arc-20160816; b=juYPVDIEvNYLnOdk58TENkXYDdVvjYkMFnlgrcV/xpev8VQvYnxcznu1gatdzUzChX sgwCRmQfVURTbgpG2Vzzhj+TjSvHT1IgR1w5EU0RqnHfZR/EaJiFVG/wNMzQ5Lj21s4P jjLF4vGVN6v/pVAci3/59IOE/F3GrJiHOjh8/U4yX0CMdJL8chwh1CtTq4qfyviUb2nR 8xiYUE5lAfRmwug5T1r2c+7V3RVFA3nD8zGyXFrqCiWfDY04mwBGLqZMdPbOkE8+MEpC AlWbszb8XDjuseqXbSjwTuUNUUh0kbv9bFsSQNOORAsseDf2WxpoYSqBd1zYi8n9B5+P f9hw== 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=H8XiBNynBsQ3XFPUSubK44+xyX44rECv7Jy2uYcBYpc=; b=vKxUVYku47tIDpR+rIe/iJx6LPmbFPB0QbUyG3wN2O/ZYqPNRaBylbkU4JqG/hdXal FzUjF9vGunzce19gK28cEcO+1Oisey80cLwkclsJd7Yd8NIOd0iAhm/AgHrJIsGe3Y9+ 0u4eV0SOhR68T0lRwDttOjL/pn0ltZu/ZVWcFBZjiZ/7t8WvU0KkYtmPwGMQFrbVkaX7 MQORXEYlF7/IcCLIUQO1mZsRfaGZSIvJl7DgBJcf3m/Xvv52x6N9ZFCddsiiUmJCOzYo T9UJO/A/nfBeFQ5DRdUrn59hdeipp6OPnkEpI//61usqbDQxjvipBtIZDu9TSDMUplMY pU9w== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@google.com header.s=20210112 header.b=tkQFxAS+; 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 g19-20020a056402425300b00427df38b3easi605437edb.39.2022.05.02.14.36.41; Mon, 02 May 2022 14:36:43 -0700 (PDT) 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=tkQFxAS+; 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 932D168B310; Tue, 3 May 2022 00:36:39 +0300 (EEST) 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 137E168B2A4 for ; Tue, 3 May 2022 00:36:33 +0300 (EEST) Received: by mail-yb1-f201.google.com with SMTP id g26-20020a25b11a000000b0064984a4ffb7so3132969ybj.7 for ; Mon, 02 May 2022 14:36:33 -0700 (PDT) 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=qwjvG/gb2SLNoW4hM9u4lav3kt4EOkX5py/9JEvETz0=; b=tkQFxAS+T+xg1UE9hRrGrvY5iqUsiuXoCh8uWVJASFcZH+Qm1I7dQ0O0Pi6X4WaXRh G+kO9x0CY6CK5AaMjCe+4R8mbbl1Uzrtdh2BGi6ze5mnALISza46H+QGSyIuoyNeB+AR UaCKHAjqo/3Uw3wPwCDFpi3z17UXAodLT5OTtmIILl2Qj2La9BX8I58SuP3FWB93bGt/ ySF+YCNc+9fdj4fgEBLXPCWvd2LbgO2U+ykw1GBXcPOm92WmIjv0KAIydjEuc65ddnlu 0DpLgTMITM3Yy5Gnkeu6hM5vyMmTQBx6xEldLc8w/m3cXZUooWjJ8wQ/wENuDUOksqoM Gv9A== 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=qwjvG/gb2SLNoW4hM9u4lav3kt4EOkX5py/9JEvETz0=; b=12s7jUHy1TStccNJzuWWvmifhl+6U5Bv00db2CdZqrKu77ynVGrvBaoFr+m/B5boG/ 3Q89ho9LFObSToeXKRC598O/VFrvYwD/KwhbDa2LXGO4xmiewJqfBnN8dvwI3mEEThx4 1mDLHw0zuOkzVRTdojxrrKPlobMTTr5QA1/3sIAUk5s6Y+jg8/2ZG+FiAksA2vOOhx3M sbamMZjJceTtN+A5u1KsSMw09yY3FRFwN/atCXcisfsdgdWt0kiUsoENKV9wAvUD7wkT VeYcH+pEI4GAt1uZow99wsyCOurXaJkQx5RfSx1+2f4rIytm+yHeHypFpGg077cYs5UC dC+g== X-Gm-Message-State: AOAM530TOXrH7Zw4n3E1j3P1Jh1O85JtPX3BPDeCG1fgvcg6DokqM+Br cqD4RZyT+c0qpup3tfjxqF0wvS7VZl2a/6dX13tmrhjPDRDUsUbkmmAfdpNxUFWEgTXHqCZEyGr gjWHVwXzXRSQep+Wp90HVzq0LxOk3Hc5K1ufm76r6iy0dL/iBUkELewhIc1GpaUB0Iqt9 X-Received: from vigneshv3.mtv.corp.google.com ([2620:0:1000:2511:f699:797:bdbd:2026]) (user=vigneshv job=sendgmr) by 2002:a25:26cf:0:b0:648:4887:cd59 with SMTP id m198-20020a2526cf000000b006484887cd59mr11667310ybm.589.1651527391691; Mon, 02 May 2022 14:36:31 -0700 (PDT) Date: Mon, 2 May 2022 14:36:28 -0700 In-Reply-To: <20220413204000.3696281-1-vigneshv@google.com> Message-Id: <20220502213628.2461861-1-vigneshv@google.com> Mime-Version: 1.0 References: <20220413204000.3696281-1-vigneshv@google.com> X-Mailer: git-send-email 2.36.0.464.gb9c8b46e94-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: 463frtCgwgm0 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 79065d0c9f..b6eaf50627 100644 --- a/libavformat/av1.c +++ b/libavformat/av1.c @@ -395,7 +395,8 @@ int ff_av1_parse_seq_header(AV1SequenceParameters *seq, const uint8_t *buf, int return is_av1c ? 0 : 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; @@ -485,7 +486,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 3b8ca11f28..d789a618a4 100644 --- a/libavformat/matroskaenc.c +++ b/libavformat/matroskaenc.c @@ -1089,7 +1089,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; @@ -2665,7 +2665,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 c2aed6329f..271db99b46 100644 --- a/libavformat/movenc.c +++ b/libavformat/movenc.c @@ -1335,7 +1335,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); }