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 3287B448EE for ; Tue, 27 Sep 2022 05:39:32 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id F28CD68B83F; Tue, 27 Sep 2022 08:39:28 +0300 (EEST) Received: from mga17.intel.com (mga17.intel.com [192.55.52.151]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0447468B2A8 for ; Tue, 27 Sep 2022 08:39:21 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=intel.com; i=@intel.com; q=dns/txt; s=Intel; t=1664257167; x=1695793167; h=from:to:subject:date:message-id:references:in-reply-to: content-id:content-transfer-encoding:mime-version; bh=qjItfySc7SjgkWKGqvfhx4AEf51Y1SPnSbSDqC5BVT4=; b=ObNHXnE550NkLEsOJ92nILE94W9ur59M4Xtho43jPFJNYd15hPkZmXcj QfcmNQ2HyRJwzRY6BoGTxoFhc27pDcdxwKWaCROEU5ABYHMcrrZUI2UDY fJevp1dDfHzX4oowb0Gj2LxZcJx55JbJN39hp76UtdADOBMwZHuBQAk/f TXe35vGWaQYrQo2uh2OzNpok7Q2ByRQBoQdHxuOVhqdMA3DO5l18q2+nP fNA0ZG022RhMgNlOsvkcUd+n+ThR7ZfIz6TuIuTx1tGq5T/1XsWwvlnc/ JID4/2vVRqtib2IN74o79pajX94lIvUjkT8b6EjRLNHAU6UMhulSnknmZ w==; X-IronPort-AV: E=McAfee;i="6500,9779,10482"; a="281596720" X-IronPort-AV: E=Sophos;i="5.93,348,1654585200"; d="scan'208";a="281596720" Received: from fmsmga001.fm.intel.com ([10.253.24.23]) by fmsmga107.fm.intel.com with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 26 Sep 2022 22:39:01 -0700 X-ExtLoop1: 1 X-IronPort-AV: E=McAfee;i="6500,9779,10482"; a="763745169" X-IronPort-AV: E=Sophos;i="5.93,348,1654585200"; d="scan'208";a="763745169" Received: from orsmsx602.amr.corp.intel.com ([10.22.229.15]) by fmsmga001.fm.intel.com with ESMTP; 26 Sep 2022 22:39:01 -0700 Received: from orsmsx610.amr.corp.intel.com (10.22.229.23) by ORSMSX602.amr.corp.intel.com (10.22.229.15) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Mon, 26 Sep 2022 22:39:01 -0700 Received: from orsmsx611.amr.corp.intel.com (10.22.229.24) by ORSMSX610.amr.corp.intel.com (10.22.229.23) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31; Mon, 26 Sep 2022 22:39:00 -0700 Received: from orsedg603.ED.cps.intel.com (10.7.248.4) by orsmsx611.amr.corp.intel.com (10.22.229.24) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.31 via Frontend Transport; Mon, 26 Sep 2022 22:39:00 -0700 Received: from NAM12-DM6-obe.outbound.protection.outlook.com (104.47.59.177) by edgegateway.intel.com (134.134.137.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.1.2375.31; Mon, 26 Sep 2022 22:39:00 -0700 ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ktlCqLrxwfobqe9oxb3otrRo3wzcuDbD9iYKyNSPnoTlvabMIEE71VDPuMD93W3dAy2YDg/dLkkyBUutp2W8hA2GiKtNntatBpOf69p253pG2mEhAEoYTBA9UTGGvFqTJxhL1Mzms2ZqF/jIIMSQ09OCAKur/xCt6MlxBJ02c8aH9d3np2cELespeMQ8lbupWm1vHlCBqzIax5AdPGkIQFwKyhj1KfpKiHmpW2cWpGSLDSEDcBCLx6xPJgSkJX5ZT478OJ3lv8RgkvmSSCs3+EKBTjjn+YPw554iQ5VruIyQ7+U5Mg9Zs0/nw6sWLGtfZ/y3ayCdePXFQd7mJs6xSg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=qjItfySc7SjgkWKGqvfhx4AEf51Y1SPnSbSDqC5BVT4=; b=J3oueU/xF4g/WT6uNWEjOT1XY6Bav8fZFHmrHi2qSS9L/2iK0wIR3vix3ekuzXZs4U+g6TR9OEPAA/36WxwHBCBolWJ9i0gx2h3qrM7FRX3l8cAVH//rtKfdKnJziVviKOKhW5Pg4tXmDQN23lqWSGyqzzXiBCPn5ra6omQrHeClHcYwLsNiMseql6PNjKZjvlMaz6kgh8vJza5p8N3d2NsshkBXSosC2Xi4X0demc+oHFTJLGPAZ8sEICWzU602Usaka998l+NRlUcUGdCjVOLZOfCYmfJs9TfepbkL0bhDrC0pqeIyH/Uoloj4RBXUvwkEzhe2GtCFBZierxnA/Q== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=intel.com; dmarc=pass action=none header.from=intel.com; dkim=pass header.d=intel.com; arc=none Received: from BN9PR11MB5515.namprd11.prod.outlook.com (2603:10b6:408:104::8) by PH7PR11MB5768.namprd11.prod.outlook.com (2603:10b6:510:131::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5654.25; Tue, 27 Sep 2022 05:38:57 +0000 Received: from BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::3804:a5ab:68a9:9304]) by BN9PR11MB5515.namprd11.prod.outlook.com ([fe80::3804:a5ab:68a9:9304%6]) with mapi id 15.20.5654.026; Tue, 27 Sep 2022 05:38:57 +0000 From: "Xiang, Haihao" To: "ffmpeg-devel@ffmpeg.org" Thread-Topic: [FFmpeg-devel] [PATCH] lavc/cbs_av1: restore CodedBitstreamAV1Context when AVERROR(ENOSPC) Thread-Index: AQHY0iHAUsrN0ZWFVUeZ1xLwATMjtK3ywpgA Date: Tue, 27 Sep 2022 05:38:57 +0000 Message-ID: <523a375786e753578a235197405a36e729ebdb19.camel@intel.com> References: <20220926072315.26559-1-haihao.xiang@intel.com> In-Reply-To: Accept-Language: en-AS, zh-CN, en-US Content-Language: en-US X-MS-Has-Attach: X-MS-TNEF-Correlator: x-mailer: Evolution 3.28.5-0ubuntu0.18.04.2 authentication-results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=intel.com; x-ms-publictraffictype: Email x-ms-traffictypediagnostic: BN9PR11MB5515:EE_|PH7PR11MB5768:EE_ x-ms-office365-filtering-correlation-id: 0fc13332-c6d1-4943-95c5-08daa04a92c4 x-ms-exchange-senderadcheck: 1 x-ms-exchange-antispam-relay: 0 x-microsoft-antispam: BCL:0; x-microsoft-antispam-message-info: xAUFqjwVbtwpiMhMIlSX8kFECg6qP7aFfXZ3ISdEtTMnhyxI3Esa0mNoBQVAO9J57INt1H+2qTd5jsSOUKrYSRu/SR7b1hW48aqraTKb1eRngQNm08RdcS52OcghDyOcjExAgZnSkPjYh5fN9xhmDR5juzkUxd7A4Kl0eOrI1pAodA+JVR/8FQYtupwZKTKSyn/byTmopIE2kW3wrF08xTD7WshoPuvii7W+k1oznobBV80HCeHn4rSvwQxBzbLHHwwBJbGqS27EqGX0otwZw9LEQJI0nnnFwF8EDosdRB19MCs6g9n8AVHFiLLxtQfEwLh0POVA6jAHAv0QrPj3kr8ODAKjOr1+sMLklt6NXli/nh2BJS+UK/whHiOFlmzfqIkByUZ9Kx0KSe4jDQn3613xWoCcmJJXweDcyzW634sOvAfzjmlTIcP4TZ9Lom+OTqtnMCskNcsHrrwiRCQmYMvt0zu5BZbhwz32IKQsnD9wyFHcwQbacKIx5XGkV2seBwNJrBP94JHRuGmGJ7HFaZAlOk8UWGv1GzxQJJnIxQsBJmiwjl7pvlpgJS0F/sXRtKXFbb3TuVTmsUnjtOZFgA44tXzMuZIvZTgmNZKgKF9MhZR7CbHdZvh0OS7HyKiPs9CQ/xlpZ/RV/aE3UIamKFm1xryG4/Iy/yG87zDqLPf0kRSAEdnovfIuvI+2LDCOZB1Tj0iR5ZcZEB07EKT/7jFA+QPn3ZnhV4GVhvdUDC/Fmq/WwFNNdrFpkWZaJLgZoRXQabDUBKNsGBRuVAqRGg4F37NBKItqdZe6MVNaW5eQ3z5fOEs18jn6dRIggx7lJwppFuWo8AsfvheX9ihIglsAlxuUCxNK6P//igAYz5qaagTlXnrPiL+9PrhOXTPn x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:; IPV:NLI; SFV:NSPM; H:BN9PR11MB5515.namprd11.prod.outlook.com; PTR:; CAT:NONE; SFS:(13230022)(396003)(39860400002)(346002)(366004)(376002)(136003)(451199015)(82960400001)(5660300002)(38070700005)(86362001)(38100700002)(36756003)(122000001)(2906002)(186003)(2616005)(41300700001)(6486002)(6506007)(71200400001)(53546011)(26005)(19627235002)(478600001)(83380400001)(966005)(6512007)(316002)(6916009)(66446008)(8936002)(66476007)(8676002)(91956017)(76116006)(66556008)(64756008)(66946007)(99106002)(473944003)(414714003); DIR:OUT; SFP:1102; x-ms-exchange-antispam-messagedata-chunkcount: 1 x-ms-exchange-antispam-messagedata-0: =?utf-8?B?VVdlWEhkVTc4V3JIRFk0dTRFcVdjNHFGcTRjS016TkN4djNieTRMdURjYUt1?= =?utf-8?B?NkxGK3hwVjRGOGJkSm53ZWRaQmc4bkd1eFFia2N2TEk5bURvaTJCTjJrbEg4?= =?utf-8?B?VkdidDBESnpKSE00R2xGaGd6SktiQk0zNUc4THV1Vlk5S2UvUk5qRlpjS3RB?= =?utf-8?B?RkdEa3F2ZWNtb25SZDArSFBMMForY2RGb2pDWHVOaHZqSUZaOWt2dEFDQVhz?= =?utf-8?B?VTRyWGNCYVVZanM4WjQxYVdvYXdoOW9LU0dkc213dG9LYXhUU1VDS2RjSCsw?= =?utf-8?B?NE1EMnIwTDRaT1AxaFJVLzlDRVYrOHJCTFhJZVpiUnhjWE56Tmxlck40STdh?= =?utf-8?B?dFRNZGtPVXZXNnA5djJPbGtWZ3RhRTlROHFGdTFEWTdKYWNQc2trbkY2T1M3?= =?utf-8?B?UzZhMzZpdUs3R2tLcXV6Wm1GazBER1lHdTRUQW1zMzFneUdvUXpnaW1zMFZG?= =?utf-8?B?ZURnYVp2R1hCZHFWdktmTFVaZ2g5VWt3QlZjaVRJbUR1MFY2SmFjS2RtZUNI?= =?utf-8?B?MjVhRXFqeGYxR1BsZWdEQ1Q5eWsxd0RXNHJGSC9ZSGNNYk1KSXZaTVh6MnQ0?= =?utf-8?B?QU5iWnFVcm9IMlJRRXN0QlUxMUQ0MmtEUkVNUjkxQW9UTDBBTUYrNEpkaWkr?= =?utf-8?B?enMzdVlabGFtNndER0JBbUVvKzNac3FrMHBBOWRQanpTNUU5SjhMK3pUYzF5?= =?utf-8?B?UmZ4bTk3UHU3VUpPcko1VGZYWkVhTktWVWtXTzNydkR0THRhRzBWNWtjYVRn?= =?utf-8?B?TDd1Vk9NMWlxdmgrUnUyUjkvdDhISmE0SDZVYzQ4eFdWN0ZleXladXZrOTZ2?= =?utf-8?B?K2pvTVNleVdERGNPUVF6OHpFSXc3UytyODJKL1pOMGJjUXN3d084eUdIZVhk?= =?utf-8?B?Tms0dTk1ektST0RrYktWMEhOdVAyclBwQVkrRVpDd2QvUjhwc2pzd3dJQ2lK?= =?utf-8?B?QzBURlJHS1VTSkFPTlN6dnFrenBVWUJvZ1JmNUFZSHNjWkZOM1ZJWWY4VnRr?= =?utf-8?B?U1VLQUtPUkVmL0VvV2c3NHErVFpGMUtab0RTSzNsKzJHZXMzZ0FxdFFDRHZq?= =?utf-8?B?MXNrZjZZMFlRaFYwL1FVUENicFA4N0VjRWQ3dm5NQ1RsQVlNZTRaNVl0TUdx?= =?utf-8?B?d2prUEd4eEg0WXB3ZnB6NVZQRDFSY1hZems1d1UrVW5vRTdYNlpIbHk5ZXg0?= =?utf-8?B?SFYvZExtYkFjVE5OVktkMThwa1Z6eHZvTVR6aXRTNXREYU9URUFMc0N0TW91?= =?utf-8?B?Rll6TFprZDcxT1lPcHp1TFVhMndLcEgvVFFtWldMb2NWNGprZ3RVYVpJeUNO?= =?utf-8?B?aUF4SEF5RkRLSnFCS3R2QkVJVDR2Nyt2QzV2NjBidDYzS2RIZHo3V0orL0Fl?= =?utf-8?B?WnNQcmxTendjZ3J3U3JGZGNlL0pRYW9FTEkyakdidEJtYmNadEdDZUl2bUs1?= =?utf-8?B?QTEwRzZwd0wrWS9Pd0JZWkROMzUrRTVkNW1rQlliR1hUalkwNks3WWxvUmd3?= =?utf-8?B?Zk4xY1dSR1dsSXRMdzlsKzYxaHJQYzJGakN6Tjc1bzQ3bUg0TEJqV3drNHZj?= =?utf-8?B?d1lKWEN5WDhrNFhJVDN2eGNSWmQ5VUlDeThNYVdsYVUyMzVKN1IwKy9UYk53?= =?utf-8?B?NFZac2kraXFBVS9JaU8vdmcyV2JKc25UT1dETEhXUFFoZVNqUDRMd2dhajBW?= =?utf-8?B?N3BTWjkrR1VBVnZubWhQdUdlY0dWMkZLZGtGVmZqZzZIaStMNk9VVUVTUzdH?= =?utf-8?B?a1hCenMxQzNoZlNudCs5dnpDZWlzbTdxWThSdFpBQnh1MW04QWU3R2xmRGFD?= =?utf-8?B?T3g3MFVvUkpFWTRvdmR6SzdybXNPYVNKNFhKdTRjUkt0cENXaHNuNC9WMnZP?= =?utf-8?B?TDlINDJVNGMvWnovOC9iY3loL3ZiQ3dwUFg0YnVwYUpIQmVqbXB0aS9hWlpv?= =?utf-8?B?a09GYjRTWVdBYW9vZlZKNVpEVjJkMXFhZTFnTWp0ZldRZ0FhZUdVeFl3dEl0?= =?utf-8?B?S3NTSXFXbUxiUGRxYzdsOVNmNzdKaU1UakdMS1dZZkRjYjZiZDQ1QlEwWGZS?= =?utf-8?B?enJOYlN4T0hFYlJNM0tJUzlRT0hQa0pOcGY3UFNybGpWOGFJMDdEbTFEYjVj?= =?utf-8?B?cWRwUGE4ak9aYUFMRlJXeEliWWtocmRsajZKd2ZkQjlEUitKTGJtUG1iQXEr?= =?utf-8?B?K3c9PQ==?= Content-ID: MIME-Version: 1.0 X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-AuthSource: BN9PR11MB5515.namprd11.prod.outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 0fc13332-c6d1-4943-95c5-08daa04a92c4 X-MS-Exchange-CrossTenant-originalarrivaltime: 27 Sep 2022 05:38:57.6102 (UTC) X-MS-Exchange-CrossTenant-fromentityheader: Hosted X-MS-Exchange-CrossTenant-id: 46c98d88-e344-4ed4-8496-4ed7712e255d X-MS-Exchange-CrossTenant-mailboxtype: HOSTED X-MS-Exchange-CrossTenant-userprincipalname: y373spJdKWiYDyZoI1+AYAoYEhcR2X6s0pzYI5ua8s7Sl7/OjOgFvXSxYyJzLF22yV8AaoG1oA6weVnhc4u+lg== X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH7PR11MB5768 X-OriginatorOrg: intel.com Subject: Re: [FFmpeg-devel] [PATCH] lavc/cbs_av1: restore CodedBitstreamAV1Context when AVERROR(ENOSPC) 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-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: On Tue, 2022-09-27 at 00:31 -0300, James Almer wrote: > On 9/26/2022 4:23 AM, Xiang, Haihao wrote: > > From: Haihao Xiang > > > > The current pbc might be small for an obu frame, so a new pbc is > > required then parse this obu frame again. Because > > CodedBitstreamAV1Context has already been updated for this obu frame, we > > need to restore CodedBitstreamAV1Context, otherwise > > CodedBitstreamAV1Context doesn't match this obu frame when parsing obu > > frame again, e.g. CodedBitstreamAV1Context.order_hint. > > > > $ ffmpeg -i input.ivf -c:v copy -f null - > > [...] > > [av1_frame_merge @ 0x558bc3d6f880] ref_order_hint[i] does not match > > inferred value: 20, but should be 22. > > [av1_frame_merge @ 0x558bc3d6f880] Failed to write unit 1 (type 6). > > [av1_frame_merge @ 0x558bc3d6f880] Failed to write packet. > > [obu @ 0x558bc3d6e040] av1_frame_merge filter failed to send output > > packet > > --- > > libavcodec/cbs_av1.c | 85 ++++++++++++++++++++++++++++++++++---------- > > 1 file changed, 67 insertions(+), 18 deletions(-) > > > > diff --git a/libavcodec/cbs_av1.c b/libavcodec/cbs_av1.c > > index 154d9156cf..585bc72cdb 100644 > > --- a/libavcodec/cbs_av1.c > > +++ b/libavcodec/cbs_av1.c > > @@ -1058,15 +1058,33 @@ static int cbs_av1_write_obu(CodedBitstreamContext > > *ctx, > > AV1RawTileData *td; > > size_t header_size; > > int err, start_pos, end_pos, data_pos; > > + CodedBitstreamAV1Context av1ctx; > > > > // OBUs in the normal bitstream format must contain a size field > > // in every OBU (in annex B it is optional, but we don't support > > // writing that). > > obu->header.obu_has_size_field = 1; > > + av1ctx = *priv; > > + > > + if (priv->sequence_header_ref) { > > + av1ctx.sequence_header_ref = av_buffer_ref(priv- > > >sequence_header_ref); > > + if (!av1ctx.sequence_header_ref) { > > + err = AVERROR(ENOMEM); > > + goto error; > > If this is called, av1ctx.frame_header_ref will be equal to > priv->frame_header_ref and as such unreferenced twice if not NULL. So > just return AVERROR(ENOMEM) here. Thanks for pointing it out, I'll update it in v2. > > > + } > > + } > > + > > + if (priv->frame_header_ref) { > > + av1ctx.frame_header_ref = av_buffer_ref(priv->frame_header_ref); > > + if (!av1ctx.frame_header_ref) { > > + err = AVERROR(ENOMEM); > > + goto error; > > + } > > + } > > > > err = cbs_av1_write_obu_header(ctx, pbc, &obu->header); > > if (err < 0) > > - return err; > > + goto error; > > > > if (obu->header.obu_has_size_field) { > > pbc_tmp = *pbc; > > @@ -1084,18 +1102,21 @@ static int cbs_av1_write_obu(CodedBitstreamContext > > *ctx, > > err = cbs_av1_write_sequence_header_obu(ctx, pbc, > > &obu- > > >obu.sequence_header); > > if (err < 0) > > - return err; > > + goto error; > > > > av_buffer_unref(&priv->sequence_header_ref); > > priv->sequence_header = NULL; > > > > err = ff_cbs_make_unit_refcounted(ctx, unit); > > if (err < 0) > > - return err; > > + goto error; > > > > priv->sequence_header_ref = av_buffer_ref(unit->content_ref); > > - if (!priv->sequence_header_ref) > > - return AVERROR(ENOMEM); > > + if (!priv->sequence_header_ref) { > > + err = AVERROR(ENOMEM); > > + goto error; > > + } > > + > > priv->sequence_header = &obu->obu.sequence_header; > > } > > break; > > @@ -1103,7 +1124,7 @@ static int cbs_av1_write_obu(CodedBitstreamContext > > *ctx, > > { > > err = cbs_av1_write_temporal_delimiter_obu(ctx, pbc); > > if (err < 0) > > - return err; > > + goto error; > > } > > break; > > case AV1_OBU_FRAME_HEADER: > > @@ -1115,7 +1136,7 @@ static int cbs_av1_write_obu(CodedBitstreamContext > > *ctx, > > AV1_OBU_REDUNDANT_FRAME_H > > EADER, > > NULL); > > if (err < 0) > > - return err; > > + goto error; > > } > > break; > > case AV1_OBU_TILE_GROUP: > > @@ -1123,7 +1144,7 @@ static int cbs_av1_write_obu(CodedBitstreamContext > > *ctx, > > err = cbs_av1_write_tile_group_obu(ctx, pbc, > > &obu->obu.tile_group); > > if (err < 0) > > - return err; > > + goto error; > > > > td = &obu->obu.tile_group.tile_data; > > } > > @@ -1132,7 +1153,7 @@ static int cbs_av1_write_obu(CodedBitstreamContext > > *ctx, > > { > > err = cbs_av1_write_frame_obu(ctx, pbc, &obu->obu.frame, > > NULL); > > if (err < 0) > > - return err; > > + goto error; > > > > td = &obu->obu.frame.tile_group.tile_data; > > } > > @@ -1141,7 +1162,7 @@ static int cbs_av1_write_obu(CodedBitstreamContext > > *ctx, > > { > > err = cbs_av1_write_tile_list_obu(ctx, pbc, &obu- > > >obu.tile_list); > > if (err < 0) > > - return err; > > + goto error; > > > > td = &obu->obu.tile_list.tile_data; > > } > > @@ -1150,18 +1171,19 @@ static int cbs_av1_write_obu(CodedBitstreamContext > > *ctx, > > { > > err = cbs_av1_write_metadata_obu(ctx, pbc, &obu- > > >obu.metadata); > > if (err < 0) > > - return err; > > + goto error; > > } > > break; > > case AV1_OBU_PADDING: > > { > > err = cbs_av1_write_padding_obu(ctx, pbc, &obu->obu.padding); > > if (err < 0) > > - return err; > > + goto error; > > } > > break; > > default: > > - return AVERROR(ENOSYS); > > + err = AVERROR(ENOSYS); > > + goto error; > > } > > > > end_pos = put_bits_count(pbc); > > @@ -1172,7 +1194,7 @@ static int cbs_av1_write_obu(CodedBitstreamContext > > *ctx, > > // Add trailing bits and recalculate. > > err = cbs_av1_write_trailing_bits(ctx, pbc, 8 - end_pos % 8); > > if (err < 0) > > - return err; > > + goto error; > > end_pos = put_bits_count(pbc); > > obu->obu_size = header_size = (end_pos - start_pos + 7) / 8; > > } else { > > @@ -1190,14 +1212,36 @@ static int cbs_av1_write_obu(CodedBitstreamContext > > *ctx, > > *pbc = pbc_tmp; > > err = cbs_av1_write_leb128(ctx, pbc, "obu_size", obu->obu_size); > > if (err < 0) > > - return err; > > + goto error; > > > > data_pos = put_bits_count(pbc) / 8; > > flush_put_bits(pbc); > > av_assert0(data_pos <= start_pos); > > > > - if (8 * obu->obu_size > put_bits_left(pbc)) > > - return AVERROR(ENOSPC); > > + if (8 * obu->obu_size > put_bits_left(pbc)) { > > + av_buffer_unref(&priv->sequence_header_ref); > > + av_buffer_unref(&priv->frame_header_ref); > > + *priv = av1ctx; > > + > > + if (av1ctx.sequence_header_ref) { > > + priv->sequence_header_ref = > > av_buffer_ref(av1ctx.sequence_header_ref); > > + if (!priv->sequence_header_ref) { > > + err = AVERROR(ENOMEM); > > + goto error; > > + } > > + } > > + > > + if (av1ctx.frame_header_ref) { > > + priv->frame_header_ref = > > av_buffer_ref(av1ctx.frame_header_ref); > > + if (!priv->frame_header_ref) { > > + err = AVERROR(ENOMEM); > > + goto error; > > + } > > + } > > Why are you creating new references? They were already copied to priv > and av1ctx is in the stack, so just return AVERROR(ENOSPC) directly. I wanted to return the value in the same place, but you are right, here it is better to return AVERROR(ENOSPC) directly. Thanks Haihao > > > + > > + err = AVERROR(ENOSPC); > > + goto error; > > + } > > > > if (obu->obu_size > 0) { > > memmove(pbc->buf + data_pos, > > @@ -1213,8 +1257,13 @@ static int cbs_av1_write_obu(CodedBitstreamContext > > *ctx, > > > > // OBU data must be byte-aligned. > > av_assert0(put_bits_count(pbc) % 8 == 0); > > + err = 0; > > > > - return 0; > > +error: > > + av_buffer_unref(&av1ctx.sequence_header_ref); > > + av_buffer_unref(&av1ctx.frame_header_ref); > > + > > + return err; > > } > > > > static int cbs_av1_assemble_fragment(CodedBitstreamContext *ctx, > > _______________________________________________ > 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". _______________________________________________ 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".