From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id 506234F0DF for ; Sun, 15 Jun 2025 16:56:40 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 9E4A468D3DA; Sun, 15 Jun 2025 19:55:40 +0300 (EEST) Received: from mail-pl1-f182.google.com (mail-pl1-f182.google.com [209.85.214.182]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTPS id 5A75868CA5E for ; Sun, 15 Jun 2025 19:55:39 +0300 (EEST) Received: by mail-pl1-f182.google.com with SMTP id d9443c01a7336-234fcadde3eso46976605ad.0 for ; Sun, 15 Jun 2025 09:55:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1750006538; x=1750611338; darn=ffmpeg.org; h=cc:to:mime-version:content-transfer-encoding:fcc:subject:date :references:in-reply-to:message-id:from:from:to:cc:subject:date :message-id:reply-to; bh=P9eOy0yX9pEpMIloy4Vc2pjL+CuKTUsUjXUQ0uLxmZM=; b=hHydXJMrP1ao1y7QZ2Q5bET1uo2B6S3JLcVr0lMxtUvTY/C1ojGU22BtLt/jHoXLpw /RbgWzyS0G3TAyNo3lpbsiNEUhtkj55vWpSJkZb4TbizBG0WPs9HiqyCPoqd2HG/I4zF O0LsQzRWWgXW9t6rOHLFa9BNz0IRGU65ZYk0cl2nX7lSYDIgDBQXvifLbZgSpDIE2OIE bYl0a1IpQjHS1M3E6vGPHC6PGBliB5wQpveICHXNppZCbe+/UZlrTRV5YtvN5c7ergRu o80rpZQkWx+iJ7lkzqQ9TPuTq+mh3kNlbJ7Y+jHq4qtakJ4QHd4WCxH2QlUNm/XVXlF8 8yLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1750006538; x=1750611338; h=cc:to:mime-version:content-transfer-encoding:fcc:subject:date :references:in-reply-to:message-id:from:x-gm-message-state:from:to :cc:subject:date:message-id:reply-to; bh=P9eOy0yX9pEpMIloy4Vc2pjL+CuKTUsUjXUQ0uLxmZM=; b=tKMJhbc82IH9i1dPcs/AV6incqOy83ln94p7iu1x9sANEKCm3914eylXd/l/4oSpFL +P3pBezgiUyvr0229FobCOlODTaKsp/UzaN0GJYHxTkbFc95zPdRZHVtW3K23d1aAz5k YeHTQr0xIXGTO2PVYv+LhX4/FahwUIuGTGLEtGJ5Me1uZJ6IB3z5ExADweTLQ+Whuwfz 7Q/QUyoPmRoCfAUpYe8f40ll2/AOHLQrgq4wjvRS0SaYgAFymo1cfpkUmm2q0WTdKbQE YNzt2/owAy5nNdRhl6qo3sfSptyu49FEy/ppKr/jojJ7lIW4zarx6O1BYb3rfGtWX6ge Z0fw== X-Gm-Message-State: AOJu0YxX3C3g7jM8OHbqbzKax1fCa2Ky2AbIT/WTe5UnPcdaV6xyWM8q Kv3MKT8Wmk0yATPasPf4u8CGaUuX+EzOR3PTODhGZKYH6D8hVHxSWn3tAASH9w== X-Gm-Gg: ASbGncuDVZCXyfHPXqhXx8+e1rWITb7KnrqIkWh76oFf9c1TVM3MnA9dtWSFM9JZtko JSIID0caa9wTEo+od64rT76qqEMNmAwxjgl6v9Y9uKLM6cI857FWl/wTGEcgp/R4jzGT96FHCt7 CeFw2OiT6TDzfWmuXSTunpLGshT6981tes+Gvqxl84C344FwqSiTkRSJTJK0Ai5IEYT+dO8MaHs yU9L3haL8CgmPC1ulkVR6Lg7tZ/PEuvXjQQ9ghlEpFzREX21e+EaqzFjTV8JXe4lH3fK+aPlXyI ksg97hO5/NuTm4pT8t1cL6gh4hTIfpQF8RJ6HGQ43A3K6fhulElYJ3KgitQVC6gBkiRK9C4x9I/ NIFO5CLmNCdRLcE70 X-Google-Smtp-Source: AGHT+IETbxDt6Q118CbzsvR3vN4fSfRBO0XS8gDGliwUhed6lbQtT+FNAJmHpLfY+ykCKuq0M1XEwQ== X-Received: by 2002:a17:902:e74d:b0:22e:3e0e:5945 with SMTP id d9443c01a7336-2366b3df88bmr84648505ad.50.1750006537653; Sun, 15 Jun 2025 09:55:37 -0700 (PDT) Received: from [127.0.0.1] (master.gitmailbox.com. [34.83.118.50]) by smtp.gmail.com with ESMTPSA id 98e67ed59e1d1-313c1b6d4desm7781047a91.47.2025.06.15.09.55.37 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128); Sun, 15 Jun 2025 09:55:37 -0700 (PDT) From: Andreas Rheinhardt X-Google-Original-From: Andreas Rheinhardt Message-Id: <327b7cbb8600983c8af778d607e2df41a8deb5a6.1750006479.git.ffmpegagent@gmail.com> In-Reply-To: References: Date: Sun, 15 Jun 2025 16:54:00 +0000 Fcc: Sent MIME-Version: 1.0 To: ffmpeg-devel@ffmpeg.org Subject: [FFmpeg-devel] [PATCH 09/47] avcodec/rv10: Avoid indirection when reading VLC codes X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: From: Andreas Rheinhardt Signed-off-by: Andreas Rheinhardt --- libavcodec/rv10.c | 31 +++++++++++++------------------ 1 file changed, 13 insertions(+), 18 deletions(-) diff --git a/libavcodec/rv10.c b/libavcodec/rv10.c index 7f7f7aeba2..9f4dea6141 100644 --- a/libavcodec/rv10.c +++ b/libavcodec/rv10.c @@ -78,16 +78,16 @@ static const uint16_t rv_chrom_len_count[15] = { 1, 2, 4, 0, 8, 0, 16, 0, 32, 0, 64, 0, 128, 0, 256, }; -static VLC rv_dc_lum, rv_dc_chrom; +static VLCElem rv_dc_lum[1472], rv_dc_chrom[992]; int ff_rv_decode_dc(MpegEncContext *s, int n) { int code; if (n < 4) { - code = get_vlc2(&s->gb, rv_dc_lum.table, DC_VLC_BITS, 2); + code = get_vlc2(&s->gb, rv_dc_lum, DC_VLC_BITS, 2); } else { - code = get_vlc2(&s->gb, rv_dc_chrom.table, DC_VLC_BITS, 2); + code = get_vlc2(&s->gb, rv_dc_chrom, DC_VLC_BITS, 2); if (code < 0) { av_log(s->avctx, AV_LOG_ERROR, "chroma dc error\n"); return -1; @@ -306,7 +306,8 @@ static int rv20_decode_picture_header(RVDecContext *rv, int whole_size) return s->mb_width * s->mb_height - mb_pos; } -static av_cold void rv10_build_vlc(VLC *vlc, const uint16_t len_count[15], +static av_cold void rv10_build_vlc(VLCElem vlc[], int table_size, + const uint16_t len_count[15], const uint8_t sym_rl[][2], int sym_rl_elems) { uint16_t syms[MAX_VLC_ENTRIES]; @@ -323,32 +324,26 @@ static av_cold void rv10_build_vlc(VLC *vlc, const uint16_t len_count[15], for (unsigned tmp = nb_lens + len_count[i]; nb_lens < tmp; nb_lens++) lens[nb_lens] = i + 2; av_assert1(nb_lens == nb_syms); - ff_vlc_init_from_lengths(vlc, DC_VLC_BITS, nb_lens, lens, 1, - syms, 2, 2, 0, VLC_INIT_STATIC_OVERLONG, NULL); + ff_vlc_init_table_from_lengths(vlc, table_size, DC_VLC_BITS, nb_lens, + lens, 1, syms, 2, 2, 0, 0); } static av_cold void rv10_init_static(void) { - static VLCElem table[1472 + 992]; - - rv_dc_lum.table = table; - rv_dc_lum.table_allocated = 1472; - rv10_build_vlc(&rv_dc_lum, rv_lum_len_count, + rv10_build_vlc(rv_dc_lum, FF_ARRAY_ELEMS(rv_dc_lum), rv_lum_len_count, rv_sym_run_len, FF_ARRAY_ELEMS(rv_sym_run_len)); for (int i = 0; i < 1 << (DC_VLC_BITS - 7 /* Length of skip prefix */); i++) { /* All codes beginning with 0x7F have the same length and value. * Modifying the table directly saves us the useless subtables. */ - rv_dc_lum.table[(0x7F << (DC_VLC_BITS - 7)) + i].sym = 255; - rv_dc_lum.table[(0x7F << (DC_VLC_BITS - 7)) + i].len = 18; + rv_dc_lum[(0x7F << (DC_VLC_BITS - 7)) + i].sym = 255; + rv_dc_lum[(0x7F << (DC_VLC_BITS - 7)) + i].len = 18; } - rv_dc_chrom.table = &table[1472]; - rv_dc_chrom.table_allocated = 992; - rv10_build_vlc(&rv_dc_chrom, rv_chrom_len_count, + rv10_build_vlc(rv_dc_chrom, FF_ARRAY_ELEMS(rv_dc_chrom), rv_chrom_len_count, rv_sym_run_len, FF_ARRAY_ELEMS(rv_sym_run_len) - 2); for (int i = 0; i < 1 << (DC_VLC_BITS - 9 /* Length of skip prefix */); i++) { /* Same as above. */ - rv_dc_chrom.table[(0x1FE << (DC_VLC_BITS - 9)) + i].sym = 255; - rv_dc_chrom.table[(0x1FE << (DC_VLC_BITS - 9)) + i].len = 18; + rv_dc_chrom[(0x1FE << (DC_VLC_BITS - 9)) + i].sym = 255; + rv_dc_chrom[(0x1FE << (DC_VLC_BITS - 9)) + i].len = 18; } } -- ffmpeg-codebot _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".