From patchwork Tue Apr 13 17:31:44 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 26900 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 72E0E449DF2 for ; Tue, 13 Apr 2021 20:32:14 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5C1FD689FD9; Tue, 13 Apr 2021 20:32:14 +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-oln040092070055.outbound.protection.outlook.com [40.92.70.55]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 98A096806DC for ; Tue, 13 Apr 2021 20:32:07 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=jM6G49K9zMYeWDzFBhi/JCCp8Z+vPZiyq03CPfNvrXOoIj+CNrELFlHkvViMY1GMsWHkEGBC2849tzIUu08aIMirmeMxYx2o4mdBqhqLqOw97FCBwlBVFILoU5KvBvEn6e4c38gPB6b+s/YQZKCmxOjMW0r/EpSpqT/O4xVIrOFEUYSnE9AxRfUcDDkxOaEC7Z2TO3qaa1yRs1Rcn1ckPm4Qy9wjFrI272TGbDFRFEa/cCtKqT/R1BJcrNK1/L6ITFdm9NKqchquilg8Xqwr/7Ej940bFBHeRNO8NWByveEO+uiZX8s1RK8frxVckMiHABbtrkYewOw2O5dNlvGDfw== 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-SenderADCheck; bh=nLmojYnvJnIPsMpJl4akKOYoos95Ztq6WaPtbUtQMmE=; b=HLBV3smYEI1q70h3nFnoL0GA2I4bfHznuCwEoIW3CtqubtqT/BOPu7AbY1yy8oVzjMscJVKtNxnBfbSZiy49IrsqmWQshERArTTK9JSLmHfdmubNY4ypNkKwq4D24KVCYiX//QTq0Qg7909t/z5dxf0LDklZdTzeX+Wuax/RqGfI5TNyiMDuQH3YsmkVSJWV9MTSz0hvXYp55vwxku567l3PPVZqTlHi2blcjmbO4efg3rwG/DBk8Zqq+k5TrejEZ0+J7VCgjvCi6BTzL3EZKeVVx0QgQOPuuQF13V29le+6qt33o3cnEz/2mHJ4MBaoux095mQWaiVB8icO4WPZ4w== 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=nLmojYnvJnIPsMpJl4akKOYoos95Ztq6WaPtbUtQMmE=; b=Hh8To8TpToFy3tbV3BTg5OYEM85NwsmIsUh7R+kVjY+uMyKl7QU2tFDGJ76Izg77cu1e9kjHD6ldPQaX92HGWL7A6Er/PO4M6GtazdyTSt6qxZsW5gDjQWbIZbZ1bSF1AtfAgg0jS2WgTCCV7B9YXYeMsXpYhGJCpbK7NUh4os7tRQzH0FeBKTfhSNyeeGT5HUj6IClVAaJcYYz8dox9/Fo6X0EI4LyW8LzfonsTNJXxHimrtOJvhUJexj3b8tjrdtYlGXhTX/LNLQC5hrxj1l5m9facI+r1grdKyjjeLipEDwp86SPKpyJc071u5RZgp28vH3fmXPkfHVkrUWLX2g== Received: from VE1EUR03FT014.eop-EUR03.prod.protection.outlook.com (2a01:111:e400:7e09::43) by VE1EUR03HT175.eop-EUR03.prod.protection.outlook.com (2a01:111:e400:7e09::227) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.17; Tue, 13 Apr 2021 17:32:06 +0000 Received: from HE1PR0301MB2154.eurprd03.prod.outlook.com (2a01:111:e400:7e09::4c) by VE1EUR03FT014.mail.protection.outlook.com (2a01:111:e400:7e09::294) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.17 via Frontend Transport; Tue, 13 Apr 2021 17:32:06 +0000 X-IncomingTopHeaderMarker: OriginalChecksum:E4F61B5781B40C484B2DBE64FF357C61800B9283FD48A4F59C798E009826C6FD; UpperCasedChecksum:41C735AD9B690082739D6DA973B97632C32BFDEB63D25845C3195EB9EDB45AB1; SizeAsReceived:7391; Count:46 Received: from HE1PR0301MB2154.eurprd03.prod.outlook.com ([fe80::8128:5de5:4e94:9a21]) by HE1PR0301MB2154.eurprd03.prod.outlook.com ([fe80::8128:5de5:4e94:9a21%3]) with mapi id 15.20.4020.022; Tue, 13 Apr 2021 17:31:53 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 13 Apr 2021 19:31:44 +0200 Message-ID: X-Mailer: git-send-email 2.27.0 X-TMN: [9LV0m/PCXhuE7KeU56eX31T0HbeiYnOe] X-ClientProxiedBy: AM0PR02CA0131.eurprd02.prod.outlook.com (2603:10a6:20b:28c::28) To HE1PR0301MB2154.eurprd03.prod.outlook.com (2603:10a6:3:2a::22) X-Microsoft-Original-Message-ID: <20210413173144.80849-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 Received: from sblaptop.fritz.box (188.192.137.96) by AM0PR02CA0131.eurprd02.prod.outlook.com (2603:10a6:20b:28c::28) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4020.16 via Frontend Transport; Tue, 13 Apr 2021 17:31:52 +0000 X-MS-PublicTrafficType: Email X-IncomingHeaderCount: 46 X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-Correlation-Id: 9cc18637-ab09-4eba-62be-08d8fea20730 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiRJbA1TQBYJf5mwvmp89f22YSYuWJSbX0dvWvoGJvD6D915Jyd04EUIaCfkD2Wtj3nreluEadK3KMSzYVxaWo/KmKwdPXFF0qgbd/RscPzEvNgX5+Fb6bIFoKh7AlAKRbv7JWmE9mmdy9FnxV4zgtZvdyhIO18pYrRoyEwnIqdrpahIRN6OPn1ypjs2gpcgxsEKzRuM1gpp7WlTqvvXJLYShgn3N8LzGwkX1+vvHue9mFKGitqTMYBfFsTD7ZzeFqJWDPb46oOHB41xj0mz57eJINzIZug/bXWgfxBFyulDmUUjBd6VuJ8bzCNF4zubEk/PUplJm8H1cYifoFhs9n03qD0j+UDxpipR6cvVylh0CZVRsyIBlwIVanGNUXalmHRS6t2GzVgB3MszEuDNDerb03LLrLfao2Kepdk8P32szIMImgdo+cTXWhfdbIFCrAfJkgGVBvRB6+baThXOfNUoS0D41lE/21Dh88BHfKBIPQsAqDin5Aso8Ri7Lf1OpY9b5r/I0WxPjIP6NST1WKgDlUIrtoFJy/7Xgw42lmxPNYBI3GbO+0SABMNbq2+2wzgbAlw8s7Y1j71EJb1WnvrUqQa4dtHDAk2P1hkagdJy38XXVQipMdswJ7elR9UXGl9WhA89XEFFZRvR+/kVHYCjGJUgc87mejNSeQJA0MbuAQoSsmC5l3iIRea6wLf2G9C8/knbSfsgc44yyRKdLGy55KEVpa40+mdChvNxHFsNnKR22IedJofhOeYK+htA1vI= X-MS-TrafficTypeDiagnostic: VE1EUR03HT175: X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: u09xWZtZEGcUsjwr1yys6sMbz47cS51lDeYUk8E1tylVsoSAgyazKnOzKVWVn77g50/3/XjaNDdiguFnoyaZYNidu5YszhdNWey3umn9vszOMxhQ/ZNK8cA+SHF8ZAVrRwo1F8K6RM5+UpvHbZyyK3LOADFtOUc1lUQVXxDNrdLYpTa2YUNiEoRpPHVgP/3RVYjxfCXWkt+ejsWBuoKwCibGF3t0PDdCNqg9pNqNaI9d+0ACbsz2e4TU0dB/GdjPsV223Wg+CdPTTdR5b1vvdZa9y4WYMQT4i/jlKkrJu4jifvS6FS8nvkXEuaO6Pt6bwRyO6+HwiZNqtfIldUKoPFohz0z+Nkv6sveABQFyURVFIyBS4TzK81CFUI7gxFbOhF4ddsra2kfF3U11MIppkA== X-MS-Exchange-AntiSpam-MessageData: pYF2RwcgIyZTw2Xia8JER9Px2mEziZRIzpOB+S9u04iaKi95U7MpHUzcjQww5VLPUKT3LwWhhms4UEIjBUJ+wLMchrDIo54K3ImzvAotOeUxEnU7r09I4dWsaS5jgzIIZt8bPUeHiwx0Ro4f0YOa7g== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9cc18637-ab09-4eba-62be-08d8fea20730 X-MS-Exchange-CrossTenant-OriginalArrivalTime: 13 Apr 2021 17:31:53.5961 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-AuthSource: VE1EUR03FT014.eop-EUR03.prod.protection.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Anonymous X-MS-Exchange-CrossTenant-FromEntityHeader: Internet X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: VE1EUR03HT175 Subject: [FFmpeg-devel] [PATCH] fftools/ffmpeg_filter: Fix check for mjpeg encoder X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" The MJPEG encoder supports some pixel format/color range combinations only when strictness is set to unofficial or less. Before commit 059fc2d9da5364627613fb3e6424079e14dbdfd3 said encoder's pix_fmts array only included the pixel formats supported with default strictness. When strictness was <= unofficial, fftools/ffmpeg_filter.c used an extended list of pixel formats instead of the encoder's including the pixel formats only supported when strictness <= unofficial. Said commit turned the logic around: The encoder's pix_fmts array now included all pixel formats and fftools/ffmpeg_filter.c instead used a small list of all pixel formats supported when strictness is > unofficial and the encoder's pixel formats instead. In particular, the codec's pix_fmt is not used when strictness is normal. This works for the mjpeg encoder; yet it did not work for other (hardware-based) mjpeg encoders, because the check for whether one is using the MJPEG encoder is wrong: It just checks the codec id. So if one used strict unofficial with a hardware-accelerated MJPEG encoder before commit 059fc2d9da53, the unofficial (non-hardware) pixel formats of the MJPEG encoder would be used; since said commit the codec's pixel formats are overridden at ordinary strictness by the ordinary MJPEG pixel formats. This leads to format conversion errors lateron which were reported in #9186. The solution to this is to check AVCodec.name instead of its id. Signed-off-by: Andreas Rheinhardt --- fftools/ffmpeg_filter.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/fftools/ffmpeg_filter.c b/fftools/ffmpeg_filter.c index 400f5a4188..e7c05eb3f9 100644 --- a/fftools/ffmpeg_filter.c +++ b/fftools/ffmpeg_filter.c @@ -41,13 +41,13 @@ // FIXME: YUV420P etc. are actually supported with full color range, // yet the latter information isn't available here. -static const enum AVPixelFormat *get_compliance_normal_pix_fmts(enum AVCodecID codec_id, const enum AVPixelFormat default_formats[]) +static const enum AVPixelFormat *get_compliance_normal_pix_fmts(const AVCodec *codec, const enum AVPixelFormat default_formats[]) { static const enum AVPixelFormat mjpeg_formats[] = { AV_PIX_FMT_YUVJ420P, AV_PIX_FMT_YUVJ422P, AV_PIX_FMT_YUVJ444P, AV_PIX_FMT_NONE }; - if (codec_id == AV_CODEC_ID_MJPEG) { + if (!strcmp(codec->name, "mjpeg")) { return mjpeg_formats; } else { return default_formats; @@ -65,7 +65,7 @@ static enum AVPixelFormat choose_pixel_fmt(AVStream *st, AVCodecContext *enc_ctx enum AVPixelFormat best= AV_PIX_FMT_NONE; if (enc_ctx->strict_std_compliance > FF_COMPLIANCE_UNOFFICIAL) { - p = get_compliance_normal_pix_fmts(enc_ctx->codec_id, p); + p = get_compliance_normal_pix_fmts(codec, p); } for (; *p != AV_PIX_FMT_NONE; p++) { best = av_find_best_pix_fmt_of_2(best, *p, target, has_alpha, NULL); @@ -113,7 +113,7 @@ static char *choose_pix_fmts(OutputFilter *ofilter) p = ost->enc->pix_fmts; if (ost->enc_ctx->strict_std_compliance > FF_COMPLIANCE_UNOFFICIAL) { - p = get_compliance_normal_pix_fmts(ost->enc_ctx->codec_id, p); + p = get_compliance_normal_pix_fmts(ost->enc, p); } for (; *p != AV_PIX_FMT_NONE; p++) {