From patchwork Wed Sep 27 19:53:54 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul B Mahol X-Patchwork-Id: 43993 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2840052pzh; Wed, 27 Sep 2023 12:54:07 -0700 (PDT) X-Google-Smtp-Source: AGHT+IHPeKnIgY0CwWLco+sl8Ay9E49pePeFZNnBGiX0ZZqdIgk2v/FwWiQCn4uSRfQoz5p7/XOy X-Received: by 2002:a17:907:784d:b0:9ae:3ee3:1f59 with SMTP id lb13-20020a170907784d00b009ae3ee31f59mr2883963ejc.13.1695844446705; Wed, 27 Sep 2023 12:54:06 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1695844446; cv=none; d=google.com; s=arc-20160816; b=iOBm+av2ByhV7jV0Fv+QDmU5gm+EOR70lEQebmhrDmhCPktSauczQe8GGI8ai47FVi HJKcC1BiBXDIfV8IO2n+Y8EXx7VJQrrMV9ubRLCaccpQ/cXuR+lcxIDHJglJskvwHadD yNsWDsB1d2zZM6DiYS5dxdvVNfOk7074tvH1VgVkE9ADGJSPaGQcC+kjEPvsGl5vfdy3 jitExri2Nfuodbn1HcUiEQjdBzFbCfN5rGXxL5YW/RMg0iVQGxRuX5WPBtn/RiZtKcZS iS/+BXCpf4XbUgNgxOuEgbceqFMnKSJGKef/Sw8YP1kmoE8xEi9hUPdqkY0CMEQI+eku Z+DA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; 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=yoTtgvd3r+G7US+h0CpwKBaSU5IsnxjsLg7jCKhqE5c=; fh=e5zN9xSzcxLA6bGo3lF+CqTbY/oLwzApV03EO/RBfgQ=; b=s9Ry1Hig6wYoHjJ+XuLzUjvwHKw0UnZfgooPRnWLIINxQoD/Wkp/62xkqSEHitgAK3 At0FemnRWgzXZQYQrW+IZPHa+aHZDLm9Gq+qwOnuJ573bwn2ToxK/V8yafmJ12U/xJIR kPeyqV1xW4dInSKvXHvMLwkEAjZR3PpPCiSjbckkI16zux5bu2rouNLvZ6jrtHmMOAPT 3lKc2g5h42ErnZK8g9zTo0VhtGz2oyYqjL19Wej37ziOUBnxzMEmpDAxvbYp3nd2pz/Z AwbDKUayqjOp0KBFASDNaTosah4dWAo2q97rcnqE1sVfoQIjYXeuAwbO8iUrbWzhkcV/ RCyw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=gRmJj7Ao; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id h20-20020a170906855400b00991cb7517bbsi13924753ejy.947.2023.09.27.12.54.05; Wed, 27 Sep 2023 12:54:06 -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=gRmJj7Ao; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8EAD468CB3D; Wed, 27 Sep 2023 22:54:03 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-vs1-f50.google.com (mail-vs1-f50.google.com [209.85.217.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DBB5668CA62 for ; Wed, 27 Sep 2023 22:53:56 +0300 (EEST) Received: by mail-vs1-f50.google.com with SMTP id ada2fe7eead31-45281e0b1cbso5631469137.0 for ; Wed, 27 Sep 2023 12:53:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1695844435; x=1696449235; darn=ffmpeg.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=ad7DEyvu619YzaFEG/RRAigewNAAKrnMNhcHDbMtpYY=; b=gRmJj7Ao44FwpRxW8YIoAXYqhci5Qelqlj0WLaLa5IJN/hq+ZWt337jb1kJp3adzl7 Wrf1xRCZ/tBdD5HaP4aETKKFVVmGvP9noJcUHNHv0epyiJ9+a122NJJvnhfjVRUJjaJn e7fOB2yWz9Us3cAv06NLNj5hjOgVGwa+/RLzPs+kajWVpKtP9EK5qYXyGW42M99XDxrf UsTKt4MyTpdDJvXSi1lzj1mrjWcir8QGWQS1SOTLWG6DLrl6hYdo+B4JCp9LmyOE+pQw ElbaTRD5rLsiKF1g/Fz3BSSlSSKuoQiMgpSrcE5L7/4vXUcvHmKDk/JjTwiDMYPh3EKz Aqcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1695844435; x=1696449235; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=ad7DEyvu619YzaFEG/RRAigewNAAKrnMNhcHDbMtpYY=; b=fFYnY+mEgZAXvbDOSsOXgvrQJYWq/mjmUCpo9RHEZZfy8r8NAQM0MR5HzGo6h2LUis YRai4UYjiUhU8OtVjq8cPG6PqeZRYZa3ybTJI6jT0fK0fIauB/kEJKz71EkPaGfMAdwB Pfe3wWkKJKX6wLuOLulwWy/FBb8BRQdXAltmtyPV04dbLNRTR3WwJ4dJ82RiNCO+1PCk pF9rgo8c0fnlSM7xu/MpboeH/bBfBzAxOHa7Y1YDHrtlyLvcKxKLTtla39KzdtKUXxug U+zcozBfjgZtsUgVYRMExg0wPv8kBscjbWj0VidCRqm0E67bMQQybtHewET19/4MpJwO ffxw== X-Gm-Message-State: AOJu0Yy+quXP8sjxfnJMRaSnGzCyZNxE5Zr2yhpZQ/6xiUlu3a98uRl6 hCDYy+PitAQ5mwz3fvT5psP7iqy5gka2fB3H6hT7PeCALK4= X-Received: by 2002:a67:eb01:0:b0:452:58a1:112 with SMTP id a1-20020a67eb01000000b0045258a10112mr3031894vso.3.1695844435185; Wed, 27 Sep 2023 12:53:55 -0700 (PDT) MIME-Version: 1.0 Received: by 2002:a59:b7a8:0:b0:405:b46f:a850 with HTTP; Wed, 27 Sep 2023 12:53:54 -0700 (PDT) From: Paul B Mahol Date: Wed, 27 Sep 2023 21:53:54 +0200 Message-ID: To: FFmpeg development discussions and patches Subject: [FFmpeg-devel] [PATCH] avcodec/photocd: allow decoding vlc with errors 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: oc5u3ZpCGbiw Attached. From 6b7e51e2b4facead9c45fb94647c85b58e6fdf22 Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Wed, 27 Sep 2023 21:48:49 +0200 Subject: [PATCH] avcodec/photocd: allow decoding vlc with errors Also rename option that no longer works. Also make tables finding more robust. Signed-off-by: Paul B Mahol --- libavcodec/photocd.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/libavcodec/photocd.c b/libavcodec/photocd.c index 07e8d460bd..a9e42bb86a 100644 --- a/libavcodec/photocd.c +++ b/libavcodec/photocd.c @@ -277,8 +277,6 @@ static av_noinline int decode_huff(AVCodecContext *avctx, AVFrame *frame, if (get_bits_left(&g) <= 0) return AVERROR_INVALIDDATA; m = get_vlc2(&g, s->vlc[idx].table, s->vlc[idx].bits, 2); - if (m < 0) - return AVERROR_INVALIDDATA; m = sign_extend(m, 8); data[x] = av_clip_uint8(data[x] + m); } @@ -389,6 +387,7 @@ static int photocd_decode_frame(AVCodecContext *avctx, AVFrame *p, return AVERROR_INVALIDDATA; if (s->resolution == 4) { + s->streampos = (AV_RB16(avpkt->data + 2048 + 1536 + 3) + 12) * 2048; interp_pixels(ptr, p->linesize[0], img_info[4].width, img_info[4].height); interp_lines (ptr, p->linesize[0], img_info[4].width, img_info[4].height); @@ -396,7 +395,7 @@ static int photocd_decode_frame(AVCodecContext *avctx, AVFrame *p, if ((ret = read_hufftable(avctx, &s->vlc[n])) < 0) return ret; } - s->streampos = (s->streampos + 2047) & ~0x3ff; + s->streampos = (AV_RB16(avpkt->data + 2048 + 1536 + 3) + 14) * 2048; if (decode_huff(avctx, p, 4, 4) < 0) return AVERROR_INVALIDDATA; } @@ -447,7 +446,7 @@ static av_cold int photocd_decode_close(AVCodecContext *avctx) #define VD AV_OPT_FLAG_VIDEO_PARAM | AV_OPT_FLAG_DECODING_PARAM static const AVOption options[] = { - { "lowres", "Lower the decoding resolution by a power of two", + { "reduction", "Lower the decoding resolution by a power of two", OFFSET(lowres), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 4, VD }, { NULL }, }; -- 2.42.0