From patchwork Sun Mar 12 07:58:19 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Wang Chuan X-Patchwork-Id: 40648 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:d046:b0:cd:afd7:272c with SMTP id hv6csp849160pzb; Sat, 11 Mar 2023 23:58:44 -0800 (PST) X-Google-Smtp-Source: AK7set8O0azyE5ygie3WIWgWU6mZLOYMjLfYC/TR4Q4/Kvk+C4CVKW1o2khDWxa+2OtpnpjsvM2Q X-Received: by 2002:a17:906:57c5:b0:927:34f1:f284 with SMTP id u5-20020a17090657c500b0092734f1f284mr622832ejr.16.1678607924504; Sat, 11 Mar 2023 23:58:44 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id h3-20020aa7c603000000b004ad0c88b54dsi4575868edq.527.2023.03.11.23.58.43; Sat, 11 Mar 2023 23:58:44 -0800 (PST) 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="Yuvt//4P"; 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 9D17D688120; Sun, 12 Mar 2023 09:58:39 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from AUS01-ME3-obe.outbound.protection.outlook.com (mail-me3aus01olkn2142.outbound.protection.outlook.com [40.92.63.142]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C569D688120 for ; Sun, 12 Mar 2023 09:58:32 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=S9GDjirIh3VfxP0709l+SiKUQwxsmz8P9qeNgUtXJsTF+NXvug5aVMESjz1gjV+hs3/YjHmPhk1jKiw/eEmq43DxQSdMnNbIX8GvIYDAp3Rez0ZDU/C6ILP22/jDPYb9o0AuoK9ZN28iCVAo9jSnnbCIUYbEMy8vA0U8DlGY6QWIcOWUEP947Qs+WxdyMl/Nbd3xLlZHpJC+yhp8BrOvuImuEBk7p/qLaoiBuELb0UIxuXMXjy8Iu9FEM1V05HTelN/JyZwRz75jALLWr9C5JTLM3mi4c2qDgb5oA/mdGDd823HiOJHRwKbiRVMhWrPimy+ClmPPne3zvoA58aRvLg== 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=gYzH0KWoL8ho1dAMsSp0UoYJMhExVbrzS3ZohGN3bDQ=; b=Dmewqwo9jiR/iTb8qLgNmejQ/cQWKFtGy6GrDbZX5EHNx9nU5ncfeMuMyYlhlho+bGU+qhebLYcu//Dx+M1zYrNIEX75E+coWPj2fP+8OiB/xI/KCuPsyqWeuxivKIPoX6DcYlKK66hjfqc1NCOsM6/zao9yh2bR4q9qDqgtzl5es89HermmqKI8tCW+05Sdc1cwM53OhqJ4pyGYbssz0m6Jjc7kbho8A2Cs4rxNtC6JSil3o5TG2iGJx6J45OIZ0wyVIwkLafW04Cjcq7Zxa7XoiK0GZud05VbcDwI2C/681h3zCdUwS3cioMoppvESXMJV/X2hB3V8ITSHmAg2iA== 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=gYzH0KWoL8ho1dAMsSp0UoYJMhExVbrzS3ZohGN3bDQ=; b=Yuvt//4PqhgZMbY2ZKE2PpcKPtcjae+hhZuXNAe+DEt1qECGgzyZtH+XJJnT4SuXmncgK3vt1us/w1bc/lzeuujsXc8gThLsRAo5hOdtvNxEy4Rl2KFcVy0IBkzD0/E25slshkN50TtnnHnR6SeGOfaRA4seAqrYacWNI2b2TviDHJZGX3aVjx4gyeXDiIMU0UDn9u21zBoKTVRQDLVz/KGeMagHetyLd6ug9tvTOvCWh+VyNuQZXJY9g0JLH89Q70/GDa+/4ajGkqWuFcP+VM4mYxPnEs5Es9kHPbQhoeywQ52NV65XX/fIbgBwFGjsz9X/DoBVz4mcJnZQTqGGMg== Received: from ME3PR01MB5624.ausprd01.prod.outlook.com (2603:10c6:220:cd::12) by SYZPR01MB7647.ausprd01.prod.outlook.com (2603:10c6:10:16d::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6178.24; Sun, 12 Mar 2023 07:58:28 +0000 Received: from ME3PR01MB5624.ausprd01.prod.outlook.com ([fe80::da2b:3b3a:8ca1:b965]) by ME3PR01MB5624.ausprd01.prod.outlook.com ([fe80::da2b:3b3a:8ca1:b965%5]) with mapi id 15.20.6178.024; Sun, 12 Mar 2023 07:58:28 +0000 Message-ID: Date: Sun, 12 Mar 2023 15:58:19 +0800 User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:102.0) Gecko/20100101 Thunderbird/102.8.0 From: Wang Chuan To: ffmpeg-devel@ffmpeg.org Content-Language: en-US X-TMN: [/FGBTWumFHBeBIQe0iYkZW/QacB8/H6l] X-ClientProxiedBy: TYAPR01CA0051.jpnprd01.prod.outlook.com (2603:1096:404:2b::15) To ME3PR01MB5624.ausprd01.prod.outlook.com (2603:10c6:220:cd::12) X-Microsoft-Original-Message-ID: <715c00c3-6f8a-4732-c358-7e5e67b79e14@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: ME3PR01MB5624:EE_|SYZPR01MB7647:EE_ X-MS-Office365-Filtering-Correlation-Id: 87918fa7-58e2-4447-fe13-08db22cf8f8e X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: majY9fbyAa2TN+vkQjBug8aTPKDKFO+o3P+eXna8cxJZXvgH6t5nyN8U56W1re/Wqht0MGYq5t6e6RhVz2pIA5AawJP+75dUW9QInakocQJzHNJOY//G9s/G5uaWgmQ9uLh/fpqhah9TZVpIg+FpZ2Z3I5up9IlerdJh4K2vH9I5Nvd1zAgABmUYVCq6c6KED623fu9J4KRK2sEv2vQKcyOznKRre6PxJpTP0sTsSx+ZAdrhDkTzxDflUfTEMrxgi48ssHRiW9S5kSZx/ar/qbqH1w372gYNCruibJi4uB+k1oAhg/JjaWcKuFt4yAirR87OiwjjVd6pnJuIJrp8LPduKN15U97+dl7ydglMO/iLiBlBRoaQN97c8OOWZBp47Bqengzo9wv8jGBGvicK0dAZD2ZdZmqdvhZP6rVpcgyXBGmzAnbw7NgIoBUzmS2WX+1HXB7wW82wpJSVq6jdG3BjxFLyO4UGbvcWqzSlGlbis7Qp6VEP7+qx0UNbEsC87xuIxiXm1dZwhfx9rPAi1FzylmnZy1JfZ4OMmX5C5o1y3/nnUZaVZG6CvhaVRQW+o30YSJyNuRT53QmgQOCbhc6wzsk9a1cOKGgdvvadmzA= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?utf-8?q?MnOH2lGH0THsED6MFBeLNGxhKe3W?= =?utf-8?q?x2ECXirCeUINBXP8vaDm1RHxtDt0ojLx/pA90RN857eB30tRK5mw/KjHrhr+6KUn/?= =?utf-8?q?RW+/EJ7pQhMNWPvRbPyt9AL8HuZtwF7mVb+FdQC+rMAWA3z2XtlMqvMQaXl5nWN43?= =?utf-8?q?oehyePFonCBFMEYK6lXKuSfoLPLpp/BRFBQnj5361zaSFAWUQV2kbNxFbgbl6LedY?= =?utf-8?q?L7V52INrbpbrog0QrNJmOLimA2hlrGXnNMni8eookR1IW8CXHt1Z8pBUqc65PfUZY?= =?utf-8?q?Z3veMlCHPaJ3IMFaOMJbXyUEEr1xUC4FBiShnhXj/our114ig8S+4fR1WVT2dTOeg?= =?utf-8?q?l2nCboLOx2ZrNa7SeypwKuloCx/O2yMXgTL08Grtu4p2E9YbE1dp6qSC5oUwUwGP0?= =?utf-8?q?2eBz1TY9pGnPKS8qzVQBEIqlSXEXkH3fmLubBMTYmilt276k8erRstK+JcamljKRT?= =?utf-8?q?5r9XnFgmA3sq3fm628w6ooxKVQgWRhbknDl54OlWjL1tgkESGvLypVqk5QlRTvakx?= =?utf-8?q?foR0e1GCqn+wCfWITJ311Bhcsw+ihHyV4Bn6ZAVkYkNkvZRCvSarzf533GpUXxnlA?= =?utf-8?q?umF3Gjy3umZvCbpCqvLDkqdNCZL4oVPVZvksLec2+E5BTgKfTu4F5RIOddFdY+sdc?= =?utf-8?q?IYzkxWIiJeN6/Wws74bJP6KBe3s0XSloOnkDOcD+sl3oCLmcuhK1NIP3RdaU+5c+Y?= =?utf-8?q?SXzAaoA4AXFwrNULq295XcGVNVbFI4WUFWN3rZ7lPCP9GFk2S8ibvdOOVNrMFzlp7?= =?utf-8?q?rMFf66O4clF6OC7Qet47UrTHUFo2MFCM7mRBDjDE/wkYkzzaGT9lnuVTMhqMpp9y4?= =?utf-8?q?9bFZdXootPYzolmrop6pg7uBn8HY2DFnlQKpQK473cZq8WS3p+aKP0eJyzEx4gj36?= =?utf-8?q?BBsk9BImnvfI5n7472s7ww8KuiVW0U8G55T8GeEef9IQ1ji0yJIxuZXxgN9fQXpma?= =?utf-8?q?tm76rEy6ijl2KS+ecPaSIGuL7OijB1FTYuUhUgU274bjatutjRPOHqRuyfg1QMHt2?= =?utf-8?q?C9Akxojs5d2/QBIJvxKtSJr41gRipBWx9feZb+2lwdUmsezSEyxlfDVodVkjGnCT5?= =?utf-8?q?IRWNUDbQ/mZ9GnrGnJ+EV8Qx1Rdg4DK1KTlzwTcKnI91afDKPqVaKaDmy61dHEqb+?= =?utf-8?q?nHepWA9T9PIdltAtKOFMZRku/hN4HR/ndrCUt2Fn+JE2EdtzJCqxdebaq+wiIknR7?= =?utf-8?q?h25tbjOg0LFvRhYPl7wQQ0JQXQ1NLAq4YQ+cMxQ=3D=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 87918fa7-58e2-4447-fe13-08db22cf8f8e X-MS-Exchange-CrossTenant-AuthSource: ME3PR01MB5624.ausprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Mar 2023 07:58:27.9061 (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: SYZPR01MB7647 Subject: [FFmpeg-devel] [PATCH] Correct space color when using libopenjpeg 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: 0R9nk9u/EzO+ When decoding jp2 with palette, [color space] is determined when calling [opj_decode]. Because of this, [pix_fmt] should be set after decoding. Otherwise, [pix_fmt] will be set to AV_PIX_FMT_GRAY8 and output an wrong image. Signed-off-by: Wang Chuan --- libavcodec/libopenjpegdec.c | 35 ++++++++++++++++++----------------- 1 file changed, 18 insertions(+), 17 deletions(-) avctx->bits_per_raw_sample = image->comps[i].prec; @@ -418,23 +436,6 @@ static int libopenjpeg_decode_frame(AVCodecContext *avctx, AVFrame *picture, if ((ret = ff_thread_get_buffer(avctx, picture, 0)) < 0) goto done; - ret = !opj_decode(dec, stream, image); - - if (ret) { - av_log(avctx, AV_LOG_ERROR, "Error decoding codestream.\n"); - ret = AVERROR_EXTERNAL; - goto done; - } - - for (i = 0; i < image->numcomps; i++) { - if (!image->comps[i].data) { - av_log(avctx, AV_LOG_ERROR, - "Image component %d contains no data.\n", i); - ret = AVERROR_INVALIDDATA; - goto done; - } - } - desc = av_pix_fmt_desc_get(avctx->pix_fmt); pixel_size = desc->comp[0].step; ispacked = libopenjpeg_ispacked(avctx->pix_fmt); diff --git a/libavcodec/libopenjpegdec.c b/libavcodec/libopenjpegdec.c index 206db07ec7..1a8d599840 100644 --- a/libavcodec/libopenjpegdec.c +++ b/libavcodec/libopenjpegdec.c @@ -399,6 +399,23 @@ static int libopenjpeg_decode_frame(AVCodecContext *avctx, AVFrame *picture, if (ret < 0) goto done; + ret = !opj_decode(dec, stream, image); + + if (ret) { + av_log(avctx, AV_LOG_ERROR, "Error decoding codestream.\n"); + ret = AVERROR_EXTERNAL; + goto done; + } + + for (i = 0; i < image->numcomps; i++) { + if (!image->comps[i].data) { + av_log(avctx, AV_LOG_ERROR, + "Image component %d contains no data.\n", i); + ret = AVERROR_INVALIDDATA; + goto done; + } + } + if (avctx->pix_fmt != AV_PIX_FMT_NONE) if (!libopenjpeg_matches_pix_fmt(image, avctx->pix_fmt)) avctx->pix_fmt = AV_PIX_FMT_NONE; @@ -411,6 +428,7 @@ static int libopenjpeg_decode_frame(AVCodecContext *avctx, AVFrame *picture, ret = AVERROR_UNKNOWN; goto done; } + for (i = 0; i < image->numcomps; i++) if (image->comps[i].prec > avctx->bits_per_raw_sample)