From patchwork Tue Nov 10 10:48:26 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 23563 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 B181244B922 for ; Tue, 10 Nov 2020 13:11:01 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9277A68BFA0; Tue, 10 Nov 2020 12:51:02 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f66.google.com (mail-wm1-f66.google.com [209.85.128.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 84C4868BF0C for ; Tue, 10 Nov 2020 12:50:47 +0200 (EET) Received: by mail-wm1-f66.google.com with SMTP id h2so2545030wmm.0 for ; Tue, 10 Nov 2020 02:50:47 -0800 (PST) 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:reply-to :mime-version:content-transfer-encoding; bh=Rf5ix6JEVS3caUukrTMhNiloUk0B0iLJVfJ19E/qJDI=; b=gYM156rvexQ5wZ9EDrc9Tf4UzEa0yAk/3BnjhbEU32rA0FY7iFDo8gtjxJhock4Uz5 uJ4NTWUGqwNhYqxtb3/rh9+u/V11TWDr7cD81GPeuzDf6Y8A9LOkjM+gST4cYKhXDxgX 4AHxm6wBAXo/ANPb2h9GeVAnfRsTzQPtrFd6LvLUJ5BedL1IvcFHoWgKMVkzB/o8JcbZ 4OZatFkwoi7/uu6u4+/2b2IvPYvsFB4xo7HybI1Kbfw0OJWS5IFa99e3SqaZ/hWH5kHM HfbrVjmpp8I8mX9BA1T43Wwv+P/sQZnj5PJy4PQv60bA9dpa85e1kp39nNW9ji+9wM4p Xtcw== 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:reply-to:mime-version:content-transfer-encoding; bh=Rf5ix6JEVS3caUukrTMhNiloUk0B0iLJVfJ19E/qJDI=; b=eTQsYg/x1CCGBbYuEJT22GYA+nqRNpvrNS6er8E5mloux/KdwjIuKkkKV7sdSR2VG3 rk3WJagWQfCDdaGfFuxIR8kMup6I+jEu/LlG8DVvBTWRQvQK8HfSTyTunbitaJ1vQNO5 13q58oz8FWKNB16PIfhiCaCVgqtKpjS+bMynAG5Qx3yKbWNM3KEPhnEoSGpNY7XEXZ9l ZyMqdtCXC1Vm9YwVFHM+EZCoWwzYKvPwrwJHhgO3sxETkbPEc/BXszaAV30Ul8BJkdA2 Wejtq2zCALYKBhKJv0PJEzzERbRvYntFZ8DYGFLN2XbSzGCyKCEIdfD8L+xpKRuLdrkr 6zMA== X-Gm-Message-State: AOAM533vHMuO6O/C1+N5ZZbk3iiZYqRq+05XP2gSJpL9psCcsq4L5piV bDLo61oABtO5aPEEqfmoKSS9NlUkCb0= X-Google-Smtp-Source: ABdhPJxtSAeWTGogb60pPNO8zO0f8z+YOckw/fKqcLq8l2XwmY2g2oETzbohDctDjgXgOWGbXJGkoA== X-Received: by 2002:a05:600c:4147:: with SMTP id h7mr3858476wmm.146.1605005446599; Tue, 10 Nov 2020 02:50:46 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id l24sm2572543wmi.7.2020.11.10.02.50.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Nov 2020 02:50:46 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 10 Nov 2020 11:48:26 +0100 Message-Id: <20201110104851.321029-90-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201110104851.321029-1-andreas.rheinhardt@gmail.com> References: <20201110104851.321029-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 089/114] avcodec/atrac9dec: Don't confuse max_depth of VLC with max codelength 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" The whole point of VLCs with their tables is to read more than one bit at a time; therefore max_depth, the number of times one has to (maximally) read further bits is given by ceil(max_code_length / table_bits) which in the case of ATRAC9's coefficient VLCs gives an upper bound of two. Instead the maximum length of a code of the given VLC has been used (which is not even a compile-time constant). Use two instead. Furthermore, given that this was the only usage of the field containing the maximum of all the code lengths of a given VLC the field has been removed from its containing struct. Signed-off-by: Andreas Rheinhardt --- libavcodec/atrac9dec.c | 2 +- libavcodec/atrac9tab.h | 105 ++++++++++++++++++++--------------------- 2 files changed, 53 insertions(+), 54 deletions(-) diff --git a/libavcodec/atrac9dec.c b/libavcodec/atrac9dec.c index 075d610e75..a1af3c22ef 100644 --- a/libavcodec/atrac9dec.c +++ b/libavcodec/atrac9dec.c @@ -411,7 +411,7 @@ static inline void read_coeffs_coarse(ATRAC9Context *s, ATRAC9BlockData *b, const int groups = bands >> huff->value_cnt_pow; for (int j = 0; j < groups; j++) { - uint16_t val = get_vlc2(gb, tab->table, 9, huff->max_bit_size); + uint16_t val = get_vlc2(gb, tab->table, 9, 2); for (int k = 0; k < huff->value_cnt; k++) { coeffs[k] = sign_extend(val, huff->value_bits); diff --git a/libavcodec/atrac9tab.h b/libavcodec/atrac9tab.h index 8f290f158c..c25d0e2744 100644 --- a/libavcodec/atrac9tab.h +++ b/libavcodec/atrac9tab.h @@ -476,26 +476,25 @@ typedef struct HuffmanCodebook { const int value_cnt; const int value_cnt_pow; const int value_bits; - const int max_bit_size; } HuffmanCodebook; static const HuffmanCodebook at9_huffman_sf_unsigned[] = { { 0 }, - { huff_sfb_a1_bits, huff_sfb_a1_codes, 2, 1, 0, 1, 1, }, - { huff_sfb_a2_bits, huff_sfb_a2_codes, 4, 1, 0, 2, 3, }, - { huff_sfb_a3_bits, huff_sfb_a3_codes, 8, 1, 0, 3, 6, }, - { huff_sfb_a4_bits, huff_sfb_a4_codes, 16, 1, 0, 4, 8, }, - { huff_sfb_a5_bits, huff_sfb_a5_codes, 32, 1, 0, 5, 8, }, - { huff_sfb_a6_bits, huff_sfb_a6_codes, 64, 1, 0, 6, 8, }, + { huff_sfb_a1_bits, huff_sfb_a1_codes, 2, 1, 0, 1 }, + { huff_sfb_a2_bits, huff_sfb_a2_codes, 4, 1, 0, 2 }, + { huff_sfb_a3_bits, huff_sfb_a3_codes, 8, 1, 0, 3 }, + { huff_sfb_a4_bits, huff_sfb_a4_codes, 16, 1, 0, 4 }, + { huff_sfb_a5_bits, huff_sfb_a5_codes, 32, 1, 0, 5 }, + { huff_sfb_a6_bits, huff_sfb_a6_codes, 64, 1, 0, 6 }, }; static const HuffmanCodebook at9_huffman_sf_signed[] = { { 0 }, { 0 }, - { huff_sfb_b2_bits, huff_sfb_b2_codes, 4, 1, 0, 2, 2, }, - { huff_sfb_b3_bits, huff_sfb_b3_codes, 8, 1, 0, 3, 6, }, - { huff_sfb_b4_bits, huff_sfb_b4_codes, 16, 1, 0, 4, 8, }, - { huff_sfb_b5_bits, huff_sfb_b5_codes, 32, 1, 0, 5, 8, }, + { huff_sfb_b2_bits, huff_sfb_b2_codes, 4, 1, 0, 2 }, + { huff_sfb_b3_bits, huff_sfb_b3_codes, 8, 1, 0, 3 }, + { huff_sfb_b4_bits, huff_sfb_b4_codes, 16, 1, 0, 4 }, + { huff_sfb_b5_bits, huff_sfb_b5_codes, 32, 1, 0, 5 }, }; static const uint8_t huff_spec_a21_bits[] = { @@ -1539,40 +1538,40 @@ static const HuffmanCodebook at9_huffman_coeffs[][8][4] = { { { 0 } }, { { 0 } }, { - { huff_spec_a21_bits, huff_spec_a21_codes, 16, 2, 1, 2, 3, }, - { huff_spec_a22_bits, huff_spec_a22_codes, 256, 4, 2, 2, 8, }, - { huff_spec_a23_bits, huff_spec_a23_codes, 256, 4, 2, 2, 9, }, - { huff_spec_a24_bits, huff_spec_a24_codes, 256, 4, 2, 2, 10, }, + { huff_spec_a21_bits, huff_spec_a21_codes, 16, 2, 1, 2 }, + { huff_spec_a22_bits, huff_spec_a22_codes, 256, 4, 2, 2 }, + { huff_spec_a23_bits, huff_spec_a23_codes, 256, 4, 2, 2 }, + { huff_spec_a24_bits, huff_spec_a24_codes, 256, 4, 2, 2 }, }, { - { huff_spec_a31_bits, huff_spec_a31_codes, 64, 2, 1, 3, 7, }, - { huff_spec_a32_bits, huff_spec_a32_codes, 64, 2, 1, 3, 7, }, - { huff_spec_a33_bits, huff_spec_a33_codes, 64, 2, 1, 3, 8, }, - { huff_spec_a34_bits, huff_spec_a34_codes, 64, 2, 1, 3, 10, }, + { huff_spec_a31_bits, huff_spec_a31_codes, 64, 2, 1, 3 }, + { huff_spec_a32_bits, huff_spec_a32_codes, 64, 2, 1, 3 }, + { huff_spec_a33_bits, huff_spec_a33_codes, 64, 2, 1, 3 }, + { huff_spec_a34_bits, huff_spec_a34_codes, 64, 2, 1, 3 }, }, { - { huff_spec_a41_bits, huff_spec_a41_codes, 256, 2, 1, 4, 9, }, - { huff_spec_a42_bits, huff_spec_a42_codes, 256, 2, 1, 4, 10, }, - { huff_spec_a43_bits, huff_spec_a43_codes, 256, 2, 1, 4, 10, }, - { huff_spec_a44_bits, huff_spec_a44_codes, 256, 2, 1, 4, 10, }, + { huff_spec_a41_bits, huff_spec_a41_codes, 256, 2, 1, 4 }, + { huff_spec_a42_bits, huff_spec_a42_codes, 256, 2, 1, 4 }, + { huff_spec_a43_bits, huff_spec_a43_codes, 256, 2, 1, 4 }, + { huff_spec_a44_bits, huff_spec_a44_codes, 256, 2, 1, 4 }, }, { - { huff_spec_a51_bits, huff_spec_a51_codes, 32, 1, 0, 5, 6, }, - { huff_spec_a52_bits, huff_spec_a52_codes, 32, 1, 0, 5, 6, }, - { huff_spec_a53_bits, huff_spec_a53_codes, 32, 1, 0, 5, 7, }, - { huff_spec_a54_bits, huff_spec_a54_codes, 32, 1, 0, 5, 8, }, + { huff_spec_a51_bits, huff_spec_a51_codes, 32, 1, 0, 5 }, + { huff_spec_a52_bits, huff_spec_a52_codes, 32, 1, 0, 5 }, + { huff_spec_a53_bits, huff_spec_a53_codes, 32, 1, 0, 5 }, + { huff_spec_a54_bits, huff_spec_a54_codes, 32, 1, 0, 5 }, }, { - { huff_spec_a61_bits, huff_spec_a61_codes, 64, 1, 0, 6, 7, }, - { huff_spec_a62_bits, huff_spec_a62_codes, 64, 1, 0, 6, 7, }, - { huff_spec_a63_bits, huff_spec_a63_codes, 64, 1, 0, 6, 8, }, - { huff_spec_a64_bits, huff_spec_a64_codes, 64, 1, 0, 6, 9, }, + { huff_spec_a61_bits, huff_spec_a61_codes, 64, 1, 0, 6 }, + { huff_spec_a62_bits, huff_spec_a62_codes, 64, 1, 0, 6 }, + { huff_spec_a63_bits, huff_spec_a63_codes, 64, 1, 0, 6 }, + { huff_spec_a64_bits, huff_spec_a64_codes, 64, 1, 0, 6 }, }, { - { huff_spec_a71_bits, huff_spec_a71_codes, 128, 1, 0, 7, 8, }, - { huff_spec_a72_bits, huff_spec_a72_codes, 128, 1, 0, 7, 8, }, - { huff_spec_a73_bits, huff_spec_a73_codes, 128, 1, 0, 7, 9, }, - { huff_spec_a74_bits, huff_spec_a74_codes, 128, 1, 0, 7, 10, }, + { huff_spec_a71_bits, huff_spec_a71_codes, 128, 1, 0, 7 }, + { huff_spec_a72_bits, huff_spec_a72_codes, 128, 1, 0, 7 }, + { huff_spec_a73_bits, huff_spec_a73_codes, 128, 1, 0, 7 }, + { huff_spec_a74_bits, huff_spec_a74_codes, 128, 1, 0, 7 }, }, }, { @@ -1580,39 +1579,39 @@ static const HuffmanCodebook at9_huffman_coeffs[][8][4] = { { { 0 } }, { { 0 }, - { huff_spec_b22_bits, huff_spec_b22_codes, 256, 4, 2, 2, 10, }, - { huff_spec_b23_bits, huff_spec_b23_codes, 256, 4, 2, 2, 10, }, - { huff_spec_b24_bits, huff_spec_b24_codes, 256, 4, 2, 2, 10, }, + { huff_spec_b22_bits, huff_spec_b22_codes, 256, 4, 2, 2 }, + { huff_spec_b23_bits, huff_spec_b23_codes, 256, 4, 2, 2 }, + { huff_spec_b24_bits, huff_spec_b24_codes, 256, 4, 2, 2 }, }, { { 0 }, - { huff_spec_b32_bits, huff_spec_b32_codes, 64, 2, 1, 3, 9, }, - { huff_spec_b33_bits, huff_spec_b33_codes, 64, 2, 1, 3, 10, }, - { huff_spec_b34_bits, huff_spec_b34_codes, 64, 2, 1, 3, 10, }, + { huff_spec_b32_bits, huff_spec_b32_codes, 64, 2, 1, 3 }, + { huff_spec_b33_bits, huff_spec_b33_codes, 64, 2, 1, 3 }, + { huff_spec_b34_bits, huff_spec_b34_codes, 64, 2, 1, 3 }, }, { { 0 }, - { huff_spec_b42_bits, huff_spec_b42_codes, 256, 2, 1, 4, 10, }, - { huff_spec_b43_bits, huff_spec_b43_codes, 256, 2, 1, 4, 10, }, - { huff_spec_b44_bits, huff_spec_b44_codes, 256, 2, 1, 4, 10, }, + { huff_spec_b42_bits, huff_spec_b42_codes, 256, 2, 1, 4 }, + { huff_spec_b43_bits, huff_spec_b43_codes, 256, 2, 1, 4 }, + { huff_spec_b44_bits, huff_spec_b44_codes, 256, 2, 1, 4 }, }, { { 0 }, - { huff_spec_b52_bits, huff_spec_b52_codes, 32, 1, 0, 5, 7, }, - { huff_spec_b53_bits, huff_spec_b53_codes, 32, 1, 0, 5, 8, }, - { huff_spec_b54_bits, huff_spec_b54_codes, 32, 1, 0, 5, 9, }, + { huff_spec_b52_bits, huff_spec_b52_codes, 32, 1, 0, 5 }, + { huff_spec_b53_bits, huff_spec_b53_codes, 32, 1, 0, 5 }, + { huff_spec_b54_bits, huff_spec_b54_codes, 32, 1, 0, 5 }, }, { { 0 }, - { huff_spec_b62_bits, huff_spec_b62_codes, 64, 1, 0, 6, 8, }, - { huff_spec_b63_bits, huff_spec_b63_codes, 64, 1, 0, 6, 9, }, - { huff_spec_b64_bits, huff_spec_b64_codes, 64, 1, 0, 6, 10, }, + { huff_spec_b62_bits, huff_spec_b62_codes, 64, 1, 0, 6 }, + { huff_spec_b63_bits, huff_spec_b63_codes, 64, 1, 0, 6 }, + { huff_spec_b64_bits, huff_spec_b64_codes, 64, 1, 0, 6 }, }, { { 0 }, - { huff_spec_b72_bits, huff_spec_b72_codes, 128, 1, 0, 7, 9, }, - { huff_spec_b73_bits, huff_spec_b73_codes, 128, 1, 0, 7, 10, }, - { huff_spec_b74_bits, huff_spec_b74_codes, 128, 1, 0, 7, 10, }, + { huff_spec_b72_bits, huff_spec_b72_codes, 128, 1, 0, 7 }, + { huff_spec_b73_bits, huff_spec_b73_codes, 128, 1, 0, 7 }, + { huff_spec_b74_bits, huff_spec_b74_codes, 128, 1, 0, 7 }, }, }, };