From patchwork Fri Sep 24 16:37:12 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 30562 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:6506:0:0:0:0:0 with SMTP id z6csp1698533iob; Fri, 24 Sep 2021 09:37:57 -0700 (PDT) X-Google-Smtp-Source: ABdhPJzNzTITsurrXTdr+TErpGhANkt3qwN+jKX10fkLyBoiLeiEezpV3fAkVB/OuiNIFtSBW9QW X-Received: by 2002:a17:906:3a0f:: with SMTP id z15mr12560314eje.42.1632501477174; Fri, 24 Sep 2021 09:37:57 -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 y12si10283952ede.501.2021.09.24.09.37.56; Fri, 24 Sep 2021 09:37:57 -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=Hba1anpT; 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 6C54468A72C; Fri, 24 Sep 2021 19:37:52 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-AM5-obe.outbound.protection.outlook.com (mail-oln040092070100.outbound.protection.outlook.com [40.92.70.100]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B741A68A6EE for ; Fri, 24 Sep 2021 19:37:45 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=HBz0c+woFQUTosNQi8F7cn/hyHcZVQMC499eLKf0+3OzUP7Ip/LW/Jfyudd5Dt99z9uLASvIli8jGQfyXef4YUCPJmKLm/Pt/BSGSGDMzONUlX410QM4nmQi96io+anjLbDBi1m756rSQPLTAF6XaAx0QkEJTkNJ7NH93w1GFb3LqzFgC1mJNprjdAVcX/WTl7rnIaeCCBZUEqK5JZWZgLBZIj3wBGYjR2R4X+BeNWqe9j9sxPXxVwQj366K8RuA1Y6Xji+ed+l+QTrEMxCfiLiRnv90zab61ab8YGL12sNxBRz//s5iUVhmNw376EhCkCxta3/9qkFC7i3ufYR1Jg== 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; bh=u5jkre7PPGwQRGrParyMD43Z7n0RxhKYEexArH658iQ=; b=JLIZTNOFigrK2IAHehrhHrXwzOKY/IqUH3YLEtMAt/NvVwAZCTbu4GL6+kxhnp5to4FKJn6UfbKp7ayGszpQBdb2mInT9Um+yHEJnyUzB5795ihqu9zy/UA7GP7G76xAy7YX5srYVfSixeDK+9aJ7g3cHJXZPknpYwHKwCsCGgyBgEY5jF0v6lVBYGrBdCIixBwLe8svqZCC2JFkSp7gGKpwcvEtT5UXKxj5KdYvokVvDSOzmlzYOPiW2eVHxkNvTG49TOJw9cwt9EiV+1YqCIgErGQEedCp+4rtXtk5vE7JM6ze4i9tF7IDnkJuI5KfloBi3SmBbs1Tdu77UFiW3g== 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=u5jkre7PPGwQRGrParyMD43Z7n0RxhKYEexArH658iQ=; b=Hba1anpTWlZ6q8T/w0cfbGjth3WOPeuuyyxvFYQa9jLLLi451/FaAHzdomsTX5ze6tHMMttP2TPivx9Er2GvyRJG2NHi49Rot0/NvoX99V8kjsn94gR/+fDXh3CGpnSb0foy7BRcLlA1I2uyYz5kL0CFO7TjTG+IZjy+1dPpAijYA5ifzWuv86MyXfbU2rNcjlc8f53IdjsUz0IcmuBtpNb6cNis+ET4FsP4USlzWpQEC6RVgmsnmjpwfDMnPydOVlH8Exa/98/HXOQHfeAD0FbC+N6h2QJVlVcWaNcqLuTawjpkGonyYvrMa7wut9EIo8RV/GRHxNWAS6IMU1mtLQ== Received: from PR3PR03MB6665.eurprd03.prod.outlook.com (2603:10a6:102:7d::6) by PA4PR03MB6847.eurprd03.prod.outlook.com (2603:10a6:102:eb::5) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4544.13; Fri, 24 Sep 2021 16:37:44 +0000 Received: from PR3PR03MB6665.eurprd03.prod.outlook.com ([fe80::15d4:ff2d:e607:cf68]) by PR3PR03MB6665.eurprd03.prod.outlook.com ([fe80::15d4:ff2d:e607:cf68%3]) with mapi id 15.20.4544.015; Fri, 24 Sep 2021 16:37:44 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 24 Sep 2021 18:37:12 +0200 Message-ID: X-Mailer: git-send-email 2.30.2 In-Reply-To: References: X-TMN: [kRct9Nv+i2xY2ZE+au63XnwmLcCVnljG] X-ClientProxiedBy: PR3P193CA0044.EURP193.PROD.OUTLOOK.COM (2603:10a6:102:51::19) To PR3PR03MB6665.eurprd03.prod.outlook.com (2603:10a6:102:7d::6) X-Microsoft-Original-Message-ID: <20210924163719.562217-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.142.38) by PR3P193CA0044.EURP193.PROD.OUTLOOK.COM (2603:10a6:102:51::19) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4544.13 via Frontend Transport; Fri, 24 Sep 2021 16:37:44 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 743be659-aabd-47ff-55a7-08d97f79a2a9 X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNVIK/iSThOesseQkgEe+5WACm0S28irvxy4XNN9g0Yr6N5KhskX76MJlp3bpfAYtO5jbvE8m0xRCl3rfE5zZ86nm6RrtfWJsv9Imthr6Pcx8YyDxmDWBjjgGfyEgQOZ57KuS2W8fSQWLcsHe30vm+ujX8Tba4pB6QFk3NrB3Q1XUHu13NIO0KMdK5uJclzHrUZFCwZ4lVexDnB1dLvQYi3m4ZWyw3HUWEhA18p9hi8vdKLQ4657JQSw9nx3lqMCH7Ekxx/fv4JE+qGAkSs1XdLrin4Oyu0GsOgeey5Ab9ytt0ThPT/gsJQWD42lgWDKeefou8lr8ghV0bUHON2BndwfDb0vteKSgN1J0C4SRLgCajThUcsWuaX/ckWpngcOy6YEUS/xI9FuQlk1hKYpoJHJaG4IR8PpaNCJpRkulJ9xUmL9rJNnetj+DNuFWcwl2kqD03GQ5b9ZMAsrXbDkSWzM0NVZvhD1rsrb7GSZCNNO1BzBEKZaamDUxUi1nAO2hELnTve/g/AUqoUtVIlZnP0Z9S7/3UiJJWzmqg/eH78d18nuJEe1lMG43c8ixN1632iWMEy02zEPc1CEB3wNA/lHhjCZnKvZJ43FFma6mxHUJQ7B/naGk+S5HbIAHW6k8FATkYw1JBR/Nk/4QmODJn7sYBr+XQhC9WfezfvWGV8HkJ+48mIl7j5Tc8YLlN/ySqZLpRUieMfr3pY37ZhSiSCNn9GjILTTfsA= X-MS-TrafficTypeDiagnostic: PA4PR03MB6847: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: Y55WBHyA4qBZ77o7EcBr90g/D+e8FDkRre63bKitosM48hUA6dVn0CQ81NtHIFKkGgGY/KX4o/+HnWheun5C8BpPo9KxEp7HBWr4/dTO31pXd0RtIiyTZ9LidMkXQ02KOZuLhCBMGP+YnRqZ12TjdJbzWB2mNx6QeBard7FWNNuHJrb6cU+KWszq+j/u2sj8n6IaPLZ4HGOx5fjOsSsVg61G6CmvQDyeVmC9wwHiykuuEL7NQYpAmjdHpamnFGY2hgy4NVGP/yMArn8405cqDdz2HgpCCOzopmszaUplesJ+6XGoDTLZGGUalrADxP6DBBg/uf/PVnk9tz5luh1XyCNnaYqJ6MkIEmIL6DYnK37OX/+jgr7cXji0wb/OuRGHadiwlGGVc4FknJoPZzodM2Vi6CIUcVy4aRTGzpoqAhdSHFIiPvpROmIFUDcmQS61 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: X5Zl/QgwwPecyPO1/J8/EdlX4ryeMGko8mYF+gxk3zBbZ6UkWMitustVcUii2M1Yx/iSkek8Wdz/UYR9zweQduGghtQDkh1keClwekD2OEo1QRMVG29rstsbPSGW3sOKnjgs0tXbXxQADGoMR9LQ2Q== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 743be659-aabd-47ff-55a7-08d97f79a2a9 X-MS-Exchange-CrossTenant-AuthSource: PR3PR03MB6665.eurprd03.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 24 Sep 2021 16:37:44.8463 (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: PA4PR03MB6847 Subject: [FFmpeg-devel] [PATCH 04/11] avcodec/tests/avcodec: Check consistency of function pointers 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: HgUrrfZEIW7/ Signed-off-by: Andreas Rheinhardt --- libavcodec/tests/avcodec.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/libavcodec/tests/avcodec.c b/libavcodec/tests/avcodec.c index 64940cfdb1..3eb4372019 100644 --- a/libavcodec/tests/avcodec.c +++ b/libavcodec/tests/avcodec.c @@ -41,6 +41,7 @@ int main(void){ while (codec = av_codec_iterate(&iter)) { const AVCodecDescriptor *desc; + int is_decoder, is_encoder; if (!codec->name) { AV_LOG("Codec for format %s has no name\n", @@ -63,13 +64,33 @@ int main(void){ ERR("Non-video codec %s has audio-only fields set\n"); } - if (av_codec_is_encoder(codec)) { + is_decoder = av_codec_is_decoder(codec); + is_encoder = av_codec_is_encoder(codec); + if (!!is_decoder + !!is_encoder != 1) { + ERR("Codec %s is decoder and encoder or neither.\n"); + continue; + } + if (is_encoder) { + if (codec->type == AVMEDIA_TYPE_SUBTITLE ^ !!codec->encode_sub) + ERR("Encoder %s is both subtitle encoder and not subtitle encoder."); + if (!!codec->encode_sub + !!codec->encode2 + !!codec->receive_packet != 1) + ERR("Encoder %s does not implement exactly one encode API.\n"); + if (codec->update_thread_context || codec->update_thread_context_for_user || codec->bsfs) + ERR("Encoder %s has decoder-only thread functions or bsf.\n"); if (codec->type == AVMEDIA_TYPE_AUDIO) { if (!codec->sample_fmts) { av_log(NULL, AV_LOG_FATAL, "Encoder %s is missing the sample_fmts field\n", codec->name); ret = 1; } } + } else { + if (codec->type == AVMEDIA_TYPE_SUBTITLE && !codec->decode) + ERR("Subtitle decoder %s does not implement decode callback\n"); + if (codec->type == AVMEDIA_TYPE_SUBTITLE && codec->bsfs) + ERR("Automatic bitstream filtering unsupported for subtitles; " + "yet decoder %s has it set\n"); + if (!!codec->decode + !!codec->receive_frame != 1) + ERR("Decoder %s does not implement exactly one decode API.\n"); } if (!(desc = avcodec_descriptor_get(codec->id))) { ERR("Codec %s lacks a corresponding descriptor\n");