From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ffmpeg-devel-bounces@ffmpeg.org>
Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100])
	by master.gitmailbox.com (Postfix) with ESMTPS id 2A99644AC6
	for <ffmpegdev@gitmailbox.com>; Sat, 22 Mar 2025 14:25:43 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E5DA9687C1D;
	Sat, 22 Mar 2025 16:25:38 +0200 (EET)
Received: from EUR03-VI1-obe.outbound.protection.outlook.com
 (mail-vi1eur03olkn2086.outbound.protection.outlook.com [40.92.57.86])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C2D4C687B93
 for <ffmpeg-devel@ffmpeg.org>; Sat, 22 Mar 2025 16:25:32 +0200 (EET)
ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;
 b=VneIJAvYVZ5BxcZt5uojJY41I4Ht8hfJdjsKp9cID+xKHORlBbybvqqyVhMGNNApJDetGxccAyZ1aatAsOjEeBHV3PM0D1m1y6ZSez6G3vDH+4lEIfQZWUFXtrKwHR0uCCFJnnlMJAWEoNAAh9TaBindsPlzISkQFHxtTos3t6ksE1kxdACdzo11sVKd4w9c7P0NOWEAvQdM/sxaYFmKkpWBXEFx3APhDohB803WLRp5qbsZ2R7zH0S5dNTBw15Dy1l/h1JOPOxWQAuhc/gwNpYNnK4e4opTe2KRqSlfHKdFzOD9+RIa8Zm2y5+0e6FJeNsThIrC2U3Gwm6cokcZMQ==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector10001;
 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=pT2ibM1cYt/1QBHqpl63dzTIaT+uL33ihncPrsI2GrY=;
 b=vmTqUCFBh0Srv6tF4/BrofPTZSQh1D5dZ7IN82c2j4aw0d5TrnY87nTV2/4LwMswT/aDTHamAxuy5jH7KD0MgAIbOVDAWYW39o34Xnus3zjlg/+rQA0jhnTspbnhHG2TzLi1/qOyH6LO3rtQR85BP0R0yXFXXAbGSpsAHGYdseS+yfAym/7ki3rKLvvhC78hZfupNiqAHzm2NanmM43apJo6FA7r0erDBMbO0la9fbzGM49nfV+nLhZKMMRCV/4ihJl+5GG5TUfD5gUd3BQPFiy/xwk994LtmtSmmq9pWoxuuwrL1KWpzkqvPX5pxJEpxqJMEI4HXeUSgKiPl1w7vA==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none;
 dkim=none; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com;
 s=selector1;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=pT2ibM1cYt/1QBHqpl63dzTIaT+uL33ihncPrsI2GrY=;
 b=KBL4jzOIPn4KYCWR+4RucHytek3Y3VG6tIoTYauiAtdFK6y8uMIS8XFEilPFWNd2OVzeuGW/K+C3RvUqz3kwqX/GIgKB6uBm+/aoM17MNUVl5BN/VeKKHRDHcET9bkak87NsOhrjjHRabrqblrqTlpdbXxhuLoDmZamcPt75t0MbgEmgQz8x0iO+V230dmUZ63u4dEXOXqQSCN3ISj0nZA9O89HCEzbDgnS7PHQj5NjkWHLdMQySgltRjJlMQHWoj3O3M2mW8+l0Y3tM5ov+hvFrpe+CvqwsStqjmR0bTDzTuZ+NL4S7WIuysXjMUSPyozh11lTaXp2Zye9mep7TCw==
Received: from GV1SPRMB0036.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8b::16) by
 AS4P250MB0461.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4b0::15) with
 Microsoft
 SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id
 15.20.8583.13; Sat, 22 Mar 2025 14:25:31 +0000
Received: from GV1SPRMB0036.EURP250.PROD.OUTLOOK.COM
 ([fe80::2e14:af18:9569:bc54]) by GV1SPRMB0036.EURP250.PROD.OUTLOOK.COM
 ([fe80::2e14:af18:9569:bc54%5]) with mapi id 15.20.8583.010; Sat, 22 Mar 2025
 14:25:30 +0000
Message-ID: <GV1SPRMB00367FABE3D06BEE02D86F938FDA2@GV1SPRMB0036.EURP250.PROD.OUTLOOK.COM>
Date: Sat, 22 Mar 2025 15:25:29 +0100
User-Agent: Mozilla Thunderbird
To: ffmpeg-devel@ffmpeg.org
References: <DU0P250MB07476C3EDEC5F4849B1102798FDB2@DU0P250MB0747.EURP250.PROD.OUTLOOK.COM>
 <20250321194237.20559-1-jamrial@gmail.com>
Content-Language: en-US
From: Andreas Rheinhardt <andreas.rheinhardt@outlook.com>
In-Reply-To: <20250321194237.20559-1-jamrial@gmail.com>
X-ClientProxiedBy: FR4P281CA0260.DEUP281.PROD.OUTLOOK.COM
 (2603:10a6:d10:e8::7) To GV1SPRMB0036.EURP250.PROD.OUTLOOK.COM
 (2603:10a6:150:8b::16)
X-Microsoft-Original-Message-ID: <e54cd1b2-19f4-4346-87ee-b029a0122435@outlook.com>
MIME-Version: 1.0
X-MS-Exchange-MessageSentRepresentingType: 1
X-MS-PublicTrafficType: Email
X-MS-TrafficTypeDiagnostic: GV1SPRMB0036:EE_|AS4P250MB0461:EE_
X-MS-Office365-Filtering-Correlation-Id: 72badb4b-92ed-475f-5500-08dd694d65e9
X-Microsoft-Antispam: BCL:0;
 ARA:14566002|6090799003|8060799006|5072599009|19110799003|15080799006|461199028|7092599003|440099028|3412199025|41001999003|12091999003;
X-Microsoft-Antispam-Message-Info: =?utf-8?B?c2gxQ0VaMXloTTg1NjN0SHZGSnhOMTBEOFJ4MVJTWUxyQXNQNE4zaUtzU0E4?=
 =?utf-8?B?NFg3TWFNQVh0eGdhR0JRVkFLUnJpc3hmOUJTeGtuQlNRUTRTUjc4b1g5b0ti?=
 =?utf-8?B?Qzd2eTNUUStMUkorYk15VzdhOStUZkZaUllLMWxvcDd4Rm1zaExmWks0U2d1?=
 =?utf-8?B?MFBUbVVYNlpVQUVWQ0JPUGc3bVFUTm8rQWtRMkdJYzdpVlhOOUcrdTR0UDVF?=
 =?utf-8?B?cXN4MlUrTUdYSXBsOExnK1d4WUE3R1hLK0FhUkdjY2lieWZGMk5NS3ZXKzNj?=
 =?utf-8?B?ekJ3OXNNbzBuaXJIQitSNXhPUzRBWHJQOXlvMU1TbjV5ZUNOSTFpbGJEU1Js?=
 =?utf-8?B?MllqcU9sdm84eW5uMVFJV2U4dDFZWXlQUWZoMHhjT1hrZzRIVWFOaVZHdGRa?=
 =?utf-8?B?blBWaThlVVNxK3lXWmVTOHhRcWhaZ3Z2WitxcTRTQk1FRDgzS1JlME8xdFlI?=
 =?utf-8?B?b2o5SUtTU3NMMnVHazZFZ2lqMyt0bkE2Vzg0Z09tMFVzMEthZGpNMmNsenU5?=
 =?utf-8?B?OUd4YlBKaWNNN1VEdFRGNHpXVnRQVXkwam5GbkNKSHlkdm1lTmhubVYrUEpT?=
 =?utf-8?B?RzZkUmpXbHlxeUNTdXdIWnZFbkc1S3ZqQkJGQUQrVm1aRkdIT2t5cHV3azc5?=
 =?utf-8?B?R0hkOUgzUXQvZUp2eUZubjM3VDdqcjdqSmNPNFJFejBZZ2R4eUhVSFFnaWgz?=
 =?utf-8?B?NjQ4L3FnTXEwc2c1eGR3eVhJVEdLUE11OHFac1ZDN1N3S0UvcEt4ck9tcWhq?=
 =?utf-8?B?RFNQb2lmOUN0UGNjdG84UW1IMDlVN2VERkxLbVUrOHRGMGZPVTNFZS8rQnZx?=
 =?utf-8?B?djVDRS84cWtENTNzVWR0RmhuS1Y5cTR2elBBRHZkbVRScDZVQ0xHZXdDY3J1?=
 =?utf-8?B?blpqUVZWQWt2WTR5bzUvdVgzMnNLcnRQTjIrSldDcWUwaDBEbVhCcStKS0px?=
 =?utf-8?B?bkN1TXBIRWRDQm5vY05MQndKNjV3Qk5HbWcvcjdJSVhKdzZsNGYvNW5jMnFi?=
 =?utf-8?B?NG0zMjdmQU42S1pLK1djMnBaY3JCalNFbEpWRWNmTkN0K0hVenpjeDlvUHEw?=
 =?utf-8?B?b0RvNHBKMjVyNXFwRldxdkM2ZE9jMU5ob0RUd2RIV2ZxMkFKSUV4THZxVzhy?=
 =?utf-8?B?akdaNDVOWW5sOWd0NElmdmRTUTBGK0h2YmVJK2JNWTFHOThKdXJtalNmU1Nr?=
 =?utf-8?B?MElOUG9NdUU0aWw2SXFOa2VDZmJPdVhSQ2VNUSsxQlcrRFlzQUlaUG9iWVQ5?=
 =?utf-8?B?NzdJWGJ5TEJBaktnRXBwaGdqemxKVVAzNzVVY0MwaHlXYmJRc3BRMlkyMlJN?=
 =?utf-8?B?ck1GL3RFTExqMm9JcE9FV0haQWhrcTUvTTJ5azhsQ3hFNHJ0cGhnZm0xaXRO?=
 =?utf-8?B?b2VMVkp4TnEzVWFKNDJRc3EzelR4RVJhWXJNSVJCb0lFZ2kxM1BrZXNYQXQv?=
 =?utf-8?B?c3Yrd0lpekZGRjdNWTNndHBpZzJUNFF5cGRMaHhjWExlTUZ6dXJxVTRkZElq?=
 =?utf-8?B?Qm5jQVhESkhiZVhwbjg3QzVGYlFHb0syOU5JNWxYU21uSUJIYmc5R0hzRUx4?=
 =?utf-8?B?Tmg4b3VHYTIyTUJGQmh5cU1BdXg5ZG9qRWYwVGdTYmhST2VJWE9aNTF4MWY3?=
 =?utf-8?B?bEZ0Y0Q4V0wxRERiMzZIR3BmYUJla2c9PQ==?=
X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?YnpnZkMyN1hZemR4YzdLTm01OGRkeVJyNk5nc0lkTkVqeFp2NXRFR3JFRkhn?=
 =?utf-8?B?S0tuV1M5bEhmOEdjc2NlZW5LaWhYTEpIUktRWnZMVHhnSlVteUlFb0tlYUJh?=
 =?utf-8?B?b3RmcER2SVVrc3lpbThHU0FVRlVRcmxqNjNEbDM5c29wTjJwb2Fwa0o4ZGpq?=
 =?utf-8?B?bUY3dVBYUWNJUXpwcDNMSWhCOVBRTWVxUHpwOExuekxMMUVPcU9QS2F5a0Ux?=
 =?utf-8?B?ckZZWmlkY2EveTdmWW1mbGd2OEhPN0ZzVGRQOGRWa0lDYytlUStGcDROWkJm?=
 =?utf-8?B?RnpQOVpWcmtjUndTVkkyR3JEbFg1eS9oREpxc2JsL21BY2Z4ZUxKRWtqZTJ4?=
 =?utf-8?B?YkpDTGJpb3dMVEpqZmlabEV0R2laTmhQOEVRZXZwSDhzL3ZGckpKanVGckdT?=
 =?utf-8?B?SUlEUTd1NXVmTnR2VVQrMkNDazN2Skk5V1cyY0dmUWlqWEtGQTZlaE84cGVj?=
 =?utf-8?B?cHZKUGY1MGdoekl1cnF5WU9aZmFadkZDd3Z5ejMvOVNDRTdKMW9tRms2OU04?=
 =?utf-8?B?RkFJaUJ3RGxyVURkM3NkZWRwMzl2YmY4MjlGNVppRFVHS1A3ZUM4OVRPY2ti?=
 =?utf-8?B?dFcwOHh1a21ETUUrRUlWWDdvUEx6UHRrZEZZekUzWUNvcVhtR0Z2c2NuRURm?=
 =?utf-8?B?Nkg5RWhFQkdxa3BSdmxNRFdJUGZNSHR1TXFablFUM1MrLzVUcDlyOGFSRUpK?=
 =?utf-8?B?S0MyVEdPVzJVQUR0Nk9FdGM3UEc1OFM5WDA1enNkOFlBU0tqYlZkeG01ZVBu?=
 =?utf-8?B?NEpTU3NjbUZtdEkwSnR0WTFtZ0tTa3RXaWZkcWxudCtLclFWOThyRllzTWZ6?=
 =?utf-8?B?djdnU1Vma0wrQVJYMGtTVVhZMG10RmVFN05QK0JGRmxweElvZWlMREllWDRp?=
 =?utf-8?B?bkpFcnQvZFg1a1Yrd2ZrUEs0OHVpRENzdUsvU1FZV2pBZzFRN3FVMWVkVjRM?=
 =?utf-8?B?V1c1L2ZOUXFYZGhEU0FZS3YwMUw3SkF1RjZMM0VaQitmTm40dlE5L2c1aDBt?=
 =?utf-8?B?bXVUZ1djMUFXVmhkUk00NTRzTS9KeFVBU2o5Z0g1bnUzYVNETHo0WXhKTW1X?=
 =?utf-8?B?ditSNFIyUVJ3amRHTDkyc1JqbWhHUzdTT3ViczlTTUVQVG1qZWE2bHBUS0dX?=
 =?utf-8?B?RC9xUktqSFZ0VDNnZjhvcWhUdUZwa0lDOXVGdFdMTGp6WThiaGFuckhkNURk?=
 =?utf-8?B?T0c4S2N5V1lyZy9qbWNpdFlIVkFTWlV4TjY1c1hnUG5zejZmTGZVQ3hVWU5W?=
 =?utf-8?B?MXhRcDVDVFJXaDAzNDAzVzBldmtpMVQxQTZCeVRPc2xDaDRsc0huQzVLNkZj?=
 =?utf-8?B?WTZ5c05XRVJocVJRRndneEFHWk1kbVJONXBwNHliWm9mWU1HT240dy8zaDkz?=
 =?utf-8?B?cXRaUmZ5ekJyK3htcnArVXdWdFZFNWxVTlBmdnBlSDJ4cWdQcjZpejU3eU9Q?=
 =?utf-8?B?bHQ1cmRHd3Ntek84d053d0wxajdhaSt3cmlabWwvY0FWR2hEVHAxWm93aEta?=
 =?utf-8?B?TUIxdEZRaklGMmpTT0hSUVlmUmsrMUQ2MTRqN1dOUUlBWnBCbHZQem5GZEl4?=
 =?utf-8?B?R040YXZKSHVEZGFUZExjd1VSaEtHcThUaloyOUJyaTltYTRsMFlKcEh0NE1Y?=
 =?utf-8?B?YkIwQWNaM3BXOStJZjFreUgrUUhQYXFEM2hNVFBPbEQvWEh2L2dZZFJ2STBD?=
 =?utf-8?B?VmdtL2xnck9PS1lhVi9uK0sxY29lN0VxSnIvU01Xd1BYMDl2aUpaT3RRPT0=?=
X-OriginatorOrg: outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: 72badb4b-92ed-475f-5500-08dd694d65e9
X-MS-Exchange-CrossTenant-AuthSource: GV1SPRMB0036.EURP250.PROD.OUTLOOK.COM
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Mar 2025 14:25:30.6766 (UTC)
X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted
X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa
X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4P250MB0461
Subject: Re: [FFmpeg-devel] [PATCH 2/3] avcodec/cbs: allow fine tunning
 selection of features
X-BeenThere: ffmpeg-devel@ffmpeg.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org>
List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe>
List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel>
List-Post: <mailto:ffmpeg-devel@ffmpeg.org>
List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help>
List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe>
Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: ffmpeg-devel-bounces@ffmpeg.org
Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org>
Archived-At: <https://master.gitmailbox.com/ffmpegdev/GV1SPRMB00367FABE3D06BEE02D86F938FDA2@GV1SPRMB0036.EURP250.PROD.OUTLOOK.COM/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

James Almer:
> This will be useful in an upcoming commit, where CBS will be utilized by
> a module outside libavcodec.
> 
> Signed-off-by: James Almer <jamrial@gmail.com>
> ---
>  libavcodec/cbs.c                     | 100 ++++++++++++++++++++++-----
>  libavcodec/cbs_av1.c                 |  64 ++++++++++++++++-
>  libavcodec/cbs_av1.h                 |  15 ++++
>  libavcodec/cbs_av1_syntax_template.c |   6 ++
>  libavcodec/cbs_internal.h            |  48 +++++++++++++
>  5 files changed, 212 insertions(+), 21 deletions(-)
> 
> diff --git a/libavcodec/cbs.c b/libavcodec/cbs.c
> index 01dd916d81..94bf174700 100644
> --- a/libavcodec/cbs.c
> +++ b/libavcodec/cbs.c
> @@ -18,8 +18,6 @@
>  
>  #include <string.h>
>  
> -#include "config.h"
> -
>  #include "libavutil/avassert.h"
>  #include "libavutil/buffer.h"
>  #include "libavutil/common.h"
> @@ -33,55 +31,55 @@
>  
>  
>  static const CodedBitstreamType *const cbs_type_table[] = {
> -#if CONFIG_CBS_AV1
> +#if CBS_AV1
>      &ff_cbs_type_av1,
>  #endif
> -#if CONFIG_CBS_H264
> +#if CBS_H264
>      &ff_cbs_type_h264,
>  #endif
> -#if CONFIG_CBS_H265
> +#if CBS_H265
>      &ff_cbs_type_h265,
>  #endif
> -#if CONFIG_CBS_H266
> +#if CBS_H266
>      &ff_cbs_type_h266,
>  #endif
> -#if CONFIG_CBS_JPEG
> +#if CBS_JPEG
>      &ff_cbs_type_jpeg,
>  #endif
> -#if CONFIG_CBS_MPEG2
> +#if CBS_MPEG2
>      &ff_cbs_type_mpeg2,
>  #endif
> -#if CONFIG_CBS_VP8
> +#if CBS_VP8
>      &ff_cbs_type_vp8,
>  #endif
> -#if CONFIG_CBS_VP9
> +#if CBS_VP9
>      &ff_cbs_type_vp9,
>  #endif
>  };
>  
>  const enum AVCodecID ff_cbs_all_codec_ids[] = {
> -#if CONFIG_CBS_AV1
> +#if CBS_AV1
>      AV_CODEC_ID_AV1,
>  #endif
> -#if CONFIG_CBS_H264
> +#if CBS_H264
>      AV_CODEC_ID_H264,
>  #endif
> -#if CONFIG_CBS_H265
> +#if CBS_H265
>      AV_CODEC_ID_H265,
>  #endif
> -#if CONFIG_CBS_H266
> +#if CBS_H266
>      AV_CODEC_ID_H266,
>  #endif
> -#if CONFIG_CBS_JPEG
> +#if CBS_JPEG
>      AV_CODEC_ID_MJPEG,
>  #endif
> -#if CONFIG_CBS_MPEG2
> +#if CBS_MPEG2
>      AV_CODEC_ID_MPEG2VIDEO,
>  #endif
> -#if CONFIG_CBS_VP8
> +#if CBS_VP8
>      AV_CODEC_ID_VP8,
>  #endif
> -#if CONFIG_CBS_VP9
> +#if CBS_VP9
>      AV_CODEC_ID_VP9,
>  #endif
>      AV_CODEC_ID_NONE
> @@ -234,6 +232,7 @@ static int cbs_read_fragment_content(CodedBitstreamContext *ctx,
>      return 0;
>  }
>  
> +#if CBS_READ
>  static int cbs_fill_fragment_data(CodedBitstreamFragment *frag,
>                                    const uint8_t *data, size_t size)
>  {
> @@ -282,37 +281,51 @@ static int cbs_read_data(CodedBitstreamContext *ctx,
>  
>      return cbs_read_fragment_content(ctx, frag);
>  }
> +#endif
>  
>  int ff_cbs_read_extradata(CodedBitstreamContext *ctx,
>                            CodedBitstreamFragment *frag,
>                            const AVCodecParameters *par)
>  {
> +#if CBS_READ
>      return cbs_read_data(ctx, frag, NULL,
>                           par->extradata,
>                           par->extradata_size, 1);
> +#else
> +    return AVERROR(ENOSYS);
> +#endif
>  }
>  
>  int ff_cbs_read_extradata_from_codec(CodedBitstreamContext *ctx,
>                                       CodedBitstreamFragment *frag,
>                                       const AVCodecContext *avctx)
>  {
> +#if CBS_READ
>      return cbs_read_data(ctx, frag, NULL,
>                           avctx->extradata,
>                           avctx->extradata_size, 1);
> +#else
> +    return AVERROR(ENOSYS);
> +#endif
>  }
>  
>  int ff_cbs_read_packet(CodedBitstreamContext *ctx,
>                         CodedBitstreamFragment *frag,
>                         const AVPacket *pkt)
>  {
> +#if CBS_READ
>      return cbs_read_data(ctx, frag, pkt->buf,
>                           pkt->data, pkt->size, 0);
> +#else
> +    return AVERROR(ENOSYS);
> +#endif
>  }
>  
>  int ff_cbs_read_packet_side_data(CodedBitstreamContext *ctx,
>                                   CodedBitstreamFragment *frag,
>                                   const AVPacket *pkt)
>  {
> +#if CBS_READ
>      size_t side_data_size;
>      const uint8_t *side_data =
>          av_packet_get_side_data(pkt, AV_PKT_DATA_NEW_EXTRADATA,
> @@ -320,16 +333,24 @@ int ff_cbs_read_packet_side_data(CodedBitstreamContext *ctx,
>  
>      return cbs_read_data(ctx, frag, NULL,
>                           side_data, side_data_size, 1);
> +#else
> +    return AVERROR(ENOSYS);
> +#endif
>  }
>  
>  int ff_cbs_read(CodedBitstreamContext *ctx,
>                  CodedBitstreamFragment *frag,
>                  const uint8_t *data, size_t size)
>  {
> +#if CBS_READ
>      return cbs_read_data(ctx, frag, NULL,
>                           data, size, 0);
> +#else
> +    return AVERROR(ENOSYS);
> +#endif
>  }
>  
> +#if CBS_WRITE
>  /**
>   * Allocate a new internal data buffer of the given size in the unit.
>   *
> @@ -405,10 +426,12 @@ static int cbs_write_unit_data(CodedBitstreamContext *ctx,
>  
>      return 0;
>  }
> +#endif
>  
>  int ff_cbs_write_fragment_data(CodedBitstreamContext *ctx,
>                                 CodedBitstreamFragment *frag)
>  {
> +#if CBS_WRITE
>      int err, i;
>  
>      for (i = 0; i < frag->nb_units; i++) {
> @@ -440,12 +463,16 @@ int ff_cbs_write_fragment_data(CodedBitstreamContext *ctx,
>      av_assert0(frag->data && frag->data_ref);
>  
>      return 0;
> +#else
> +    return AVERROR(ENOSYS);
> +#endif
>  }
>  
>  int ff_cbs_write_extradata(CodedBitstreamContext *ctx,
>                             AVCodecParameters *par,
>                             CodedBitstreamFragment *frag)
>  {
> +#if CBS_WRITE
>      int err;
>  
>      err = ff_cbs_write_fragment_data(ctx, frag);
> @@ -469,12 +496,16 @@ int ff_cbs_write_extradata(CodedBitstreamContext *ctx,
>      par->extradata_size = frag->data_size;
>  
>      return 0;
> +#else
> +    return AVERROR(ENOSYS);
> +#endif
>  }
>  
>  int ff_cbs_write_packet(CodedBitstreamContext *ctx,
>                          AVPacket *pkt,
>                          CodedBitstreamFragment *frag)
>  {
> +#if CBS_WRITE
>      AVBufferRef *buf;
>      int err;
>  
> @@ -493,16 +524,21 @@ int ff_cbs_write_packet(CodedBitstreamContext *ctx,
>      pkt->size = frag->data_size;
>  
>      return 0;
> +#else
> +    return AVERROR(ENOSYS);
> +#endif
>  }
>  
>  
>  void ff_cbs_trace_header(CodedBitstreamContext *ctx,
>                           const char *name)
>  {
> +#if CBS_TRACE
>      if (!ctx->trace_enable)
>          return;
>  
>      av_log(ctx->log_ctx, ctx->trace_level, "%s\n", name);
> +#endif
>  }
>  
>  void ff_cbs_trace_read_log(void *trace_context,
> @@ -510,6 +546,7 @@ void ff_cbs_trace_read_log(void *trace_context,
>                             const char *str, const int *subscripts,
>                             int64_t value)
>  {
> +#if CBS_TRACE
>      CodedBitstreamContext *ctx = trace_context;
>      char name[256];
>      char bits[256];
> @@ -561,6 +598,7 @@ void ff_cbs_trace_read_log(void *trace_context,
>  
>      av_log(ctx->log_ctx, ctx->trace_level, "%-10d  %s%*s = %"PRId64"\n",
>             position, name, pad, bits, value);
> +#endif
>  }
>  
>  void ff_cbs_trace_write_log(void *trace_context,
> @@ -568,6 +606,7 @@ void ff_cbs_trace_write_log(void *trace_context,
>                              const char *str, const int *subscripts,
>                              int64_t value)
>  {
> +#if CBS_TRACE
>      CodedBitstreamContext *ctx = trace_context;
>  
>      // Ensure that the syntax element is written to the output buffer,
> @@ -591,6 +630,7 @@ void ff_cbs_trace_write_log(void *trace_context,
>      skip_bits_long(&gbc, position - length);
>  
>      ff_cbs_trace_read_log(ctx, &gbc, length, str, subscripts, value);
> +#endif
>  }
>  
>  static av_always_inline int cbs_read_unsigned(CodedBitstreamContext *ctx,
> @@ -633,15 +673,23 @@ int ff_cbs_read_unsigned(CodedBitstreamContext *ctx, GetBitContext *gbc,
>                           const int *subscripts, uint32_t *write_to,
>                           uint32_t range_min, uint32_t range_max)
>  {
> +#if CBS_READ
>      return cbs_read_unsigned(ctx, gbc, width, name, subscripts,
>                               write_to, range_min, range_max);
> +#else
> +    return AVERROR(ENOSYS);
> +#endif
>  }
>  
>  int ff_cbs_read_simple_unsigned(CodedBitstreamContext *ctx, GetBitContext *gbc,
>                                  int width, const char *name, uint32_t *write_to)
>  {
> +#if CBS_READ
>      return cbs_read_unsigned(ctx, gbc, width, name, NULL,
>                               write_to, 0, UINT32_MAX);
> +#else
> +    return AVERROR(ENOSYS);
> +#endif
>  }
>  
>  int ff_cbs_write_unsigned(CodedBitstreamContext *ctx, PutBitContext *pbc,
> @@ -649,6 +697,7 @@ int ff_cbs_write_unsigned(CodedBitstreamContext *ctx, PutBitContext *pbc,
>                            const int *subscripts, uint32_t value,
>                            uint32_t range_min, uint32_t range_max)
>  {
> +#if CBS_WRITE
>      CBS_TRACE_WRITE_START();
>  
>      av_assert0(width > 0 && width <= 32);
> @@ -671,13 +720,20 @@ int ff_cbs_write_unsigned(CodedBitstreamContext *ctx, PutBitContext *pbc,
>      CBS_TRACE_WRITE_END();
>  
>      return 0;
> +#else
> +    return AVERROR(ENOSYS);
> +#endif
>  }
>  
>  int ff_cbs_write_simple_unsigned(CodedBitstreamContext *ctx, PutBitContext *pbc,
>                                   int width, const char *name, uint32_t value)
>  {
> +#if CBS_WRITE
>      return ff_cbs_write_unsigned(ctx, pbc, width, name, NULL,
>                                   value, 0, MAX_UINT_BITS(width));
> +#else
> +    return AVERROR(ENOSYS);
> +#endif
>  }
>  
>  int ff_cbs_read_signed(CodedBitstreamContext *ctx, GetBitContext *gbc,
> @@ -685,6 +741,7 @@ int ff_cbs_read_signed(CodedBitstreamContext *ctx, GetBitContext *gbc,
>                         const int *subscripts, int32_t *write_to,
>                         int32_t range_min, int32_t range_max)
>  {
> +#if CBS_READ
>      int32_t value;
>  
>      CBS_TRACE_READ_START();
> @@ -710,6 +767,9 @@ int ff_cbs_read_signed(CodedBitstreamContext *ctx, GetBitContext *gbc,
>  
>      *write_to = value;
>      return 0;
> +#else
> +    return AVERROR(ENOSYS);
> +#endif
>  }
>  
>  int ff_cbs_write_signed(CodedBitstreamContext *ctx, PutBitContext *pbc,
> @@ -717,6 +777,7 @@ int ff_cbs_write_signed(CodedBitstreamContext *ctx, PutBitContext *pbc,
>                          const int *subscripts, int32_t value,
>                          int32_t range_min, int32_t range_max)
>  {
> +#if CBS_WRITE
>      CBS_TRACE_WRITE_START();
>  
>      av_assert0(width > 0 && width <= 32);
> @@ -739,6 +800,9 @@ int ff_cbs_write_signed(CodedBitstreamContext *ctx, PutBitContext *pbc,
>      CBS_TRACE_WRITE_END();
>  
>      return 0;
> +#else
> +    return AVERROR(ENOSYS);
> +#endif
>  }
>  
>  
> diff --git a/libavcodec/cbs_av1.c b/libavcodec/cbs_av1.c
> index d7862a2e48..e0a4eba20f 100644
> --- a/libavcodec/cbs_av1.c
> +++ b/libavcodec/cbs_av1.c
> @@ -27,6 +27,7 @@
>  #include "libavutil/refstruct.h"
>  
>  
> +#if CBS_READ
>  static int cbs_av1_read_uvlc(CodedBitstreamContext *ctx, GetBitContext *gbc,
>                               const char *name, uint32_t *write_to,
>                               uint32_t range_min, uint32_t range_max)
> @@ -84,7 +85,9 @@ static int cbs_av1_read_uvlc(CodedBitstreamContext *ctx, GetBitContext *gbc,
>      *write_to = value;
>      return 0;
>  }
> +#endif
>  
> +#if CBS_WRITE
>  static int cbs_av1_write_uvlc(CodedBitstreamContext *ctx, PutBitContext *pbc,
>                                const char *name, uint32_t value,
>                                uint32_t range_min, uint32_t range_max)
> @@ -115,7 +118,9 @@ static int cbs_av1_write_uvlc(CodedBitstreamContext *ctx, PutBitContext *pbc,
>  
>      return 0;
>  }
> +#endif
>  
> +#if CBS_READ
>  static int cbs_av1_read_leb128(CodedBitstreamContext *ctx, GetBitContext *gbc,
>                                 const char *name, uint64_t *write_to)
>  {
> @@ -146,7 +151,9 @@ static int cbs_av1_read_leb128(CodedBitstreamContext *ctx, GetBitContext *gbc,
>      *write_to = value;
>      return 0;
>  }
> +#endif
>  
> +#if CBS_WRITE
>  static int cbs_av1_write_leb128(CodedBitstreamContext *ctx, PutBitContext *pbc,
>                                  const char *name, uint64_t value, int fixed_length)
>  {
> @@ -182,7 +189,9 @@ static int cbs_av1_write_leb128(CodedBitstreamContext *ctx, PutBitContext *pbc,
>  
>      return 0;
>  }
> +#endif
>  
> +#if CBS_READ
>  static int cbs_av1_read_ns(CodedBitstreamContext *ctx, GetBitContext *gbc,
>                             uint32_t n, const char *name,
>                             const int *subscripts, uint32_t *write_to)
> @@ -220,7 +229,9 @@ static int cbs_av1_read_ns(CodedBitstreamContext *ctx, GetBitContext *gbc,
>      *write_to = value;
>      return 0;
>  }
> +#endif
>  
> +#if CBS_WRITE
>  static int cbs_av1_write_ns(CodedBitstreamContext *ctx, PutBitContext *pbc,
>                              uint32_t n, const char *name,
>                              const int *subscripts, uint32_t value)
> @@ -256,7 +267,9 @@ static int cbs_av1_write_ns(CodedBitstreamContext *ctx, PutBitContext *pbc,
>  
>      return 0;
>  }
> +#endif
>  
> +#if CBS_READ
>  static int cbs_av1_read_increment(CodedBitstreamContext *ctx, GetBitContext *gbc,
>                                    uint32_t range_min, uint32_t range_max,
>                                    const char *name, uint32_t *write_to)
> @@ -284,7 +297,9 @@ static int cbs_av1_read_increment(CodedBitstreamContext *ctx, GetBitContext *gbc
>      *write_to = value;
>      return 0;
>  }
> +#endif
>  
> +#if CBS_WRITE
>  static int cbs_av1_write_increment(CodedBitstreamContext *ctx, PutBitContext *pbc,
>                                     uint32_t range_min, uint32_t range_max,
>                                     const char *name, uint32_t value)
> @@ -315,7 +330,9 @@ static int cbs_av1_write_increment(CodedBitstreamContext *ctx, PutBitContext *pb
>  
>      return 0;
>  }
> +#endif
>  
> +#if CBS_READ
>  static int cbs_av1_read_subexp(CodedBitstreamContext *ctx, GetBitContext *gbc,
>                                 uint32_t range_max, const char *name,
>                                 const int *subscripts, uint32_t *write_to)
> @@ -360,7 +377,9 @@ static int cbs_av1_read_subexp(CodedBitstreamContext *ctx, GetBitContext *gbc,
>      *write_to = value;
>      return err;
>  }
> +#endif
>  
> +#if CBS_WRITE
>  static int cbs_av1_write_subexp(CodedBitstreamContext *ctx, PutBitContext *pbc,
>                                  uint32_t range_max, const char *name,
>                                  const int *subscripts, uint32_t value)
> @@ -420,6 +439,7 @@ static int cbs_av1_write_subexp(CodedBitstreamContext *ctx, PutBitContext *pbc,
>  
>      return err;
>  }
> +#endif
>  
>  
>  static int cbs_av1_tile_log2(int blksize, int target)
> @@ -441,7 +461,7 @@ static int cbs_av1_get_relative_dist(const AV1RawSequenceHeader *seq,
>      return diff;
>  }
>  
> -static size_t cbs_av1_get_payload_bytes_left(GetBitContext *gbc)
> +static av_unused size_t cbs_av1_get_payload_bytes_left(GetBitContext *gbc)
>  {
>      GetBitContext tmp = *gbc;
>      size_t size = 0;
> @@ -469,6 +489,7 @@ static size_t cbs_av1_get_payload_bytes_left(GetBitContext *gbc)
>  
>  #define SUBSCRIPTS(subs, ...) (subs > 0 ? ((int[subs + 1]){ subs, __VA_ARGS__ }) : NULL)
>  
> +#if CBS_READ
>  #define fc(width, name, range_min, range_max) \
>          xf(width, name, current->name, range_min, range_max, 0, )
>  #define flag(name) fb(1, name)
> @@ -584,8 +605,9 @@ static size_t cbs_av1_get_payload_bytes_left(GetBitContext *gbc)
>  #undef leb128
>  #undef infer
>  #undef byte_alignment
> +#endif // CBS_READ
>  
> -
> +#if CBS_WRITE
>  #define WRITE
>  #define READWRITE write
>  #define RWContext PutBitContext
> @@ -668,12 +690,13 @@ static size_t cbs_av1_get_payload_bytes_left(GetBitContext *gbc)
>  #undef leb128
>  #undef infer
>  #undef byte_alignment
> -
> +#endif // CBS_WRITE
>  
>  static int cbs_av1_split_fragment(CodedBitstreamContext *ctx,
>                                    CodedBitstreamFragment *frag,
>                                    int header)
>  {
> +#if CBS_READ
>      GetBitContext gbc;
>      uint8_t *data;
>      size_t size;
> @@ -777,6 +800,9 @@ success:
>  fail:
>      ctx->trace_enable = trace;
>      return err;
> +#else
> +    return AVERROR(ENOSYS);
> +#endif
>  }
>  
>  static int cbs_av1_ref_tile_data(CodedBitstreamContext *ctx,
> @@ -809,6 +835,7 @@ static int cbs_av1_ref_tile_data(CodedBitstreamContext *ctx,
>  static int cbs_av1_read_unit(CodedBitstreamContext *ctx,
>                               CodedBitstreamUnit *unit)
>  {
> +#if CBS_READ
>      CodedBitstreamAV1Context *priv = ctx->priv_data;
>      AV1RawOBU *obu;
>      GetBitContext gbc;
> @@ -931,6 +958,7 @@ static int cbs_av1_read_unit(CodedBitstreamContext *ctx,
>                  return err;
>          }
>          break;
> +#if CBS_OBU_TILE_LIST
>      case AV1_OBU_TILE_LIST:
>          {
>              err = cbs_av1_read_tile_list_obu(ctx, &gbc,
> @@ -946,6 +974,8 @@ static int cbs_av1_read_unit(CodedBitstreamContext *ctx,
>                  return err;
>          }
>          break;
> +#endif
> +#if CBS_OBU_METADATA
>      case AV1_OBU_METADATA:
>          {
>              err = cbs_av1_read_metadata_obu(ctx, &gbc, &obu->obu.metadata);
> @@ -953,6 +983,8 @@ static int cbs_av1_read_unit(CodedBitstreamContext *ctx,
>                  return err;
>          }
>          break;
> +#endif
> +#if CBS_OBU_PADDING
>      case AV1_OBU_PADDING:
>          {
>              err = cbs_av1_read_padding_obu(ctx, &gbc, &obu->obu.padding);
> @@ -960,6 +992,7 @@ static int cbs_av1_read_unit(CodedBitstreamContext *ctx,
>                  return err;
>          }
>          break;
> +#endif
>      default:
>          return AVERROR(ENOSYS);
>      }
> @@ -982,12 +1015,16 @@ static int cbs_av1_read_unit(CodedBitstreamContext *ctx,
>      }
>  
>      return 0;
> +#else
> +    return AVERROR(ENOSYS);
> +#endif
>  }
>  
>  static int cbs_av1_write_obu(CodedBitstreamContext *ctx,
>                               CodedBitstreamUnit *unit,
>                               PutBitContext *pbc)
>  {
> +#if CBS_WRITE
>      CodedBitstreamAV1Context *priv = ctx->priv_data;
>      AV1RawOBU *obu = unit->content;
>      PutBitContext pbc_tmp;
> @@ -1087,6 +1124,7 @@ static int cbs_av1_write_obu(CodedBitstreamContext *ctx,
>              td = &tile_group->tile_data;
>          }
>          break;
> +#if CBS_OBU_TILE_LIST
>      case AV1_OBU_TILE_LIST:
>          {
>              err = cbs_av1_write_tile_list_obu(ctx, pbc, &obu->obu.tile_list);
> @@ -1096,6 +1134,8 @@ static int cbs_av1_write_obu(CodedBitstreamContext *ctx,
>              td = &obu->obu.tile_list.tile_data;
>          }
>          break;
> +#endif
> +#if CBS_OBU_METADATA
>      case AV1_OBU_METADATA:
>          {
>              err = cbs_av1_write_metadata_obu(ctx, pbc, &obu->obu.metadata);
> @@ -1103,6 +1143,8 @@ static int cbs_av1_write_obu(CodedBitstreamContext *ctx,
>                  goto error;
>          }
>          break;
> +#endif
> +#if CBS_OBU_PADDING
>      case AV1_OBU_PADDING:
>          {
>              err = cbs_av1_write_padding_obu(ctx, pbc, &obu->obu.padding);
> @@ -1110,6 +1152,7 @@ static int cbs_av1_write_obu(CodedBitstreamContext *ctx,
>                  goto error;
>          }
>          break;
> +#endif
>      default:
>          err = AVERROR(ENOSYS);
>          goto error;
> @@ -1182,11 +1225,15 @@ error:
>      av_buffer_unref(&av1ctx.frame_header_ref);
>  
>      return err;
> +#else
> +    return AVERROR(ENOSYS);
> +#endif
>  }
>  
>  static int cbs_av1_assemble_fragment(CodedBitstreamContext *ctx,
>                                       CodedBitstreamFragment *frag)
>  {
> +#if CBS_WRITE
>      size_t size, pos;
>      int i;
>  
> @@ -1210,6 +1257,9 @@ static int cbs_av1_assemble_fragment(CodedBitstreamContext *ctx,
>      frag->data_size = size;
>  
>      return 0;
> +#else
> +    return AVERROR(ENOSYS);
> +#endif
>  }
>  
>  static void cbs_av1_flush(CodedBitstreamContext *ctx)
> @@ -1234,6 +1284,7 @@ static void cbs_av1_close(CodedBitstreamContext *ctx)
>      av_buffer_unref(&priv->frame_header_ref);
>  }
>  
> +#if CBS_OBU_METADATA
>  static void cbs_av1_free_metadata(AVRefStructOpaque unused, void *content)
>  {
>      AV1RawOBU *obu = content;
> @@ -1255,6 +1306,7 @@ static void cbs_av1_free_metadata(AVRefStructOpaque unused, void *content)
>          av_buffer_unref(&md->metadata.unknown.payload_ref);
>      }
>  }
> +#endif
>  
>  static const CodedBitstreamUnitTypeDescriptor cbs_av1_unit_types[] = {
>      CBS_UNIT_TYPE_POD(AV1_OBU_SEQUENCE_HEADER,        AV1RawOBU),
> @@ -1284,13 +1336,19 @@ static const CodedBitstreamUnitTypeDescriptor cbs_av1_unit_types[] = {
>                              offsetof(AV1RawOBU, obu.frame.tile_group.tile_data.data) }
>          },
>      },
> +#if CBS_OBU_TILE_LIST
>      CBS_UNIT_TYPE_INTERNAL_REF(AV1_OBU_TILE_LIST,  AV1RawOBU,
>                                 obu.tile_list.tile_data.data),
> +#endif
> +#if CBS_OBU_PADDING
>      CBS_UNIT_TYPE_INTERNAL_REF(AV1_OBU_PADDING,    AV1RawOBU,
>                                 obu.padding.payload),
> +#endif
>  
> +#if CBS_OBU_METADATA
>      CBS_UNIT_TYPE_COMPLEX(AV1_OBU_METADATA, AV1RawOBU,
>                            &cbs_av1_free_metadata),
> +#endif
>  
>      CBS_UNIT_TYPE_END_OF_LIST
>  };
> diff --git a/libavcodec/cbs_av1.h b/libavcodec/cbs_av1.h
> index 62c7720142..0c73e12c84 100644
> --- a/libavcodec/cbs_av1.h
> +++ b/libavcodec/cbs_av1.h
> @@ -25,6 +25,15 @@
>  #include "av1.h"
>  #include "cbs.h"
>  
> +#ifndef CBS_OBU_METADATA
> +#define CBS_OBU_METADATA 1
> +#endif
> +#ifndef CBS_OBU_TILE_LIST
> +#define CBS_OBU_TILE_LIST 1
> +#endif
> +#ifndef CBS_OBU_PADDING
> +#define CBS_OBU_PADDING 1
> +#endif
>  
>  typedef struct AV1RawOBUHeader {
>      uint8_t obu_forbidden_bit;
> @@ -411,9 +420,15 @@ typedef struct AV1RawOBU {
>          AV1RawFrameHeader    frame_header;
>          AV1RawFrame          frame;
>          AV1RawTileGroup      tile_group;
> +#if CBS_OBU_TILE_LIST
>          AV1RawTileList       tile_list;
> +#endif
> +#if CBS_OBU_METADATA
>          AV1RawMetadata       metadata;
> +#endif
> +#if CBS_OBU_PADDING
>          AV1RawPadding        padding;
> +#endif
>      } obu;
>  } AV1RawOBU;
>  
> diff --git a/libavcodec/cbs_av1_syntax_template.c b/libavcodec/cbs_av1_syntax_template.c
> index 62a83945ec..b594bfd22b 100644
> --- a/libavcodec/cbs_av1_syntax_template.c
> +++ b/libavcodec/cbs_av1_syntax_template.c
> @@ -1868,6 +1868,7 @@ static int FUNC(frame_obu)(CodedBitstreamContext *ctx, RWContext *rw,
>      return 0;
>  }
>  
> +#if CBS_OBU_TILE_LIST
>  static int FUNC(tile_list_obu)(CodedBitstreamContext *ctx, RWContext *rw,
>                                 AV1RawTileList *current)
>  {
> @@ -1882,7 +1883,9 @@ static int FUNC(tile_list_obu)(CodedBitstreamContext *ctx, RWContext *rw,
>  
>      return 0;
>  }
> +#endif
>  
> +#if CBS_OBU_METADATA
>  static int FUNC(metadata_hdr_cll)(CodedBitstreamContext *ctx, RWContext *rw,
>                                    AV1RawMetadataHDRCLL *current)
>  {
> @@ -2101,7 +2104,9 @@ static int FUNC(metadata_obu)(CodedBitstreamContext *ctx, RWContext *rw,
>  
>      return 0;
>  }
> +#endif
>  
> +#if CBS_OBU_PADDING
>  static int FUNC(padding_obu)(CodedBitstreamContext *ctx, RWContext *rw,
>                               AV1RawPadding *current)
>  {
> @@ -2125,3 +2130,4 @@ static int FUNC(padding_obu)(CodedBitstreamContext *ctx, RWContext *rw,
>  
>      return 0;
>  }
> +#endif
> diff --git a/libavcodec/cbs_internal.h b/libavcodec/cbs_internal.h
> index 80cad2b162..f15ba1ab90 100644
> --- a/libavcodec/cbs_internal.h
> +++ b/libavcodec/cbs_internal.h
> @@ -22,6 +22,8 @@
>  #include <stddef.h>
>  #include <stdint.h>
>  
> +#include "config.h"
> +
>  #include "libavutil/log.h"
>  
>  #include "cbs.h"
> @@ -30,6 +32,40 @@
>  #include "put_bits.h"
>  #include "libavutil/refstruct.h"
>  
> +#ifndef CBS_READ
> +#define CBS_READ 1
> +#endif
> +#ifndef CBS_WRITE
> +#define CBS_WRITE 1
> +#endif
> +#ifndef CBS_TRACE
> +#define CBS_TRACE 1
> +#endif
> +
> +#ifndef CBS_AV1
> +#define CBS_AV1 CONFIG_CBS_AV1
> +#endif
> +#ifndef CBS_H264
> +#define CBS_H264 CONFIG_CBS_H264
> +#endif
> +#ifndef CBS_H265
> +#define CBS_H265 CONFIG_CBS_H265
> +#endif
> +#ifndef CBS_H266
> +#define CBS_H266 CONFIG_CBS_H266
> +#endif
> +#ifndef CBS_JPEG
> +#define CBS_JPEG CONFIG_CBS_JPEG
> +#endif
> +#ifndef CBS_MPEG2
> +#define CBS_MPEG2 CONFIG_CBS_MPEG2
> +#endif
> +#ifndef CBS_VP8
> +#define CBS_VP8 CONFIG_CBS_VP8
> +#endif
> +#ifndef CBS_VP9
> +#define CBS_VP9 CONFIG_CBS_VP9
> +#endif
>  
>  enum CBSContentType {
>      // Unit content may contain some references to other structures, but all
> @@ -204,6 +240,7 @@ int ff_cbs_write_signed(CodedBitstreamContext *ctx, PutBitContext *pbc,
>  #define MIN_INT_BITS(length) (-(INT64_C(1) << ((length) - 1)))
>  
>  
> +#if CBS_TRACE
>  // Start of a syntax element during read tracing.
>  #define CBS_TRACE_READ_START() \
>      GetBitContext trace_start; \
> @@ -284,6 +321,17 @@ int ff_cbs_write_signed(CodedBitstreamContext *ctx, PutBitContext *pbc,
>          } \
>      } while (0)
>  
> +#else // CBS_TRACE
> +#define CBS_TRACE_READ_START() do { } while (0)
> +#define CBS_TRACE_READ_END() do { } while (0)
> +#define CBS_TRACE_READ_END_NO_SUBSCRIPTS() do { } while (0)
> +#define CBS_TRACE_READ_END_VALUE_ONLY() do { } while (0)
> +#define CBS_TRACE_WRITE_START() do { } while (0)
> +#define CBS_TRACE_WRITE_END() do { } while (0)
> +#define CBS_TRACE_WRITE_END_NO_SUBSCRIPTS() do { } while (0)
> +#define CBS_TRACE_WRITE_END_VALUE_ONLY() do { } while (0)
> +#endif // CBS_TRACE
> +
>  #define TYPE_LIST(...) { __VA_ARGS__ }
>  #define CBS_UNIT_TYPE_POD(type_, structure) { \
>          .nb_unit_types  = 1, \

This patch (or rather the next) breaks the fundamental rule of
duplicating object files: The object files really need to be interchangable.
(Rationale: It is possible to --enable-static and --enable-shared at the
same time and users are allowed to link a subset of libraries statically
and another subset in a dynamic manner. In such a scenario the archives
need to contain everything as if used for a dynamic build (because lavc
may be linked dynamically, so that its internal symbols aren't
available), but if linking is performed statically, then the duplicated
object files (here: lavf/cbs.o) are used everywhere. And this will cause
mayhem because your lavf versions are only stripped down.)

- Andreas

_______________________________________________
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".