From patchwork Sat Oct 3 12:15:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul B Mahol X-Patchwork-Id: 22721 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 BCD80449D02 for ; Sat, 3 Oct 2020 15:15:59 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8674468A0C3; Sat, 3 Oct 2020 15:15:59 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B843D688316 for ; Sat, 3 Oct 2020 15:15:53 +0300 (EEST) Received: by mail-ej1-f46.google.com with SMTP id c22so4007902ejx.0 for ; Sat, 03 Oct 2020 05:15:53 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=pj9MOLTqhSSAb6R2ddUoC9jQFMlBe0PTwkoxvj5xMLM=; b=kiJkfGpsxYOZbHQsiFpyps5YVRL4v42lE/6ZnqZN3zLxeAJdcs78Qm82kmv34aG7i5 k9uBuAeXlbsVr92ZVWCL/sMrs9Ni5ffeQJIpnMbTvz3ieYblnOZ8f2NJ95OtwNME9iUd TJUAzdoyVyQx4V5TOzAKmddC5yWpezaFB7AxXT8bDwJD0RfSENbVszz4+4SLNi8x0/jL 4JT7xTpEsXW/nxg4cmQGkjFhWtBXAYjzX+JJsHlYv3K5r6m1YJcSly+OIEGII92gQmDq colEU/YWnCffdMF2iCX1IofumADG961/RvRr9cvPNn3vdEXBBAJMUteVPTUvYk31q3Mo ivmg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=pj9MOLTqhSSAb6R2ddUoC9jQFMlBe0PTwkoxvj5xMLM=; b=Bwxuu1PkjJuAwLNd+MGUzCIbsB00KPNQOQ4GeCzxTnCPCq+5ZhKm+kAQCDbABZ+tmE u5cFSz8PQs+jWR1dRf0W1ag8NSi9EYwCd47ys1TbhvGZHrE0jsxpAvIke6a2mkZao2sd vJQCpo1uBYWzKvPLXg202yHQBshbEwurcjkhO2A5gLFabf7L85Dt5NoFtxlsg9djXkQc MoqL7ReU1J7SxCWOC0sGrHtTqFe3XynK2DzQLknQeDR7w+jmjIBFgA5GfBU5dVB9LcwU H0PlEz6L4kh0GRz+FpgLkinkIaXFdCvdCY4VHc5cFLvGmhYjbwUfZPVzcxG6E/1ShG+e tVvw== X-Gm-Message-State: AOAM532xcvI3RAWkt52kYI0ih06ptHfY8l8V9DAoCYqwfGwDz60O//Fq QdDOs2StRdKqAMLPKqi8y9aFvJFKxflaPA== X-Google-Smtp-Source: ABdhPJw9dBl4B2xeQHzBshWPLzev8cC1eR8X2AvQKmIUI28NF2kLA0U+eIWre2VTBlCL1U1m2wLtOA== X-Received: by 2002:a17:906:31d4:: with SMTP id f20mr6247990ejf.38.1601727352891; Sat, 03 Oct 2020 05:15:52 -0700 (PDT) Received: from localhost.localdomain ([109.227.50.123]) by smtp.gmail.com with ESMTPSA id r24sm1713893eds.67.2020.10.03.05.15.52 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 03 Oct 2020 05:15:52 -0700 (PDT) From: Paul B Mahol To: ffmpeg-devel@ffmpeg.org Date: Sat, 3 Oct 2020 14:15:44 +0200 Message-Id: <20201003121544.19541-1-onemda@gmail.com> X-Mailer: git-send-email 2.17.1 Subject: [FFmpeg-devel] [PATCH] avcodec/mjpegdec: improve decoding of DNG files 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" That have unused symbols coded in DHT. Signed-off-by: Paul B Mahol --- libavcodec/g2meet.c | 10 +++++----- libavcodec/jpegtables.c | 19 ++++--------------- libavcodec/mjpegdec.c | 21 +++++++++------------ 3 files changed, 18 insertions(+), 32 deletions(-) diff --git a/libavcodec/g2meet.c b/libavcodec/g2meet.c index 7ef275c9fe..c82e3af8f0 100644 --- a/libavcodec/g2meet.c +++ b/libavcodec/g2meet.c @@ -169,11 +169,11 @@ static av_cold int build_vlc(VLC *vlc, const uint8_t *bits_table, ff_mjpeg_build_huffman_codes(huff_size, huff_code, bits_table, val_table); - for (i = 0; i < 256; i++) - huff_sym[i] = i + 16 * is_ac; - - if (is_ac) - huff_sym[0] = 16 * 256; + for (i = 0; i < 256; i++) { + huff_sym[i] = val_table[i] + 16 * is_ac; + if (is_ac && !val_table[i]) + huff_sym[i] = 16 * 256; + } return ff_init_vlc_sparse(vlc, 9, nb_codes, huff_size, 1, 1, huff_code, 2, 2, huff_sym, 2, 2, 0); diff --git a/libavcodec/jpegtables.c b/libavcodec/jpegtables.c index fa5c6f9fc5..0be9619c6e 100644 --- a/libavcodec/jpegtables.c +++ b/libavcodec/jpegtables.c @@ -128,28 +128,17 @@ void ff_mjpeg_build_huffman_codes(uint8_t *huff_size, uint16_t *huff_code, const uint8_t *bits_table, const uint8_t *val_table) { - int i, j, k,nb, code, sym; - - /* 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; + int i, j, k,nb, code; k = 0; code = 0; for(i=1;i<=16;i++) { nb = bits_table[i]; for(j=0;j 256) return AVERROR_INVALIDDATA; - code_max = 0; for (i = 0; i < n; i++) { v = get_bits(&s->gb, 8); - if (v > code_max) - code_max = v; val_table[i] = v; } len -= n; @@ -282,15 +279,15 @@ int ff_mjpeg_decode_dht(MJpegDecodeContext *s) /* build VLC and flush previous vlc if present */ ff_free_vlc(&s->vlcs[class][index]); av_log(s->avctx, AV_LOG_DEBUG, "class=%d index=%d nb_codes=%d\n", - class, index, code_max + 1); + class, index, n + 1); if ((ret = build_vlc(&s->vlcs[class][index], bits_table, val_table, - code_max + 1, 0, class > 0)) < 0) + n + 1, 0, class > 0)) < 0) return ret; if (class > 0) { ff_free_vlc(&s->vlcs[2][index]); if ((ret = build_vlc(&s->vlcs[2][index], bits_table, val_table, - code_max + 1, 0, 0)) < 0) + n + 1, 0, 0)) < 0) return ret; }