From patchwork Fri Sep 24 16:37:16 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 30554 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a6b:6506:0:0:0:0:0 with SMTP id z6csp1699180iob; Fri, 24 Sep 2021 09:38:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJy5fpNFooRtszFSYS8NOljclfHkh1Y4ID/sIsBVMJiUT4Xuzqp0Bup1R1NIYLo91AyW735s X-Received: by 2002:a17:906:660f:: with SMTP id b15mr12420872ejp.491.1632501517418; Fri, 24 Sep 2021 09:38:37 -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 bl3si514212ejb.204.2021.09.24.09.38.37; Fri, 24 Sep 2021 09:38:37 -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=egAMZdiM; 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 2DC8568A6F9; Fri, 24 Sep 2021 19:38:02 +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 41BFD68A75A for ; Fri, 24 Sep 2021 19:37:56 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dWQ8f36MVSXP1x2H3m51+tXrzGvnuqdojnlOn591iwDyu1G9hwVfZ0j9W4yBOFTmts1vdpxH/tBtjMDUv8haKlqosfSvmZ7OpVsGC8BlIcEiHXxu7DEVE9ALoiUAKZN5WBG8XZfP3tlLELCQVUVmbp+TiQVM/Ni6zrSiVHxJ4pM4I8SIjnrG5uj2o8iWJgv0nOfAjfiX4mraKu4p/I6VvSDHY20X+PRpUY6yk3ObQ9RXXNM6w0LqMn/g07ihW0f7DNRSQcaEHSdx5gsr+qoyNA5P8eX0hzL1dzWB2hcWhrDY5Q31CEIUo6PmN9zwoVl0hex//KeLj1Jc/iFm7bwdNQ== 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=PiHSxRM650yIm545P3zakXPg31CKGXu7TNLMCBpPkYk=; b=BTypXH+Hjd3L/ieCSpAGyh6uh6Mrfo16awo4PnjdZATfvJ7cWfYXzdDGZE6Rh00M7ruVpnSjKJPgaLBj+ruPu7hGY4sIxPwEGPKaO576+QMMUynB6WpbpQe2cX2bWvCUWH6TdguiRcmIOP7DeDXi/YCK63WlHg97aKt5WXzg/2EWodOXSed21sHMRHB1Gdrrq94ej4w+tmdzoZia1ZJAZglplVPffeyPOZ/9McHdHzCSCPlcT1JalpXFC7y8SfX6pNLWRqyPmuJcs3J35KNbhm6v9uzEafKWvQ4+SHO+Ev6rVWWR2yy/zqtCYswrSX6qfmCJ96nfCOChbwdGJsTdhg== 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=PiHSxRM650yIm545P3zakXPg31CKGXu7TNLMCBpPkYk=; b=egAMZdiMknxBqgwr6indFS9JIPlspltYWYUUDw7XFpFM4JDC6bd09lnpu2J38NPu8X1WZZ/uYX7Ax7E5Ac45LOnjZbfo4iIPy1dnDvaJhWXE/xMcU4ZudUkjb6J+Zj9PxD9982aLEkgERR6OcHlu++X4MEQsuBHQgGleR7uHJwdAUigwwBmjXUha/La8rTKrElr/mBsWJIZQrg+A0Knx3Exp8H6eOqMUElYMvgQWzOgsO2SsNxXs2+bHlZ+CCqzNyaohY3I7Ek8ijKQbTeUQJHqPNQSyBvHbmdKQM3nMyx7B8cJaGijrhXM2qkTMb+B4oVr7QVUaHz0ns4CNJn1Mng== 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:55 +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:55 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 24 Sep 2021 18:37:16 +0200 Message-ID: X-Mailer: git-send-email 2.30.2 In-Reply-To: References: X-TMN: [iSsHV2ROg+b5lmkv73RKFCQYbf+XtuEy] 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-7-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:55 +0000 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: f8eb8e1d-4226-4739-3f43-08d97f79a91c X-MS-Exchange-SLBlob-MailProps: gjx25WM8ZNVIK/iSThOesseQkgEe+5WABH5HaqWURfS7U42LeQvk+QTMerCnuVLifXCvGDj6PGattUK8IQQb+TFhJIBlUX3/oqhcb8C0jW/+Xjsv1idvc0EWSJjOjbIX06YbKmmve8wdQsK1fgLC9kKMTgEH13iIcXZNjGFh9uISXdsLgkq7Kb9Hj5Xqt2Vgp7XA9lD2XCl2dkY+DUilVMmh9s42nOIGuZfI5hKmE3avhSt8aMsFmpPTuV5qwIop5j0FF0dyNBPvcwhp7LNL/oPsYkd3HO3JaA/uNdVGyDT9M/IMLzofEYacbTSnhlqbSyauRaZuexXawFv937dnfYRcivIoUqHu7Cp33OnlM4iCBR5GcapEddV5LV3Gp37/0b+oXTQTEU09xOiLY88/EYmOMvmflhlXoZPD3Nkyb4+CjiwT/nPskEaXjPca5U661XZwZwbTJ2xMIBWuDAS2h/2PtzeNkg3Zk5CXs1FcwJtr1JW5ZLqTTZ0wdqKS3JamZiFb3mgk4zd9iH/Sj1fjkasVSvA4eVO/EEt5hc5PqGaudBXfgUvwmxtzr43Rxa2JIcbBuwAZxXaHp/5/IkKScsXdg/s+WU2Bo4koQIRh8ONo8zzpW0YSZbFLKbAen9XLJsexYC6YkZIMsJpIVtNKy3VlTikJRnf+2c6PTqcFnZfOPFdHXyZoPzIsv7aKlM1Baygm1RLXKn/dGBUkupit6Cyrw3o8BuBgTYAQHr+Al1o= X-MS-TrafficTypeDiagnostic: PA4PR03MB6847: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: OxUOAri7osBSpkg6QILnDlQ8MQrIDRo8pdlB/vCBxm1Mdfef09hmUBBdD70DjA6FFuFuWiC+E7k8PRV5fkTEDHFBOPyG5FXdYIbbD72NyMyr/CijPDi05l+7J98x0XXtmg/UzOCCP1DJdP3GYvr0XFW8GrSZFUDj9g36corWlWJ//5xkHO0kLYkB908H6D/2aVBvHP4HD3K6i4xGPVW8NzemAlMf2UjaKcW2t6pXMTDl/zE5K3AyHnVopME05hSnUUHS6XN9STxtIztBom0X7CFTiZZy2J4iJNbEsSz4nBsFhvHoYMfE6vF9pK2uLKmnZybCzI7xqQUGT+NoJLjnMDyUhd6DiwH1UXZ2M1L3/sKW6x1NNIT8m2cdz+IVFt6PHBamlAv3KVMWvFHSRAm8y3kawxtLYn7PQer466ihCDpa9w6jSftWpLrephxJwWbq X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 6tGCYPGtwB5RCC74KXhfFfgeEK+4YKVqQqA7ndSkJTuYkdvRR9JqqcZ6ldwwl5aGHZiV8Ld8yPwY6bVTXlt2OGDX+FMsg0n12wg5eg3v2FWduW9H4gIghuS2+o2kLtwgyAPpHM6OC/DwXzlG4oSuMg== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: f8eb8e1d-4226-4739-3f43-08d97f79a91c 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:55.6498 (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 08/11] avcodec/tests/avcodec: Check codec caps for consistency 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: ie7z91vwAsrf Signed-off-by: Andreas Rheinhardt --- libavcodec/tests/avcodec.c | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/libavcodec/tests/avcodec.c b/libavcodec/tests/avcodec.c index 5512ae99f7..e26315c368 100644 --- a/libavcodec/tests/avcodec.c +++ b/libavcodec/tests/avcodec.c @@ -19,6 +19,7 @@ #include "libavutil/opt.h" #include "libavcodec/codec.h" #include "libavcodec/codec_desc.h" +#include "libavcodec/internal.h" static const char *get_type_string(enum AVMediaType type) { @@ -78,11 +79,26 @@ int main(void){ if (codec->channel_layouts || codec->sample_fmts || codec->supported_samplerates) ERR("Non-audio codec %s has audio-only fields set\n"); + if (codec->capabilities & (AV_CODEC_CAP_SMALL_LAST_FRAME | + AV_CODEC_CAP_CHANNEL_CONF | + AV_CODEC_CAP_VARIABLE_FRAME_SIZE)) + ERR("Non-audio codec %s has audio-only capabilities set\n"); } if (codec->type != AVMEDIA_TYPE_VIDEO) { if (codec->pix_fmts || codec->supported_framerates) ERR("Non-video codec %s has audio-only fields set\n"); + if (codec->caps_internal & FF_CODEC_CAP_EXPORTS_CROPPING) + ERR("Non-video codec %s exports cropping\n"); } + if (codec->caps_internal & FF_CODEC_CAP_SLICE_THREAD_HAS_MF && + !(codec->capabilities & AV_CODEC_CAP_SLICE_THREADS)) + ERR("Codec %s wants mainfunction despite not being " + "slice-threading capable"); + if (codec->caps_internal & FF_CODEC_CAP_AUTO_THREADS && + !(codec->capabilities & (AV_CODEC_CAP_FRAME_THREADS | + AV_CODEC_CAP_SLICE_THREADS | + AV_CODEC_CAP_OTHER_THREADS))) + ERR("Codec %s has private-only threading support\n"); is_decoder = av_codec_is_decoder(codec); is_encoder = av_codec_is_encoder(codec); @@ -103,6 +119,19 @@ int main(void){ ret = 1; } } + if (codec->caps_internal & (FF_CODEC_CAP_ALLOCATE_PROGRESS | + FF_CODEC_CAP_SETS_PKT_DTS | + FF_CODEC_CAP_SKIP_FRAME_FILL_PARAM | + FF_CODEC_CAP_EXPORTS_CROPPING | + FF_CODEC_CAP_SETS_FRAME_PROPS) || + codec->capabilities & (AV_CODEC_CAP_AVOID_PROBING | + AV_CODEC_CAP_CHANNEL_CONF | + AV_CODEC_CAP_DRAW_HORIZ_BAND | + AV_CODEC_CAP_SUBFRAMES)) + ERR("Encoder %s has decoder-only capabilities set\n"); + if (codec->capabilities & AV_CODEC_CAP_FRAME_THREADS && + codec->capabilities & AV_CODEC_CAP_ENCODER_FLUSH) + ERR("Frame-threaded encoder %s claims to support flushing\n"); } else { if (codec->type == AVMEDIA_TYPE_SUBTITLE && !codec->decode) ERR("Subtitle decoder %s does not implement decode callback\n"); @@ -111,6 +140,15 @@ int main(void){ "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 (codec->capabilities & (AV_CODEC_CAP_SMALL_LAST_FRAME | + AV_CODEC_CAP_VARIABLE_FRAME_SIZE | + AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE | + AV_CODEC_CAP_ENCODER_FLUSH)) + ERR("Decoder %s has encoder-only capabilities\n"); + if (codec->caps_internal & FF_CODEC_CAP_ALLOCATE_PROGRESS && + !(codec->capabilities & AV_CODEC_CAP_FRAME_THREADS)) + ERR("Decoder %s wants allocated progress without supporting" + "frame threads\n"); } if (priv_data_size_wrong(codec)) ERR_EXT("Private context of codec %s is impossibly-sized (size %d).",