From patchwork Mon Oct 21 18:44:47 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: South East <8billion.people@gmail.com> X-Patchwork-Id: 52442 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:612c:143:b0:48e:c0f8:d0de with SMTP id h3csp3177021vqi; Tue, 22 Oct 2024 00:44:04 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCW+fuCISVk7bT00KJjvUu7MZLw15EIN3MG2jeI6U2o167fF6CVdJrrVBOKerdg9RWdjmVdDCa+6YLckL1lZUZPl@gmail.com X-Google-Smtp-Source: AGHT+IGrz5QdJXwK+POOwpFU3k+xlaF2dcgf5NgbRXk5/1sOwzMAgvSCYpo79r5nqzu1dvcXP/+h X-Received: by 2002:a05:6402:210c:b0:5cb:6272:1447 with SMTP id 4fb4d7f45d1cf-5cb7fce19cbmr1326776a12.8.1729583044311; Tue, 22 Oct 2024 00:44:04 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1729583044; cv=none; d=google.com; s=arc-20240605; b=AapBo7Ha5hpVCfq6wt1iZxH+3tNVBmz82cP9hEnXgfoFtbzZ33MnSzyZ91NkhoCUfs LptLkmmD90j+1612fKekZcUoRaObUQsrCUGTLReXp/oxQHvZfj0FifTIrZKUYVxy4EHh n5YVQGmcXY09lkkrzko3kMgswcW15ecRVi2lQXxeP1cCbr1doPRz5by1l6qYxwI0yXa2 DbKITOyiOhfkzA2tog+lMEaMAojAhoez9H7noQ1HxGFsKxMSUXP3i/hK0/UPpe+HgETl vBi+plo8/xxomkYBbS/dht/21fuQ9gAbdWpbLksUask/+13ZMwDaNKhKsp7u/bDvVq5s rvhg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject:to :message-id:date:from:mime-version:dkim-signature:delivered-to; bh=uMcZDIfc765tbNIFncsguqrD1exKOpK0E7h4NSN5SsA=; fh=YOA8vD9MJZuwZ71F/05pj6KdCjf6jQRmzLS+CATXUQk=; b=WYd4YGwYMBIK1U9bKX/v+aGMwLHGlPiTpaS5gEh6NAz6VTq147uh/y3cIMqFbTICub H9jGRJb+ngoaQnknItJlZl/az949ih8JpqDh2yfSrOKd01Pdt3NAJt/+VbOrwJrKb22P 3NBIxbQd/RHC+xbQ+k+8RthgirO+GWJYhFjWrFDe0aMmhHeEgIDWZfg3FCf8to1W8SCc clWU2Lo2xy/xe6VjAZpl6O09iyzY+5XSlIIuyI9aXkW6+5PVwuF/2N49nWD9H9bR0hcA Gu4ewG5GQ2VtfG42P5V7OpgxhZUSjJsaBcG2V9CxhpI3EhoCogx5qeU/srgwsNFXdvA6 +yCw==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=GBdD0gwJ; 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=gmail.com; dara=fail header.i=@gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id 4fb4d7f45d1cf-5cb66e73dfbsi3957799a12.630.2024.10.22.00.44.03; Tue, 22 Oct 2024 00:44:04 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=GBdD0gwJ; 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=gmail.com; dara=fail header.i=@gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 26B0068DDE5; Mon, 21 Oct 2024 21:45:09 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qt1-f170.google.com (mail-qt1-f170.google.com [209.85.160.170]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E8B3868DCC4 for ; Mon, 21 Oct 2024 21:45:02 +0300 (EEST) Received: by mail-qt1-f170.google.com with SMTP id d75a77b69052e-4603d3e4552so40128101cf.1 for ; Mon, 21 Oct 2024 11:45:02 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1729536301; x=1730141101; darn=ffmpeg.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=iNGLoeuCfWZ4C3zPDRoQ9CaECj9nXuAhuAuY8ZOTEWQ=; b=GBdD0gwJbWN3qoQGrfZA/VMojSTsKGeFsN3k2cYx2EtvEm15DNkxS7V+nIQLBJdRQ+ 9hWFRLS/U+gBmI++TPISDJTwdYDvj4j8OKtAggp5hInaU5N+5BTMZUXXeb68EfOWV3g2 k6S/F+DHKyvD9xuY/uWghqBW3Cu+ZQCMw7nZWvZIj/nCreIVUclhiTUH/6RzGXZHSyUN o09Eur52Ty5h6KMcZbqjkPAoN711TIkHVlDgg8kmywCqfeEMP/MqQCKW5l1h+PozslX7 7JEk+9fLDsaLkVxWsh0zcwt6bRsarWe8anLu1mbom7m39IErcXwePRO511mzkie7kmKL IBrA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1729536301; x=1730141101; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=iNGLoeuCfWZ4C3zPDRoQ9CaECj9nXuAhuAuY8ZOTEWQ=; b=urhUy/H+26Fwx3empxf6jnK02Fhby4kHkwe46KYrzb056WPIxhoaloaeRuRpdID6hZ pa1uGodO9Vooktz32GKYmOor4JVrFhJw+jY7S9yzWQ5lB4THtyGQKEI9Kksi//btGJSy d4gMnK7yeZUx9uA3MXzcUjKcLw9wAZxaSj8c6p3BbrAXuR9skuNXkCRI0qOR6wl/Htoe 86+eDuznjODTSdZ/+WDmj01qwuMWV0UsPCVA05TpZvU2uR/E1xT2D9aXU7WL20dmGrz1 KflZRLwyplbKpD2frE/zoXUFtjrNriX0tsYsgUHnFo/GT4gtDPY8MN1E11hwys7xck+z +/pA== X-Gm-Message-State: AOJu0Yy/psbkHHku+d47Ojq5U5uFWJoduy8W70lXc3Ayw5tzdplqAVjJ jgMleooXqkqX27oacNkcGStgyAqhzLEYX1K56yI4uqZIDDwRRtHQsGcBPPSA/kTAW2LN7I7qLmu yhGbqdl457338dYokod/PDRuvYtQD9g== X-Received: by 2002:a05:622a:1992:b0:460:9ff9:6b45 with SMTP id d75a77b69052e-460aee5f1ddmr178720361cf.60.1729536301494; Mon, 21 Oct 2024 11:45:01 -0700 (PDT) MIME-Version: 1.0 From: South East <8billion.people@gmail.com> Date: Mon, 21 Oct 2024 19:44:47 +0100 Message-ID: To: ffmpeg-devel@ffmpeg.org X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] Add support for LJ92 compressed MLV files 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: 08oOpSqFEbk1 ffmpeg has existing support for MLV raw video files; libavformat/mlvdec.c. Since this was added, MLV has been extended to support LJ92 compressed image data. These patches build on lossless DNG support in 7.2-dev to enable handling LJ92 MLV via existing libavcodec/mjpegdec.c code. I can provide MLV sample files if desired, being raw video these tend to be large. Thanks to JEEB and Lynne for help via IRC. From bda19449cce6ae028ef751f0f4f21da63214ab3f Mon Sep 17 00:00:00 2001 From: stephen-e <33672591+reticulatedpines@users.noreply.github.com> Date: Mon, 21 Oct 2024 16:32:01 +0100 Subject: [PATCH 1/2] avcodec/mjpegdec: set bayer flag based on pix_fmt dng_decode_jpeg() does this directly in tiff.c, this change allows signalling via the pixel format (to support LJ92 compressed raw video in MLV containers, which is the next commit). --- libavcodec/mjpegdec.c | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index 86ec58713c..9c990f3e03 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -409,6 +409,15 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s) return AVERROR_PATCHWELCOME; } + // If the given pixel format is Bayer, set the flag (this makes LJ92 MLV files work) + s->pix_desc = av_pix_fmt_desc_get(s->avctx->pix_fmt); + if (!s->pix_desc) { + av_log(s->avctx, AV_LOG_ERROR, "Could not get a pixel format descriptor.\n"); + return AVERROR_BUG; + } + if (s->pix_desc->flags & AV_PIX_FMT_FLAG_BAYER) + s->bayer = 1; + if (s->bayer) { if (nb_components == 2) { /* Bayer images embedded in DNGs can contain 2 interleaved components and the @@ -718,12 +727,6 @@ int ff_mjpeg_decode_sof(MJpegDecodeContext *s) s->avctx->pix_fmt = AV_PIX_FMT_GRAY16; } - s->pix_desc = av_pix_fmt_desc_get(s->avctx->pix_fmt); - if (!s->pix_desc) { - av_log(s->avctx, AV_LOG_ERROR, "Could not get a pixel format descriptor.\n"); - return AVERROR_BUG; - } - if (s->avctx->pix_fmt == s->hwaccel_sw_pix_fmt && !size_change) { s->avctx->pix_fmt = s->hwaccel_pix_fmt; } else { -- 2.45.2