From patchwork Tue Nov 10 10:47:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 23525 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 5C9B744A917 for ; Tue, 10 Nov 2020 13:00:14 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EAD7C68BEC8; Tue, 10 Nov 2020 12:50:19 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm1-f41.google.com (mail-wm1-f41.google.com [209.85.128.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6BD0468BE78 for ; Tue, 10 Nov 2020 12:50:10 +0200 (EET) Received: by mail-wm1-f41.google.com with SMTP id d142so2521576wmd.4 for ; Tue, 10 Nov 2020 02:50:10 -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=9AA0fxygnUFVe8GHOmzL4Dkaz/c79eU3rfifXo3vUDI=; b=THfb7Go1RY4T/mBRB1EgujgjTWd7DY/oGhVzSw3d0GkqOQ0ZQeKe6bD9oAW7enusDb b7yX7VyM/hLWXYEFM6XTbmTdG/73muDRlIFYIIQOskSTf8zMCmezeddYXWKVM0bLjEsT Y4y0y8hUVdu0i8QoPUYGejaD07fx5KAFWbOgZ5j5SxAbXsFTHJeWQ2yY/fSQ97jewE8F k5Q6ksdFRGU3Af2HGv1kU3BB1Walkg9Uo9SaFJqiBns9g9WxTExX8on4uPIPcWW3JgeM 4RTnlUTOAN3qVkk52v/Q3XdbeD3B71WIRVrX0RcRPnEdxfWH5hnAm8kt7rjT9e5J5niu U6nw== 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=9AA0fxygnUFVe8GHOmzL4Dkaz/c79eU3rfifXo3vUDI=; b=dqvdCsXehbEKhHibZAjmZXFKZS+G+gmsnizuesJycZXi9kFE1JSYxc8dX54IfTZzfK CXE8Hm1abQgxvSjjaU3Q2ZWeG/vDbAwH0GsApc2Qap9PpfAEt+2oX9IoSdLleZuH519q 4njzi2yPsrJUPuNvgJDs58eLIiR0/c4DH9BKwMuNQT3748BJ38Hp7KqQ1vxKmJkP4sKg 4XjP7OanECKfFZAZjR0oxFeyL7qPGxmK7pOlaWyA76zvi+GnPLUVNy0kkMxvs8X3kw3X DseE9cUX0keYwqR5Rt6ro3cHmNwsMJfAOP1yRscYyVyF56czNJH++uDtUlWnP+1cBugu oO+g== X-Gm-Message-State: AOAM533f6hIyJXZJ6Jt8VmaNAMAPplrfm3GFhcwKpcR9ln2zxod/DO/G 2w7Yl+f4lxFr1qHzNcbROSf9LPlPRaE= X-Google-Smtp-Source: ABdhPJzf35MOjN7HDuzcxi/rj3vHoey0OAN00wix4rNmV8SD/ffeML6bOBT9OAg/KSVXXfkExY7hBg== X-Received: by 2002:a1c:df89:: with SMTP id w131mr3884670wmg.164.1605005409494; Tue, 10 Nov 2020 02:50:09 -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.08 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 10 Nov 2020 02:50:08 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Tue, 10 Nov 2020 11:47:47 +0100 Message-Id: <20201110104851.321029-51-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 050/114] avcodec/qdm2_tablegen: Avoid code duplication when creating VLCs 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" Signed-off-by: Andreas Rheinhardt --- libavcodec/qdm2_tablegen.h | 159 +++++++------------------------------ 1 file changed, 27 insertions(+), 132 deletions(-) diff --git a/libavcodec/qdm2_tablegen.h b/libavcodec/qdm2_tablegen.h index 309bb4b53c..0e57902fc9 100644 --- a/libavcodec/qdm2_tablegen.h +++ b/libavcodec/qdm2_tablegen.h @@ -115,145 +115,40 @@ static const uint16_t qdm2_vlc_offs[] = { static VLC_TYPE qdm2_table[3838][2]; -static av_cold void qdm2_init_vlc(void) +static av_cold void build_vlc(VLC *vlc, int nb_bits, int nb_codes, int idx, + const uint8_t tab[][2]) { - vlc_tab_level.table = &qdm2_table[qdm2_vlc_offs[0]]; - vlc_tab_level.table_allocated = qdm2_vlc_offs[1] - qdm2_vlc_offs[0]; - ff_init_vlc_from_lengths(&vlc_tab_level, 8, 24, - &tab_level[0][1], 2, - &tab_level[0][0], 2, 1, 0, - INIT_VLC_USE_NEW_STATIC | INIT_VLC_LE); - - vlc_tab_diff.table = &qdm2_table[qdm2_vlc_offs[1]]; - vlc_tab_diff.table_allocated = qdm2_vlc_offs[2] - qdm2_vlc_offs[1]; - ff_init_vlc_from_lengths(&vlc_tab_diff, 8, 33, - &tab_diff[0][1], 2, - &tab_diff[0][0], 2, 1, 0, - INIT_VLC_USE_NEW_STATIC | INIT_VLC_LE); - - vlc_tab_run.table = &qdm2_table[qdm2_vlc_offs[2]]; - vlc_tab_run.table_allocated = qdm2_vlc_offs[3] - qdm2_vlc_offs[2]; - ff_init_vlc_from_lengths(&vlc_tab_run, 5, 6, - &tab_run[0][1], 2, - &tab_run[0][0], 2, 1, 0, - INIT_VLC_USE_NEW_STATIC | INIT_VLC_LE); - - fft_level_exp_alt_vlc.table = &qdm2_table[qdm2_vlc_offs[3]]; - fft_level_exp_alt_vlc.table_allocated = qdm2_vlc_offs[4] - - qdm2_vlc_offs[3]; - ff_init_vlc_from_lengths(&fft_level_exp_alt_vlc, 8, 28, - &fft_level_exp_alt[0][1], 2, - &fft_level_exp_alt[0][0], 2, 1, 0, - INIT_VLC_USE_NEW_STATIC | INIT_VLC_LE); - - fft_level_exp_vlc.table = &qdm2_table[qdm2_vlc_offs[4]]; - fft_level_exp_vlc.table_allocated = qdm2_vlc_offs[5] - qdm2_vlc_offs[4]; - ff_init_vlc_from_lengths(&fft_level_exp_vlc, 8, 20, - &fft_level_exp[0][1], 2, - &fft_level_exp[0][0], 2, 1, 0, - INIT_VLC_USE_NEW_STATIC | INIT_VLC_LE); - - fft_stereo_exp_vlc.table = &qdm2_table[qdm2_vlc_offs[5]]; - fft_stereo_exp_vlc.table_allocated = qdm2_vlc_offs[6] - - qdm2_vlc_offs[5]; - ff_init_vlc_from_lengths(&fft_stereo_exp_vlc, 6, 7, - &fft_stereo_exp[0][1], 2, - &fft_stereo_exp[0][0], 2, 1, 0, - INIT_VLC_USE_NEW_STATIC | INIT_VLC_LE); - - fft_stereo_phase_vlc.table = &qdm2_table[qdm2_vlc_offs[6]]; - fft_stereo_phase_vlc.table_allocated = qdm2_vlc_offs[7] - - qdm2_vlc_offs[6]; - ff_init_vlc_from_lengths(&fft_stereo_phase_vlc, 6, 9, - &fft_stereo_phase[0][1], 2, - &fft_stereo_phase[0][0], 2, 1, 0, - INIT_VLC_USE_NEW_STATIC | INIT_VLC_LE); - - vlc_tab_tone_level_idx_hi1.table = - &qdm2_table[qdm2_vlc_offs[7]]; - vlc_tab_tone_level_idx_hi1.table_allocated = qdm2_vlc_offs[8] - - qdm2_vlc_offs[7]; - ff_init_vlc_from_lengths(&vlc_tab_tone_level_idx_hi1, 8, 20, - &tab_tone_level_idx_hi1[0][1], 2, - &tab_tone_level_idx_hi1[0][0], 2, 1, 0, - INIT_VLC_USE_NEW_STATIC | INIT_VLC_LE); - - vlc_tab_tone_level_idx_mid.table = - &qdm2_table[qdm2_vlc_offs[8]]; - vlc_tab_tone_level_idx_mid.table_allocated = qdm2_vlc_offs[9] - - qdm2_vlc_offs[8]; - ff_init_vlc_from_lengths(&vlc_tab_tone_level_idx_mid, 8, 13, - &tab_tone_level_idx_mid[0][1], 2, - &tab_tone_level_idx_mid[0][0], 2, 1, 0, - INIT_VLC_USE_NEW_STATIC | INIT_VLC_LE); - - vlc_tab_tone_level_idx_hi2.table = - &qdm2_table[qdm2_vlc_offs[9]]; - vlc_tab_tone_level_idx_hi2.table_allocated = qdm2_vlc_offs[10] - - qdm2_vlc_offs[9]; - ff_init_vlc_from_lengths(&vlc_tab_tone_level_idx_hi2, 8, 18, - &tab_tone_level_idx_hi2[0][1], 2, - &tab_tone_level_idx_hi2[0][0], 2, 1, 0, - INIT_VLC_USE_NEW_STATIC | INIT_VLC_LE); - - vlc_tab_type30.table = &qdm2_table[qdm2_vlc_offs[10]]; - vlc_tab_type30.table_allocated = qdm2_vlc_offs[11] - qdm2_vlc_offs[10]; - ff_init_vlc_from_lengths(&vlc_tab_type30, 6, 9, - &tab_type30[0][1], 2, - &tab_type30[0][0], 2, 1, 0, - INIT_VLC_USE_NEW_STATIC | INIT_VLC_LE); + vlc->table = &qdm2_table[qdm2_vlc_offs[idx]]; + vlc->table_allocated = qdm2_vlc_offs[idx + 1] - qdm2_vlc_offs[idx]; + ff_init_vlc_from_lengths(vlc, nb_bits, nb_codes, + &tab[0][1], 2, &tab[0][0], 2, 1, + 0, INIT_VLC_USE_NEW_STATIC | INIT_VLC_OUTPUT_LE); +} - vlc_tab_type34.table = &qdm2_table[qdm2_vlc_offs[11]]; - vlc_tab_type34.table_allocated = qdm2_vlc_offs[12] - qdm2_vlc_offs[11]; - ff_init_vlc_from_lengths(&vlc_tab_type34, 5, 10, - &tab_type34[0][1], 2, - &tab_type34[0][0], 2, 1, 0, - INIT_VLC_USE_NEW_STATIC | INIT_VLC_LE); +static av_cold void qdm2_init_vlc(void) +{ + build_vlc(&vlc_tab_level, 8, 24, 0, tab_level); + build_vlc(&vlc_tab_diff, 8, 33, 1, tab_diff); + build_vlc(&vlc_tab_run, 5, 6, 2, tab_run); - vlc_tab_fft_tone_offset[0].table = - &qdm2_table[qdm2_vlc_offs[12]]; - vlc_tab_fft_tone_offset[0].table_allocated = qdm2_vlc_offs[13] - - qdm2_vlc_offs[12]; - ff_init_vlc_from_lengths(&vlc_tab_fft_tone_offset[0], 8, 23, - &tab_fft_tone_offset_0[0][1], 2, - &tab_fft_tone_offset_0[0][0], 2, 1, 0, - INIT_VLC_USE_NEW_STATIC | INIT_VLC_LE); + build_vlc(&fft_level_exp_alt_vlc, 8, 28, 3, fft_level_exp_alt); + build_vlc(&fft_level_exp_vlc, 8, 20, 4, fft_level_exp); - vlc_tab_fft_tone_offset[1].table = - &qdm2_table[qdm2_vlc_offs[13]]; - vlc_tab_fft_tone_offset[1].table_allocated = qdm2_vlc_offs[14] - - qdm2_vlc_offs[13]; - ff_init_vlc_from_lengths(&vlc_tab_fft_tone_offset[1], 8, 28, - &tab_fft_tone_offset_1[0][1], 2, - &tab_fft_tone_offset_1[0][0], 2, 1, 0, - INIT_VLC_USE_NEW_STATIC | INIT_VLC_LE); + build_vlc(&fft_stereo_exp_vlc, 6, 7, 5, fft_stereo_exp); + build_vlc(&fft_stereo_phase_vlc, 6, 9, 6, fft_stereo_phase); - vlc_tab_fft_tone_offset[2].table = - &qdm2_table[qdm2_vlc_offs[14]]; - vlc_tab_fft_tone_offset[2].table_allocated = qdm2_vlc_offs[15] - - qdm2_vlc_offs[14]; - ff_init_vlc_from_lengths(&vlc_tab_fft_tone_offset[2], 8, 31, - &tab_fft_tone_offset_2[0][1], 2, - &tab_fft_tone_offset_2[0][0], 2, 1, 0, - INIT_VLC_USE_NEW_STATIC | INIT_VLC_LE); + build_vlc(&vlc_tab_tone_level_idx_hi1, 8, 20, 7, tab_tone_level_idx_hi1); + build_vlc(&vlc_tab_tone_level_idx_mid, 8, 13, 8, tab_tone_level_idx_mid); + build_vlc(&vlc_tab_tone_level_idx_hi2, 8, 18, 9, tab_tone_level_idx_hi2); - vlc_tab_fft_tone_offset[3].table = - &qdm2_table[qdm2_vlc_offs[15]]; - vlc_tab_fft_tone_offset[3].table_allocated = qdm2_vlc_offs[16] - - qdm2_vlc_offs[15]; - ff_init_vlc_from_lengths(&vlc_tab_fft_tone_offset[3], 8, 34, - &tab_fft_tone_offset_3[0][1], 2, - &tab_fft_tone_offset_3[0][0], 2, 1, 0, - INIT_VLC_USE_NEW_STATIC | INIT_VLC_LE); + build_vlc(&vlc_tab_type30, 6, 9, 10, tab_type30); + build_vlc(&vlc_tab_type34, 5, 10, 11, tab_type34); - vlc_tab_fft_tone_offset[4].table = - &qdm2_table[qdm2_vlc_offs[16]]; - vlc_tab_fft_tone_offset[4].table_allocated = qdm2_vlc_offs[17] - - qdm2_vlc_offs[16]; - ff_init_vlc_from_lengths(&vlc_tab_fft_tone_offset[4], 8, 37, - &tab_fft_tone_offset_4[0][1], 2, - &tab_fft_tone_offset_4[0][0], 2, 1, 0, - INIT_VLC_USE_NEW_STATIC | INIT_VLC_LE); + build_vlc(&vlc_tab_fft_tone_offset[0], 8, 23, 12, tab_fft_tone_offset_0); + build_vlc(&vlc_tab_fft_tone_offset[1], 8, 28, 13, tab_fft_tone_offset_1); + build_vlc(&vlc_tab_fft_tone_offset[2], 8, 31, 14, tab_fft_tone_offset_2); + build_vlc(&vlc_tab_fft_tone_offset[3], 8, 34, 15, tab_fft_tone_offset_3); + build_vlc(&vlc_tab_fft_tone_offset[4], 8, 37, 16, tab_fft_tone_offset_4); } #endif /* CONFIG_HARDCODED_TABLES */