From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id DFA93427EF for ; Sat, 30 Apr 2022 18:50:31 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 177ED68B2BD; Sat, 30 Apr 2022 21:50:29 +0300 (EEST) Received: from mail-wr1-f42.google.com (mail-wr1-f42.google.com [209.85.221.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8862268AB71 for ; Sat, 30 Apr 2022 21:50:22 +0300 (EEST) Received: by mail-wr1-f42.google.com with SMTP id b19so14689540wrh.11 for ; Sat, 30 Apr 2022 11:50:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=jkqxz-net.20210112.gappssmtp.com; s=20210112; h=message-id:date:mime-version:user-agent:subject:content-language:to :references:from:in-reply-to:content-transfer-encoding; bh=oLfBq/YyXUtZ+CDs7CMX47HLx3BsXOkAGb02MVLCOz0=; b=Bk84N/BfniiJCXSDNhjzJGJ6WtLbbrWUGEp+7NHsNxp1IzMjV+Rn/PXNwwz4Hdm/Ic 0x35BgvJLtLYt2AwGkxLXXnhTHR54gVWCjSt65qKuovD37c52M0NvOWmWnbCpaPzHzlS nqVTu08Y1ZwxqFJdD1frYG9vvM0ecSTwIUxpKliW+fT3p9deXEUvKrNYR89H5mdUFaGw Jg/dpXvrg3qlK9DzRgvFRSodSMLdPxOpbfiJHgHBKx44YUPrEVPSws02c4zYKFmNwwEv HSKCuOJrX8UZzC8I/5i61/1ot2qL9N6ufyyBe61fEFvOwT3slvHibaaxzJXoWseGNlPE 7mog== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:message-id:date:mime-version:user-agent:subject :content-language:to:references:from:in-reply-to :content-transfer-encoding; bh=oLfBq/YyXUtZ+CDs7CMX47HLx3BsXOkAGb02MVLCOz0=; b=KxqLv1iT8iI+tXw0ktPTqY6bADCFFkSoKhn1FhRlWvpC8d2kWKqLSQn6OFgnbhKY9P xrnLluYuyl6Q+kVg/H5jGAMZvCosk/GVINAjJlDxOqynO+j1Dxk+XIQ2Tn3SKLdnDq8w 7DMEIF2oL83FpSRqEm3ubSXZn3R0WDFkKe701oTLf7OvTaD3ZWf+16/4xBaN9AXN82nn JywxANk1IcqzKZPogHOBolofhKmZH5p8ucZPmMkVhirImAitVbzInEM0Y36KHdntOdZ8 ouHC+DQ6vJl8sUtxOjXrvcyZ+4t/WOPFJ9UWYiQvq60K/ymtvS3/oO88prCM84GQjrra yA7w== X-Gm-Message-State: AOAM530kCaaUV2EgU48sjUArjqi7BAQyRzysn2XJhxhcNyEjK++k7H+0 u9HWQtqt+J7YlvVDBogRDjlp0jAq2r0KdJMf X-Google-Smtp-Source: ABdhPJxEYqGEmSqB88rFYBN2ISsh1nP3gb6TJYWMGWoBbYU/ySLyoPg+W/hKfZRM1WXOIxXMsy3KkQ== X-Received: by 2002:a5d:5966:0:b0:20a:e810:5e9d with SMTP id e38-20020a5d5966000000b0020ae8105e9dmr3829940wri.240.1651344621930; Sat, 30 Apr 2022 11:50:21 -0700 (PDT) Received: from [192.168.0.11] (cpc91222-cmbg18-2-0-cust46.5-4.cable.virginm.net. [81.106.30.47]) by smtp.gmail.com with ESMTPSA id p7-20020a7bcc87000000b003942a244ed6sm2403921wma.27.2022.04.30.11.50.21 for (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sat, 30 Apr 2022 11:50:21 -0700 (PDT) Message-ID: <433be244-75d7-93c4-d741-7ac48d16e2a6@jkqxz.net> Date: Sat, 30 Apr 2022 19:50:20 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.8.1 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: <20220328010851.1193-1-jamrial@gmail.com> <20220328010851.1193-2-jamrial@gmail.com> From: Mark Thompson In-Reply-To: <20220328010851.1193-2-jamrial@gmail.com> Subject: Re: [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 Content-Transfer-Encoding: 7bit Content-Type: text/plain; charset="us-ascii"; Format="flowed" Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: On 28/03/2022 02:08, James Almer wrote: > 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(+) I took me a while to work out what the issue was here, maybe make it a bit clearer that the problematic thing is that decomposed unit content for the redundant frame header OBU isn't filled if there was a frame header (in which case that content is never used, but someone could technically look at it if they wanted and observe that it is wrong). > 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 LGTM in any case. (Previous patch fine too given this one.) - Mark _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".