From patchwork Sat Mar 27 23:35:58 2021 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Carl Eugen Hoyos X-Patchwork-Id: 26628 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 98CC344BA7E for ; Sun, 28 Mar 2021 01:59:16 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7176E689BD5; Sun, 28 Mar 2021 01:59:16 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-pg1-f180.google.com (mail-pg1-f180.google.com [209.85.215.180]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6C0C5687FA1 for ; Sun, 28 Mar 2021 01:59:09 +0200 (EET) Received: by mail-pg1-f180.google.com with SMTP id m7so7026177pgj.8 for ; Sat, 27 Mar 2021 16:59:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=luU+wblzE++Qkd8MNdaPNNPHSgG4J8hhotFs2yFDahs=; b=jFhz0B/3y6fay0nzLrQQQ3dPD+QCwkYuz2TkZEYeqQMf+9FhW2nD6xcKILZ17fyO+4 m+nNB/RmVvAcGw8kSFsJmEqCY9islk1izmHF1bhCBbRcI3UnZtgreL+ACPg1rPzTPNbb WOy5/TG+nGqpAiwZo+BOjehhWYteGfUwycvdao+1faUtldMCUJorCsdMcPXcy0zXIORB iygGxJ7Hf7vXht9WBTIZl4oRQuLgcos4L5/bOchdbk4d67PGcArWpNc3oXLIjUI30GM8 3aegeU0zIEXrDheEa4a0eq/uTh1ZPrQ8rs4GxrNQTXlJKEMMdx5Pf1SoiyhqPjI9sVJo k6Bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=luU+wblzE++Qkd8MNdaPNNPHSgG4J8hhotFs2yFDahs=; b=YELB8c1IlMw6mtgGCYhSNhjG+P6e8eYVq3hrfpzdeXVJH7KjFF+yjKapFC99pjK5Uu oMTLamKQi/9YzbfilDKwkTub7AvFmLc9NypT+1O+/9rzBdZApYI1zqIrvZ+NAKyLx0LA lXxh57Za/vXD0wvMZVtQ4W+wHpeWeep+4LnaoiA8ShnjZJK1aNWbYeDVxfetKgRB0PSm VaU6EZcdx7pU8FzQPSs157QtyWii0WWmmAEI5Rpwjgx4+RYUgDXRFbnOSoovW0jy9E3n zZ+gSIxZd09nJRbCkPzNOyeIFuh2AFarytztcyuD70Kz70ZetpuwWFMoIZP21CsHmqeE +7XQ== X-Gm-Message-State: AOAM532z6Pn4BP4t28NoeVZ2a3F2ehK/howM/9VKLFRK5rjyv3Nbo/jA 4pDDmLselEjzXEmZHe5rsVcRsDIVHM2bH6uRAltB3UY/ltQ+XA== X-Google-Smtp-Source: ABdhPJypS81L91BgfM2WblwkFAG2i/VqvBnSSy8kqjn/zxzlA/gPjOq4PILh7/8gxQ7GJUaixw2zt5YocO7B3PLk/qI= X-Received: by 2002:a65:5a0a:: with SMTP id y10mr17736858pgs.122.1616888169160; Sat, 27 Mar 2021 16:36:09 -0700 (PDT) MIME-Version: 1.0 From: Carl Eugen Hoyos Date: Sun, 28 Mar 2021 00:35:58 +0100 Message-ID: To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH]lavc/mjpegdec: Support pixel format 0x11412100 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Hi! Attached patch fixes decoding of a sample mentioned in ticket #8930. Please comment, Carl Eugen Subject: [PATCH] lavc/mjpegdec: Support pixel format 0x11412100. Fixes decoding of Nene421-rgb.jpg --- libavcodec/mjpegdec.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index 5583d2aa35..3731b2fa1b 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -603,6 +603,19 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s) s->avctx->color_range = s->cs_itu601 ? AVCOL_RANGE_MPEG : AVCOL_RANGE_JPEG; } break; + case 0x11412100: + if (s->bits > 8) + goto unk_pixfmt; + if (s->component_id[0] == 'R' - 1 && s->component_id[1] == 'G' - 1 && s->component_id[2] == 'B' - 1) { + s->avctx->pix_fmt = AV_PIX_FMT_GBRP; + s->upscale_h[0] = 0; + s->upscale_h[1] = 1; + s->upscale_h[2] = 4; + } else { + goto unk_pixfmt; + } + s->avctx->color_range = s->cs_itu601 ? AVCOL_RANGE_MPEG : AVCOL_RANGE_JPEG; + break; case 0x21111100: if (s->component_id[0] == 'Q' && s->component_id[1] == 'F' && s->component_id[2] == 'A') { if (s->bits <= 8) s->avctx->pix_fmt = AV_PIX_FMT_GBRP; @@ -2696,6 +2709,12 @@ the_end: for (index = w - 3; index > 0; index--) { line[index] = (line[index / 3] + line[(index + 1) / 3] + line[(index + 2) / 3] + 1) / 3; } + } else if (s->upscale_h[p] == 4 && w >= 4 && !is16bit){ + line [w - 1] = line [w - 1 >> 2]; + line [w - 2] = line [w - 1 >> 2] * 3 + line [w - 2 >> 2] >> 2; + line [w - 3] = line [w - 1 >> 2] + line [w - 2 >> 2] >> 1; + for (index = w - 4; index > 0; index--) + line[index] = (line[index + 3 >> 2] + line[index + 2 >> 2] + line[index + 1 >> 2] + line[index >> 2]) >> 2; } line += s->linesize[p]; }