From patchwork Mon Mar 28 01:08:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 35009 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:6d9d:b0:79:214c:b845 with SMTP id gl29csp4144564pzb; Sun, 27 Mar 2022 18:09:18 -0700 (PDT) X-Google-Smtp-Source: ABdhPJx8SHqntF+uhWUr2yV5Bgx7i9IEk4p/KhQ/K1Nw1HNwFEvLP6UNenzCTm4stt6VMfTn4rQl X-Received: by 2002:a17:906:4fcc:b0:6e0:3269:2054 with SMTP id i12-20020a1709064fcc00b006e032692054mr24096795ejw.117.1648429758176; Sun, 27 Mar 2022 18:09:18 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648429758; cv=none; d=google.com; s=arc-20160816; b=CPsH7dlVhZKA6KviR/PQ6rUsIkPe0Oj6o7QzkxKSYYWqFTnxD64MDCXS0WchVv3rLY ELTr7Y6WCMq3ueHHvdQ2k37ZHvlLYtfoevWQQ8FsZa1Qxdi1x+rv0sxnFVHbzzOH3cEG M2GGavZqX7cEYp9rShCWCmay6jRwp+6xcboRUF+CChxE3JNE/kwXc6KfR46Vnzs44GNc /6ipfS8h27OnP2WpvRUvvMT5tIvGppzfAdXTRy+zO4CnYLZEiF7zRXvz5SNnHXBtcgzG tiHqIYqZx45DkZDToT3xo42R2LTHh6TLtuYU30Xs+cC+EjEX5oIcUDm2L3gUb2DMqfT3 QBKQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=km5/sd5NKQGj7DWvBcs1iANrmNM+9CK3KOcI3FqP/zI=; b=dczhke6OY1fsZrm+Hiv8QNo7Xt9LYynMISYnXMtAuG2evFEeif7LcXrmv3A1lwY9SQ u0QV7Axb9JLn3d0WGS/wM5rnev/uCgxTuAA4jbyx2L1vHpndytuqDS9Hzbh9XhSJSUhv Z04DzttU4GhWlGM5ejZWRIM9ZEdcC35FFcCXuRhnPPiwhQkZd/HQsNAKjwSAp6rsKiZJ uLYmUQpxA/5TUdZ8WdjPXRCWEYhxVshJ8hxVX/a121z6udppBS1hmi0XG9SLg4Hi4UUL gBXiiWY9dpd6gCRKqfsGp8E0d/G4XLya8ARxwZukbFuj5wic4QwyDZl8xSjV/w33IU3i neTA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=BSHYXVfN; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id kx22-20020a170907775600b006df76385f29si11356209ejc.969.2022.03.27.18.09.17; Sun, 27 Mar 2022 18:09:18 -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=@gmail.com header.s=20210112 header.b=BSHYXVfN; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 39AB968B281; Mon, 28 Mar 2022 04:09:13 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ot1-f54.google.com (mail-ot1-f54.google.com [209.85.210.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BFEDB68B279 for ; Mon, 28 Mar 2022 04:09:05 +0300 (EEST) Received: by mail-ot1-f54.google.com with SMTP id y3-20020a056830070300b005cd9c4d03feso9739256ots.3 for ; Sun, 27 Mar 2022 18:09:05 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=7m2+zB0mTEDaXXT7yrZPz0F1e/pnSusECJoEVgUhq/U=; b=BSHYXVfNPJ1koaSarPawWFsejMa/3dEoxQNeM/6dThN9gGACE5N0IJRIqpxGIbj1UL lLOw8xfBmUSRvq7XLpr0SxRQ+2IHfKNbDXErvbgSzUPpwq4KBX90wwmUKLTmhzsAkaB4 cpq4pu8aRj6GsJCWpw+Z/hj6l0vQGsyxvDk+IWR8TrxkW/x0tHBr7txdnVetFd0sad+Q +kWkCeLaYJu82x5ODPxG/D64G0l5OTNm97OuKYycLRlZcVGo5FI4e9X+cSOC4KlYjjf4 q85ZKLWHg3p+mLlDdGW3NTIX6za0SEkwqCB7naD3ONHy6womQCYPChIIo6OKHiwdzCYD Meaw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=7m2+zB0mTEDaXXT7yrZPz0F1e/pnSusECJoEVgUhq/U=; b=nXmkkKYqPMRErIihRL5ERN2fC/euJwcZELljGVWZ4Ri9yUNUDJm9bV6cubtK39QPFe fLRBnVZ0OSDU3QklKG9Igh+G5Wv/nns9qp9FMtV3KzZ9tNsJ4l6SIFml2rcpXyOsf15T fwDaQ8aN5rQ9umhMaU3AXJvyZlUL42A5zkZdwOd2wb7C+CePwo5QQwnqgj4TvwSg5P3v IyN5iANYS/xHNcr8dapdqsFqNB1Ok98raMFophyNCi7OArazWZeWc1ULkYw/1Ip6lf0b 2ZtmOKVNaPdFifGfneBen7ZmTqoXH2d1GmqntISehFSy6meJB3uiNCCzZ1SXG5xYTBSy ucVA== X-Gm-Message-State: AOAM5331/hgZyUyUvzrH1SnNQri+G+DOwJ9uXXHIUk652+3+35Oj0qvH BgcLdwmvDRUiiB10B+C1I3NcpeL4UpnpLg== X-Received: by 2002:a05:6830:16c3:b0:5b2:3700:654a with SMTP id l3-20020a05683016c300b005b23700654amr9198720otr.353.1648429743881; Sun, 27 Mar 2022 18:09:03 -0700 (PDT) Received: from localhost.localdomain ([186.136.131.95]) by smtp.gmail.com with ESMTPSA id bc36-20020a05682016a400b003240a532a1csm6136054oob.29.2022.03.27.18.09.02 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Mar 2022 18:09:03 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sun, 27 Mar 2022 22:08:50 -0300 Message-Id: <20220328010851.1193-1-jamrial@gmail.com> X-Mailer: git-send-email 2.35.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/2] avcodec/cbs_av1: rename the private frame_header fields to frame_header_data 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: ja9wFV4INoF5 It doesn't contain the decomposed struct, but the raw bitstream. This is in preparation for the following patch. Signed-off-by: James Almer --- libavcodec/cbs_av1.c | 6 +++--- libavcodec/cbs_av1.h | 6 +++--- libavcodec/cbs_av1_syntax_template.c | 28 ++++++++++++++-------------- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/libavcodec/cbs_av1.c b/libavcodec/cbs_av1.c index 1229480567..ecd775ea2a 100644 --- a/libavcodec/cbs_av1.c +++ b/libavcodec/cbs_av1.c @@ -1249,9 +1249,9 @@ static void cbs_av1_flush(CodedBitstreamContext *ctx) { CodedBitstreamAV1Context *priv = ctx->priv_data; - av_buffer_unref(&priv->frame_header_ref); + av_buffer_unref(&priv->frame_header_data_ref); priv->sequence_header = NULL; - priv->frame_header = NULL; + priv->frame_header_data = NULL; memset(priv->ref, 0, sizeof(priv->ref)); priv->operating_point_idc = 0; @@ -1264,7 +1264,7 @@ static void cbs_av1_close(CodedBitstreamContext *ctx) CodedBitstreamAV1Context *priv = ctx->priv_data; av_buffer_unref(&priv->sequence_header_ref); - av_buffer_unref(&priv->frame_header_ref); + av_buffer_unref(&priv->frame_header_data_ref); } static void cbs_av1_free_metadata(void *unit, uint8_t *content) diff --git a/libavcodec/cbs_av1.h b/libavcodec/cbs_av1.h index 1fc80dcfa0..d4776b7a30 100644 --- a/libavcodec/cbs_av1.h +++ b/libavcodec/cbs_av1.h @@ -431,9 +431,9 @@ typedef struct CodedBitstreamAV1Context { AVBufferRef *sequence_header_ref; int seen_frame_header; - AVBufferRef *frame_header_ref; - uint8_t *frame_header; - size_t frame_header_size; + AVBufferRef *frame_header_data_ref; + uint8_t *frame_header_data; + size_t frame_header_data_size; int temporal_id; int spatial_id; diff --git a/libavcodec/cbs_av1_syntax_template.c b/libavcodec/cbs_av1_syntax_template.c index d98d3d42de..bd50cfbe38 100644 --- a/libavcodec/cbs_av1_syntax_template.c +++ b/libavcodec/cbs_av1_syntax_template.c @@ -1698,12 +1698,12 @@ static int FUNC(frame_header_obu)(CodedBitstreamContext *ctx, RWContext *rw, HEADER("Redundant Frame Header"); - av_assert0(priv->frame_header_ref && priv->frame_header); + av_assert0(priv->frame_header_data_ref && priv->frame_header_data); - init_get_bits(&fh, priv->frame_header, - priv->frame_header_size); - for (i = 0; i < priv->frame_header_size; i += 8) { - b = FFMIN(priv->frame_header_size - i, 8); + init_get_bits(&fh, priv->frame_header_data, + priv->frame_header_data_size); + for (i = 0; i < priv->frame_header_data_size; i += 8) { + b = FFMIN(priv->frame_header_data_size - i, 8); val = get_bits(&fh, b); xf(b, frame_header_copy[i], val, val, val, 1, i / 8); @@ -1730,7 +1730,7 @@ static int FUNC(frame_header_obu)(CodedBitstreamContext *ctx, RWContext *rw, } else { priv->seen_frame_header = 1; - av_buffer_unref(&priv->frame_header_ref); + av_buffer_unref(&priv->frame_header_data_ref); #ifdef READ fh_bits = get_bits_count(rw) - start_pos; @@ -1748,20 +1748,20 @@ static int FUNC(frame_header_obu)(CodedBitstreamContext *ctx, RWContext *rw, #endif fh_bytes = (fh_bits + 7) / 8; - priv->frame_header_size = fh_bits; + priv->frame_header_data_size = fh_bits; if (rw_buffer_ref) { - priv->frame_header_ref = av_buffer_ref(rw_buffer_ref); - if (!priv->frame_header_ref) + priv->frame_header_data_ref = av_buffer_ref(rw_buffer_ref); + if (!priv->frame_header_data_ref) return AVERROR(ENOMEM); - priv->frame_header = fh_start; + priv->frame_header_data = fh_start; } else { - priv->frame_header_ref = + priv->frame_header_data_ref = av_buffer_alloc(fh_bytes + AV_INPUT_BUFFER_PADDING_SIZE); - if (!priv->frame_header_ref) + if (!priv->frame_header_data_ref) return AVERROR(ENOMEM); - priv->frame_header = priv->frame_header_ref->data; - memcpy(priv->frame_header, fh_start, fh_bytes); + priv->frame_header_data = priv->frame_header_data_ref->data; + memcpy(priv->frame_header_data, fh_start, fh_bytes); } } } From patchwork Mon Mar 28 01:08:51 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 35010 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:6d9d:b0:79:214c:b845 with SMTP id gl29csp4144648pzb; Sun, 27 Mar 2022 18:09:28 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzjCxuzMDk1P8Ajzq2pg72wMMWInzZJiakBiOsYqK7/1YkdVuis44AmD89tC99pu2v8MX8l X-Received: by 2002:a05:6402:51c7:b0:419:2bd7:efa4 with SMTP id r7-20020a05640251c700b004192bd7efa4mr13195773edd.135.1648429768747; Sun, 27 Mar 2022 18:09:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1648429768; cv=none; d=google.com; s=arc-20160816; b=oXQd5CkKUkYvj/yaVkh2/ZNP065ch8TpVvMI/zbxJfIGeZoqCg8ePUNVbclnbUjSEs 1qG4V6PKLxupYJneCacy6s9gQVbBsBrrLSP6RSZt8mE5KMXqs09Pn0KwqzuyXPHEIcS7 QFWCoALgYNJmK5cuiKfgpO7H+cuAOgYqVOkQNQDfeHlzT6xn2/17eKU+bIQ6TPnj/Wc+ s8Qf9LICCFFhVYv5QL4+dD4gv/6Q4WWIBHnsqvYTvanIKppMBzzcn4BaUYyuVYGie1wi rAuv1einzZrKcYFeUjNzAlV0VVMJNGVKzsW4IlTZCc6bR+gZwnmeeg6J/B/Fn73tmyyY gSkg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:references:in-reply-to:message-id :date:to:from:dkim-signature:delivered-to; bh=wldmaWwML/dMwMGSj+p//M289MQiBf5gvtaeVIK0GO8=; b=ZKqXOxDTfoon+koVsJ/9wf1pTFdzlrpeRv6zkEH7Ohe8VVgUr8TDhy/K56TPB2ANRK az5Spd/EefqQiuQ5JsOC/QWH+AFgkWpBLK1JFTDI1C+hBqSMKQ0Wq9PyacRVuKw3JKQd /bpRdAYAAsAF7wuN030hqtGOnQn5BP+VfCShC+31Bsk4Cg3YYv8oF6ABwuxubaXVRHEU zT52xJLm4C8JntPOzczUJCYYebFo8M1wtphQS2qqBBrsIsdTyifaQV590EffvFYPGsE0 oQdwZuMufvwnZk0kNw9U0APlqM61Qg+qipUCPogHZk9VIZZpihbS4Sql8PkN+991sD79 vMFQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b=KMUvCAz8; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id y16-20020a1709060a9000b006df76385c76si11870713ejf.278.2022.03.27.18.09.28; Sun, 27 Mar 2022 18:09:28 -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=@gmail.com header.s=20210112 header.b=KMUvCAz8; 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; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B520F68B2A1; Mon, 28 Mar 2022 04:09:14 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ot1-f46.google.com (mail-ot1-f46.google.com [209.85.210.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id F03D968A8F5 for ; Mon, 28 Mar 2022 04:09:06 +0300 (EEST) Received: by mail-ot1-f46.google.com with SMTP id k25-20020a056830151900b005b25d8588dbso9729377otp.4 for ; Sun, 27 Mar 2022 18:09:06 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:in-reply-to:references:mime-version :content-transfer-encoding; bh=NfU8pBoUp2U84so04d1FYuyJVGB5R4gNxhrjOGlQWh4=; b=KMUvCAz868ViYSM0/VTQmK8tbHS4fJmAMlO0Q7XFvKJzRtXLZssIGIA4QZTF7gwW0m O2ZY67Wzqr2LgXulk+LiOqKym8Z7OugSVMmstr7YRjAi4tbb+ERgiS23CrJtGfH9xYFH 4kEWY6MGhwGHs/Pcvbsgrz5v4YPdqVTmXQv1sDVzzGfVcadYJ7RtrJCyLwAxLj9FZCHI SBgzPAYx85UawCAX/sYAxGxxPZBpSTHBKcw1UteoVxw+/gNuo2fSKjHBTBH4TSEn+hjm phA+F+Ktt5j9a5tdFCAazkjBpoS92Nvq8JTXlZ89QwXjQkM95t+Oj91aDCHrVnkH2gj0 L3hQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=NfU8pBoUp2U84so04d1FYuyJVGB5R4gNxhrjOGlQWh4=; b=Lb9pHd/p1vBdKBm6V0iREI5aVtCeWe4BrdZxYFJQSBfg6V2lDhcrUaSTtIQTH/ymxF u1ZKJe9DmdkDmxEMIEnAu4fB24psZFNrI1MAeNX2CW0C7Pn/rTPP1lQRZWqr8DSSvbFZ z0TGGTEtwYbo+iLP1E9Nw8O29yoijBN5IZO3QMBbDjphIHboFOSex3P3GbBramtZaW4y PbuhMEC9aXyY2u71Mfz8R3PC6M+qoLNJQZV65YvbsvWZK7qc7siqkMQTlk8vaPj0yqWM J+QoSqb0cnul0OjanHWtEZ9eQcFspuCa7A082HWjmHGvPtBOqUC+em9FcdqldlSkjeWY BvGg== X-Gm-Message-State: AOAM533BV7sfwGYzaxJb7G0xsRwInenDnwVdcPowYbb8BzPCl1vA4hDf wM0W2OwkkRCunXMs+u+5xpisQwy3gzVD1A== X-Received: by 2002:a05:6830:2641:b0:5c9:7b11:16e5 with SMTP id f1-20020a056830264100b005c97b1116e5mr9161188otu.220.1648429745191; Sun, 27 Mar 2022 18:09:05 -0700 (PDT) Received: from localhost.localdomain ([186.136.131.95]) by smtp.gmail.com with ESMTPSA id bc36-20020a05682016a400b003240a532a1csm6136054oob.29.2022.03.27.18.09.04 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Mar 2022 18:09:04 -0700 (PDT) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Sun, 27 Mar 2022 22:08:51 -0300 Message-Id: <20220328010851.1193-2-jamrial@gmail.com> X-Mailer: git-send-email 2.35.1 In-Reply-To: <20220328010851.1193-1-jamrial@gmail.com> References: <20220328010851.1193-1-jamrial@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/2] avcodec/cbs_av1: also copy the last frame header's decomposed content when parsing redundant frame headers 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: sjb7x+GPA38h This prevents CBS from propagating zeroed AV1RawFrameHeader units in reading scenarios. Writing scenarios remain unaffected as the content of these units is not used to assemble the bitstream. Signed-off-by: James Almer --- libavcodec/cbs_av1.c | 11 +++++++++++ libavcodec/cbs_av1.h | 2 ++ libavcodec/cbs_av1_syntax_template.c | 6 ++++++ 3 files changed, 19 insertions(+) diff --git a/libavcodec/cbs_av1.c b/libavcodec/cbs_av1.c index ecd775ea2a..6cb832210c 100644 --- a/libavcodec/cbs_av1.c +++ b/libavcodec/cbs_av1.c @@ -969,6 +969,15 @@ static int cbs_av1_read_unit(CodedBitstreamContext *ctx, unit->data_ref); if (err < 0) return err; + + if (priv->frame_header) + break; + + av_buffer_unref(&priv->frame_header_ref); + priv->frame_header_ref = av_buffer_ref(unit->content_ref); + if (!priv->frame_header_ref) + return AVERROR(ENOMEM); + priv->frame_header = &obu->obu.frame_header; } break; case AV1_OBU_TILE_GROUP: @@ -1251,6 +1260,7 @@ static void cbs_av1_flush(CodedBitstreamContext *ctx) av_buffer_unref(&priv->frame_header_data_ref); priv->sequence_header = NULL; + priv->frame_header = NULL; priv->frame_header_data = NULL; memset(priv->ref, 0, sizeof(priv->ref)); @@ -1264,6 +1274,7 @@ static void cbs_av1_close(CodedBitstreamContext *ctx) CodedBitstreamAV1Context *priv = ctx->priv_data; av_buffer_unref(&priv->sequence_header_ref); + av_buffer_unref(&priv->frame_header_ref); av_buffer_unref(&priv->frame_header_data_ref); } diff --git a/libavcodec/cbs_av1.h b/libavcodec/cbs_av1.h index d4776b7a30..138b273470 100644 --- a/libavcodec/cbs_av1.h +++ b/libavcodec/cbs_av1.h @@ -431,6 +431,8 @@ typedef struct CodedBitstreamAV1Context { AVBufferRef *sequence_header_ref; int seen_frame_header; + AVBufferRef *frame_header_ref; + AV1RawFrameHeader *frame_header; AVBufferRef *frame_header_data_ref; uint8_t *frame_header_data; size_t frame_header_data_size; diff --git a/libavcodec/cbs_av1_syntax_template.c b/libavcodec/cbs_av1_syntax_template.c index bd50cfbe38..aadfa34b3c 100644 --- a/libavcodec/cbs_av1_syntax_template.c +++ b/libavcodec/cbs_av1_syntax_template.c @@ -1708,6 +1708,11 @@ static int FUNC(frame_header_obu)(CodedBitstreamContext *ctx, RWContext *rw, xf(b, frame_header_copy[i], val, val, val, 1, i / 8); } + +#ifdef READ + av_assert0(priv->frame_header_ref && priv->frame_header); + memcpy(current, priv->frame_header, sizeof(*current)); +#endif } } else { if (redundant) @@ -1730,6 +1735,7 @@ static int FUNC(frame_header_obu)(CodedBitstreamContext *ctx, RWContext *rw, } else { priv->seen_frame_header = 1; + priv->frame_header = NULL; av_buffer_unref(&priv->frame_header_data_ref); #ifdef READ