From patchwork Mon Mar 21 23:31:10 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 34884 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:ab0:5fda:0:0:0:0:0 with SMTP id g26csp619897uaj; Mon, 21 Mar 2022 16:31:33 -0700 (PDT) X-Google-Smtp-Source: ABdhPJz9pyNXx37EbqJo3tJkkwNO24Imd9TNne1CXlxAV9Oj6gT3Ij83sWcM4iEXoWjESukX14Wt X-Received: by 2002:a17:907:94d2:b0:6e0:23a4:ddb2 with SMTP id dn18-20020a17090794d200b006e023a4ddb2mr4624874ejc.238.1647905493363; Mon, 21 Mar 2022 16:31:33 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id v26-20020a50d09a000000b00418c2b5be33si11117903edd.277.2022.03.21.16.31.32; Mon, 21 Mar 2022 16:31:33 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=k77FLJuR; arc=fail (body hash mismatch); spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 01CAE68B03F; Tue, 22 Mar 2022 01:31:28 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-HE1-obe.outbound.protection.outlook.com (mail-oln040092068051.outbound.protection.outlook.com [40.92.68.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8CF0D68A927 for ; Tue, 22 Mar 2022 01:31:21 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=SqI/P+161OY21OiJWh7yCeChpYVABSsf4IwZ1eNu/x0NlRfzxnrzpEL/jQ3/wdsGVBV0cEXNKllnfs5l4lu5DiIgs8VFP+yK8k7wNKXSXKLVEekK/UU01UCKD2TY2uB0Px3jrKwYJisNVscggjs3qdCD07ZP7hQxhSLNeJHIkdNTT9xgkSo1IW66yJepQmSYDQA4zjDlfjIUXo6BiWeX9sIeUOCKkHet4XrDXLhMWZ7Gxd3zNR1Iz5SHF0KJRx9WEod0s2MPS0dYyqGcxOqgt5mlPtAy10wksZxueWITv0zhyjp3+/i0mGwQi07gZGBwph6GDEhbBL+LLRSu7dJEbg== 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=POPe4FpfaXoTTW9jpSRLUy0ubxBvnfiXMFSFX8owyhE=; b=PPdAlRM1ddt5IImZp2njI2fmKdY9JKd/ZAz64SZgdZakbRfNppQ4cQfBwx8XwiZ1dUe4sTbLzul+uFvI3QWZHrvJpPzvp6+rhGMISv5Wnf+ucc696YbDITZfd/inTtsbHoQEj/EgLf9jI9Cd71B9GlTYgs/Qy6Zcqa0YSZE9/FFub5GMhWjpflJDZ1XGn1lZRSvQtwpd+AiIQxqbplPgja09eUdMMa5/gzyLdbIxao834n3S+NgVAgJrYN8+nWz8EdXHDBfT1yzQY5RZh8+KeTgTfuK8zR8x4f8TXhIY6FDZjQ+LrrRZmnlbOCr3eJMXEpd7veDpLBTBM1W5wVhHvg== 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=POPe4FpfaXoTTW9jpSRLUy0ubxBvnfiXMFSFX8owyhE=; b=k77FLJuRqzKrN7K1diLXqt32xy/Eq/VG7a66jMeJaROmvbGQYjHpLanhmqJ0AWatmaGDJcb3oeJP8LbHFDItnEWV0kR6KbWiNeZZanlhz7ryxhZUR4QLa7J8BgM447d8yvBpizqb/8HqyLZla17UQ8GlszXRvyc5YiYeadY2c+9cokTJQc/R2xaKBD+vPK9aQrsLuZAPOC/nlSrbOJyixi6dNs4Gf4Avq7jumgKlqdSgjkaHm+0T55/K2gD7QIba5nyFe8cG4Q+lXybekQEpKTQTeg1ddyalZvXb5Uzt8b1CxSW6p0HBrMjQnXdUb4KlYCV/EdrsB6QY1VprDpjDbw== Received: from AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) by PAXPR01MB8218.eurprd01.prod.exchangelabs.com (2603:10a6:102:201::17) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5081.16; Mon, 21 Mar 2022 23:31:18 +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; Mon, 21 Mar 2022 23:31:18 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 22 Mar 2022 00:31:10 +0100 Message-ID: X-Mailer: git-send-email 2.32.0 X-TMN: [l25wE+lQXEuJaia2hqjl/0Oku8469WKq] X-ClientProxiedBy: AM6P191CA0029.EURP191.PROD.OUTLOOK.COM (2603:10a6:209:8b::42) To AS1PR01MB9564.eurprd01.prod.exchangelabs.com (2603:10a6:20b:4d1::16) X-Microsoft-Original-Message-ID: <20220321233111.227124-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: ae5fed75-3ac4-411a-9b35-08da0b92e602 X-MS-Exchange-SLBlob-MailProps: +LiGfBxqLEu8ENkeSS2SswW466t0pEUA2Jps0QRfTEo5t+iHesqMtMCbtJI5HRP2/52zavoZaY8R9FZhWtrM+4Z7Wc3LWo+sqGBDpK7ABUcCjSTOQ2k3LR3GvzDpi8iaxzoue+2GdI6IqVkncf5xWxEPke1anYMUZ2zXVP0UjR/uXC+VW2lIG5+YPpjfliy+yX55ysx/umxRrOru2LFF5h2FPxU3JGCiWrKWBeWDzD9z25M6Tp0WEcCVIGo0d7IGGjIHtHHiJj4/2fTE8uxuX+d1OF83Ia54KkqN/Ggmb7ZVjpZJZGVk/byCNTeUFSvOv8ISnxjgSngWATf34+NToIQSMzMMN/Y1J6BecmCOs3IyqRkwMEneh6eiW7t88fFrLBKv17wfggteTqzA9YE9kEEXa00DTEwtiaN9zjyRniQAtEzdqQb5ssL88/+ZCRbf7758YHgl+K+Ntg7GKgcSjC058LuK5XrQcNpmKQHvcB/5T+RzYnuvtoUn+qh7lW6BbfmZMSlAhQAncO2bXy3Poos4QKNuiLaE1aJ9DAiDDXUOqD6SNJbAddoAVp3UOJ3bYJzFtf4bhGUYDRvQnmSyEFXl/VmJDGQNQGl59SjQTGOkhoHbx0hPrIRttnaarUHZGXuFoLe8EiNpYZKBVTEqYtf+Q0ypVosjudty8O08LHTFjD8HOWBW3vRU+C/a3cUlHaQ2PgUESYEhqknpRcQ49lZRK17Ey7UJdLR4P1iNElCy5/jaz3XMVozJ3tpcm/FI9sR86f7DxDadRE3sMyB61/tg+2L5ZajV X-MS-TrafficTypeDiagnostic: PAXPR01MB8218:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: QwbzbLzOvPkvAeB/s30gGJEBWelD9XjhggjQSV7311drRhBPjil1CZdPYR7V8uq462p5pEqd1DCTUjtWf/xqTFNWmpZ7u/WVDEIU72Sdrzs5LxvBq36aYQZQXu+09/MwA9QtjdQWG/fmQLZtSYASyCvhH5SxdlmkoP6ZkcnSV4AwdvBMfbhdyz+omdbbTZphe87jx8T8s6220+f89oUGw2JFTBeZqrLB1QiNGprjTCWoHWB7Eq8wzti9wJKAPwTa3E1mcmrKzdYfuVR41+TjHsuxncIEP1SYfmim0ssJAJy4UCeYBKn2mZPQI6qkbNRwsxLViA26GXHKH3mgxPQKJZu+tlNCyPZ3N/J/+hS8t+V3grRzm41u31onAYUJlSu9ur4Lwcu39oVPRiFr06rlwGuuc2W3oe/HhMjdKyrXYqyBX1vfW4e8qy2TiSvUw52bwCVe0qwWcra8uw0NAE5VZKAE0nd4AAC6CN/DDukyHpPPHN9tsgYi9k9ZWBGHvp3lwnMA2+aDN1dNQ7RxqjdLAOdsrDlQyV4hrUChqdgFQxwL8B4bdYAQpv+0el2tPc6CCIpGUfL9/TqGd3SPG8hiTg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Dvh9IqIWkcSJQRV1gkRokDfb0i9xv4LRgBtIsPOAnO1FqWjfFBC5U0rOF8tRKBgrB1dUg9A2KH5i8gzXmvCOepR/o4IGSbsxibGp9kxamh3xv/gM6TG043varMWaPCYWei21o0Jp+nz+5IbEIccpMrvU/xuz89JWrvEQCz2Ch65mGDoMWNcR+WGEmVl7/KOt6/g8ozqedFyyEV317B1p3mjDsL7LVzqujioaTj07A1WQr0T7m7xspbPrBCaq0VdgfHGprDey31tTZoY/6d/2r4wiB2WpPe+TVRTyff5Y678F5XhYwnXBgFqbtp3k8x6kzvWXSfJXzkJ5kJ6DL9MDHvGQgM+qlh1S/XQpGS902dleoUYKK2nXbUgmKBeBNgK2RpUxKM+pBLXzCti+MnZ4HO8nS97rBOxJCWJ3wYWVhPTXfkuFK8o6KvB5NGBATIVXqVfct80CqqwuOfN+sFi8+Hv8xoP6tQLcTzW1hpycHR/X8bx0aBGKvYvGQmX/AeJ3BkGj66DriGcUm/gL+1KWVYxZNoqJA3lQWsqGJ+kuGa/PXJvxYX5n5eD9w3pM7fF+aZy+WsiMCV4gs6j28eC7bfLqF17fycQfE9Bw7N1UKHMpuWmVwOs2Lufoc1TvOZrdknNpr/zYd4gwQD+uZZf45nubSYNmeBWTeUcN+0Xw5pZmpBZ2CAwHA/EJSgcUNvW7iuAfcfdmfdrRQhi+KsOWeUAVBnQMkaVdTuXw+SitBjxd6v4QjnOq0sASre+pKvtAhaRHKIPGZSEyXJl3+jba2f4YV5ClUK8JCS/o5TldaKydKA0u9GFeEdQdtesoTLuiZBOkSob35PqnfANCq+Dr2bRlY8npjrS2LInFACvGXrh3WJdjXXaE4IrCt7C6ZsmMYl7Ed+p3S7/YT5lP7fzH7v2Vw6evKsIV7mxcxTKsWGgfHZ0+9POV2vxLZIwbkeo6vqMx9WmZ39E2Is1B+wNqbskAelW0P1ssM125vtM3ICVt8RuKT5c+hRD4ZjiBlLILnbIZtkfxVhlv6VOfUR4ukUdWhH+Xpbgz3E9S/zhDQLNmnfbEmVwjmP1LcRAlDhMyCGSV6Ap2E2XJ3HgUnLjhdidstt537KNwvrssd1djCVbPkUHVIDPL0YZ18FFxGgOxE/CB2u5sEgvODlTNgxwZ4/gK5wbJk++N7NpZn2EH9Jo= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ae5fed75-3ac4-411a-9b35-08da0b92e602 X-MS-Exchange-CrossTenant-AuthSource: AS1PR01MB9564.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 21 Mar 2022 23:31:18.2793 (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: PAXPR01MB8218 Subject: [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 Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: EoIwizA34P9p 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 }, };