From patchwork Sat Aug 10 22:19:25 2019 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: velocityra@gmail.com X-Patchwork-Id: 14394 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 484FA448F16 for ; Sun, 11 Aug 2019 01:20:19 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 313AA68ABD5; Sun, 11 Aug 2019 01:20:19 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f53.google.com (mail-wm1-f53.google.com [209.85.128.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3986768ABBA for ; Sun, 11 Aug 2019 01:20:12 +0300 (EEST) Received: by mail-wm1-f53.google.com with SMTP id s3so8980990wms.2 for ; Sat, 10 Aug 2019 15:20:12 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=dZqAL7T3LB4dZNgMyJvdcoYhO6qjbnyPcWsa+u0mNOI=; b=fnr5uE9w343kH1DmfZAB8uMJ6Dko36pCxF9Udun0brp92FaskTK599kx3aECNdVaCD +rqMYM839axj7d9DYFLVMZ0+DZXZuJCPB+OY85rJaovmZb9gCCfpPDNCUueYiMmSu+Z3 pXLenrY7vZZVCly7iHfzGLbS9WCpsUBvj1348a+/n181Gc1JlT2xjKEePIck327lKwPI b1ut4ZyBwbLgp9oQitpihG9SqdODxh/Lhcv+fktXfd+sxSXKN9FXVKijhHozuHJX2QXy ulBIpN9ILV/o+LpwVpjGM+fFNgRxwPwiShfFnnV1QgrYba3Pz3tT/baJG1CnEycOEUnF YQMg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=dZqAL7T3LB4dZNgMyJvdcoYhO6qjbnyPcWsa+u0mNOI=; b=nzSPD+o8brKkWYtg7+fKatfizz6sBRHvLJxPA50v2TGpNpvZKGhq8J6+2aqRu4vx1x /fZwUuag1ziiqQkCsHXf5IHNqn51BoH9LF+GLqvLg4jI37reLKWVvufoylA4iYHb54tQ l/rRwhH6yO5u23ocJAWAEDascuPoly2x5lXWnVeyDZ2iIren2zv8dzfXX6c/Yb7Vxiou 60BjovtOfGxaB0xQvpnr9NHuTyFA2pXaulbFep2/i8GR0MTudTZnOXlBavRhi9n0TxSi 8XvmqIvFR6VuO8K5QP67V++2JkihrjtbcJT9bod/RM3in7fYDGmrfNSKotCnBdFpus33 vR4g== X-Gm-Message-State: APjAAAVPnU4vn9zntaWZzgnX5kfq1IWykMtuNjFYfbMfozDfRAj84Pie ejO6SE3S+dw1E/bEV2dEazQl9zLbEms= X-Google-Smtp-Source: APXvYqzONkrDkgWhCM575IG7RZWNri2N7scPnWLaWKTsZtm4nSoT4Y8y2IZNXcoDTy8Ex/eXNqHINA== X-Received: by 2002:a1c:c5c2:: with SMTP id v185mr20005262wmf.161.1565475611326; Sat, 10 Aug 2019 15:20:11 -0700 (PDT) Received: from localhost.localdomain ([2a02:587:2409:5200:5c0b:c2fa:5389:82dd]) by smtp.gmail.com with ESMTPSA id q20sm40403233wrc.79.2019.08.10.15.20.10 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Sat, 10 Aug 2019 15:20:10 -0700 (PDT) From: Nick Renieris X-Google-Original-From: Nick Renieris To: ffmpeg-devel@ffmpeg.org Date: Sun, 11 Aug 2019 01:19:25 +0300 Message-Id: <20190810221934.44996-5-velocityra@gmail.com> X-Mailer: git-send-email 2.21.0.windows.1 In-Reply-To: <20190810221934.44996-1-velocityra@gmail.com> References: <20190810221934.44996-1-velocityra@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v13 05/14] lavc/jpegtables: Handle multiple mappings to the same value 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 Cc: Nick Renieris Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Nick Renieris Some JPEGs [1] have incorrect DHT entries that map 2 codes to the same value. The second (last) mapping does not ever actually appear in the code stream, therefore ignoring any mappings after the first one fixes this. Without this, an "mjpeg_decode_dc: bad vlc: 0:0" error is thrown. In all known files, the 2 codes are mapped to symbol 0 so only that case is checked. --- [1]: Embedded JPEGs in "X7 RAW" and "X7 CinemaDNG" samples here: https://www.dji.com/gr/zenmuse-x7/info#downloads Signed-off-by: Nick Renieris --- libavcodec/jpegtables.c | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/libavcodec/jpegtables.c b/libavcodec/jpegtables.c index cbe5523cb4..fa5c6f9fc5 100644 --- a/libavcodec/jpegtables.c +++ b/libavcodec/jpegtables.c @@ -130,14 +130,25 @@ void ff_mjpeg_build_huffman_codes(uint8_t *huff_size, uint16_t *huff_code, { int i, j, k,nb, code, sym; - code = 0; + /* Some badly encoded files [1] map 2 different codes to symbol 0. + Only the first one is valid, so we zero-initialize this here and + make sure we only set it once (the first time) in the loop below. + + [1]: Embedded JPEGs in "X7 RAW" and "X7 CinemaDNG" samples here: + https://www.dji.com/gr/zenmuse-x7/info#downloads + */ + huff_size[0] = 0; + k = 0; + code = 0; for(i=1;i<=16;i++) { nb = bits_table[i]; for(j=0;j