From patchwork Fri Nov 20 07:32:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 23873 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 4EC0C449167 for ; Fri, 20 Nov 2020 09:48:32 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 5167868BCF4; Fri, 20 Nov 2020 09:34:37 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f68.google.com (mail-ej1-f68.google.com [209.85.218.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 9E5E368BCE3 for ; Fri, 20 Nov 2020 09:34:29 +0200 (EET) Received: by mail-ej1-f68.google.com with SMTP id s25so11524499ejy.6 for ; Thu, 19 Nov 2020 23:34:29 -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=25TZkiiY+3DGIOYHd0nBg+oUVVZwGTxQ1ma/vPaNZ6E=; b=JV3mxL6AdobmltMCsfWCIU7JUpdU/IB8eIjg5UPwFQnanMBGc/uQpezKNMddnqnGWT 3wZUAaeyAecoOlupzspXuNfLG4WSq22KPlSf6nEeqaLy1mnntwPSOVKMTa5xTGzEUMnV 5ftcHNwOlwK95Oe0cLP5RlaE8XeFY8ThKAoOVithlzyZ/p2dE05Ns8hjtU+PDhHI4THP gJKNhECZLfaM/1A+NRh7mM4HJRubKYfFWLEmIBOj1FLAKfMlTpsoI9qR+ygXXFSt/1K0 h7CLgWnKi0D24YTZ5JgouM4x50LV6ScSTEpEdKmQTL7MM/Wx6eWnCLA9o3g+qxQdYOPu Utgw== 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=25TZkiiY+3DGIOYHd0nBg+oUVVZwGTxQ1ma/vPaNZ6E=; b=ow0YQ8h2/VcfcSFO4PFlvBDDiQwEPh/gA0v5TmIahFPtVqTqvnNnNIwl7r4qzzA+MP KnCCzmyCTCHo68nhPlSv37qTpJeFFi0iFnGe7deOskGfJqCUXhoAmNMkPH5bQi0PgFoC mJxsfsLCTjT1Op9klPV8Qm82pKCwwzz1DQ31hhkayzmL5ngvIPueZX1dPJhpN3/x3N6A 8Qwi2jKF2QBS7sGaS/kn4NJpkk07u8uuwaf9nF5fPRR+jpL4vTjDugY9ytuk6jIUC30w LBV7e55L4P9J/XSbaqafpMsWdMsTvzS9qdKel8YRze/0Ae3BjwLWtBMlz4m6JElsDCC9 JjHQ== X-Gm-Message-State: AOAM532QxpXb6LuMTsdTplMS0mhpCKEyaTWM+pNlI8CorBLJI2LoDPEz j0bO6vzjPjWDTlO+EsF+2zlNwNUGmDL2nA== X-Google-Smtp-Source: ABdhPJxfeWARsnaxI/UtKG/bOrVk/OpKbSpRVVNHoo7qqAWghs7Rt879uN4wYhqUhcFanpG7IVOqUA== X-Received: by 2002:a17:906:8559:: with SMTP id h25mr8965507ejy.173.1605857668862; Thu, 19 Nov 2020 23:34:28 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id i13sm769110ejv.84.2020.11.19.23.34.27 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 19 Nov 2020 23:34:28 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 20 Nov 2020 08:32:50 +0100 Message-Id: <20201120073327.820745-26-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201120072116.818090-1-andreas.rheinhardt@gmail.com> References: <20201120072116.818090-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 125/162] avcodec/vp3: Remove code duplication when initializing Theora 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" theora_init_huffman_tables() does essentially the same as ff_init_vlcs_from_lengths(). Signed-off-by: Andreas Rheinhardt --- libavcodec/vp3.c | 21 ++++++--------------- 1 file changed, 6 insertions(+), 15 deletions(-) diff --git a/libavcodec/vp3.c b/libavcodec/vp3.c index 2f43de757e..cf64a8c61e 100644 --- a/libavcodec/vp3.c +++ b/libavcodec/vp3.c @@ -2319,20 +2319,6 @@ static av_cold int init_frames(Vp3DecodeContext *s) return 0; } -static av_cold int theora_init_huffman_tables(VLC *vlc, const HuffTable *huff) -{ - uint32_t code = 0, codes[32]; - - for (unsigned i = 0; i < huff->nb_entries; i++) { - codes[i] = code >> (31 - huff->entries[i].len); - code += 0x80000000U >> huff->entries[i].len; - } - return ff_init_vlc_sparse(vlc, 11, huff->nb_entries, - &huff->entries[0].len, sizeof(huff->entries[0]), 1, - codes, 4, 4, - &huff->entries[0].sym, sizeof(huff->entries[0]), 1, 0); -} - static av_cold int vp3_decode_init(AVCodecContext *avctx) { Vp3DecodeContext *s = avctx->priv_data; @@ -2460,7 +2446,12 @@ static av_cold int vp3_decode_init(AVCodecContext *avctx) } } else { for (i = 0; i < FF_ARRAY_ELEMS(s->coeff_vlc); i++) { - ret = theora_init_huffman_tables(&s->coeff_vlc[i], &s->huffman_table[i]); + const HuffTable *tab = &s->huffman_table[i]; + + ret = ff_init_vlc_from_lengths(&s->coeff_vlc[i], 11, tab->nb_entries, + &tab->entries[0].len, sizeof(*tab->entries), + &tab->entries[0].sym, sizeof(*tab->entries), 1, + 0, 0, avctx); if (ret < 0) return ret; }