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 CD3FC400C2 for ; Wed, 23 Mar 2022 12:06:01 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1488F68AF4F; Wed, 23 Mar 2022 14:06:00 +0200 (EET) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-oln040092074107.outbound.protection.outlook.com [40.92.74.107]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5151B68A48D for ; Wed, 23 Mar 2022 14:05:54 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=F47CW8BlrLtr1/ZuTUpwbwBUFBT5aQV4vtL1RqTIse04s3kJnq2ZZ9jPRfrQtbP9bQqoxfSRzdi7Cvb1dU426lSVkzMRbYBS+M+FXYjTzJoWrpqFWSjCylxeeZ/b+AhiRokp4r1r8gt2uRLHAGLum3rXCSkIzgDLOgDyhlOLGYTfyAcHb89UjECHKYhDVOkhzGCqO+Z0P/APCGhIiQivGtpA0I7GH9ibi8rtgfUW22fq0jzUUepjs1q0fTFRm4aAOvhMDk3kA3fwQLFTVjIB5B/TpBHx+PNE4czsyQXviXD2ToDQzdkWVlrtlT1qPq0fivpufRRSTKEVmxk+APoB7Q== 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=Ub+B3OI7vrTuLzHbYxzlWZTLnieauqjQFnNFG5Wba5Y=; b=LeT9jl5k7RYt6QeCA7nMF+b8EAMfD6l3gBoyazU8FI43SMzoBZFc/pMlUcpwbac84480qJ93GjUgOWkg6vMghTGPBs7ry9nb9bVAcCSdsCFvU2GZ0JFjBn/DOF3ZhJTvdT9HSpHV2j45FLmj6H8Qtum4+9U2UIX5pweH7Hv55LW9K6S6zwJCcR10ZgsfyaJd5hK52VYxU8K67czpVrtPsgXta0FkJNxtv4aIandoJjY+QafSFLFICxCaTOUgPE8IqqVAR5K2mpYLjjpfwoJr34pgMb0hm8aNVkTHyyqKHyWjbLwZVBdmTz5BjwOFhudMC4d8CxLjDl3afgGsnixeFw== 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=Ub+B3OI7vrTuLzHbYxzlWZTLnieauqjQFnNFG5Wba5Y=; b=ndFJDuKmCBXxeszdrq+adAJ2znIw05MXRneoa2ckihHMu1w3kx+JNZjx3RpfK17Xm/w5Py01xJCCj+4z6Av8nX/pEQ40eklxngLumcNi+wJZCzbz+fui4DaC5+iFJmMO9ws0V/mp0Zmf5/Nt6wITzUf9ao2sdA7a240t6dCWlgwN5uYSWZbKfrc3SI6EXrhI2D7ZwqldCZ7R5O6HFmEzkAeytTmQVhCXHJrjpBa2g/sq2Q1K9MzwgR1G+0YUp9pQ96elTfVO4RFfOyrVwFq+AbYWskgwNtlsVtx1nmsmd7c/mOOkPZ0fWmUYoEZ4Hasa6nWqkW2/YFLGockidRIjhg== Received: from AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) by PR3PR01MB6729.eurprd01.prod.exchangelabs.com (2603:10a6:102:63::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.17; Wed, 23 Mar 2022 12:05:51 +0000 Received: from AS1PR01MB9564.eurprd01.prod.exchangelabs.com ([fe80::9070:a5fd:e532:bdf8]) by AS1PR01MB9564.eurprd01.prod.exchangelabs.com ([fe80::9070:a5fd:e532:bdf8%3]) with mapi id 15.20.5081.022; Wed, 23 Mar 2022 12:05:51 +0000 Message-ID: Date: Wed, 23 Mar 2022 13:05:49 +0100 Content-Language: en-US To: ffmpeg-devel@ffmpeg.org References: From: Andreas Rheinhardt In-Reply-To: X-TMN: [npG0+U+nwGqUoiQ3hf9PoDLwoiSw74Ks] X-ClientProxiedBy: AM6P192CA0082.EURP192.PROD.OUTLOOK.COM (2603:10a6:209:8d::23) To AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) X-Microsoft-Original-Message-ID: <3d93826c-829d-aa24-ea2b-bf6616eef9ef@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 73a3c37f-480a-4379-cc11-08da0cc5794a X-MS-TrafficTypeDiagnostic: PR3PR01MB6729:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: MlrJmQpSpT20Gfg/nU4sf2LQCWZuv2ePBVWN2M3OrCWTSdAfwGn1brgVC6J+NayGo3UwsknOCgbO/ysR1lzj681H1ay0mUvb3RgutcxyRabZopSDEWona5/RLMhVcrtr49Y+5ZngqTCvQoxVJXyBO8FloC+1nVPBlR1+LyjHpg3aYxP/+q6pMcLPx3hpN8Lj9M25MzU5by4cKClkqCtaTVYvFWyiZqKArMvHgB+wPPSG9AvPMMKK76sd33qADgl+48Q2eb4jTEkncwWrikqH0jffUR0b0Hu4eTpiBc/msXRTEnx5pKaLvZ1m4dMg767NDOSz6r4ZcyzCNqM1RK/rJjk0RrBo2CI0LKqyGSPUE5KMnR8d8NlEp5YZpCkXibFVrigXmqY+CzrEJ+g/D5lnMJqrfameE9uiIjn/6XD3yjeGzag3I/IfZnqgOMoW9Kos1/5CWtHjPfS8OKD9Z/70F7ZDnn6O2g58TFMXGaabWXFw+wdaCM7F9E9yvI3edtyk9B9+xNeWi7bF/TiZBD3Z2hAcFeQ3V57N+akHAdAarwWB4eVzV5VnT2oLNZCRnQbsPqtYdijkMVBAVhIL8g+Ccg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?B?bmt5UEJkbjQxam9SU2x5cExLNjUzU1RSMi9ZSWtac2k2RjZndG1PekRpaFJw?= =?utf-8?B?QmRCekJOSExyNmI5eUI5YmdESHJ5L1VqcUhSc2FJYllEUmRiT0lTcmgzdmwr?= =?utf-8?B?RkZoMWphZlZOTDY1ZTErRDQ5VjJyV1NteHVRVzFwS3A3RHI1OHdOSTRIUk8x?= =?utf-8?B?cXNleSszTk5BUUhoTTgzZ1ZNcEY1V0YybXNITFFXVXJlVS9uZlNGSm8xVmFT?= =?utf-8?B?OXgxQm1aZGVCRFZtbENtcHNyb01hR0cxQ3orMHA3bWpGMU9ZS05hb3dMSDlJ?= =?utf-8?B?RmxEbm1OdDlvNlJaTzJaL0tNVUtCTWxIdHV3bW44MkZWcEdHM3JzR2ZVeHZj?= =?utf-8?B?WG5hbzBTT3VXODFrWFNhZmdxUkhyaHpWNmlRV21ueTkycWF5Tmp5MlZJVjdq?= =?utf-8?B?Tm52dkJjQ1hOVkZPT2pEOUIza2Qrc1QzRGQ1NHRvVEhiVEhQbXBLQXBzSTM4?= =?utf-8?B?dDE5bVV5bU1UQ0ZXcGVwUXJra0s2eUNwd2wyRThVZ0xuRWhPZXlkTU14VTNN?= =?utf-8?B?TjZXdU5HRkp5aWpWdkJ4bHRBWlhLMFJ2MFU0bFZnaGkrSnFGaDFOZ1VSL1l0?= =?utf-8?B?cFNrUjA3SWpPaUV1WjZWNk9HQ2Rwcmh4S0hUN2l6Q2tBSmdjeFlzdWp2a2xn?= =?utf-8?B?THFFNERpTmJlM09GMGg4MUhRTGhDYWVRMTIxR2xtNVkzODA1dVo5WmdrV3Mz?= =?utf-8?B?WHFjalovNnhLR25JYk5YYnZSS0VMZjlGNTZZU1Q2MGR3czBxbXMxb2wxT3lS?= =?utf-8?B?TkNZb0xTQm5mSDFiRzV6amw0NG41U1lVeVB4WjJabTZVaENzMTRUMkVneUll?= =?utf-8?B?bERGVGVXbWlRb1EyRW9PWnZ2NlVXZUM2K0RkMEo2amNPYkdQeFRCcFdQTjgr?= =?utf-8?B?ZldTZU1uREFvYTRONjZ1Mzh4bjZCNFdWSkZQMng4RlNFcGlubStGY0tHKzNo?= =?utf-8?B?QmhqNk01WlhBbStYV25RQTVkeWZ5Undaa0dMZ09YQzJhMjBnVVgzN0xmeG9Y?= =?utf-8?B?dGZLMmR6WWFpKzNpVTZkQXRqMjZMMHBWUnI0SFRTZlNtbEpQQ1l4R2JCczdP?= =?utf-8?B?OXAvMHNuQ0UwQ0t6K2NieTJzMHpOdVBWUHREdmVVa1dSUTROeDZsQ2RkSTQ1?= =?utf-8?B?dzdJaVpYZXFLZW1JNnBSejQvek1hODlwaDducUNkQ3ZmL3RUbkorT1U5WFJQ?= =?utf-8?B?NEJseGYyWE9TTEthRFoyMXpRWXM0Sk81RDlFNkV2TXNQQUlOejJJRzZLOGI5?= =?utf-8?B?N3RzcHFZVkQ3Ym9XODBJK1pjNmZUVVNhSTVwL1FyWUNsczBSWld3WDVjS3V3?= =?utf-8?B?b2s5bFdISkIzci8vZU9UUDE0b3N0R0JnMXlpcFB0QkgwYy9BaFlXU1FzVTBa?= =?utf-8?B?YXNvNlZUaW4waGNBUWpEblFBUzRSTWQvWFlSMnNWSHF5RXM2N3ZDb01LNldX?= =?utf-8?B?NnRSSEhvWkFvT01QNHBzZTdBNVdydkZwUmpFL284d1RyVTZQekc2YXd2eVc4?= =?utf-8?B?NWhMY1p0NitEcmlFTWVIU0pqZVRzalp1ckw4ZlpxYnFibUJ4VnZYanl6STJh?= =?utf-8?Q?4waq8cgkKF6alXSFVlhZFXUzl6tnT9EDrh54mHoX8ZUM7I?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 73a3c37f-480a-4379-cc11-08da0cc5794a X-MS-Exchange-CrossTenant-AuthSource: AS1PR01MB9564.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Mar 2022 12:05:51.2819 (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: PR3PR01MB6729 Subject: Re: [FFmpeg-devel] [PATCH] avcodec/bsf: Add FFBitStreamFilter, hide internals of BSFs 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: Andreas Rheinhardt: > This patch is analogous to 20f972701806be20a77f808db332d9489343bb78: > It hides the internal part of AVBitStreamFilter by adding a new > internal structure FFBitStreamFilter (declared in bsf_internal.h) > that has an AVBitStreamFilter as its first member; the internal > part of AVBitStreamFilter is moved to this new structure. > > Signed-off-by: Andreas Rheinhardt > --- > configure | 4 +- > libavcodec/aac_adtstoasc_bsf.c | 6 +- > libavcodec/av1_frame_merge_bsf.c | 6 +- > libavcodec/av1_frame_split_bsf.c | 6 +- > libavcodec/av1_metadata_bsf.c | 9 +-- > libavcodec/bitstream_filters.c | 85 +++++++++++++------------- > libavcodec/bsf.c | 38 ++++++------ > libavcodec/bsf.h | 14 ----- > libavcodec/bsf_internal.h | 13 ++++ > libavcodec/cbs_bsf.h | 6 +- > libavcodec/chomp_bsf.c | 4 +- > libavcodec/dca_core_bsf.c | 8 +-- > libavcodec/dump_extradata_bsf.c | 6 +- > libavcodec/dv_error_marker_bsf.c | 8 +-- > libavcodec/eac3_core_bsf.c | 8 +-- > libavcodec/extract_extradata_bsf.c | 8 +-- > libavcodec/filter_units_bsf.c | 8 +-- > libavcodec/h264_metadata_bsf.c | 9 +-- > libavcodec/h264_mp4toannexb_bsf.c | 6 +- > libavcodec/h264_redundant_pps_bsf.c | 7 ++- > libavcodec/h265_metadata_bsf.c | 9 +-- > libavcodec/hapqa_extract_bsf.c | 10 +-- > libavcodec/hevc_mp4toannexb_bsf.c | 6 +- > libavcodec/imx_dump_header_bsf.c | 8 +-- > libavcodec/mjpeg2jpeg_bsf.c | 6 +- > libavcodec/mjpega_dump_header_bsf.c | 8 +-- > libavcodec/movsub_bsf.c | 8 +-- > libavcodec/mp3_header_decompress_bsf.c | 8 +-- > libavcodec/mpeg2_metadata_bsf.c | 10 +-- > libavcodec/mpeg4_unpack_bframes_bsf.c | 6 +- > libavcodec/noise_bsf.c | 7 +-- > libavcodec/null_bsf.c | 5 +- > libavcodec/opus_metadata_bsf.c | 8 +-- > libavcodec/pcm_rechunk_bsf.c | 8 +-- > libavcodec/prores_metadata_bsf.c | 12 ++-- > libavcodec/remove_extradata_bsf.c | 6 +- > libavcodec/setts_bsf.c | 6 +- > libavcodec/trace_headers_bsf.c | 6 +- > libavcodec/truehd_core_bsf.c | 6 +- > libavcodec/vp9_metadata_bsf.c | 12 ++-- > libavcodec/vp9_raw_reorder_bsf.c | 6 +- > libavcodec/vp9_superframe_bsf.c | 6 +- > libavcodec/vp9_superframe_split_bsf.c | 6 +- > 43 files changed, 219 insertions(+), 213 deletions(-) > > diff --git a/configure b/configure > index a7953ffc16..e4d36aa639 100755 > --- a/configure > +++ b/configure > @@ -3992,7 +3992,7 @@ CODEC_LIST=" > $DECODER_LIST > " > PARSER_LIST=$(find_things_extern parser AVCodecParser libavcodec/parsers.c) > -BSF_LIST=$(find_things_extern bsf AVBitStreamFilter libavcodec/bitstream_filters.c) > +BSF_LIST=$(find_things_extern bsf FFBitStreamFilter libavcodec/bitstream_filters.c) > HWACCEL_LIST=$(find_things_extern hwaccel AVHWAccel libavcodec/hwaccels.h) > PROTOCOL_LIST=$(find_things_extern protocol URLProtocol libavformat/protocols.c) > > @@ -7869,7 +7869,7 @@ print_enabled_components(){ > print_enabled_components libavfilter/filter_list.c AVFilter filter_list $FILTER_LIST > print_enabled_components libavcodec/codec_list.c FFCodec codec_list $CODEC_LIST > print_enabled_components libavcodec/parser_list.c AVCodecParser parser_list $PARSER_LIST > -print_enabled_components libavcodec/bsf_list.c AVBitStreamFilter bitstream_filters $BSF_LIST > +print_enabled_components libavcodec/bsf_list.c FFBitStreamFilter bitstream_filters $BSF_LIST > print_enabled_components libavformat/demuxer_list.c AVInputFormat demuxer_list $DEMUXER_LIST > print_enabled_components libavformat/muxer_list.c AVOutputFormat muxer_list $MUXER_LIST > print_enabled_components libavdevice/indev_list.c AVInputFormat indev_list $INDEV_LIST > diff --git a/libavcodec/aac_adtstoasc_bsf.c b/libavcodec/aac_adtstoasc_bsf.c > index 267ef97572..d32fcc5f9d 100644 > --- a/libavcodec/aac_adtstoasc_bsf.c > +++ b/libavcodec/aac_adtstoasc_bsf.c > @@ -148,10 +148,10 @@ static const enum AVCodecID codec_ids[] = { > AV_CODEC_ID_AAC, AV_CODEC_ID_NONE, > }; > > -const AVBitStreamFilter ff_aac_adtstoasc_bsf = { > - .name = "aac_adtstoasc", > +const FFBitStreamFilter ff_aac_adtstoasc_bsf = { > + .p.name = "aac_adtstoasc", > + .p.codec_ids = codec_ids, > .priv_data_size = sizeof(AACBSFContext), > .init = aac_adtstoasc_init, > .filter = aac_adtstoasc_filter, > - .codec_ids = codec_ids, > }; > diff --git a/libavcodec/av1_frame_merge_bsf.c b/libavcodec/av1_frame_merge_bsf.c > index 19b9cd01a8..4c54f2167e 100644 > --- a/libavcodec/av1_frame_merge_bsf.c > +++ b/libavcodec/av1_frame_merge_bsf.c > @@ -156,12 +156,12 @@ static const enum AVCodecID av1_frame_merge_codec_ids[] = { > AV_CODEC_ID_AV1, AV_CODEC_ID_NONE, > }; > > -const AVBitStreamFilter ff_av1_frame_merge_bsf = { > - .name = "av1_frame_merge", > +const FFBitStreamFilter ff_av1_frame_merge_bsf = { > + .p.name = "av1_frame_merge", > + .p.codec_ids = av1_frame_merge_codec_ids, > .priv_data_size = sizeof(AV1FMergeContext), > .init = av1_frame_merge_init, > .flush = av1_frame_merge_flush, > .close = av1_frame_merge_close, > .filter = av1_frame_merge_filter, > - .codec_ids = av1_frame_merge_codec_ids, > }; > diff --git a/libavcodec/av1_frame_split_bsf.c b/libavcodec/av1_frame_split_bsf.c > index fa8b887b6c..5f6a40316c 100644 > --- a/libavcodec/av1_frame_split_bsf.c > +++ b/libavcodec/av1_frame_split_bsf.c > @@ -250,12 +250,12 @@ static const enum AVCodecID av1_frame_split_codec_ids[] = { > AV_CODEC_ID_AV1, AV_CODEC_ID_NONE, > }; > > -const AVBitStreamFilter ff_av1_frame_split_bsf = { > - .name = "av1_frame_split", > +const FFBitStreamFilter ff_av1_frame_split_bsf = { > + .p.name = "av1_frame_split", > + .p.codec_ids = av1_frame_split_codec_ids, > .priv_data_size = sizeof(AV1FSplitContext), > .init = av1_frame_split_init, > .flush = av1_frame_split_flush, > .close = av1_frame_split_close, > .filter = av1_frame_split_filter, > - .codec_ids = av1_frame_split_codec_ids, > }; > diff --git a/libavcodec/av1_metadata_bsf.c b/libavcodec/av1_metadata_bsf.c > index c52673bf6a..41b02cc836 100644 > --- a/libavcodec/av1_metadata_bsf.c > +++ b/libavcodec/av1_metadata_bsf.c > @@ -20,6 +20,7 @@ > #include "libavutil/opt.h" > > #include "bsf.h" > +#include "bsf_internal.h" > #include "cbs.h" > #include "cbs_bsf.h" > #include "cbs_av1.h" > @@ -219,12 +220,12 @@ static const enum AVCodecID av1_metadata_codec_ids[] = { > AV_CODEC_ID_AV1, AV_CODEC_ID_NONE, > }; > > -const AVBitStreamFilter ff_av1_metadata_bsf = { > - .name = "av1_metadata", > +const FFBitStreamFilter ff_av1_metadata_bsf = { > + .p.name = "av1_metadata", > + .p.codec_ids = av1_metadata_codec_ids, > + .p.priv_class = &av1_metadata_class, > .priv_data_size = sizeof(AV1MetadataContext), > - .priv_class = &av1_metadata_class, > .init = &av1_metadata_init, > .close = &ff_cbs_bsf_generic_close, > .filter = &ff_cbs_bsf_generic_filter, > - .codec_ids = av1_metadata_codec_ids, > }; > diff --git a/libavcodec/bitstream_filters.c b/libavcodec/bitstream_filters.c > index ab27972a88..f117bc0e17 100644 > --- a/libavcodec/bitstream_filters.c > +++ b/libavcodec/bitstream_filters.c > @@ -24,56 +24,57 @@ > #include "bsf.h" > #include "bsf_internal.h" > > -extern const AVBitStreamFilter ff_aac_adtstoasc_bsf; > -extern const AVBitStreamFilter ff_av1_frame_merge_bsf; > -extern const AVBitStreamFilter ff_av1_frame_split_bsf; > -extern const AVBitStreamFilter ff_av1_metadata_bsf; > -extern const AVBitStreamFilter ff_chomp_bsf; > -extern const AVBitStreamFilter ff_dump_extradata_bsf; > -extern const AVBitStreamFilter ff_dca_core_bsf; > -extern const AVBitStreamFilter ff_dv_error_marker_bsf; > -extern const AVBitStreamFilter ff_eac3_core_bsf; > -extern const AVBitStreamFilter ff_extract_extradata_bsf; > -extern const AVBitStreamFilter ff_filter_units_bsf; > -extern const AVBitStreamFilter ff_h264_metadata_bsf; > -extern const AVBitStreamFilter ff_h264_mp4toannexb_bsf; > -extern const AVBitStreamFilter ff_h264_redundant_pps_bsf; > -extern const AVBitStreamFilter ff_hapqa_extract_bsf; > -extern const AVBitStreamFilter ff_hevc_metadata_bsf; > -extern const AVBitStreamFilter ff_hevc_mp4toannexb_bsf; > -extern const AVBitStreamFilter ff_imx_dump_header_bsf; > -extern const AVBitStreamFilter ff_mjpeg2jpeg_bsf; > -extern const AVBitStreamFilter ff_mjpega_dump_header_bsf; > -extern const AVBitStreamFilter ff_mp3_header_decompress_bsf; > -extern const AVBitStreamFilter ff_mpeg2_metadata_bsf; > -extern const AVBitStreamFilter ff_mpeg4_unpack_bframes_bsf; > -extern const AVBitStreamFilter ff_mov2textsub_bsf; > -extern const AVBitStreamFilter ff_noise_bsf; > -extern const AVBitStreamFilter ff_null_bsf; > -extern const AVBitStreamFilter ff_opus_metadata_bsf; > -extern const AVBitStreamFilter ff_pcm_rechunk_bsf; > -extern const AVBitStreamFilter ff_prores_metadata_bsf; > -extern const AVBitStreamFilter ff_remove_extradata_bsf; > -extern const AVBitStreamFilter ff_setts_bsf; > -extern const AVBitStreamFilter ff_text2movsub_bsf; > -extern const AVBitStreamFilter ff_trace_headers_bsf; > -extern const AVBitStreamFilter ff_truehd_core_bsf; > -extern const AVBitStreamFilter ff_vp9_metadata_bsf; > -extern const AVBitStreamFilter ff_vp9_raw_reorder_bsf; > -extern const AVBitStreamFilter ff_vp9_superframe_bsf; > -extern const AVBitStreamFilter ff_vp9_superframe_split_bsf; > +extern const FFBitStreamFilter ff_aac_adtstoasc_bsf; > +extern const FFBitStreamFilter ff_av1_frame_merge_bsf; > +extern const FFBitStreamFilter ff_av1_frame_split_bsf; > +extern const FFBitStreamFilter ff_av1_metadata_bsf; > +extern const FFBitStreamFilter ff_chomp_bsf; > +extern const FFBitStreamFilter ff_dump_extradata_bsf; > +extern const FFBitStreamFilter ff_dca_core_bsf; > +extern const FFBitStreamFilter ff_dv_error_marker_bsf; > +extern const FFBitStreamFilter ff_eac3_core_bsf; > +extern const FFBitStreamFilter ff_extract_extradata_bsf; > +extern const FFBitStreamFilter ff_filter_units_bsf; > +extern const FFBitStreamFilter ff_h264_metadata_bsf; > +extern const FFBitStreamFilter ff_h264_mp4toannexb_bsf; > +extern const FFBitStreamFilter ff_h264_redundant_pps_bsf; > +extern const FFBitStreamFilter ff_hapqa_extract_bsf; > +extern const FFBitStreamFilter ff_hevc_metadata_bsf; > +extern const FFBitStreamFilter ff_hevc_mp4toannexb_bsf; > +extern const FFBitStreamFilter ff_imx_dump_header_bsf; > +extern const FFBitStreamFilter ff_mjpeg2jpeg_bsf; > +extern const FFBitStreamFilter ff_mjpega_dump_header_bsf; > +extern const FFBitStreamFilter ff_mp3_header_decompress_bsf; > +extern const FFBitStreamFilter ff_mpeg2_metadata_bsf; > +extern const FFBitStreamFilter ff_mpeg4_unpack_bframes_bsf; > +extern const FFBitStreamFilter ff_mov2textsub_bsf; > +extern const FFBitStreamFilter ff_noise_bsf; > +extern const FFBitStreamFilter ff_null_bsf; > +extern const FFBitStreamFilter ff_opus_metadata_bsf; > +extern const FFBitStreamFilter ff_pcm_rechunk_bsf; > +extern const FFBitStreamFilter ff_prores_metadata_bsf; > +extern const FFBitStreamFilter ff_remove_extradata_bsf; > +extern const FFBitStreamFilter ff_setts_bsf; > +extern const FFBitStreamFilter ff_text2movsub_bsf; > +extern const FFBitStreamFilter ff_trace_headers_bsf; > +extern const FFBitStreamFilter ff_truehd_core_bsf; > +extern const FFBitStreamFilter ff_vp9_metadata_bsf; > +extern const FFBitStreamFilter ff_vp9_raw_reorder_bsf; > +extern const FFBitStreamFilter ff_vp9_superframe_bsf; > +extern const FFBitStreamFilter ff_vp9_superframe_split_bsf; > > #include "libavcodec/bsf_list.c" > > const AVBitStreamFilter *av_bsf_iterate(void **opaque) > { > uintptr_t i = (uintptr_t)*opaque; > - const AVBitStreamFilter *f = bitstream_filters[i]; > + const FFBitStreamFilter *f = bitstream_filters[i]; > > - if (f) > + if (f) { > *opaque = (void*)(i + 1); > - > - return f; > + return &f->p; > + } > + return NULL; > } > > const AVBitStreamFilter *av_bsf_get_by_name(const char *name) > diff --git a/libavcodec/bsf.c b/libavcodec/bsf.c > index 60761e6f7d..42cc1b5ab0 100644 > --- a/libavcodec/bsf.c > +++ b/libavcodec/bsf.c > @@ -18,7 +18,6 @@ > > #include > > -#include "config.h" > #include "config_components.h" > > #include "libavutil/avassert.h" > @@ -35,6 +34,11 @@ > > #define IS_EMPTY(pkt) (!(pkt)->data && !(pkt)->side_data_elems) > > +static av_always_inline const FFBitStreamFilter *ff_bsf(const AVBitStreamFilter *bsf) > +{ > + return (const FFBitStreamFilter*)bsf; > +} > + > typedef struct FFBSFContext { > AVBSFContext pub; > AVPacket *buffer_pkt; > @@ -57,8 +61,8 @@ void av_bsf_free(AVBSFContext **pctx) > bsfi = ffbsfcontext(ctx); > > if (ctx->priv_data) { > - if (ctx->filter->close) > - ctx->filter->close(ctx); > + if (ff_bsf(ctx->filter)->close) > + ff_bsf(ctx->filter)->close(ctx); > if (ctx->filter->priv_class) > av_opt_free(ctx->priv_data); > av_freep(&ctx->priv_data); > @@ -119,8 +123,8 @@ int av_bsf_alloc(const AVBitStreamFilter *filter, AVBSFContext **pctx) > goto fail; > } > /* allocate priv data and init private options */ > - if (filter->priv_data_size) { > - ctx->priv_data = av_mallocz(filter->priv_data_size); > + if (ff_bsf(filter)->priv_data_size) { > + ctx->priv_data = av_mallocz(ff_bsf(filter)->priv_data_size); > if (!ctx->priv_data) { > ret = AVERROR(ENOMEM); > goto fail; > @@ -175,8 +179,8 @@ int av_bsf_init(AVBSFContext *ctx) > > ctx->time_base_out = ctx->time_base_in; > > - if (ctx->filter->init) { > - ret = ctx->filter->init(ctx); > + if (ff_bsf(ctx->filter)->init) { > + ret = ff_bsf(ctx->filter)->init(ctx); > if (ret < 0) > return ret; > } > @@ -192,8 +196,8 @@ void av_bsf_flush(AVBSFContext *ctx) > > av_packet_unref(bsfi->buffer_pkt); > > - if (ctx->filter->flush) > - ctx->filter->flush(ctx); > + if (ff_bsf(ctx->filter)->flush) > + ff_bsf(ctx->filter)->flush(ctx); > } > > int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt) > @@ -226,7 +230,7 @@ int av_bsf_send_packet(AVBSFContext *ctx, AVPacket *pkt) > > int av_bsf_receive_packet(AVBSFContext *ctx, AVPacket *pkt) > { > - return ctx->filter->filter(ctx, pkt); > + return ff_bsf(ctx->filter)->filter(ctx, pkt); > } > > int ff_bsf_get_packet(AVBSFContext *ctx, AVPacket **pkt) > @@ -399,10 +403,10 @@ static const AVClass bsf_list_class = { > .version = LIBAVUTIL_VERSION_INT, > }; > > -static const AVBitStreamFilter list_bsf = { > - .name = "bsf_list", > +static const FFBitStreamFilter list_bsf = { > + .p.name = "bsf_list", > + .p.priv_class = &bsf_list_class, > .priv_data_size = sizeof(BSFListContext), > - .priv_class = &bsf_list_class, > .init = bsf_list_init, > .filter = bsf_list_filter, > .flush = bsf_list_flush, > @@ -495,7 +499,7 @@ int av_bsf_list_finalize(AVBSFList **lst, AVBSFContext **bsf) > goto end; > } > > - ret = av_bsf_alloc(&list_bsf, bsf); > + ret = av_bsf_alloc(&list_bsf.p, bsf); > if (ret < 0) > return ret; > > @@ -550,9 +554,9 @@ end: > int av_bsf_get_null_filter(AVBSFContext **bsf) > { > #if CONFIG_NULL_BSF > - extern const AVBitStreamFilter ff_null_bsf; > - return av_bsf_alloc(&ff_null_bsf, bsf); > + extern const FFBitStreamFilter ff_null_bsf; > + return av_bsf_alloc(&ff_null_bsf.p, bsf); > #else > - return av_bsf_alloc(&list_bsf, bsf); > + return av_bsf_alloc(&list_bsf.p, bsf); > #endif > } > diff --git a/libavcodec/bsf.h b/libavcodec/bsf.h > index 611beab885..69d91a16ab 100644 > --- a/libavcodec/bsf.h > +++ b/libavcodec/bsf.h > @@ -128,20 +128,6 @@ typedef struct AVBitStreamFilter { > * code to this class. > */ > const AVClass *priv_class; > - > - /***************************************************************** > - * No fields below this line are part of the public API. They > - * may not be used outside of libavcodec and can be changed and > - * removed at will. > - * New public fields should be added right above. > - ***************************************************************** > - */ > - > - int priv_data_size; > - int (*init)(AVBSFContext *ctx); > - int (*filter)(AVBSFContext *ctx, AVPacket *pkt); > - void (*close)(AVBSFContext *ctx); > - void (*flush)(AVBSFContext *ctx); > } AVBitStreamFilter; > > /** > diff --git a/libavcodec/bsf_internal.h b/libavcodec/bsf_internal.h > index 06979fdaa3..922b03c01b 100644 > --- a/libavcodec/bsf_internal.h > +++ b/libavcodec/bsf_internal.h > @@ -24,6 +24,19 @@ > #include "bsf.h" > #include "packet.h" > > +typedef struct FFBitStreamFilter { > + /** > + * The public AVBitStreamFilter. See bsf.h for it. > + */ > + AVBitStreamFilter p; > + > + int priv_data_size; > + int (*init)(AVBSFContext *ctx); > + int (*filter)(AVBSFContext *ctx, AVPacket *pkt); > + void (*close)(AVBSFContext *ctx); > + void (*flush)(AVBSFContext *ctx); > +} FFBitStreamFilter; > + > /** > * Called by the bitstream filters to get the next packet for filtering. > * The filter is responsible for either freeing the packet or passing it to the > diff --git a/libavcodec/cbs_bsf.h b/libavcodec/cbs_bsf.h > index a370be1b5f..aa7385c8f2 100644 > --- a/libavcodec/cbs_bsf.h > +++ b/libavcodec/cbs_bsf.h > @@ -67,7 +67,7 @@ typedef struct CBSBSFContext { > * > * Since it calls the update_fragment() function immediately to deal with > * extradata, this should be called after any codec-specific setup is done > - * (probably at the end of the AVBitStreamFilter.init function). > + * (probably at the end of the FFBitStreamFilter.init function). > */ > int ff_cbs_bsf_generic_init(AVBSFContext *bsf, const CBSBSFType *type); > > @@ -75,7 +75,7 @@ int ff_cbs_bsf_generic_init(AVBSFContext *bsf, const CBSBSFType *type); > * Close a generic CBS BSF instance. > * > * If no other deinitialisation is required then this function can be used > - * directly as AVBitStreamFilter.close. > + * directly as FFBitStreamFilter.close. > */ > void ff_cbs_bsf_generic_close(AVBSFContext *bsf); > > @@ -88,7 +88,7 @@ void ff_cbs_bsf_generic_close(AVBSFContext *bsf); > * the same thing to that new extradata to form the output side-data first. > * > * If the BSF does not do anything else then this function can be used > - * directly as AVBitStreamFilter.filter. > + * directly as FFBitStreamFilter.filter. > */ > int ff_cbs_bsf_generic_filter(AVBSFContext *bsf, AVPacket *pkt); > > diff --git a/libavcodec/chomp_bsf.c b/libavcodec/chomp_bsf.c > index 48b9336466..532b4e6a94 100644 > --- a/libavcodec/chomp_bsf.c > +++ b/libavcodec/chomp_bsf.c > @@ -39,7 +39,7 @@ static int chomp_filter(AVBSFContext *ctx, AVPacket *pkt) > /** > * This filter removes a string of NULL bytes from the end of a packet. > */ > -const AVBitStreamFilter ff_chomp_bsf = { > - .name = "chomp", > +const FFBitStreamFilter ff_chomp_bsf = { > + .p.name = "chomp", > .filter = chomp_filter, > }; > diff --git a/libavcodec/dca_core_bsf.c b/libavcodec/dca_core_bsf.c > index b92e6a1ba6..1a2db39cba 100644 > --- a/libavcodec/dca_core_bsf.c > +++ b/libavcodec/dca_core_bsf.c > @@ -54,8 +54,8 @@ static const enum AVCodecID codec_ids[] = { > AV_CODEC_ID_DTS, AV_CODEC_ID_NONE, > }; > > -const AVBitStreamFilter ff_dca_core_bsf = { > - .name = "dca_core", > - .filter = dca_core_filter, > - .codec_ids = codec_ids, > +const FFBitStreamFilter ff_dca_core_bsf = { > + .p.name = "dca_core", > + .p.codec_ids = codec_ids, > + .filter = dca_core_filter, > }; > diff --git a/libavcodec/dump_extradata_bsf.c b/libavcodec/dump_extradata_bsf.c > index b6ef8b3e6b..5506d5ed65 100644 > --- a/libavcodec/dump_extradata_bsf.c > +++ b/libavcodec/dump_extradata_bsf.c > @@ -98,9 +98,9 @@ static const AVClass dump_extradata_class = { > .version = LIBAVUTIL_VERSION_INT, > }; > > -const AVBitStreamFilter ff_dump_extradata_bsf = { > - .name = "dump_extra", > +const FFBitStreamFilter ff_dump_extradata_bsf = { > + .p.name = "dump_extra", > + .p.priv_class = &dump_extradata_class, > .priv_data_size = sizeof(DumpExtradataContext), > - .priv_class = &dump_extradata_class, > .filter = dump_extradata, > }; > diff --git a/libavcodec/dv_error_marker_bsf.c b/libavcodec/dv_error_marker_bsf.c > index a2b9e09ce5..131c6fcbe6 100644 > --- a/libavcodec/dv_error_marker_bsf.c > +++ b/libavcodec/dv_error_marker_bsf.c > @@ -128,11 +128,11 @@ static const AVClass dv_error_marker_class = { > .version = LIBAVUTIL_VERSION_INT, > }; > > -const AVBitStreamFilter ff_dv_error_marker_bsf = { > - .name = "dv_error_marker", > +const FFBitStreamFilter ff_dv_error_marker_bsf = { > + .p.name = "dv_error_marker", > + .p.codec_ids = (const enum AVCodecID []){ AV_CODEC_ID_DVVIDEO, AV_CODEC_ID_NONE }, > + .p.priv_class = &dv_error_marker_class, > .priv_data_size = sizeof(DVErrorMarkerContext), > - .priv_class = &dv_error_marker_class, > .init = dv_error_marker_init, > .filter = dv_error_marker_filter, > - .codec_ids = (const enum AVCodecID []){ AV_CODEC_ID_DVVIDEO, AV_CODEC_ID_NONE }, > }; > diff --git a/libavcodec/eac3_core_bsf.c b/libavcodec/eac3_core_bsf.c > index 49c3389ee1..1c714b18f9 100644 > --- a/libavcodec/eac3_core_bsf.c > +++ b/libavcodec/eac3_core_bsf.c > @@ -79,8 +79,8 @@ static const enum AVCodecID codec_ids[] = { > AV_CODEC_ID_EAC3, AV_CODEC_ID_NONE, > }; > > -const AVBitStreamFilter ff_eac3_core_bsf = { > - .name = "eac3_core", > - .filter = eac3_core_filter, > - .codec_ids = codec_ids, > +const FFBitStreamFilter ff_eac3_core_bsf = { > + .p.name = "eac3_core", > + .p.codec_ids = codec_ids, > + .filter = eac3_core_filter, > }; > diff --git a/libavcodec/extract_extradata_bsf.c b/libavcodec/extract_extradata_bsf.c > index 027a578af1..329b1a6174 100644 > --- a/libavcodec/extract_extradata_bsf.c > +++ b/libavcodec/extract_extradata_bsf.c > @@ -422,11 +422,11 @@ static const AVClass extract_extradata_class = { > .version = LIBAVUTIL_VERSION_INT, > }; > > -const AVBitStreamFilter ff_extract_extradata_bsf = { > - .name = "extract_extradata", > - .codec_ids = codec_ids, > +const FFBitStreamFilter ff_extract_extradata_bsf = { > + .p.name = "extract_extradata", > + .p.codec_ids = codec_ids, > + .p.priv_class = &extract_extradata_class, > .priv_data_size = sizeof(ExtractExtradataContext), > - .priv_class = &extract_extradata_class, > .init = extract_extradata_init, > .filter = extract_extradata_filter, > .close = extract_extradata_close, > diff --git a/libavcodec/filter_units_bsf.c b/libavcodec/filter_units_bsf.c > index 354594ac50..38756baf42 100644 > --- a/libavcodec/filter_units_bsf.c > +++ b/libavcodec/filter_units_bsf.c > @@ -235,12 +235,12 @@ static const AVClass filter_units_class = { > .version = LIBAVUTIL_VERSION_INT, > }; > > -const AVBitStreamFilter ff_filter_units_bsf = { > - .name = "filter_units", > +const FFBitStreamFilter ff_filter_units_bsf = { > + .p.name = "filter_units", > + .p.codec_ids = ff_cbs_all_codec_ids, > + .p.priv_class = &filter_units_class, > .priv_data_size = sizeof(FilterUnitsContext), > - .priv_class = &filter_units_class, > .init = &filter_units_init, > .close = &filter_units_close, > .filter = &filter_units_filter, > - .codec_ids = ff_cbs_all_codec_ids, > }; > diff --git a/libavcodec/h264_metadata_bsf.c b/libavcodec/h264_metadata_bsf.c > index 9df99cbae3..e905982d26 100644 > --- a/libavcodec/h264_metadata_bsf.c > +++ b/libavcodec/h264_metadata_bsf.c > @@ -22,6 +22,7 @@ > #include "libavutil/opt.h" > > #include "bsf.h" > +#include "bsf_internal.h" > #include "cbs.h" > #include "cbs_bsf.h" > #include "cbs_h264.h" > @@ -716,12 +717,12 @@ static const enum AVCodecID h264_metadata_codec_ids[] = { > AV_CODEC_ID_H264, AV_CODEC_ID_NONE, > }; > > -const AVBitStreamFilter ff_h264_metadata_bsf = { > - .name = "h264_metadata", > +const FFBitStreamFilter ff_h264_metadata_bsf = { > + .p.name = "h264_metadata", > + .p.codec_ids = h264_metadata_codec_ids, > + .p.priv_class = &h264_metadata_class, > .priv_data_size = sizeof(H264MetadataContext), > - .priv_class = &h264_metadata_class, > .init = &h264_metadata_init, > .close = &ff_cbs_bsf_generic_close, > .filter = &ff_cbs_bsf_generic_filter, > - .codec_ids = h264_metadata_codec_ids, > }; > diff --git a/libavcodec/h264_mp4toannexb_bsf.c b/libavcodec/h264_mp4toannexb_bsf.c > index 5a2656197e..d11be455c2 100644 > --- a/libavcodec/h264_mp4toannexb_bsf.c > +++ b/libavcodec/h264_mp4toannexb_bsf.c > @@ -312,11 +312,11 @@ static const enum AVCodecID codec_ids[] = { > AV_CODEC_ID_H264, AV_CODEC_ID_NONE, > }; > > -const AVBitStreamFilter ff_h264_mp4toannexb_bsf = { > - .name = "h264_mp4toannexb", > +const FFBitStreamFilter ff_h264_mp4toannexb_bsf = { > + .p.name = "h264_mp4toannexb", > + .p.codec_ids = codec_ids, > .priv_data_size = sizeof(H264BSFContext), > .init = h264_mp4toannexb_init, > .filter = h264_mp4toannexb_filter, > .flush = h264_mp4toannexb_flush, > - .codec_ids = codec_ids, > }; > diff --git a/libavcodec/h264_redundant_pps_bsf.c b/libavcodec/h264_redundant_pps_bsf.c > index d64b064590..f8bab1f109 100644 > --- a/libavcodec/h264_redundant_pps_bsf.c > +++ b/libavcodec/h264_redundant_pps_bsf.c > @@ -21,6 +21,7 @@ > #include "libavutil/log.h" > > #include "bsf.h" > +#include "bsf_internal.h" > #include "cbs.h" > #include "cbs_bsf.h" > #include "cbs_h264.h" > @@ -126,11 +127,11 @@ static const enum AVCodecID h264_redundant_pps_codec_ids[] = { > AV_CODEC_ID_H264, AV_CODEC_ID_NONE, > }; > > -const AVBitStreamFilter ff_h264_redundant_pps_bsf = { > - .name = "h264_redundant_pps", > +const FFBitStreamFilter ff_h264_redundant_pps_bsf = { > + .p.name = "h264_redundant_pps", > + .p.codec_ids = h264_redundant_pps_codec_ids, > .priv_data_size = sizeof(H264RedundantPPSContext), > .init = &h264_redundant_pps_init, > .close = &ff_cbs_bsf_generic_close, > .filter = &ff_cbs_bsf_generic_filter, > - .codec_ids = h264_redundant_pps_codec_ids, > }; > diff --git a/libavcodec/h265_metadata_bsf.c b/libavcodec/h265_metadata_bsf.c > index e5f70cfbc1..f01c8e4cd7 100644 > --- a/libavcodec/h265_metadata_bsf.c > +++ b/libavcodec/h265_metadata_bsf.c > @@ -20,6 +20,7 @@ > #include "libavutil/opt.h" > > #include "bsf.h" > +#include "bsf_internal.h" > #include "cbs.h" > #include "cbs_bsf.h" > #include "cbs_h265.h" > @@ -498,12 +499,12 @@ static const enum AVCodecID h265_metadata_codec_ids[] = { > AV_CODEC_ID_HEVC, AV_CODEC_ID_NONE, > }; > > -const AVBitStreamFilter ff_hevc_metadata_bsf = { > - .name = "hevc_metadata", > +const FFBitStreamFilter ff_hevc_metadata_bsf = { > + .p.name = "hevc_metadata", > + .p.codec_ids = h265_metadata_codec_ids, > + .p.priv_class = &h265_metadata_class, > .priv_data_size = sizeof(H265MetadataContext), > - .priv_class = &h265_metadata_class, > .init = &h265_metadata_init, > .close = &ff_cbs_bsf_generic_close, > .filter = &ff_cbs_bsf_generic_filter, > - .codec_ids = h265_metadata_codec_ids, > }; > diff --git a/libavcodec/hapqa_extract_bsf.c b/libavcodec/hapqa_extract_bsf.c > index 1c8b0669b7..0d9b40aaa6 100644 > --- a/libavcodec/hapqa_extract_bsf.c > +++ b/libavcodec/hapqa_extract_bsf.c > @@ -125,10 +125,10 @@ static const AVClass hapqa_extract_class = { > .version = LIBAVUTIL_VERSION_INT, > }; > > -const AVBitStreamFilter ff_hapqa_extract_bsf = { > - .name = "hapqa_extract", > - .filter = hapqa_extract, > +const FFBitStreamFilter ff_hapqa_extract_bsf = { > + .p.name = "hapqa_extract", > + .p.codec_ids = codec_ids, > + .p.priv_class = &hapqa_extract_class, > .priv_data_size = sizeof(HapqaExtractContext), > - .priv_class = &hapqa_extract_class, > - .codec_ids = codec_ids, > + .filter = hapqa_extract, > }; > diff --git a/libavcodec/hevc_mp4toannexb_bsf.c b/libavcodec/hevc_mp4toannexb_bsf.c > index 790dfb0394..f9a025a36b 100644 > --- a/libavcodec/hevc_mp4toannexb_bsf.c > +++ b/libavcodec/hevc_mp4toannexb_bsf.c > @@ -195,10 +195,10 @@ static const enum AVCodecID codec_ids[] = { > AV_CODEC_ID_HEVC, AV_CODEC_ID_NONE, > }; > > -const AVBitStreamFilter ff_hevc_mp4toannexb_bsf = { > - .name = "hevc_mp4toannexb", > +const FFBitStreamFilter ff_hevc_mp4toannexb_bsf = { > + .p.name = "hevc_mp4toannexb", > + .p.codec_ids = codec_ids, > .priv_data_size = sizeof(HEVCBSFContext), > .init = hevc_mp4toannexb_init, > .filter = hevc_mp4toannexb_filter, > - .codec_ids = codec_ids, > }; > diff --git a/libavcodec/imx_dump_header_bsf.c b/libavcodec/imx_dump_header_bsf.c > index e2b6a15591..241415a0ef 100644 > --- a/libavcodec/imx_dump_header_bsf.c > +++ b/libavcodec/imx_dump_header_bsf.c > @@ -69,8 +69,8 @@ static const enum AVCodecID codec_ids[] = { > AV_CODEC_ID_MPEG2VIDEO, AV_CODEC_ID_NONE, > }; > > -const AVBitStreamFilter ff_imx_dump_header_bsf = { > - .name = "imxdump", > - .filter = imx_dump_header, > - .codec_ids = codec_ids, > +const FFBitStreamFilter ff_imx_dump_header_bsf = { > + .p.name = "imxdump", > + .p.codec_ids = codec_ids, > + .filter = imx_dump_header, > }; > diff --git a/libavcodec/mjpeg2jpeg_bsf.c b/libavcodec/mjpeg2jpeg_bsf.c > index 2a972a7c37..f545e9438d 100644 > --- a/libavcodec/mjpeg2jpeg_bsf.c > +++ b/libavcodec/mjpeg2jpeg_bsf.c > @@ -135,8 +135,8 @@ static const enum AVCodecID codec_ids[] = { > AV_CODEC_ID_MJPEG, AV_CODEC_ID_NONE, > }; > > -const AVBitStreamFilter ff_mjpeg2jpeg_bsf = { > - .name = "mjpeg2jpeg", > +const FFBitStreamFilter ff_mjpeg2jpeg_bsf = { > + .p.name = "mjpeg2jpeg", > + .p.codec_ids = codec_ids, > .filter = mjpeg2jpeg_filter, > - .codec_ids = codec_ids, > }; > diff --git a/libavcodec/mjpega_dump_header_bsf.c b/libavcodec/mjpega_dump_header_bsf.c > index ab68f9c3e9..d541084e74 100644 > --- a/libavcodec/mjpega_dump_header_bsf.c > +++ b/libavcodec/mjpega_dump_header_bsf.c > @@ -101,8 +101,8 @@ static const enum AVCodecID codec_ids[] = { > AV_CODEC_ID_MJPEG, AV_CODEC_ID_NONE, > }; > > -const AVBitStreamFilter ff_mjpega_dump_header_bsf = { > - .name = "mjpegadump", > - .filter = mjpega_dump_header, > - .codec_ids = codec_ids, > +const FFBitStreamFilter ff_mjpega_dump_header_bsf = { > + .p.name = "mjpegadump", > + .p.codec_ids = codec_ids, > + .filter = mjpega_dump_header, > }; > diff --git a/libavcodec/movsub_bsf.c b/libavcodec/movsub_bsf.c > index 6e29fa8e50..a5125c7aff 100644 > --- a/libavcodec/movsub_bsf.c > +++ b/libavcodec/movsub_bsf.c > @@ -57,8 +57,8 @@ fail: > return ret; > } > > -const AVBitStreamFilter ff_text2movsub_bsf = { > - .name = "text2movsub", > +const FFBitStreamFilter ff_text2movsub_bsf = { > + .p.name = "text2movsub", > .filter = text2movsub, > }; > > @@ -81,7 +81,7 @@ static int mov2textsub(AVBSFContext *ctx, AVPacket *pkt) > return 0; > } > > -const AVBitStreamFilter ff_mov2textsub_bsf = { > - .name = "mov2textsub", > +const FFBitStreamFilter ff_mov2textsub_bsf = { > + .p.name = "mov2textsub", > .filter = mov2textsub, > }; > diff --git a/libavcodec/mp3_header_decompress_bsf.c b/libavcodec/mp3_header_decompress_bsf.c > index 0fd8b3a454..a177029fe0 100644 > --- a/libavcodec/mp3_header_decompress_bsf.c > +++ b/libavcodec/mp3_header_decompress_bsf.c > @@ -123,8 +123,8 @@ static const enum AVCodecID codec_ids[] = { > AV_CODEC_ID_MP3, AV_CODEC_ID_NONE, > }; > > -const AVBitStreamFilter ff_mp3_header_decompress_bsf = { > - .name = "mp3decomp", > - .filter = mp3_header_decompress, > - .codec_ids = codec_ids, > +const FFBitStreamFilter ff_mp3_header_decompress_bsf = { > + .p.name = "mp3decomp", > + .p.codec_ids = codec_ids, > + .filter = mp3_header_decompress, > }; > diff --git a/libavcodec/mpeg2_metadata_bsf.c b/libavcodec/mpeg2_metadata_bsf.c > index 11b46c0ae3..1aa6e02791 100644 > --- a/libavcodec/mpeg2_metadata_bsf.c > +++ b/libavcodec/mpeg2_metadata_bsf.c > @@ -16,11 +16,11 @@ > * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA > */ > > -#include "libavutil/avstring.h" > #include "libavutil/common.h" > #include "libavutil/opt.h" > > #include "bsf.h" > +#include "bsf_internal.h" > #include "cbs.h" > #include "cbs_bsf.h" > #include "cbs_mpeg2.h" > @@ -232,12 +232,12 @@ static const enum AVCodecID mpeg2_metadata_codec_ids[] = { > AV_CODEC_ID_MPEG2VIDEO, AV_CODEC_ID_NONE, > }; > > -const AVBitStreamFilter ff_mpeg2_metadata_bsf = { > - .name = "mpeg2_metadata", > +const FFBitStreamFilter ff_mpeg2_metadata_bsf = { > + .p.name = "mpeg2_metadata", > + .p.codec_ids = mpeg2_metadata_codec_ids, > + .p.priv_class = &mpeg2_metadata_class, > .priv_data_size = sizeof(MPEG2MetadataContext), > - .priv_class = &mpeg2_metadata_class, > .init = &mpeg2_metadata_init, > .close = &ff_cbs_bsf_generic_close, > .filter = &ff_cbs_bsf_generic_filter, > - .codec_ids = mpeg2_metadata_codec_ids, > }; > diff --git a/libavcodec/mpeg4_unpack_bframes_bsf.c b/libavcodec/mpeg4_unpack_bframes_bsf.c > index ae2c129d88..5493dafa97 100644 > --- a/libavcodec/mpeg4_unpack_bframes_bsf.c > +++ b/libavcodec/mpeg4_unpack_bframes_bsf.c > @@ -155,12 +155,12 @@ static const enum AVCodecID codec_ids[] = { > AV_CODEC_ID_MPEG4, AV_CODEC_ID_NONE, > }; > > -const AVBitStreamFilter ff_mpeg4_unpack_bframes_bsf = { > - .name = "mpeg4_unpack_bframes", > +const FFBitStreamFilter ff_mpeg4_unpack_bframes_bsf = { > + .p.name = "mpeg4_unpack_bframes", > + .p.codec_ids = codec_ids, > .priv_data_size = sizeof(UnpackBFramesBSFContext), > .init = mpeg4_unpack_bframes_init, > .filter = mpeg4_unpack_bframes_filter, > .flush = mpeg4_unpack_bframes_close_flush, > .close = mpeg4_unpack_bframes_close_flush, > - .codec_ids = codec_ids, > }; > diff --git a/libavcodec/noise_bsf.c b/libavcodec/noise_bsf.c > index 05b5d5f32b..168f3aa373 100644 > --- a/libavcodec/noise_bsf.c > +++ b/libavcodec/noise_bsf.c > @@ -23,7 +23,6 @@ > #include "bsf.h" > #include "bsf_internal.h" > > -#include "libavutil/avstring.h" > #include "libavutil/log.h" > #include "libavutil/opt.h" > #include "libavutil/eval.h" > @@ -220,10 +219,10 @@ static const AVClass noise_class = { > .version = LIBAVUTIL_VERSION_INT, > }; > > -const AVBitStreamFilter ff_noise_bsf = { > - .name = "noise", > +const FFBitStreamFilter ff_noise_bsf = { > + .p.name = "noise", > + .p.priv_class = &noise_class, > .priv_data_size = sizeof(NoiseContext), > - .priv_class = &noise_class, > .init = noise_init, > .close = noise_close, > .filter = noise, > diff --git a/libavcodec/null_bsf.c b/libavcodec/null_bsf.c > index 595945027d..28237076fb 100644 > --- a/libavcodec/null_bsf.c > +++ b/libavcodec/null_bsf.c > @@ -21,10 +21,9 @@ > * Null bitstream filter -- pass the input through unchanged. > */ > > -#include "bsf.h" > #include "bsf_internal.h" > > -const AVBitStreamFilter ff_null_bsf = { > - .name = "null", > +const FFBitStreamFilter ff_null_bsf = { > + .p.name = "null", > .filter = ff_bsf_get_packet_ref, > }; > diff --git a/libavcodec/opus_metadata_bsf.c b/libavcodec/opus_metadata_bsf.c > index e73852d618..2a0f86cec3 100644 > --- a/libavcodec/opus_metadata_bsf.c > +++ b/libavcodec/opus_metadata_bsf.c > @@ -58,11 +58,11 @@ static const enum AVCodecID codec_ids[] = { > AV_CODEC_ID_OPUS, AV_CODEC_ID_NONE, > }; > > -const AVBitStreamFilter ff_opus_metadata_bsf = { > - .name = "opus_metadata", > +const FFBitStreamFilter ff_opus_metadata_bsf = { > + .p.name = "opus_metadata", > + .p.codec_ids = codec_ids, > + .p.priv_class = &opus_metadata_class, > .priv_data_size = sizeof(OpusBSFContext), > - .priv_class = &opus_metadata_class, > .init = &opus_metadata_init, > .filter = &ff_bsf_get_packet_ref, > - .codec_ids = codec_ids, > }; > diff --git a/libavcodec/pcm_rechunk_bsf.c b/libavcodec/pcm_rechunk_bsf.c > index 80727a1a91..108d9e90b9 100644 > --- a/libavcodec/pcm_rechunk_bsf.c > +++ b/libavcodec/pcm_rechunk_bsf.c > @@ -209,13 +209,13 @@ static const enum AVCodecID codec_ids[] = { > AV_CODEC_ID_NONE, > }; > > -const AVBitStreamFilter ff_pcm_rechunk_bsf = { > - .name = "pcm_rechunk", > +const FFBitStreamFilter ff_pcm_rechunk_bsf = { > + .p.name = "pcm_rechunk", > + .p.codec_ids = codec_ids, > + .p.priv_class = &pcm_rechunk_class, > .priv_data_size = sizeof(PCMContext), > - .priv_class = &pcm_rechunk_class, > .filter = rechunk_filter, > .init = init, > .flush = flush, > .close = uninit, > - .codec_ids = codec_ids, > }; > diff --git a/libavcodec/prores_metadata_bsf.c b/libavcodec/prores_metadata_bsf.c > index d971243a8b..fb001b38d7 100644 > --- a/libavcodec/prores_metadata_bsf.c > +++ b/libavcodec/prores_metadata_bsf.c > @@ -166,11 +166,11 @@ static const AVClass prores_metadata_class = { > .version = LIBAVUTIL_VERSION_INT, > }; > > -const AVBitStreamFilter ff_prores_metadata_bsf = { > - .name = "prores_metadata", > - .init = prores_metadata_init, > - .filter = prores_metadata, > +const FFBitStreamFilter ff_prores_metadata_bsf = { > + .p.name = "prores_metadata", > + .p.codec_ids = codec_ids, > + .p.priv_class = &prores_metadata_class, > .priv_data_size = sizeof(ProresMetadataContext), > - .priv_class = &prores_metadata_class, > - .codec_ids = codec_ids, > + .init = prores_metadata_init, > + .filter = prores_metadata, > }; > diff --git a/libavcodec/remove_extradata_bsf.c b/libavcodec/remove_extradata_bsf.c > index c698d1d7f9..66b7d00bd8 100644 > --- a/libavcodec/remove_extradata_bsf.c > +++ b/libavcodec/remove_extradata_bsf.c > @@ -245,9 +245,9 @@ static const AVClass remove_extradata_class = { > .version = LIBAVUTIL_VERSION_INT, > }; > > -const AVBitStreamFilter ff_remove_extradata_bsf = { > - .name = "remove_extra", > +const FFBitStreamFilter ff_remove_extradata_bsf = { > + .p.name = "remove_extra", > + .p.priv_class = &remove_extradata_class, > .priv_data_size = sizeof(RemoveExtradataContext), > - .priv_class = &remove_extradata_class, > .filter = remove_extradata, > }; > diff --git a/libavcodec/setts_bsf.c b/libavcodec/setts_bsf.c > index fadf63bc54..9c27b24a39 100644 > --- a/libavcodec/setts_bsf.c > +++ b/libavcodec/setts_bsf.c > @@ -267,10 +267,10 @@ static const AVClass setts_class = { > .version = LIBAVUTIL_VERSION_INT, > }; > > -const AVBitStreamFilter ff_setts_bsf = { > - .name = "setts", > +const FFBitStreamFilter ff_setts_bsf = { > + .p.name = "setts", > + .p.priv_class = &setts_class, > .priv_data_size = sizeof(SetTSContext), > - .priv_class = &setts_class, > .init = setts_init, > .close = setts_close, > .filter = setts_filter, > diff --git a/libavcodec/trace_headers_bsf.c b/libavcodec/trace_headers_bsf.c > index 96a52fac53..028b0a1e59 100644 > --- a/libavcodec/trace_headers_bsf.c > +++ b/libavcodec/trace_headers_bsf.c > @@ -117,11 +117,11 @@ static int trace_headers(AVBSFContext *bsf, AVPacket *pkt) > return err; > } > > -const AVBitStreamFilter ff_trace_headers_bsf = { > - .name = "trace_headers", > +const FFBitStreamFilter ff_trace_headers_bsf = { > + .p.name = "trace_headers", > + .p.codec_ids = ff_cbs_all_codec_ids, > .priv_data_size = sizeof(TraceHeadersContext), > .init = &trace_headers_init, > .close = &trace_headers_close, > .filter = &trace_headers, > - .codec_ids = ff_cbs_all_codec_ids, > }; > diff --git a/libavcodec/truehd_core_bsf.c b/libavcodec/truehd_core_bsf.c > index cc2779cc2e..ee1060b021 100644 > --- a/libavcodec/truehd_core_bsf.c > +++ b/libavcodec/truehd_core_bsf.c > @@ -173,10 +173,10 @@ static const enum AVCodecID codec_ids[] = { > AV_CODEC_ID_TRUEHD, AV_CODEC_ID_NONE, > }; > > -const AVBitStreamFilter ff_truehd_core_bsf = { > - .name = "truehd_core", > +const FFBitStreamFilter ff_truehd_core_bsf = { > + .p.name = "truehd_core", > + .p.codec_ids = codec_ids, > .priv_data_size = sizeof(TrueHDCoreContext), > .filter = truehd_core_filter, > .flush = truehd_core_flush, > - .codec_ids = codec_ids, > }; > diff --git a/libavcodec/vp9_metadata_bsf.c b/libavcodec/vp9_metadata_bsf.c > index d904a0088d..40d1b21c67 100644 > --- a/libavcodec/vp9_metadata_bsf.c > +++ b/libavcodec/vp9_metadata_bsf.c > @@ -16,11 +16,11 @@ > * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA > */ > > -#include "libavutil/avstring.h" > -#include "libavutil/common.h" > +#include "libavutil/log.h" > #include "libavutil/opt.h" > > #include "bsf.h" > +#include "bsf_internal.h" > #include "cbs.h" > #include "cbs_bsf.h" > #include "cbs_vp9.h" > @@ -135,12 +135,12 @@ static const enum AVCodecID vp9_metadata_codec_ids[] = { > AV_CODEC_ID_VP9, AV_CODEC_ID_NONE, > }; > > -const AVBitStreamFilter ff_vp9_metadata_bsf = { > - .name = "vp9_metadata", > +const FFBitStreamFilter ff_vp9_metadata_bsf = { > + .p.name = "vp9_metadata", > + .p.codec_ids = vp9_metadata_codec_ids, > + .p.priv_class = &vp9_metadata_class, > .priv_data_size = sizeof(VP9MetadataContext), > - .priv_class = &vp9_metadata_class, > .init = &vp9_metadata_init, > .close = &ff_cbs_bsf_generic_close, > .filter = &ff_cbs_bsf_generic_filter, > - .codec_ids = vp9_metadata_codec_ids, > }; > diff --git a/libavcodec/vp9_raw_reorder_bsf.c b/libavcodec/vp9_raw_reorder_bsf.c > index 6562399159..f98752c775 100644 > --- a/libavcodec/vp9_raw_reorder_bsf.c > +++ b/libavcodec/vp9_raw_reorder_bsf.c > @@ -408,11 +408,11 @@ static const enum AVCodecID vp9_raw_reorder_codec_ids[] = { > AV_CODEC_ID_VP9, AV_CODEC_ID_NONE, > }; > > -const AVBitStreamFilter ff_vp9_raw_reorder_bsf = { > - .name = "vp9_raw_reorder", > +const FFBitStreamFilter ff_vp9_raw_reorder_bsf = { > + .p.name = "vp9_raw_reorder", > + .p.codec_ids = vp9_raw_reorder_codec_ids, > .priv_data_size = sizeof(VP9RawReorderContext), > .close = &vp9_raw_reorder_close, > .flush = &vp9_raw_reorder_flush, > .filter = &vp9_raw_reorder_filter, > - .codec_ids = vp9_raw_reorder_codec_ids, > }; > diff --git a/libavcodec/vp9_superframe_bsf.c b/libavcodec/vp9_superframe_bsf.c > index 57681e29e4..349d43d62e 100644 > --- a/libavcodec/vp9_superframe_bsf.c > +++ b/libavcodec/vp9_superframe_bsf.c > @@ -211,12 +211,12 @@ static const enum AVCodecID codec_ids[] = { > AV_CODEC_ID_VP9, AV_CODEC_ID_NONE, > }; > > -const AVBitStreamFilter ff_vp9_superframe_bsf = { > - .name = "vp9_superframe", > +const FFBitStreamFilter ff_vp9_superframe_bsf = { > + .p.name = "vp9_superframe", > + .p.codec_ids = codec_ids, > .priv_data_size = sizeof(VP9BSFContext), > .filter = vp9_superframe_filter, > .init = vp9_superframe_init, > .flush = vp9_superframe_flush, > .close = vp9_superframe_close, > - .codec_ids = codec_ids, > }; > diff --git a/libavcodec/vp9_superframe_split_bsf.c b/libavcodec/vp9_superframe_split_bsf.c > index ed0444561a..2a068a6898 100644 > --- a/libavcodec/vp9_superframe_split_bsf.c > +++ b/libavcodec/vp9_superframe_split_bsf.c > @@ -155,12 +155,12 @@ static void vp9_superframe_split_uninit(AVBSFContext *ctx) > av_packet_free(&s->buffer_pkt); > } > > -const AVBitStreamFilter ff_vp9_superframe_split_bsf = { > - .name = "vp9_superframe_split", > +const FFBitStreamFilter ff_vp9_superframe_split_bsf = { > + .p.name = "vp9_superframe_split", > + .p.codec_ids = (const enum AVCodecID []){ AV_CODEC_ID_VP9, AV_CODEC_ID_NONE }, > .priv_data_size = sizeof(VP9SFSplitContext), > .init = vp9_superframe_split_init, > .flush = vp9_superframe_split_flush, > .close = vp9_superframe_split_uninit, > .filter = vp9_superframe_split_filter, > - .codec_ids = (const enum AVCodecID []){ AV_CODEC_ID_VP9, AV_CODEC_ID_NONE }, > }; Will apply this tomorrow unless there are objections. - 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".