From patchwork Thu Mar 30 18:00:56 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 40923 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4645:b0:e3:3194:9d20 with SMTP id eb5csp119723pzb; Thu, 30 Mar 2023 11:01:20 -0700 (PDT) X-Google-Smtp-Source: AKy350YWJfj4q3/EVfkgEYFLav+lALwfaNTuvbB1eYO/d3ar1HF5pIVwMObmvPKXy4hkyeP5pmur X-Received: by 2002:a17:906:9b8b:b0:947:335f:59f9 with SMTP id dd11-20020a1709069b8b00b00947335f59f9mr5406910ejc.69.1680199280523; Thu, 30 Mar 2023 11:01:20 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680199280; cv=none; d=google.com; s=arc-20160816; b=uXl7Jb4kf6AOVy/Qlm3nDTWSOXBYPEIGcRLqy0/6tCLxKla3o/i2xvrJnU5V2Z8Fu8 sAJ3C4J0GmZEG8p4BaxbYOARqBwJLKzZRbEY+OEde4K74Ecq0ZbBMWJloOxV4D7eBPNO CS/qah15X+44akshy+AScEysZNE0WS3OLKdstPYgpkGbnvRl+2V+HYp5VtuiXAAlbRSD 3o/jyBfaxGv9G4WVQvdzWNS1NQpQsU8UDFL4u+YZqjvqPJVn7wGSY/+EoCuXKUlZENTZ xpBNgPIbnoFMmIpGITDQeppQd3bHNOkfXz309lUDq8HRNi4xB4C3gXZnEU6SZyBetHGi n3pA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:message-id:date:to:from:delivered-to; bh=EkEmYKygBt323kkCoa+hOCkCh3hwpp58DVXx7YDxAaI=; b=ZClaWE/y69EHa1garCt3VqozDprm8gx+gib3WrvYcETeiqPhVWNhGLKJ0jGut58HZE CYHJJg17hgVfz6PcPZh2KFOZC0M45fT+REBZZRQhLl7JxRm2tkYtxmESqpOipgFUlcye seq54qmtdMMefXpyxAgimGQGL0SgCMHA2KXLavktgb25AgfSftF9CVONvA6TvBz14Fed iipR/tsYhM8eL8WmeTTacrJssFQr/D/LLw0J+evugQHFrRZ79wnkeWA843M6KSAgrAe2 AtCTWZ81cRS4lnueHn+CW62IBjgnTCNvZH2fghwB1vLSWwgfh4G6SODPliu0o1IlYP/p xymQ== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id r10-20020aa7cfca000000b004a18f2ffb81si284582edy.321.2023.03.30.11.01.20; Thu, 30 Mar 2023 11:01:20 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 289CA68C381; Thu, 30 Mar 2023 21:01:17 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay5-d.mail.gandi.net (relay5-d.mail.gandi.net [217.70.183.197]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 26B9C68C2A3 for ; Thu, 30 Mar 2023 21:01:11 +0300 (EEST) Received: (Authenticated sender: michael@niedermayer.cc) by mail.gandi.net (Postfix) with ESMTPSA id 9E3B71C0002 for ; Thu, 30 Mar 2023 18:01:09 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Thu, 30 Mar 2023 20:00:56 +0200 Message-Id: <20230330180106.11275-1-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 Subject: [FFmpeg-devel] [PATCH 01/11] avcodec/j2kenc: fix 5/3 DWT identifer 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: bkXoUKZ7iagU Signed-off-by: Michael Niedermayer --- libavcodec/j2kenc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/j2kenc.c b/libavcodec/j2kenc.c index 6406f90ac2c..821967f9e43 100644 --- a/libavcodec/j2kenc.c +++ b/libavcodec/j2kenc.c @@ -1810,7 +1810,7 @@ static const AVOption options[] = { { "tile_height", "Tile Height", OFFSET(tile_height), AV_OPT_TYPE_INT, { .i64 = 256 }, 1, 1<<30, VE, }, { "pred", "DWT Type", OFFSET(pred), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, VE, "pred" }, { "dwt97int", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 0 }, INT_MIN, INT_MAX, VE, "pred" }, - { "dwt53", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 0 }, INT_MIN, INT_MAX, VE, "pred" }, + { "dwt53", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = 1 }, INT_MIN, INT_MAX, VE, "pred" }, { "sop", "SOP marker", OFFSET(sop), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, VE, }, { "eph", "EPH marker", OFFSET(eph), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, VE, }, { "prog", "Progression Order", OFFSET(prog), AV_OPT_TYPE_INT, { .i64 = 0 }, JPEG2000_PGOD_LRCP, JPEG2000_PGOD_CPRL, VE, "prog" }, From patchwork Thu Mar 30 18:00:57 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 40924 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4645:b0:e3:3194:9d20 with SMTP id eb5csp119915pzb; Thu, 30 Mar 2023 11:01:32 -0700 (PDT) X-Google-Smtp-Source: AKy350Y8SB3E8IdUoiiwRj9UEaP91qk40RImCipJSpmnzxGOy0Ns9uUgTeiQ5zi+AXic1L2fKSEs X-Received: by 2002:a17:906:7c53:b0:92a:11be:1a40 with SMTP id g19-20020a1709067c5300b0092a11be1a40mr6952172ejp.11.1680199292688; Thu, 30 Mar 2023 11:01:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680199292; cv=none; d=google.com; s=arc-20160816; b=gL5frt7KXzTFkRF5dhCKVWonRb+3OK1W9v3XAw6WfxvF2NW3j8BQGmGxYByPSMQM3v eLEfqemF8XSgCx6wQxQ/zf2pB/69amBkWStl+0ifeq9iMJTCxT7yvbZxDIWE6yh7mNZX D2htjsLJO0hJeDJFu6tT2AMtXDtff6lqSDxygASfnZxCt+/2fMVXezFndFs3Hnz7ess6 3sd8NuNg/yaybNSbxCEWDBaUkjNlLkMZq16Ib1PkqcuzUWzkMNlXHzPpH2BFm+PMy5EJ PZKrwJCyqxpCH9S3eEUlUDIw4KImh4nfQr9ftf2YovPvlDu7ropsNx+83qsUhzKKej8t aC+A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:delivered-to; bh=HOc+QwKwEbb57sq0oCJCDvD15mzFN9w7hJw3JyYRHCk=; b=AI0HjDg+2Koh9TM9ynSNYOeqdvCqJgCcjVV5XDshjB7F2Ej4qhZaDxKEoO9Kcvpror EDn2yl+sMon/ytmd7F7q2aN+jciSLnxkBC0wcCmg4+1R5ujp7EvLijnP0W/RYd5NdehN +/0UDJD1X5QrbLQ/65noQxIVsee891btLMwbuTi3UMIUqrsoyyqBYRyuTlcMa52lWGfE c+vj9BJAndxQ5bhUw5d4RnszT6oqnnVBv36XYe7iEA0dseEQZGrfYk1PQuaV3IUCDrKk DM/+X1e8n3rRyW8f3bhdvZkfC/kiZX6eRJrewepZyT8bW1wjYrn/JXJYUCJwMDW16d0m xPiQ== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id l22-20020aa7c3d6000000b004acb24be0d2si306016edr.315.2023.03.30.11.01.30; Thu, 30 Mar 2023 11:01:32 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3DAD968C3A2; Thu, 30 Mar 2023 21:01:19 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay4-d.mail.gandi.net (relay4-d.mail.gandi.net [217.70.183.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 802E368C387 for ; Thu, 30 Mar 2023 21:01:12 +0300 (EEST) Received: (Authenticated sender: michael@niedermayer.cc) by mail.gandi.net (Postfix) with ESMTPSA id A64F4E0006 for ; Thu, 30 Mar 2023 18:01:11 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Thu, 30 Mar 2023 20:00:57 +0200 Message-Id: <20230330180106.11275-2-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230330180106.11275-1-michael@niedermayer.cc> References: <20230330180106.11275-1-michael@niedermayer.cc> Subject: [FFmpeg-devel] [PATCH 02/11] avcodec/j2kenc: remove misleading pred value 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: It80cqWU8wbH This field is only checked for being 0 or not and not zero means 5/3 Signed-off-by: Michael Niedermayer --- libavcodec/j2kenc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/j2kenc.c b/libavcodec/j2kenc.c index 821967f9e43..0e23a8a8399 100644 --- a/libavcodec/j2kenc.c +++ b/libavcodec/j2kenc.c @@ -1729,7 +1729,7 @@ static av_cold int j2kenc_init(AVCodecContext *avctx) if (avctx->pix_fmt == AV_PIX_FMT_PAL8 && (s->pred != FF_DWT97_INT || s->format != CODEC_JP2)) { av_log(s->avctx, AV_LOG_WARNING, "Forcing lossless jp2 for pal8\n"); - s->pred = FF_DWT97_INT; + s->pred = 1; s->format = CODEC_JP2; } From patchwork Thu Mar 30 18:00:58 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 40925 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4645:b0:e3:3194:9d20 with SMTP id eb5csp120199pzb; Thu, 30 Mar 2023 11:01:53 -0700 (PDT) X-Google-Smtp-Source: AKy350af5hFqdJj6E8sDniOM12/HHtVWePAnsMTsX9NF+YmboahlROcyEJc0+1OjJT6BC9NwHBEP X-Received: by 2002:a17:906:a416:b0:878:7c18:8fd9 with SMTP id l22-20020a170906a41600b008787c188fd9mr22676665ejz.44.1680199313688; Thu, 30 Mar 2023 11:01:53 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680199313; cv=none; d=google.com; s=arc-20160816; b=RgaT7gycH1APeIUV8B4RUXBA7VXaMOYdN6cc03jSae/7V+sAdnZlzGHyiaTMyueEcR GgvFWv5jrPL8ID2H12v2S3hAtsUeYXA+vAAdIqlc5KeZ9pLNWVqzubW0uEsq616WCTkf FYkuV8z5cGDFjI2T9XizOsAiVMU9ZtuRDoXoHvk9VOMjbWBG4oJK6swn0KjB0gHgiFgK O3JBCDR8+KH7v4LsfyV2CzRDyKYDlmoDaTwnzuQhby5T/bNsaGnRguvtmypNWzoWq975 c8kKY0g6Yb7aiYOQ3O+ydjPfsZG3xWRif7qg8UI1kr7d73rHRI+JwfjbISji1WtLrxWH qr9A== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:delivered-to; bh=M0hIIFZwZpQQG/ZL3qVpGTxnAeWtL5kAF6/tBdRj8Kg=; b=KsarGOs7Dv7+hsLVzTLgTDKuo6/9Kgx60NBkfiXBfJstUWq+Mvilc6djdn6g9JVi0A u4aZOAg3bVtPua1yPLv9cUXwgCBDeXJtKMzs7NJPhhBXMrxub9TPSAur/naYseol9UJA RiZstjKFntzFyIiXrsToqF2CGYzhKqZDLHXWoxPiX/yZCxVc2jiUzuc97MBlA5QTLwHO giW8w32QulK2utn3yeAZTwdjoDOki2NwuqM7ivhMTlx3DQpYYciVO1pJYbQEFlb+ImMK CfikKhz/8pZH7S4DU4VaGW86hdJUDIFMDA4FomFysq93PQHPyB9PyJHeOYqQw/z6CuqM uBbQ== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id q9-20020a170906770900b0092fc8edf6b1si192545ejm.439.2023.03.30.11.01.45; Thu, 30 Mar 2023 11:01:53 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 476BF68C38C; Thu, 30 Mar 2023 21:01:21 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay6-d.mail.gandi.net (relay6-d.mail.gandi.net [217.70.183.198]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B8C4768C2F8 for ; Thu, 30 Mar 2023 21:01:14 +0300 (EEST) Received: (Authenticated sender: michael@niedermayer.cc) by mail.gandi.net (Postfix) with ESMTPSA id AC2BFC0003 for ; Thu, 30 Mar 2023 18:01:13 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Thu, 30 Mar 2023 20:00:58 +0200 Message-Id: <20230330180106.11275-3-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230330180106.11275-1-michael@niedermayer.cc> References: <20230330180106.11275-1-michael@niedermayer.cc> Subject: [FFmpeg-devel] [PATCH 03/11] avcodec/j2kenc: Fix funky bpno errors on decoding 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: GRSfZAKIgOt8 Signed-off-by: Michael Niedermayer --- libavcodec/j2kenc.c | 3 +-- tests/ref/vsynth/vsynth1-jpeg2000-97 | 4 ++-- tests/ref/vsynth/vsynth2-jpeg2000 | 4 ++-- tests/ref/vsynth/vsynth2-jpeg2000-97 | 4 ++-- tests/ref/vsynth/vsynth3-jpeg2000 | 4 ++-- tests/ref/vsynth/vsynth3-jpeg2000-97 | 4 ++-- tests/ref/vsynth/vsynth_lena-jpeg2000 | 4 ++-- tests/ref/vsynth/vsynth_lena-jpeg2000-97 | 4 ++-- 8 files changed, 15 insertions(+), 16 deletions(-) diff --git a/libavcodec/j2kenc.c b/libavcodec/j2kenc.c index 0e23a8a8399..236c720dfed 100644 --- a/libavcodec/j2kenc.c +++ b/libavcodec/j2kenc.c @@ -721,11 +721,10 @@ static void encode_cblk(Jpeg2000EncoderContext *s, Jpeg2000T1Context *t1, Jpeg20 if (max == 0){ cblk->nonzerobits = 0; - bpno = 0; } else{ cblk->nonzerobits = av_log2(max) + 1 - NMSEDEC_FRACBITS; - bpno = cblk->nonzerobits - 1; } + bpno = cblk->nonzerobits - 1; cblk->data[0] = 0; ff_mqc_initenc(&t1->mqc, cblk->data + 1); diff --git a/tests/ref/vsynth/vsynth1-jpeg2000-97 b/tests/ref/vsynth/vsynth1-jpeg2000-97 index 6ab5aa4237c..c979ab5c364 100644 --- a/tests/ref/vsynth/vsynth1-jpeg2000-97 +++ b/tests/ref/vsynth/vsynth1-jpeg2000-97 @@ -1,4 +1,4 @@ -e4d03b2e3c03e56c7f831b1e662c4031 *tests/data/fate/vsynth1-jpeg2000-97.avi -3643928 tests/data/fate/vsynth1-jpeg2000-97.avi +5e6d32b7205d31245b0d1f015d08b515 *tests/data/fate/vsynth1-jpeg2000-97.avi +3643886 tests/data/fate/vsynth1-jpeg2000-97.avi a2262f1da2f49bc196b780a6b47ec4e8 *tests/data/fate/vsynth1-jpeg2000-97.out.rawvideo stddev: 4.23 PSNR: 35.59 MAXDIFF: 53 bytes: 7603200/ 7603200 diff --git a/tests/ref/vsynth/vsynth2-jpeg2000 b/tests/ref/vsynth/vsynth2-jpeg2000 index d0df0099ea0..b60307d5da6 100644 --- a/tests/ref/vsynth/vsynth2-jpeg2000 +++ b/tests/ref/vsynth/vsynth2-jpeg2000 @@ -1,4 +1,4 @@ -8c8a68ca748190c71b3ea43e5ab7f502 *tests/data/fate/vsynth2-jpeg2000.avi -1538736 tests/data/fate/vsynth2-jpeg2000.avi +bfe90391779a02319aab98b06dd18e6c *tests/data/fate/vsynth2-jpeg2000.avi +1538724 tests/data/fate/vsynth2-jpeg2000.avi 64fadc87447268cf90503cb294db7f61 *tests/data/fate/vsynth2-jpeg2000.out.rawvideo stddev: 4.91 PSNR: 34.29 MAXDIFF: 55 bytes: 7603200/ 7603200 diff --git a/tests/ref/vsynth/vsynth2-jpeg2000-97 b/tests/ref/vsynth/vsynth2-jpeg2000-97 index 33c1fb2425d..591f8b6bb32 100644 --- a/tests/ref/vsynth/vsynth2-jpeg2000-97 +++ b/tests/ref/vsynth/vsynth2-jpeg2000-97 @@ -1,4 +1,4 @@ -c8f76055f59804ca72dbd66eb4db83a2 *tests/data/fate/vsynth2-jpeg2000-97.avi -2464138 tests/data/fate/vsynth2-jpeg2000-97.avi +aa5573136c54b1855d8d00efe2a149bd *tests/data/fate/vsynth2-jpeg2000-97.avi +2464134 tests/data/fate/vsynth2-jpeg2000-97.avi 1f63c8b065e847e4c63d57ce23442ea8 *tests/data/fate/vsynth2-jpeg2000-97.out.rawvideo stddev: 3.21 PSNR: 37.99 MAXDIFF: 26 bytes: 7603200/ 7603200 diff --git a/tests/ref/vsynth/vsynth3-jpeg2000 b/tests/ref/vsynth/vsynth3-jpeg2000 index ecc286b9a46..894dba27dc5 100644 --- a/tests/ref/vsynth/vsynth3-jpeg2000 +++ b/tests/ref/vsynth/vsynth3-jpeg2000 @@ -1,4 +1,4 @@ -776bf3234cbf25002f129b89baab42ea *tests/data/fate/vsynth3-jpeg2000.avi -67400 tests/data/fate/vsynth3-jpeg2000.avi +1d039969504abdc143b410f99b5f9171 *tests/data/fate/vsynth3-jpeg2000.avi +67354 tests/data/fate/vsynth3-jpeg2000.avi 098f5980667e1fcd50452b1dc1a74f61 *tests/data/fate/vsynth3-jpeg2000.out.rawvideo stddev: 5.47 PSNR: 33.36 MAXDIFF: 48 bytes: 86700/ 86700 diff --git a/tests/ref/vsynth/vsynth3-jpeg2000-97 b/tests/ref/vsynth/vsynth3-jpeg2000-97 index df10f43270c..5d9d0837917 100644 --- a/tests/ref/vsynth/vsynth3-jpeg2000-97 +++ b/tests/ref/vsynth/vsynth3-jpeg2000-97 @@ -1,4 +1,4 @@ -cd023db503f03ef72dd83e4617a90c7b *tests/data/fate/vsynth3-jpeg2000-97.avi -85606 tests/data/fate/vsynth3-jpeg2000-97.avi +522e12684aca4262a9d613cb2db7006c *tests/data/fate/vsynth3-jpeg2000-97.avi +85526 tests/data/fate/vsynth3-jpeg2000-97.avi 8def36ad1413ab3a5c2af2e1af4603f9 *tests/data/fate/vsynth3-jpeg2000-97.out.rawvideo stddev: 4.51 PSNR: 35.04 MAXDIFF: 47 bytes: 86700/ 86700 diff --git a/tests/ref/vsynth/vsynth_lena-jpeg2000 b/tests/ref/vsynth/vsynth_lena-jpeg2000 index 88629add21a..e2cbc899d35 100644 --- a/tests/ref/vsynth/vsynth_lena-jpeg2000 +++ b/tests/ref/vsynth/vsynth_lena-jpeg2000 @@ -1,4 +1,4 @@ -b8aaa45236f77a2a626791d462fd8ac1 *tests/data/fate/vsynth_lena-jpeg2000.avi -1188886 tests/data/fate/vsynth_lena-jpeg2000.avi +51f061731d7fb987ff4e71789785225e *tests/data/fate/vsynth_lena-jpeg2000.avi +1188882 tests/data/fate/vsynth_lena-jpeg2000.avi 39a2c5b61cd0cf2821c6fb4cceba2fa8 *tests/data/fate/vsynth_lena-jpeg2000.out.rawvideo stddev: 4.30 PSNR: 35.45 MAXDIFF: 45 bytes: 7603200/ 7603200 diff --git a/tests/ref/vsynth/vsynth_lena-jpeg2000-97 b/tests/ref/vsynth/vsynth_lena-jpeg2000-97 index b6f5f75f77a..05393001859 100644 --- a/tests/ref/vsynth/vsynth_lena-jpeg2000-97 +++ b/tests/ref/vsynth/vsynth_lena-jpeg2000-97 @@ -1,4 +1,4 @@ -b2d9525433c6300674f504922d762437 *tests/data/fate/vsynth_lena-jpeg2000-97.avi -1937232 tests/data/fate/vsynth_lena-jpeg2000-97.avi +80fe872c8afaad914da6ef037957d93b *tests/data/fate/vsynth_lena-jpeg2000-97.avi +1937216 tests/data/fate/vsynth_lena-jpeg2000-97.avi 1b97333a8dc115a5ba609b0070d89d4d *tests/data/fate/vsynth_lena-jpeg2000-97.out.rawvideo stddev: 2.82 PSNR: 39.10 MAXDIFF: 24 bytes: 7603200/ 7603200 From patchwork Thu Mar 30 18:00:59 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 40926 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4645:b0:e3:3194:9d20 with SMTP id eb5csp120321pzb; Thu, 30 Mar 2023 11:02:00 -0700 (PDT) X-Google-Smtp-Source: AKy350ZUGf7aFMOFkp9FNGc/JO9vMcVd7eyNlCnYWEtLTbObtiHdPvLEzfGulZdPl3aRIGGrU/QU X-Received: by 2002:a17:906:74f:b0:933:3b2e:6016 with SMTP id z15-20020a170906074f00b009333b2e6016mr23674965ejb.7.1680199320408; Thu, 30 Mar 2023 11:02:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680199320; cv=none; d=google.com; s=arc-20160816; b=UFBB1byh+s8G2E8POJP3qUipdLZPej04PG7+/uff0u/cfVjuxMrS05PsoD14o/zGmv aMGGJ6qOaz5cbIDu31AKsS5FFOiryUr0tbjnIG1sOnyehoAlsg+2wJ8pLx1kU1ppRxw/ IvrG5gv/ICp0BVEvXi9x9qWB0WbSwUWg9xi2vvchREhnb01cZOn+vBlXf/PbP9rrQHzX imYB3IDz/ies5bOPFyEkEDfmPWliNIIPV8da3pH4FLe3Irc4kF7pdARMKy88yl7rRFgp Wi4c4SVRiVoj5QRMjct+L0OyhjQCXZ5/pTQYSmTk0nm6bSy4KYsQwpu44rllTRjUf6u5 jpiA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:delivered-to; bh=dAQSTrG7W/iAm5YWdOHJSaOmRecsfvwVTcPWoSceyYg=; b=JihSSTajy0QHLDWjvWj2k2xxfIImIA01M/+nPy6QpWj9oQiagqjC/8gjQqkAfGvWCJ vd4uxG8bKyuAyiFHtpYAA1tdchC8DDPoqy4ReJCWeU8j9GtwoqkIExaEVtKXyMP38byk W77zkqfvq26dg320Xg+ZUPwkBP80nH+PAwn84hz9eIxPHF+9YwBDabHRCC9lrf3Wqt4Q orNq9DTsOCEB7iUwmeNwESyfJIRwZtz1ZM3ETwECIpkaN7qybRfdNQQjQUjTKo2RjrBu Fat0x46153hu4LlCqNYqUOW6MrSTBJWbUfxGLSSQqjM7/wSHqId0Er+8HCc961s5O98S aUFg== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id p10-20020a170906604a00b009321def4b92si174293ejj.333.2023.03.30.11.01.56; Thu, 30 Mar 2023 11:02:00 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4FFDC68C3D0; Thu, 30 Mar 2023 21:01:23 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay2-d.mail.gandi.net (relay2-d.mail.gandi.net [217.70.183.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4242C68C3A5 for ; Thu, 30 Mar 2023 21:01:17 +0300 (EEST) Received: (Authenticated sender: michael@niedermayer.cc) by mail.gandi.net (Postfix) with ESMTPSA id 2A58540008 for ; Thu, 30 Mar 2023 18:01:15 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Thu, 30 Mar 2023 20:00:59 +0200 Message-Id: <20230330180106.11275-4-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230330180106.11275-1-michael@niedermayer.cc> References: <20230330180106.11275-1-michael@niedermayer.cc> Subject: [FFmpeg-devel] [PATCH 04/11] avcodec/j2kenc: Add AV_PIX_FMT_YUV440P 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: AeiJsdHE0rSI Signed-off-by: Michael Niedermayer --- libavcodec/j2kenc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/j2kenc.c b/libavcodec/j2kenc.c index 236c720dfed..75bac3c2d84 100644 --- a/libavcodec/j2kenc.c +++ b/libavcodec/j2kenc.c @@ -1841,7 +1841,7 @@ const FFCodec ff_jpeg2000_encoder = { .close = j2kenc_destroy, .p.pix_fmts = (const enum AVPixelFormat[]) { AV_PIX_FMT_RGB24, AV_PIX_FMT_YUV444P, AV_PIX_FMT_GRAY8, - AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, + AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV440P, AV_PIX_FMT_YUV410P, AV_PIX_FMT_YUV411P, AV_PIX_FMT_PAL8, AV_PIX_FMT_RGB48, AV_PIX_FMT_GRAY16, From patchwork Thu Mar 30 18:01:00 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 40927 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4645:b0:e3:3194:9d20 with SMTP id eb5csp120557pzb; Thu, 30 Mar 2023 11:02:15 -0700 (PDT) X-Google-Smtp-Source: AKy350b/Fv04QpuE51TY+wh/M5ArtgpVZOKzYM/5zhoHAe5N1Q/VY8oenYVzYj2wmJwcudMpXA8A X-Received: by 2002:a17:906:3c53:b0:932:c56a:c19b with SMTP id i19-20020a1709063c5300b00932c56ac19bmr23620095ejg.22.1680199335081; Thu, 30 Mar 2023 11:02:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680199335; cv=none; d=google.com; s=arc-20160816; b=FNs+ONSZafoVo7C11KkFS/M04ICOz3mbZZHW1eRRpAf2MM3/6uEbvosROSRg+e+Uvl gS6JBY+cEURbPDxG8TePp98QgfZvMVRLbkpHPyg8I2FMBxkhNqnpFaJRlgD9FyxHgmWx cLJY4Qw2HJoFFSC4tuyN/1YCb/X1I3EqZyld0vuKaZUVLvpumBZCTA6ArA/34RU3DHR1 RhGb++0WqKKu77JeDaMGj+ZsPGX9i0SEe55qS88sKkfmfJvXrjxQg1wAawF/CPSKzXzg f0eubD4ATcvK0kxOKhAzQCOfX1+KrDe0ZTXvvyJnafsGoYbSzUkDPEVyGz8w2GrvjD7k Xtpw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:delivered-to; bh=Je28wUvn06oc2/E7QUYHagX6i3SarK277azkThBWDyo=; b=wkfJ3be6z3cSdj0dRYqc9AzWgwuDjuSPvhii4EEKYIJZjlfG4bWvjZLXEKUS/eje7w dvc/VPzc3ZM4VNrTiYWUYFa2IrszQ84Obe6BOwUChPnJ8LU4E2uHI/UTmUvXvM1WIXdp 2xK0S0cCZVe0Dyho+/H8Zd9zbT+VofY6CDIG+P/FCO9YQ+D2/NbEFtFkFNXN3zSXl60n N370r//k38k71s0wndgx4tUVJKoohKalj+Sb+MVNE9LCmeMB2Lf+V6BS0NsSaBMUyC7B LDg0N/ZWR43uv7mZx93gXTqKEbNZkNl+bjl6zjUpSgWVzgD7k2L2FNSI5zux50FaNq/V +Xxw== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id ue3-20020a170907c68300b0093b17cc60d2si214541ejc.36.2023.03.30.11.02.05; Thu, 30 Mar 2023 11:02:15 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6801268C412; Thu, 30 Mar 2023 21:01:25 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay4-d.mail.gandi.net (relay4-d.mail.gandi.net [217.70.183.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 21CEE68C3C1 for ; Thu, 30 Mar 2023 21:01:19 +0300 (EEST) Received: (Authenticated sender: michael@niedermayer.cc) by mail.gandi.net (Postfix) with ESMTPSA id 3E203E0002 for ; Thu, 30 Mar 2023 18:01:18 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Thu, 30 Mar 2023 20:01:00 +0200 Message-Id: <20230330180106.11275-5-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230330180106.11275-1-michael@niedermayer.cc> References: <20230330180106.11275-1-michael@niedermayer.cc> Subject: [FFmpeg-devel] [PATCH 05/11] avcodec/j2kenc: simplify pixel format setup 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: U22c1oYkkIzk Signed-off-by: Michael Niedermayer --- libavcodec/j2kenc.c | 14 ++++---------- 1 file changed, 4 insertions(+), 10 deletions(-) diff --git a/libavcodec/j2kenc.c b/libavcodec/j2kenc.c index 75bac3c2d84..c3a7a264dc0 100644 --- a/libavcodec/j2kenc.c +++ b/libavcodec/j2kenc.c @@ -1716,6 +1716,7 @@ static av_cold int j2kenc_init(AVCodecContext *avctx) Jpeg2000EncoderContext *s = avctx->priv_data; Jpeg2000CodingStyle *codsty = &s->codsty; Jpeg2000QuantStyle *qntsty = &s->qntsty; + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(avctx->pix_fmt); s->avctx = avctx; av_log(s->avctx, AV_LOG_DEBUG, "init\n"); @@ -1758,20 +1759,13 @@ static av_cold int j2kenc_init(AVCodecContext *avctx) s->width = avctx->width; s->height = avctx->height; + s->ncomponents = desc->nb_components; for (i = 0; i < 3; i++) { - if (avctx->pix_fmt == AV_PIX_FMT_GRAY16 || avctx->pix_fmt == AV_PIX_FMT_RGB48) - s->cbps[i] = 16; - else - s->cbps[i] = 8; + s->cbps[i] = desc->comp[i].depth; } - if (avctx->pix_fmt == AV_PIX_FMT_RGB24 || avctx->pix_fmt == AV_PIX_FMT_RGB48){ - s->ncomponents = 3; - } else if (avctx->pix_fmt == AV_PIX_FMT_GRAY8 || avctx->pix_fmt == AV_PIX_FMT_PAL8 || avctx->pix_fmt == AV_PIX_FMT_GRAY16){ - s->ncomponents = 1; - } else{ // planar YUV + if ((desc->flags & AV_PIX_FMT_FLAG_PLANAR) && s->ncomponents > 1) { s->planar = 1; - s->ncomponents = 3; ret = av_pix_fmt_get_chroma_sub_sample(avctx->pix_fmt, s->chroma_shift, s->chroma_shift + 1); if (ret) From patchwork Thu Mar 30 18:01:01 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 40928 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4645:b0:e3:3194:9d20 with SMTP id eb5csp120662pzb; Thu, 30 Mar 2023 11:02:22 -0700 (PDT) X-Google-Smtp-Source: AKy350a58+yeZ/aYjG1TePj8oHT2kktpC9+kV6QDsOgSH5+DSi4yuqfE37o/84VqqqeI99W+OoVT X-Received: by 2002:aa7:cb18:0:b0:501:e22f:86b9 with SMTP id s24-20020aa7cb18000000b00501e22f86b9mr21942602edt.36.1680199342242; Thu, 30 Mar 2023 11:02:22 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680199342; cv=none; d=google.com; s=arc-20160816; b=SLF5s/Dldk0fDvdWUA+k58Zz/9JivYc5JtX4SrTgidz6oszf7n2lrRDRY/A0W32NZ4 LyTb05xLN844r3W3HUDSDIUOwyj/s2+bkWDDZ26m0MuUgGVSpKyinlgo6wVR5YnYP/O9 o/AhLAgpJw6/sXWwcaluLcjaBxYu9E8BKKnPjU9JVC5NX86lDwb8hS/PVuIBsmSN5j4d JFsXQ63NfVkB/zLGQKcJLYO392vMJUEShFVSZKVW/aqC7wgzXOSoZ7ZrzQ8ikVgWN4rY YSdLnht/iEONF5b9y/8wArMn7Y1zU1j638uVb/+G+hNxV8cPsE/g4H3qL4Rkm0lmIVcs qCfA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:delivered-to; bh=qraKD3Wvyp5uzeoEaj0vUppKbTbqBTLIP8PxghF/5+8=; b=uvr9UMu2ktJ+fIY0P/023XiGMWivxgZmYWNOKEj7XhIh66DmPX7bsoO6AJRbQRVyd9 BKT3ULsU3CFNSTPXn7Hf4sNKHrtHPCjVw5jjQ+QtFStXfzS7VJFDwUSoRMzfcQvN9W0W FDAoSWpLmUJU29JnZL2dftGNcfJ3+CCalSmqvk6vGDUA1WkLufrR6qjdq0KXDajIfETR 5jSryDr8GCkV/YlJg/WwdTg/HodQ5VOnT/IBM7vcFa0rNBQhP7s151VK76BFNyceHg36 UGPV/QkeWpd0l7B08M1oO1g8b+Vo70jk0vJJ+pueN7H/+FinUfH+xk+XzTpgEDvsXpFI 5koQ== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id um4-20020a170906cf8400b0093b5bc4c792si143909ejb.749.2023.03.30.11.02.15; Thu, 30 Mar 2023 11:02:22 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5EC1968C447; Thu, 30 Mar 2023 21:01:27 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay7-d.mail.gandi.net (relay7-d.mail.gandi.net [217.70.183.200]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AB67A68C413 for ; Thu, 30 Mar 2023 21:01:20 +0300 (EEST) Received: (Authenticated sender: michael@niedermayer.cc) by mail.gandi.net (Postfix) with ESMTPSA id CAA032000B for ; Thu, 30 Mar 2023 18:01:19 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Thu, 30 Mar 2023 20:01:01 +0200 Message-Id: <20230330180106.11275-6-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230330180106.11275-1-michael@niedermayer.cc> References: <20230330180106.11275-1-michael@niedermayer.cc> Subject: [FFmpeg-devel] [PATCH 06/11] avcodec/j2kenc: Replace BGR48 / GRAY16 test by test for number of bits 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: MIHLy8rul9O9 BGR48 is not supported and this was probably meant to be RGB48 so this fixes RGB48 a bit Signed-off-by: Michael Niedermayer --- libavcodec/j2kenc.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/j2kenc.c b/libavcodec/j2kenc.c index c3a7a264dc0..d837b8b949e 100644 --- a/libavcodec/j2kenc.c +++ b/libavcodec/j2kenc.c @@ -1542,7 +1542,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, s->lambda = s->picture->quality * LAMBDA_SCALE; - if (avctx->pix_fmt == AV_PIX_FMT_BGR48 || avctx->pix_fmt == AV_PIX_FMT_GRAY16) + if (s->cbps[0] > 8) copy_frame_16(s); else copy_frame_8(s); From patchwork Thu Mar 30 18:01:02 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 40930 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4645:b0:e3:3194:9d20 with SMTP id eb5csp121007pzb; Thu, 30 Mar 2023 11:02:43 -0700 (PDT) X-Google-Smtp-Source: AKy350aR/CSgk+hFfmMgAxFKWw1VFzEwkXcVUYfI1+DtIoYmMMBqMWum98MIFGtpcGdKD52LiXkd X-Received: by 2002:a17:906:198e:b0:93d:770:25df with SMTP id g14-20020a170906198e00b0093d077025dfmr23917617ejd.37.1680199363128; Thu, 30 Mar 2023 11:02:43 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680199363; cv=none; d=google.com; s=arc-20160816; b=GsnXFKBv3sioDpixbZtx3XkHKoMXtISlauQY7768OXQO1Xk8hhhwhdYf6CyzKunjQx onPn2MHCkR77VNy4unQBBX8q/sHZyCnHGy2DwL7IyegthaApQq4A2NPrtl7gmq+tcdBN ZlYC1m5BRwzFRwctdmpMLeJaI8AG2JkYEfbpsobNsui4ovtE/IYQcrR7RDbQVbRhgZaW Uj68bDkNbOcErBHTLYFIWydDkgOo2QWUCZ4UaOIO2WSIrwomhtgTgxA2XeV7805XU7WR Sa+9RGwhOMMR7fuC4ibavO1XLJtx6Id1sC162sm9oegLl4HQ1YTqfNq8OA3j/Q2YKoOM 3Fyw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:delivered-to; bh=nkdHTo9Ur0ppgvV3EVLfOWtTed/OI8KlpvKHBPm4cYw=; b=igFWYS6kd3lKdzJ2459zaCTUVnqbVenyu3G187RIl3bbjr9lhrCjyqbFTa2CFEPb3y xifNjORcmfhyVKIavfip3VBQhdKH3kS8zulC0BfdNdZRUqsBpU4RPz6qj70pU1mHClh4 RIOTBhk2iqpcVU0YT7vWegG2QbGI3uKaas0ENYz5sXP4f8v9yuiHW2qnbJOsNfYZXEZr Za8013wAQoE77M9bPd1tEQplHU3JLUm5tafwLbz7upl4zSOCbTNSQPNOy5HsnZpavZcT dqoChiMc0drdmm4dGJ0YQYxwUiNg4zqiyy3WVC8YJ1i2DBhvIFwKxECADrUb7wkT1x1X 6Ibw== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id ku15-20020a170907788f00b00933b62b2533si171162ejc.297.2023.03.30.11.02.34; Thu, 30 Mar 2023 11:02:43 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 494F968C41D; Thu, 30 Mar 2023 21:01:29 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay3-d.mail.gandi.net (relay3-d.mail.gandi.net [217.70.183.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 54C5568C485 for ; Thu, 30 Mar 2023 21:01:22 +0300 (EEST) Received: (Authenticated sender: michael@niedermayer.cc) by mail.gandi.net (Postfix) with ESMTPSA id 8875160005 for ; Thu, 30 Mar 2023 18:01:21 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Thu, 30 Mar 2023 20:01:02 +0200 Message-Id: <20230330180106.11275-7-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230330180106.11275-1-michael@niedermayer.cc> References: <20230330180106.11275-1-michael@niedermayer.cc> Subject: [FFmpeg-devel] [PATCH 07/11] avcodec/j2kenc: Replace RGB24 special case by generic test 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: DCf4jstx6Aq7 This fixes RGB48 with libavcodec as decoder Signed-off-by: Michael Niedermayer --- libavcodec/j2kenc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavcodec/j2kenc.c b/libavcodec/j2kenc.c index d837b8b949e..8d9c1fdb1c0 100644 --- a/libavcodec/j2kenc.c +++ b/libavcodec/j2kenc.c @@ -1530,6 +1530,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, int tileno, ret; Jpeg2000EncoderContext *s = avctx->priv_data; uint8_t *chunkstart, *jp2cstart, *jp2hstart; + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(avctx->pix_fmt); if ((ret = ff_alloc_packet(avctx, pkt, avctx->width*avctx->height*9 + AV_INPUT_BUFFER_MIN_SIZE)) < 0) return ret; @@ -1586,7 +1587,7 @@ static int encode_frame(AVCodecContext *avctx, AVPacket *pkt, bytestream_put_byte(&s->buf, 1); bytestream_put_byte(&s->buf, 0); bytestream_put_byte(&s->buf, 0); - if (avctx->pix_fmt == AV_PIX_FMT_RGB24 || avctx->pix_fmt == AV_PIX_FMT_PAL8) { + if ((desc->flags & AV_PIX_FMT_FLAG_RGB) || avctx->pix_fmt == AV_PIX_FMT_PAL8) { bytestream_put_be32(&s->buf, 16); } else if (s->ncomponents == 1) { bytestream_put_be32(&s->buf, 17); From patchwork Thu Mar 30 18:01:03 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 40931 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4645:b0:e3:3194:9d20 with SMTP id eb5csp121150pzb; Thu, 30 Mar 2023 11:02:52 -0700 (PDT) X-Google-Smtp-Source: AKy350aAYDMbnXVT/u0aDWDyJPcedvn7wr7cCRmtkziEQysHgi/cJx7furqo5qlugI6NhIrGTA+v X-Received: by 2002:a17:907:205b:b0:931:cac0:60ec with SMTP id pg27-20020a170907205b00b00931cac060ecmr22930139ejb.48.1680199371829; Thu, 30 Mar 2023 11:02:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680199371; cv=none; d=google.com; s=arc-20160816; b=y4s86FLYTQ8J9XFGfeLrrPahbMFydmu5bNVQ3YEGom/JAUu6VTFgBPwtoW604iqX+7 Zzy/ZUdaLdyWm9sHxXg+akLogjWSpQeFOntJh+LKyZOgydriom8ofQcnQEbhwcns38W9 VqYlZE5OgtuHqpQ1xWDitzq4+z5224ZGmilTLj8QxRFnPdjugBs4rGr1yOOxJtE3+1w7 NMiScUHaKNTum4G5DywVSQnJDK8kEZh1HOzLHpNh2uw0MLRSeB8oUKuOtvXX8ug4+BWi P+p1AukkWDls8VnH/c3DWZXrGriiC+5Jvag1xxjoKASx5wvNfsMvQnISuSP1jjlYHju4 K70g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:delivered-to; bh=iGvc90cCKrXmcB07/zz9be/GzVHBB1FYlKgeINgcpdo=; b=ODI86zYnuRo3OHhNzLE2Tl4DI5bDwbOWEGiuK6YiiriYyn2XGJzPpSHgbpgu0amhrT 58taICrWWsS9to9kK0knxmw0ztYnt5BpuZfZLRYNHQZFAGPFKvr87HMXZFcees4lavQo vr3ONbwx9Y8aznkgZM1fJq/WT7Kr2Y3GCa0ZBzXDrjWauuATHO4Zydt3fQaLKFj1OwHK OKpZkVy2rnnS1x1D0W0QPOC+/cBMiUnu1eaZuMDp+VnqBewVEX9mIgrx8Ms8xhxx3cYC XuYXTbsxNoyvhWMwG04eH2gBokXFjpbmRSDtzx5UZ8JxOii0Zqfsli05e0TSzTCyxCN1 oiVA== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id l6-20020a1709060e0600b0094495cc0dcfsi195568eji.70.2023.03.30.11.02.44; Thu, 30 Mar 2023 11:02:51 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4AB7468C413; Thu, 30 Mar 2023 21:01:31 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay2-d.mail.gandi.net (relay2-d.mail.gandi.net [217.70.183.194]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1FDC368C504 for ; Thu, 30 Mar 2023 21:01:24 +0300 (EEST) Received: (Authenticated sender: michael@niedermayer.cc) by mail.gandi.net (Postfix) with ESMTPSA id 3CB3840006 for ; Thu, 30 Mar 2023 18:01:23 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Thu, 30 Mar 2023 20:01:03 +0200 Message-Id: <20230330180106.11275-8-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230330180106.11275-1-michael@niedermayer.cc> References: <20230330180106.11275-1-michael@niedermayer.cc> Subject: [FFmpeg-devel] [PATCH 08/11] avcodec/j2kenc: Planar RGB support 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: x757aPsJquEe Signed-off-by: Michael Niedermayer --- libavcodec/j2kenc.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/libavcodec/j2kenc.c b/libavcodec/j2kenc.c index 8d9c1fdb1c0..0715d424a15 100644 --- a/libavcodec/j2kenc.c +++ b/libavcodec/j2kenc.c @@ -115,6 +115,7 @@ typedef struct { int width, height; ///< image width and height uint8_t cbps[4]; ///< bits per sample in particular components + uint8_t comp_remap[4]; int chroma_shift[2]; uint8_t planar; int ncomponents; @@ -512,17 +513,18 @@ static int init_tiles(Jpeg2000EncoderContext *s) Jpeg2000Tile *tile = s->tile + tileno; \ if (s->planar){ \ for (compno = 0; compno < s->ncomponents; compno++){ \ + int icompno = s->comp_remap[compno]; \ Jpeg2000Component *comp = tile->comp + compno; \ int *dst = comp->i_data; \ int cbps = s->cbps[compno]; \ - line = (const PIXEL*)s->picture->data[compno] \ - + comp->coord[1][0] * (s->picture->linesize[compno] / sizeof(PIXEL)) \ + line = (const PIXEL*)s->picture->data[icompno] \ + + comp->coord[1][0] * (s->picture->linesize[icompno] / sizeof(PIXEL)) \ + comp->coord[0][0]; \ for (y = comp->coord[1][0]; y < comp->coord[1][1]; y++){ \ const PIXEL *ptr = line; \ for (x = comp->coord[0][0]; x < comp->coord[0][1]; x++) \ *dst++ = *ptr++ - (1 << (cbps - 1)); \ - line += s->picture->linesize[compno] / sizeof(PIXEL); \ + line += s->picture->linesize[icompno] / sizeof(PIXEL); \ } \ } \ } else{ \ @@ -1763,6 +1765,7 @@ static av_cold int j2kenc_init(AVCodecContext *avctx) s->ncomponents = desc->nb_components; for (i = 0; i < 3; i++) { s->cbps[i] = desc->comp[i].depth; + s->comp_remap[i] = i; //default } if ((desc->flags & AV_PIX_FMT_FLAG_PLANAR) && s->ncomponents > 1) { @@ -1771,6 +1774,11 @@ static av_cold int j2kenc_init(AVCodecContext *avctx) s->chroma_shift, s->chroma_shift + 1); if (ret) return ret; + if (desc->flags & AV_PIX_FMT_FLAG_RGB) { + s->comp_remap[0] = 2; + s->comp_remap[1] = 0; + s->comp_remap[2] = 1; + } } ff_thread_once(&init_static_once, init_luts); From patchwork Thu Mar 30 18:01:04 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 40929 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4645:b0:e3:3194:9d20 with SMTP id eb5csp120824pzb; Thu, 30 Mar 2023 11:02:31 -0700 (PDT) X-Google-Smtp-Source: AKy350YHIE6wqwbHCWaqHhUe68JGn7Za74bl/X5dm9Y16II/sRMJrVtuGDXTQn1aAAfsA2w6cfqQ X-Received: by 2002:a05:6402:517c:b0:4fb:9372:f837 with SMTP id d28-20020a056402517c00b004fb9372f837mr7607485ede.4.1680199350983; Thu, 30 Mar 2023 11:02:30 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680199350; cv=none; d=google.com; s=arc-20160816; b=qZRkfL4WwCyK20csDsXyinpjT5hcQbYozRgWZTgEkkyYCfzaYsnydBp/Byjh0WCIRW eWn/JrbsViDWmjyLVEcKwWiQjGPIgvq58TTOi4pvXmjBmDH3uWj2zkVwJjSA9QHLY7sS R2Ei0w9jR6gZGcR/InwNNiHyindp3dKI6hCZcJVrxMBU9J1mHPLmEQ5+qnSvZ+wQuhlh MtEZWnhvPwjDlTn1SMs2YoG1xApMHEqms+hgnbJilIR7Va+zKLswyNCUoRl/WrTQ2UVR Ze+RSoGWiXBG2o1QkJ2qAjGEZ0F1auAm727MF5RGe1cjn8KveH7y9sivt+sxRVbXR+O4 ARNQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:delivered-to; bh=YpxZ9L1mE5z+2myMb+nUGAew+Fgg6GGbsP036Vs7cXo=; b=pGj6+DIWQmo3NHBRHEMerr/AeMkmLu+RbkLs3+E2xYjWMO7ZXfBQggoLmdpZ8JQvKY 2oydRzSXK/aL7cX4Yq67uATndtQHYveNX67O+CU8Hrp66Pj4UvT+D6FYtd7Vl8c8V4uq m1yxhPFnLiKTOV6xRLauuPP8bea/1hEbz+b9iWyPZamVYuxnRGPdxNftdMd0rhtEctaR 4y+fpgd6CPYADObR8yYQFh6MQ9yWgg+VGAYdqmuLike9ARRBtM9ybqFzao6sjzojMFTx R8JQ2YtpDv4WglSb4HfOXyTkwRchgsSVDmmdfi6K0HvYVJ6q5UWmRUGv8S/RJvpsXeFx LfMw== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id b13-20020aa7c6cd000000b004fb8724cc4esi297484eds.292.2023.03.30.11.02.24; Thu, 30 Mar 2023 11:02:30 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 489DE68C4C3; Thu, 30 Mar 2023 21:01:28 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay7-d.mail.gandi.net (relay7-d.mail.gandi.net [217.70.183.200]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5AFB268C3EB for ; Thu, 30 Mar 2023 21:01:26 +0300 (EEST) Received: (Authenticated sender: michael@niedermayer.cc) by mail.gandi.net (Postfix) with ESMTPSA id 63B8F20007 for ; Thu, 30 Mar 2023 18:01:25 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Thu, 30 Mar 2023 20:01:04 +0200 Message-Id: <20230330180106.11275-9-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230330180106.11275-1-michael@niedermayer.cc> References: <20230330180106.11275-1-michael@niedermayer.cc> Subject: [FFmpeg-devel] [PATCH 09/11] avcodec/j2kenc: More complete list of supported pixel formats 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: iyz3LrofrFMC Signed-off-by: Michael Niedermayer --- libavcodec/j2kenc.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/libavcodec/j2kenc.c b/libavcodec/j2kenc.c index 0715d424a15..b4ecc010ca7 100644 --- a/libavcodec/j2kenc.c +++ b/libavcodec/j2kenc.c @@ -1843,11 +1843,16 @@ const FFCodec ff_jpeg2000_encoder = { FF_CODEC_ENCODE_CB(encode_frame), .close = j2kenc_destroy, .p.pix_fmts = (const enum AVPixelFormat[]) { - AV_PIX_FMT_RGB24, AV_PIX_FMT_YUV444P, AV_PIX_FMT_GRAY8, - AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV440P, - AV_PIX_FMT_YUV410P, AV_PIX_FMT_YUV411P, + AV_PIX_FMT_RGB24, AV_PIX_FMT_RGB48, + AV_PIX_FMT_GBR24P,AV_PIX_FMT_GBRP9, AV_PIX_FMT_GBRP10, AV_PIX_FMT_GBRP12, AV_PIX_FMT_GBRP14, AV_PIX_FMT_GBRP16, + AV_PIX_FMT_GRAY8, AV_PIX_FMT_GRAY9, AV_PIX_FMT_GRAY10, AV_PIX_FMT_GRAY12, AV_PIX_FMT_GRAY14, AV_PIX_FMT_GRAY16, + AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV420P9, AV_PIX_FMT_YUV420P10, AV_PIX_FMT_YUV420P12, AV_PIX_FMT_YUV420P14, AV_PIX_FMT_YUV420P16, + AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUV422P9, AV_PIX_FMT_YUV422P10, AV_PIX_FMT_YUV422P12, AV_PIX_FMT_YUV422P14, AV_PIX_FMT_YUV422P16, + AV_PIX_FMT_YUV444P, AV_PIX_FMT_YUV444P9, AV_PIX_FMT_YUV444P10, AV_PIX_FMT_YUV444P12, AV_PIX_FMT_YUV444P14, AV_PIX_FMT_YUV444P16, + AV_PIX_FMT_YUV440P, + AV_PIX_FMT_YUV411P, + AV_PIX_FMT_YUV410P, AV_PIX_FMT_PAL8, - AV_PIX_FMT_RGB48, AV_PIX_FMT_GRAY16, AV_PIX_FMT_NONE }, .p.priv_class = &j2k_class, From patchwork Thu Mar 30 18:01:05 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 40932 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4645:b0:e3:3194:9d20 with SMTP id eb5csp121278pzb; Thu, 30 Mar 2023 11:03:00 -0700 (PDT) X-Google-Smtp-Source: AKy350a5HFOAf1GkOSkbDNdZC39Komq0r6dBQFqtnXhjVR1QX1YJfyXxtWAf/F5Gk1Y0U2uupj5q X-Received: by 2002:a17:907:a782:b0:930:800b:2803 with SMTP id vx2-20020a170907a78200b00930800b2803mr25418956ejc.76.1680199380405; Thu, 30 Mar 2023 11:03:00 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680199380; cv=none; d=google.com; s=arc-20160816; b=noOxnZnY3jkvnmLMdkY/RWQjMoHZpcUULEdP2Tm/qX3gw727f7Z6tPelTlthnFY2/F 0ZkE3An+x9orn48G7gu893qxJ3wjZ4Wixn/S47kvZPwo5P+V9MZ3cuok0/zk9c+1tx9q iEt9+BGTbJ0bArnrOe2uFQNn4595PkFiaDfb2HHm8NVqZHAWQvGE4kweZS0Kqb/Fe3PJ klXbbIfVmw+18PF4IhLdggkPVHMJToPzd8m6FBcz5KrJFRpsQeZTccian0XC7DVqlFe/ luXMrcwP9HOCHYdWgAKyEBccIaHe3gaY98tDHdLfKOb1lP7DzZnTTEf4WdzAuGseA+g/ ufQw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:delivered-to; bh=aRjI6+TBA6wrBXiKHlPeJxzP8DHn9b27KLvN+kXvGAA=; b=01VOPa7RHOc4I0/nVgpWmArfvizLprXuoOLDxiSVwyyUvae8XcsfTHH2pDV0YPsoA/ KBMbb0uijadQOmZ0AAoxst18ePZ7ZPhFbyBUOSwcAY2nptNi83r21XfBHQzH4hcrwwjc wYo46ghhZOAoQ5fvesl0wAhtG1JZI4S2L9lNetFxvBPCRFndfNxqaEoP4DIZmCF9Gs+3 Nxqi1FCVtoZ2EGnC7s96uAaNgCdwN4FF4iPnKDVbruxeCYcR5qOaDePtK/qkILJAeg0T 0ApaWIfyl9VtLdXcvhLUqKmwRxCze1Ax3ucYkgp165mtkq7+FIQqf42HMWp9RMlKHJ97 oJ3g== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id n3-20020aa7c443000000b0050203525481si308411edr.188.2023.03.30.11.02.54; Thu, 30 Mar 2023 11:03:00 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 35AEF68C55C; Thu, 30 Mar 2023 21:01:32 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay9-d.mail.gandi.net (relay9-d.mail.gandi.net [217.70.183.199]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DB99968C531 for ; Thu, 30 Mar 2023 21:01:29 +0300 (EEST) Received: (Authenticated sender: michael@niedermayer.cc) by mail.gandi.net (Postfix) with ESMTPSA id 7863DFF806 for ; Thu, 30 Mar 2023 18:01:28 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Thu, 30 Mar 2023 20:01:05 +0200 Message-Id: <20230330180106.11275-10-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230330180106.11275-1-michael@niedermayer.cc> References: <20230330180106.11275-1-michael@niedermayer.cc> Subject: [FFmpeg-devel] [PATCH 10/11] avcodec/j2kenc: support threads 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: xj8I4Nmfk7Yz Signed-off-by: Michael Niedermayer --- libavcodec/j2kenc.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavcodec/j2kenc.c b/libavcodec/j2kenc.c index b4ecc010ca7..8475d140daf 100644 --- a/libavcodec/j2kenc.c +++ b/libavcodec/j2kenc.c @@ -1837,7 +1837,8 @@ const FFCodec ff_jpeg2000_encoder = { CODEC_LONG_NAME("JPEG 2000"), .p.type = AVMEDIA_TYPE_VIDEO, .p.id = AV_CODEC_ID_JPEG2000, - .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE, + .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_ENCODER_REORDERED_OPAQUE | + AV_CODEC_CAP_FRAME_THREADS, .priv_data_size = sizeof(Jpeg2000EncoderContext), .init = j2kenc_init, FF_CODEC_ENCODE_CB(encode_frame), From patchwork Thu Mar 30 18:01:06 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Michael Niedermayer X-Patchwork-Id: 40933 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4645:b0:e3:3194:9d20 with SMTP id eb5csp121487pzb; Thu, 30 Mar 2023 11:03:14 -0700 (PDT) X-Google-Smtp-Source: AKy350a8tdArELc+6tVU6m4/ZsSjLyy/CFkvjBJEgXiLvozy6DRQfMpxVfwysqDuFnzas/Fs06kM X-Received: by 2002:a17:906:3598:b0:92b:4f8e:dddb with SMTP id o24-20020a170906359800b0092b4f8edddbmr26397237ejb.34.1680199394346; Thu, 30 Mar 2023 11:03:14 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680199394; cv=none; d=google.com; s=arc-20160816; b=bU6PmFGrKnrG8GNgyO0n2ROd1xmesGAV91ngNRVRRFmmmIPTx+3RcuvCPDCJs6ANCN 66MxJrM8NWLVrSKyKtAwVHtYTCcoUNEJO67Y3Ah27gudI23PftryqjucShv+AGZAl1R/ 3hebBu+SSl4Mm4RPzwsbwJem3WzE0U1czNAAT3sEP+GM6yT0zO2xmfxQozChK5UvKaVG MxFAW8rCu2GvwR5gN4hQ9aAYjvDYpmR4UtaLKmjyZ2Rv+rJdcb/w3i1AwOS7eklJpDIo r4R8BDVeC4T+dP0ZPQwqBkWNwGAnbrCjsOhPvA04hcYA74ivUVBFMizjuqSAa66wdcmV QYsw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:delivered-to; bh=jQpgwSHmY4FyZF7rklJd+Bct+OuPcGPn4MxvjYsbQvw=; b=xAHQM5Ogg7ZPXhuyfr1FeloJ3uhOtrEsBGy4WKxg8Myg7Ti/TtROHoPefbuRmKianG cXVR1gVBs9yXwVhgOhOoo+dAqnlDv4v8IVcHbA+VbCcsUsxvUbDKkfoSu7d4KSkIQBAb FJWcct/G3g5hsPlJgUgZNCtYe16RUZFZYL6NqZXenk45vNoxdlMPQRKdl7eRiELEagYe MXT+kQMJ3mZJAgOXcb4i85SDJHeC1LReC5vADOoYOKEzKLakL/AzeWYzuDFzxcDZYUns aDgdvHKpMfuy3tc49Ggf9VM/QdRRP6YSpSAqZWJPVgqI3POYxjjQmwdBwvi+xBHyl70b 4+gQ== ARC-Authentication-Results: i=1; mx.google.com; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id g3-20020a1709064e4300b00925de8df75asi190747ejw.75.2023.03.30.11.03.04; Thu, 30 Mar 2023 11:03:14 -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; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 39C1A68BF5A; Thu, 30 Mar 2023 21:01:34 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from relay4-d.mail.gandi.net (relay4-d.mail.gandi.net [217.70.183.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C5FCB68C55C for ; Thu, 30 Mar 2023 21:01:31 +0300 (EEST) Received: (Authenticated sender: michael@niedermayer.cc) by mail.gandi.net (Postfix) with ESMTPSA id C47C3E0007 for ; Thu, 30 Mar 2023 18:01:30 +0000 (UTC) From: Michael Niedermayer To: FFmpeg development discussions and patches Date: Thu, 30 Mar 2023 20:01:06 +0200 Message-Id: <20230330180106.11275-11-michael@niedermayer.cc> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20230330180106.11275-1-michael@niedermayer.cc> References: <20230330180106.11275-1-michael@niedermayer.cc> Subject: [FFmpeg-devel] [PATCH 11/11] Remove libopenjpeg decoder 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: rvOPI0kuXV9A We do not support other video/image decoders when we have our own. Signed-off-by: Michael Niedermayer --- configure | 1 - libavcodec/Makefile | 1 - libavcodec/allcodecs.c | 1 - libavcodec/libopenjpegdec.c | 516 ------------------------------------ 4 files changed, 519 deletions(-) delete mode 100644 libavcodec/libopenjpegdec.c diff --git a/configure b/configure index fe367462a10..aa72aaef6b0 100755 --- a/configure +++ b/configure @@ -3364,7 +3364,6 @@ libopencore_amrwb_decoder_deps="libopencore_amrwb" libopenh264_decoder_deps="libopenh264" libopenh264_decoder_select="h264_mp4toannexb_bsf" libopenh264_encoder_deps="libopenh264" -libopenjpeg_decoder_deps="libopenjpeg" libopenjpeg_encoder_deps="libopenjpeg" libopenmpt_demuxer_deps="libopenmpt" libopus_decoder_deps="libopus" diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 711d2690d0b..b30747fdb99 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -1102,7 +1102,6 @@ OBJS-$(CONFIG_LIBOPENCORE_AMRNB_ENCODER) += libopencore-amr.o OBJS-$(CONFIG_LIBOPENCORE_AMRWB_DECODER) += libopencore-amr.o OBJS-$(CONFIG_LIBOPENH264_DECODER) += libopenh264dec.o libopenh264.o OBJS-$(CONFIG_LIBOPENH264_ENCODER) += libopenh264enc.o libopenh264.o -OBJS-$(CONFIG_LIBOPENJPEG_DECODER) += libopenjpegdec.o OBJS-$(CONFIG_LIBOPENJPEG_ENCODER) += libopenjpegenc.o OBJS-$(CONFIG_LIBOPUS_DECODER) += libopusdec.o libopus.o \ vorbis_data.o diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c index 3cbb93347b4..aabfa9be50f 100644 --- a/libavcodec/allcodecs.c +++ b/libavcodec/allcodecs.c @@ -782,7 +782,6 @@ extern const FFCodec ff_libopencore_amrnb_encoder; extern const FFCodec ff_libopencore_amrnb_decoder; extern const FFCodec ff_libopencore_amrwb_decoder; extern const FFCodec ff_libopenjpeg_encoder; -extern const FFCodec ff_libopenjpeg_decoder; extern const FFCodec ff_libopus_encoder; extern const FFCodec ff_libopus_decoder; extern const FFCodec ff_librav1e_encoder; diff --git a/libavcodec/libopenjpegdec.c b/libavcodec/libopenjpegdec.c deleted file mode 100644 index 206db07ec70..00000000000 --- a/libavcodec/libopenjpegdec.c +++ /dev/null @@ -1,516 +0,0 @@ -/* - * JPEG 2000 decoding support via OpenJPEG - * Copyright (c) 2009 Jaikrishnan Menon - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -/** - * @file - * JPEG 2000 decoder using libopenjpeg - */ - -#include "libavutil/common.h" -#include "libavutil/imgutils.h" -#include "libavutil/intreadwrite.h" -#include "libavutil/opt.h" -#include "libavutil/pixfmt.h" - -#include "avcodec.h" -#include "codec_internal.h" -#include "decode.h" -#include "thread.h" - -#include - -#define JP2_SIG_TYPE 0x6A502020 -#define JP2_SIG_VALUE 0x0D0A870A - -// pix_fmts with lower bpp have to be listed before -// similar pix_fmts with higher bpp. -#define RGB_PIXEL_FORMATS AV_PIX_FMT_RGB24, AV_PIX_FMT_RGBA, \ - AV_PIX_FMT_RGB48, AV_PIX_FMT_RGBA64 - -#define GRAY_PIXEL_FORMATS AV_PIX_FMT_GRAY8, AV_PIX_FMT_YA8, \ - AV_PIX_FMT_GRAY10, AV_PIX_FMT_GRAY12, AV_PIX_FMT_GRAY14, \ - AV_PIX_FMT_GRAY16, AV_PIX_FMT_YA16 - -#define YUV_PIXEL_FORMATS AV_PIX_FMT_YUV410P, AV_PIX_FMT_YUV411P, AV_PIX_FMT_YUVA420P, \ - AV_PIX_FMT_YUV420P, AV_PIX_FMT_YUV422P, AV_PIX_FMT_YUVA422P, \ - AV_PIX_FMT_YUV440P, AV_PIX_FMT_YUV444P, AV_PIX_FMT_YUVA444P, \ - AV_PIX_FMT_YUV420P9, AV_PIX_FMT_YUV422P9, AV_PIX_FMT_YUV444P9, \ - AV_PIX_FMT_YUVA420P9, AV_PIX_FMT_YUVA422P9, AV_PIX_FMT_YUVA444P9, \ - AV_PIX_FMT_YUV420P10, AV_PIX_FMT_YUV422P10, AV_PIX_FMT_YUV444P10, \ - AV_PIX_FMT_YUVA420P10, AV_PIX_FMT_YUVA422P10, AV_PIX_FMT_YUVA444P10, \ - AV_PIX_FMT_YUV420P12, AV_PIX_FMT_YUV422P12, AV_PIX_FMT_YUV444P12, \ - AV_PIX_FMT_YUV420P14, AV_PIX_FMT_YUV422P14, AV_PIX_FMT_YUV444P14, \ - AV_PIX_FMT_YUV420P16, AV_PIX_FMT_YUV422P16, AV_PIX_FMT_YUV444P16, \ - AV_PIX_FMT_YUVA420P16, AV_PIX_FMT_YUVA422P16, AV_PIX_FMT_YUVA444P16 - -#define XYZ_PIXEL_FORMATS AV_PIX_FMT_XYZ12 - -static const enum AVPixelFormat libopenjpeg_rgb_pix_fmts[] = { - RGB_PIXEL_FORMATS -}; -static const enum AVPixelFormat libopenjpeg_gray_pix_fmts[] = { - GRAY_PIXEL_FORMATS -}; -static const enum AVPixelFormat libopenjpeg_yuv_pix_fmts[] = { - YUV_PIXEL_FORMATS -}; -static const enum AVPixelFormat libopenjpeg_all_pix_fmts[] = { - RGB_PIXEL_FORMATS, GRAY_PIXEL_FORMATS, YUV_PIXEL_FORMATS, XYZ_PIXEL_FORMATS -}; - -typedef struct LibOpenJPEGContext { - AVClass *class; - opj_dparameters_t dec_params; - int lowqual; -} LibOpenJPEGContext; - -static void error_callback(const char *msg, void *data) -{ - av_log(data, AV_LOG_ERROR, "%s", msg); -} - -static void warning_callback(const char *msg, void *data) -{ - av_log(data, AV_LOG_WARNING, "%s", msg); -} - -static void info_callback(const char *msg, void *data) -{ - av_log(data, AV_LOG_DEBUG, "%s", msg); -} - -typedef struct BufferReader { - int pos; - int size; - const uint8_t *buffer; -} BufferReader; - -static OPJ_SIZE_T stream_read(void *out_buffer, OPJ_SIZE_T nb_bytes, void *user_data) -{ - BufferReader *reader = user_data; - int remaining; - - if (reader->pos == reader->size) { - return (OPJ_SIZE_T)-1; - } - remaining = reader->size - reader->pos; - if (nb_bytes > remaining) { - nb_bytes = remaining; - } - memcpy(out_buffer, reader->buffer + reader->pos, nb_bytes); - reader->pos += (int)nb_bytes; - return nb_bytes; -} - -static OPJ_OFF_T stream_skip(OPJ_OFF_T nb_bytes, void *user_data) -{ - BufferReader *reader = user_data; - if (nb_bytes < 0) { - if (reader->pos == 0) { - return (OPJ_SIZE_T)-1; - } - if (nb_bytes + reader->pos < 0) { - nb_bytes = -reader->pos; - } - } else { - int remaining; - - if (reader->pos == reader->size) { - return (OPJ_SIZE_T)-1; - } - remaining = reader->size - reader->pos; - if (nb_bytes > remaining) { - nb_bytes = remaining; - } - } - reader->pos += (int)nb_bytes; - return nb_bytes; -} - -static OPJ_BOOL stream_seek(OPJ_OFF_T nb_bytes, void *user_data) -{ - BufferReader *reader = user_data; - if (nb_bytes < 0 || nb_bytes > reader->size) { - return OPJ_FALSE; - } - reader->pos = (int)nb_bytes; - return OPJ_TRUE; -} - -static inline int libopenjpeg_matches_pix_fmt(const opj_image_t *image, enum AVPixelFormat pix_fmt) -{ - const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt); - int match = 1; - - if (desc->nb_components != image->numcomps) { - return 0; - } - - switch (desc->nb_components) { - case 4: - match = match && - desc->comp[3].depth >= image->comps[3].prec && - 1 == image->comps[3].dx && - 1 == image->comps[3].dy; - case 3: - match = match && - desc->comp[2].depth >= image->comps[2].prec && - 1 << desc->log2_chroma_w == image->comps[2].dx && - 1 << desc->log2_chroma_h == image->comps[2].dy; - case 2: - match = match && - desc->comp[1].depth >= image->comps[1].prec && - 1 << desc->log2_chroma_w == image->comps[1].dx && - 1 << desc->log2_chroma_h == image->comps[1].dy; - case 1: - match = match && - desc->comp[0].depth >= image->comps[0].prec && - 1 == image->comps[0].dx && - 1 == image->comps[0].dy; - default: - break; - } - - return match; -} - -static inline enum AVPixelFormat libopenjpeg_guess_pix_fmt(const opj_image_t *image) { - int index; - const enum AVPixelFormat *possible_fmts = NULL; - int possible_fmts_nb = 0; - - switch (image->color_space) { - case OPJ_CLRSPC_SRGB: - possible_fmts = libopenjpeg_rgb_pix_fmts; - possible_fmts_nb = FF_ARRAY_ELEMS(libopenjpeg_rgb_pix_fmts); - break; - case OPJ_CLRSPC_GRAY: - possible_fmts = libopenjpeg_gray_pix_fmts; - possible_fmts_nb = FF_ARRAY_ELEMS(libopenjpeg_gray_pix_fmts); - break; - case OPJ_CLRSPC_SYCC: - possible_fmts = libopenjpeg_yuv_pix_fmts; - possible_fmts_nb = FF_ARRAY_ELEMS(libopenjpeg_yuv_pix_fmts); - break; - default: - possible_fmts = libopenjpeg_all_pix_fmts; - possible_fmts_nb = FF_ARRAY_ELEMS(libopenjpeg_all_pix_fmts); - break; - } - - for (index = 0; index < possible_fmts_nb; ++index) - if (libopenjpeg_matches_pix_fmt(image, possible_fmts[index])) { - return possible_fmts[index]; - } - - return AV_PIX_FMT_NONE; -} - -static inline int libopenjpeg_ispacked(enum AVPixelFormat pix_fmt) -{ - const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(pix_fmt); - int i, component_plane; - - if (pix_fmt == AV_PIX_FMT_GRAY16) - return 0; - - component_plane = desc->comp[0].plane; - for (i = 1; i < desc->nb_components; i++) - if (component_plane != desc->comp[i].plane) - return 0; - return 1; -} - -static inline void libopenjpeg_copy_to_packed8(AVFrame *picture, opj_image_t *image) { - uint8_t *img_ptr; - int index, x, y, c; - for (y = 0; y < picture->height; y++) { - index = y * picture->width; - img_ptr = picture->data[0] + y * picture->linesize[0]; - for (x = 0; x < picture->width; x++, index++) - for (c = 0; c < image->numcomps; c++) - *img_ptr++ = 0x80 * image->comps[c].sgnd + image->comps[c].data[index]; - } -} - -static inline void libopenjpeg_copy_to_packed16(AVFrame *picture, opj_image_t *image) { - uint16_t *img_ptr; - const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(picture->format); - int index, x, y, c; - int adjust[4]; - for (x = 0; x < image->numcomps; x++) - adjust[x] = FFMAX(FFMIN(desc->comp[x].depth - image->comps[x].prec, 8), 0) + desc->comp[x].shift; - - for (y = 0; y < picture->height; y++) { - index = y * picture->width; - img_ptr = (uint16_t *) (picture->data[0] + y * picture->linesize[0]); - for (x = 0; x < picture->width; x++, index++) - for (c = 0; c < image->numcomps; c++) - *img_ptr++ = (1 << image->comps[c].prec - 1) * image->comps[c].sgnd + - (unsigned)image->comps[c].data[index] << adjust[c]; - } -} - -static inline void libopenjpeg_copyto8(AVFrame *picture, opj_image_t *image) { - int *comp_data; - uint8_t *img_ptr; - int index, x, y; - - for (index = 0; index < image->numcomps; index++) { - comp_data = image->comps[index].data; - for (y = 0; y < image->comps[index].h; y++) { - img_ptr = picture->data[index] + y * picture->linesize[index]; - for (x = 0; x < image->comps[index].w; x++) { - *img_ptr = 0x80 * image->comps[index].sgnd + *comp_data; - img_ptr++; - comp_data++; - } - } - } -} - -static inline void libopenjpeg_copyto16(AVFrame *picture, opj_image_t *image) { - int *comp_data; - uint16_t *img_ptr; - const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(picture->format); - int index, x, y; - int adjust[4]; - for (x = 0; x < image->numcomps; x++) - adjust[x] = FFMAX(FFMIN(desc->comp[x].depth - image->comps[x].prec, 8), 0) + desc->comp[x].shift; - - for (index = 0; index < image->numcomps; index++) { - comp_data = image->comps[index].data; - for (y = 0; y < image->comps[index].h; y++) { - img_ptr = (uint16_t *)(picture->data[index] + y * picture->linesize[index]); - for (x = 0; x < image->comps[index].w; x++) { - *img_ptr = (1 << image->comps[index].prec - 1) * image->comps[index].sgnd + - (unsigned)*comp_data << adjust[index]; - img_ptr++; - comp_data++; - } - } - } -} - -static av_cold int libopenjpeg_decode_init(AVCodecContext *avctx) -{ - LibOpenJPEGContext *ctx = avctx->priv_data; - - opj_set_default_decoder_parameters(&ctx->dec_params); - return 0; -} - -static int libopenjpeg_decode_frame(AVCodecContext *avctx, AVFrame *picture, - int *got_frame, AVPacket *avpkt) -{ - const uint8_t *buf = avpkt->data; - int buf_size = avpkt->size; - LibOpenJPEGContext *ctx = avctx->priv_data; - const AVPixFmtDescriptor *desc; - int width, height, ret; - int pixel_size = 0; - int ispacked = 0; - int i; - opj_image_t *image = NULL; - BufferReader reader = {0, avpkt->size, avpkt->data}; - opj_codec_t *dec = NULL; - opj_stream_t *stream = NULL; - - *got_frame = 0; - - // Check if input is a raw jpeg2k codestream or in jp2 wrapping - if ((AV_RB32(buf) == 12) && - (AV_RB32(buf + 4) == JP2_SIG_TYPE) && - (AV_RB32(buf + 8) == JP2_SIG_VALUE)) { - dec = opj_create_decompress(OPJ_CODEC_JP2); - } else { - /* If the AVPacket contains a jp2c box, then skip to - * the starting byte of the codestream. */ - if (AV_RB32(buf + 4) == AV_RB32("jp2c")) - buf += 8; - dec = opj_create_decompress(OPJ_CODEC_J2K); - } - - if (!dec) { - av_log(avctx, AV_LOG_ERROR, "Error initializing decoder.\n"); - ret = AVERROR_EXTERNAL; - goto done; - } - - if (!opj_set_error_handler(dec, error_callback, avctx) || - !opj_set_warning_handler(dec, warning_callback, avctx) || - !opj_set_info_handler(dec, info_callback, avctx)) { - av_log(avctx, AV_LOG_ERROR, "Error setting decoder handlers.\n"); - ret = AVERROR_EXTERNAL; - goto done; - } - - ctx->dec_params.cp_layer = ctx->lowqual; - ctx->dec_params.cp_reduce = avctx->lowres; - - // Tie decoder with decoding parameters - opj_setup_decoder(dec, &ctx->dec_params); - - stream = opj_stream_default_create(OPJ_STREAM_READ); - - if (!stream) { - av_log(avctx, AV_LOG_ERROR, - "Codestream could not be opened for reading.\n"); - ret = AVERROR_EXTERNAL; - goto done; - } - - opj_stream_set_read_function(stream, stream_read); - opj_stream_set_skip_function(stream, stream_skip); - opj_stream_set_seek_function(stream, stream_seek); - opj_stream_set_user_data(stream, &reader, NULL); - opj_stream_set_user_data_length(stream, avpkt->size); - // Decode the header only. - ret = !opj_read_header(stream, dec, &image); - - if (ret) { - av_log(avctx, AV_LOG_ERROR, "Error decoding codestream header.\n"); - ret = AVERROR_EXTERNAL; - goto done; - } - - width = image->x1 - image->x0; - height = image->y1 - image->y0; - - ret = ff_set_dimensions(avctx, width, height); - if (ret < 0) - 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; - - if (avctx->pix_fmt == AV_PIX_FMT_NONE) - avctx->pix_fmt = libopenjpeg_guess_pix_fmt(image); - - if (avctx->pix_fmt == AV_PIX_FMT_NONE) { - av_log(avctx, AV_LOG_ERROR, "Unable to determine pixel format.\n"); - ret = AVERROR_UNKNOWN; - goto done; - } - for (i = 0; i < image->numcomps; i++) - if (image->comps[i].prec > avctx->bits_per_raw_sample) - avctx->bits_per_raw_sample = image->comps[i].prec; - - 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); - - switch (pixel_size) { - case 1: - if (ispacked) { - libopenjpeg_copy_to_packed8(picture, image); - } else { - libopenjpeg_copyto8(picture, image); - } - break; - case 2: - if (ispacked) { - libopenjpeg_copy_to_packed8(picture, image); - } else { - libopenjpeg_copyto16(picture, image); - } - break; - case 3: - case 4: - if (ispacked) { - libopenjpeg_copy_to_packed8(picture, image); - } - break; - case 6: - case 8: - if (ispacked) { - libopenjpeg_copy_to_packed16(picture, image); - } - break; - default: - avpriv_report_missing_feature(avctx, "Pixel size %d", pixel_size); - ret = AVERROR_PATCHWELCOME; - goto done; - } - - *got_frame = 1; - picture->pict_type = AV_PICTURE_TYPE_I; - picture->key_frame = 1; - ret = buf_size; - -done: - opj_image_destroy(image); - opj_stream_destroy(stream); - opj_destroy_codec(dec); - return ret; -} - -#define OFFSET(x) offsetof(LibOpenJPEGContext, x) -#define VD AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_DECODING_PARAM - -static const AVOption options[] = { - { "lowqual", "Limit the number of layers used for decoding", - OFFSET(lowqual), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, INT_MAX, VD }, - { NULL }, -}; - -static const AVClass openjpeg_class = { - .class_name = "libopenjpeg", - .item_name = av_default_item_name, - .option = options, - .version = LIBAVUTIL_VERSION_INT, -}; - -const FFCodec ff_libopenjpeg_decoder = { - .p.name = "libopenjpeg", - CODEC_LONG_NAME("OpenJPEG JPEG 2000"), - .p.type = AVMEDIA_TYPE_VIDEO, - .p.id = AV_CODEC_ID_JPEG2000, - .p.capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS, - .p.max_lowres = 31, - .p.priv_class = &openjpeg_class, - .p.wrapper_name = "libopenjpeg", - .caps_internal = FF_CODEC_CAP_NOT_INIT_THREADSAFE, - .priv_data_size = sizeof(LibOpenJPEGContext), - .init = libopenjpeg_decode_init, - FF_CODEC_DECODE_CB(libopenjpeg_decode_frame), -};