From patchwork Tue Sep 26 22:16:35 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43922 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2208007pzh; Tue, 26 Sep 2023 15:16:52 -0700 (PDT) X-Google-Smtp-Source: AGHT+IGTPZ4tXKXtE5nBXujYRDBJ6R8hZOENIlm0vj/EcKQARp8CsncMM2bNbdAfxVDMeikmw9tG X-Received: by 2002:ac2:5b5a:0:b0:502:d85b:5de with SMTP id i26-20020ac25b5a000000b00502d85b05demr42749lfp.68.1695766612006; Tue, 26 Sep 2023 15:16:52 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id f20-20020a170906391400b009a1b857e3b1si12006465eje.304.2023.09.26.15.16.51; Tue, 26 Sep 2023 15:16:51 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=oZj6D+sJ; arc=fail (body hash mismatch); spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 7F11F68CA77; Wed, 27 Sep 2023 01:16:41 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-HE1-obe.outbound.protection.outlook.com (mail-he1eur04olkn2085.outbound.protection.outlook.com [40.92.73.85]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 88E6168CA72 for ; Wed, 27 Sep 2023 01:16:35 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=E/VrifMcqDzWpJFJwYSQNZAvWyhGMm4AL8vdHd/i1wYSTXRLXXEj7E71VKL0obDAOnzdCtRsk2NFSQLJppShAHmeoGE5/f6G2U6doNJ4oQZsZ7+ptLcrxeidzIZNX4Gyxte71OcUOEg0xR9EHW3refRTAff4hCi83Ua40GX0RE1loi3J7GEWgbtfH4x6TrI5W68kEjL5oUoKPO1BTUD47W3JdwA5pZjAG4JiQR0y1l3bcaTuaflYqAJnTcnvpBbOZU6mpUkj13Tz/1Im2ow90rTTTHze6U6HS3lkdjK7v6a0KibBZygG9koUnYBQBlISRBg5IvGnmLlxMDeVwvI3lg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=mtev+j0+2Sjr6nvxMHZA7UWGBcG8aZlE9zPgkXaZQno=; b=EJUUmYWy9w5Lme3vuKW/3nIc/n0DJMEMP1R4XwYCH1G7qWsLTwe5tidS3cBMK4vBA275jCrZX9wBXs32mCAB2agTjBgShoIGJC7uGHvZ52eEX9D36JS7xTjNcSoZoBiBBp2+N0gwlSNKv1lXs8kE1S6raTMKKOYoUt+c6KuB1USDQ2wmNTX2YKcvQt9iFck+YvHzZpAQep+vvCCB6Io65eP/wLbyHnnik9SUW015vuWcm//pZIYrtJsIQ6Y53/FmPMm3cFgi8Su2Z/0xiWwr/QhPZs4ijggnUKuKnGlpmH/Hz8/kRe8+fOhJtbgKPlEieB8UEhYfLYk9l4NymzzQxQ== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=mtev+j0+2Sjr6nvxMHZA7UWGBcG8aZlE9zPgkXaZQno=; b=oZj6D+sJkPS1owIacJxDV/opAXSbbJa/TJxnqJK+VD104NH7COBupgdKfkWQ7DCVusavhRm17ABGiGBcmBz5yZs9HppDue5x8ERukTu+Wy3EVzk/YNNOtTMpVCdD7rL9DJGHY+XDKZ1MjrLXu5E3mRnXkeYezluxdQ+omjaqHBvUlnZGQbmMFQcA+1iIbMFHWyQrutzVy+Uky/mTByCP9Qvu+ckDHgdRljyt64qM1tSqDi4g5Vx8QUbEyq2loqCrIAy7YPhdYiSKd0O9HdgP05JxxAWRFuibapSYgAXA+foqSsc6dguYdQRgem8mGhSqSESbdDRbcCS7DCXcIWHf7w== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS4P250MB0413.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4c0::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6813.28; Tue, 26 Sep 2023 22:16:34 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::9d42:7b4f:71ef:c76a%3]) with mapi id 15.20.6813.027; Tue, 26 Sep 2023 22:16:34 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:16:35 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [u8LB35T3k9OtI6AtcSBROFy6tQX8MImg] X-ClientProxiedBy: FR3P281CA0019.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20230926221732.3711507-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS4P250MB0413:EE_ X-MS-Office365-Filtering-Correlation-Id: 68e854df-1048-4d92-89ba-08dbbede3e60 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 5BRo4w9oT9ors7XRZ6r7jS/Kj815fBVr7R9WZDp2IKwQOoST5alv+jjdB7PZJTmXKdsDJ3dgafRuZMIBMEKrPv6crrbPUIZ3WHFJwAw3z+LTkkLXHV2kCe2DTqGdg2wa1jAXH7XgkU7x+uhnW26cdte7Say1GG/aduuEd3PhGuD997sx1X+4uD262i+jX8TgRhKuSncONPZXMUfpSP/p3AUDvIW1gzP87Ba2Q+2/+5Nl9SDmssupmmRsxeel627PmGndoeqJjxmPAmvNBOisIN3IN4P9tOaVI3rDk77qGxkpGciKyYVi9f1aTa1A3wx8IZ8RVow9IR4b4VbmwDv9T/ww2dQq2jAp0lUxLMkRruBJebclgci/ihRQ9ex+PPLS+iC9NKh2db0EUjG5A2Pzap3ZgCwnZ8GA8NuxyiUsEf8rH2b0dzdo5etFYTwJi08nFYyNe6wLHbnRDnZK+NeGXHVtdpI/1E1CRrlS93GhEkn1s9t4Y1gV3HtuRSEqjCFf/MfEnd8duLHGOG3WXyp4FDjln3tyBTZa6dJR/nIUOqSmP8VEH0dNrj5a02puTzLHDumjghGsEvaSJGe9Jz0vYyDCf4JrYoeL6c4jSsz6g1c= X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: riQoGG3ZTS30tEAQ0RHHUqvqdid7/K8+lK7wiupHy65YjB/HzZkIiTawqs89dheMM5duEWElfeD7+VNKgaCo5/8qjRvFxaYGqSrZv0ZcPf+qSExdcUwYfHfoR9lyoba3vHFvbK4zp4iGnk7qGES94/xvtCFX5Gz9ICQ07ELUA+qqEaRkFU/C4o0X85DvI5v2e6GN6BEXkeJtydZ0oHnQNgLuyltDuQNOkgnb1ksuLqVUEzkpr7WSp+LpyaJePR+HAkGciQJp+SPwNStc6iUNtVcD0+scZgCLGR3xZllT5YGqVSwsCaPUIoe9UoAAHF2TzwTS2IyqJsJ8d3OS7Q9EoLla4sQ1sEBuKsmPqMpKWOaEic+A4QeAlHJgFRtSiVIJISA3mrj5XGRA+f7Qu4z0VxI9dH84CbAcCt8xryR/+HgB06qj3IDp0oIiecP5bUWXxiPADhMooRS82jeMsq4LuppPe/hXIYS0go9NgpwYv8sOdPgSLh2NF4KXgu5Tepfaehp5WQXHJIU/4HdTMQCCaSRioGEYhSUqBeCJYIELW1ul1i0B+C9FtPnhcKF1kP35YQQt/o//Z/aDUfOZ7vw/II+ESLpwoQ+vlJSBI4wd1haWw4NccE+w4HVNKJnqjI6lbsOSVp2LQbNdSnTl2COR4hsW1dgi9hNWPp4DqCZx93hMDYhNs0qIuXoURHkoF9hoIHconzJiVpYNMr0Q3CzUY+eKPhDtzVegm8fhOsjsDTubGM6GtTrYUx1zRbS8pVau2mIbvK0eqcyKr6UFdQ6PCrwqV3OyyFwT5GUHuXky+cgcKuspbgV92aGH1jLVWDn4vKqXGAXaknIffbjR1aputG59XTxzWxA0DcjkYctJtgE3ktmXiLTatY0H00GY6nVb5Q5IVoqp9c3UnubIXmGYCukRJEtCDF8xP1S+vobifH9/UARwwfYc3f0ewWX9GS0yHECLgrLcxcRE/w0a/MASCLDv4vRQSZR5uIDW5EofBnTtuPM0Q7Q0ElNPGJ5L4niPguRg6PayxVTQB044DoACYf2WTTbcXcbXPHov5DgTZXtGcPVQz2ZS0mkAt8nGkZNyp7Ytwft/DV3iJZaze6SIoHXB5Vz3oVBXLaLk0iW/0snB7kD0yGMchEtsmQ51SbZn+WsoYUY7eFc53xIDC+tffP5uBQ2/KSi5kb/YHiZ0Gr6TVcMvhKUHj0jwb61Vi2ikxZbH2l11i/48q0Hv8tEma6dCfh+GuHqZu1bvAJuWbADwKkR4jMjRtquWbEyNK3U4 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 68e854df-1048-4d92-89ba-08dbbede3e60 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 26 Sep 2023 22:16:34.4655 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: AS4P250MB0413 Subject: [FFmpeg-devel] [PATCH 04/61] avcodec/h264_cavlc: Avoid superfluous VLC structures 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: H/0YekVn2H39 Of all these VLCs here, only VLC.table was really used after init, so use the ff_vlc_init_tables API to get rid of them. Signed-off-by: Andreas Rheinhardt --- libavcodec/h264_cavlc.c | 190 +++++++++++++++++----------------------- 1 file changed, 80 insertions(+), 110 deletions(-) diff --git a/libavcodec/h264_cavlc.c b/libavcodec/h264_cavlc.c index a06b775422..dc22955626 100644 --- a/libavcodec/h264_cavlc.c +++ b/libavcodec/h264_cavlc.c @@ -234,38 +234,6 @@ static const uint8_t run_bits[7][16]={ {7,6,5,4,3,2,1,1,1,1,1,1,1,1,1}, }; -static VLC coeff_token_vlc[4]; -static VLCElem coeff_token_vlc_tables[520+332+280+256]; -static const int coeff_token_vlc_tables_size[4]={520,332,280,256}; - -static VLC chroma_dc_coeff_token_vlc; -static VLCElem chroma_dc_coeff_token_vlc_table[256]; -static const int chroma_dc_coeff_token_vlc_table_size = 256; - -static VLC chroma422_dc_coeff_token_vlc; -static VLCElem chroma422_dc_coeff_token_vlc_table[8192]; -static const int chroma422_dc_coeff_token_vlc_table_size = 8192; - -static VLC total_zeros_vlc[15+1]; -static VLCElem total_zeros_vlc_tables[15][512]; -static const int total_zeros_vlc_tables_size = 512; - -static VLC chroma_dc_total_zeros_vlc[3+1]; -static VLCElem chroma_dc_total_zeros_vlc_tables[3][8]; -static const int chroma_dc_total_zeros_vlc_tables_size = 8; - -static VLC chroma422_dc_total_zeros_vlc[7+1]; -static VLCElem chroma422_dc_total_zeros_vlc_tables[7][32]; -static const int chroma422_dc_total_zeros_vlc_tables_size = 32; - -static VLC run_vlc[6+1]; -static VLCElem run_vlc_tables[6][8]; -static const int run_vlc_tables_size = 8; - -static VLC run7_vlc; -static VLCElem run7_vlc_table[96]; -static const int run7_vlc_table_size = 96; - #define LEVEL_TAB_BITS 8 static int8_t cavlc_level_tab[7][1<>2; }else{ if(n >= LUMA_DC_BLOCK_INDEX){ total_coeff= pred_non_zero_count(h, sl, (n - LUMA_DC_BLOCK_INDEX)*16); - coeff_token= get_vlc2(gb, coeff_token_vlc[ coeff_token_table_index[total_coeff] ].table, COEFF_TOKEN_VLC_BITS, 2); + coeff_token = get_vlc2(gb, coeff_token_vlc[coeff_token_table_index[total_coeff]], + COEFF_TOKEN_VLC_BITS, 2); total_coeff= coeff_token>>2; }else{ total_coeff= pred_non_zero_count(h, sl, n); - coeff_token= get_vlc2(gb, coeff_token_vlc[ coeff_token_table_index[total_coeff] ].table, COEFF_TOKEN_VLC_BITS, 2); + coeff_token = get_vlc2(gb, coeff_token_vlc[coeff_token_table_index[total_coeff]], + COEFF_TOKEN_VLC_BITS, 2); total_coeff= coeff_token>>2; } } @@ -563,13 +532,14 @@ static int decode_residual(const H264Context *h, H264SliceContext *sl, else{ if (max_coeff <= 8) { if (max_coeff == 4) - zeros_left = get_vlc2(gb, chroma_dc_total_zeros_vlc[total_coeff].table, + zeros_left = get_vlc2(gb, chroma_dc_total_zeros_vlc[total_coeff], CHROMA_DC_TOTAL_ZEROS_VLC_BITS, 1); else - zeros_left = get_vlc2(gb, chroma422_dc_total_zeros_vlc[total_coeff].table, + zeros_left = get_vlc2(gb, chroma422_dc_total_zeros_vlc[total_coeff], CHROMA422_DC_TOTAL_ZEROS_VLC_BITS, 1); } else { - zeros_left= get_vlc2(gb, total_zeros_vlc[ total_coeff ].table, TOTAL_ZEROS_VLC_BITS, 1); + zeros_left = get_vlc2(gb, total_zeros_vlc[total_coeff], + TOTAL_ZEROS_VLC_BITS, 1); } } @@ -579,9 +549,9 @@ static int decode_residual(const H264Context *h, H264SliceContext *sl, ((type*)block)[*scantable] = level[0]; \ for(i=1;i 0;i++) { \ if(zeros_left < 7) \ - run_before= get_vlc2(gb, run_vlc[zeros_left].table, RUN_VLC_BITS, 1); \ + run_before = get_vlc2(gb, run_vlc[zeros_left], RUN_VLC_BITS, 1); \ else \ - run_before= get_vlc2(gb, run7_vlc.table, RUN7_VLC_BITS, 2); \ + run_before = get_vlc2(gb, run7_vlc_table, RUN7_VLC_BITS, 2); \ zeros_left -= run_before; \ scantable -= 1 + run_before; \ ((type*)block)[*scantable]= level[i]; \ @@ -594,9 +564,9 @@ static int decode_residual(const H264Context *h, H264SliceContext *sl, ((type*)block)[*scantable] = ((int)(level[0] * qmul[*scantable] + 32))>>6; \ for(i=1;i 0;i++) { \ if(zeros_left < 7) \ - run_before= get_vlc2(gb, run_vlc[zeros_left].table, RUN_VLC_BITS, 1); \ + run_before = get_vlc2(gb, run_vlc[zeros_left], RUN_VLC_BITS, 1); \ else \ - run_before= get_vlc2(gb, run7_vlc.table, RUN7_VLC_BITS, 2); \ + run_before = get_vlc2(gb, run7_vlc_table, RUN7_VLC_BITS, 2); \ zeros_left -= run_before; \ scantable -= 1 + run_before; \ ((type*)block)[*scantable]= ((int)(level[i] * qmul[*scantable] + 32))>>6; \