From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id F0D3F478B1 for ; Tue, 26 Sep 2023 22:19:32 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DD86B68CAE7; Wed, 27 Sep 2023 01:18:04 +0300 (EEST) Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-db3eur04olkn2106.outbound.protection.outlook.com [40.92.74.106]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 23F3568CADE for ; Wed, 27 Sep 2023 01:18:02 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=dX6vvsxB7nvFJFEebBkyyaBOESdJFHqoRm6PV47/Trt+yMQEdEJdk+SuO/B6YiEKl7LnM/bC1s5BLdMNZVps7Epzzi8IzaGqAYBG1Py1BUAGz5P1bu4UR2HxCw6Sx0dIG0Ysrgd2JhsxttYubuaRPhEo64UTMZqnAjHQXCEYWtuu0d1vUbN+GUegjN+R85Kas6TPFCM1N/yJc581PSvSEjUzkTVol3yIVCFlqsjAUGgZzVuYf1kxUjFtzHuRJxccOuqLRluxuYsf3fZ/SawNesE8mNvMgOswwfs24LsKuXQ/oQKWCnFo3AwfF/ZhZqRXcefRo57IhPsNngtQH+7Ktw== 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=ipO/vjMB0HL+uM3jCdl6eBmcX13NZv581p1mvPbYjME=; b=P5y2LVRR03ZFoNuL6wL5eyo+NenbNVXvQfE1JT7s1Mqu2T1NmuEaEoAxOA53G7FB6XHTSWj3a69ww3WBywWwtF86gPcdrL+MschYWr5iGSyGds8GLrBEVILHqg8S4qFVegEE/svEDZTZ97kezzUGootFxm3O68ZSM6dRYlO6bYKY4xuEW+IsR48FAC+AFNp1fyJsdvCxaZ+dAU8BxLfzDqzWfxcKtBoLG30bTw/DbLrUZu7IF21pEgVv/IxWwN+3nzY8mJgxN1YC9zQuGuBd1W9BgQD64TvMDO0nxM2p94Y0FBS5kKIRZwGaeh5r85MDs6GzIC95MZiOc1SI6hjxOQ== 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=ipO/vjMB0HL+uM3jCdl6eBmcX13NZv581p1mvPbYjME=; b=UTRnaXCqgTSeZt/ABZc7Umqzl02ANLgUGu+MI14TuOUkCC2qkntG+nMJrsTdqVP+krnxfP33mH+GWHYGyosEFLzerCEze+ls0Gj47pT3ErnvIJYx2SoIqlBEAuH/lDecx/cB2ERBE1eELPH+JTgvdnpqy8+hepmHwWSmK9weL1GwkRWRcfKn8bJRjJrOnP8KgK+ljcRupUffLpSMjqPes6qY/x6gKGm80zYndq39DuNg6WbaKCg2EvA0ICBOb2Ug1AOcVZSF49+Q6M6MsmX2h1Eod4+VVCT7667ZEfq93QU44jG1YxHOFKqz6/y1ZUkM1LhjdvzcWxyn0HJlZUmVEw== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DU2P250MB0189.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:275::13) 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:18:01 +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:18:01 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:16:53 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [xsY/ITpwZ7jqTtZlUYbG0goUyxAhEXEF] 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-21-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DU2P250MB0189:EE_ X-MS-Office365-Filtering-Correlation-Id: ef8c1182-7ec2-43ea-d74b-08dbbede721c X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: VLeiK+AtxPg3PbOhgVz3Iknc8EvOE25TtlJspxWuts7nhenOKc3e77Gu5Jtbv0KZzy5szTZBHAtJfUdEl2cSN0pSmkS/7EB1KX1j7Sows3flGnqR5GPUFNrT90AMpasMl+QtHV4tm3lfZNgfdOCyw00/eyU5RJlowXiGCHh2J7zg/9apmJcH460n4JEqO+FoudBOogW+60FVcOJ5umH9y1hElyBp+6fWKggiouDYNso+k6zd6NlmjDEHVNqqRjI3qCnK9GilMDpsqg5qgdQ9yrt1lwi65sZoWNE8xKAYFRqpWpWT3C0DZWe5iDlCfORoKWQYWMVykfrxgirZKZBug63cRnQ+msq5BCveObTowwxYa5oO0pOwCymBvsakkLUtdrjdtPC2iw7jCuPzlfxUt6cWXfPowrb7eBy0nUKwdF60h5AvxNKn/jf1tnMuaCei8Tbzh0EHxVuIz0tPFt7/wZbRNIYEAuB1IaqmQdHXhdCA+7spHakdbSM7azZEeo1hu0Q91G/A1DVkjlPqsxDp7xFDArkWH0VpXeiLzb9UonWNNORu5Ms3eVqgCLOza+k1UJWk51Y4J15MQTXvmetv2cXmZWFpFLJbvsIIUKYPN8KwqY0lOb0JLjOkGaEm2t7E X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?UBxejK7xZR4sicynDgAb+Ty11YDRzto3icvXw5oQS1mbiSkLl8JAu/mkBW3J?= =?us-ascii?Q?pho4H+ACNnKoISF5SWT+8rT3KwCsoqKtGs0caWzBcGhcDq1VMvEbai6LwrRQ?= =?us-ascii?Q?MziRmPH6paMG/ninZBvPVbCmhFiX3LIGbYX+FRF7Asoo12ZgzX8CIqOVtqmD?= =?us-ascii?Q?LEr/muOm3BGtw0pG95mJW7Pm+SqemyDZ0hhw3b/LRhRKqT5ZvpYX7yHS9Zkc?= =?us-ascii?Q?QlnhBpCT8YIYI/rK050zXyhHcP/YQdtjcwZqzcyN+LkFrSDhs9vP8pSNBONo?= =?us-ascii?Q?53DT/SxqHYArr4SGZ7qVv0HsNPkrDidkCxDXLdSZGVYau2uIB04WZZ2zJ1C/?= =?us-ascii?Q?Sgc82PMzVca7LM0+1OBGVyyWY0B4asyvitROpB1oC/Cofu4t9vruxwYaSZvd?= =?us-ascii?Q?NRah36fpICW5zC9DDqyy1x2MQX5yAuQNspb3LcwbjhjKpRQyeenB+b7AKlA5?= =?us-ascii?Q?s9K6hisqI0siTYeQDAmMbEBYy6z6HPLEiWSYMbRN/c29aF6lDlyVS2yyL9ay?= =?us-ascii?Q?uOK9/bWFCTI8ObYBc3xSKijz9O4JuM8qmuS0lqHIVQXFIydcuvGrMK/1EAwE?= =?us-ascii?Q?SnhAj62j3tleNlm0p3MRmv0yumzIx0ViwT+slSSLM4AZznhW6lnRR+rMZUlS?= =?us-ascii?Q?xMtZUCo1Pm6rLT9xc4tnq9I1rHOtgArRHmoyIOoXDnZHhBg2GZdYlsC84h5M?= =?us-ascii?Q?Da0fbdEyxQ1bt3YxoiVAh2s40AEom03PJSVO8nb1A/oSjwMxT1QCOzC99ffH?= =?us-ascii?Q?SDjOtIm7BuCV7ZtVKgw+X5BjrjWiH8g455xECWYFfz9bCMEyyimxFrEeP+hy?= =?us-ascii?Q?r2KMUuW8bUmYQ0HBUK/SsAoMzjyprr/Nxe+BIZXKSrA8nx9e7fsmJ/pDNeQc?= =?us-ascii?Q?mwBcUoJtwA48DcaSVXygCxGAR2NpypmQ3doQVB6Uy58J/GillRvB6VdEgWf8?= =?us-ascii?Q?cRIuBF1Y5+pOotvtihR4y/AFJgrk+GLjnZNUHDmV/nrs4Vi73pLwTiHLB/nC?= =?us-ascii?Q?la81ytSSK7wxTuD1sYU4x5k3sWo3/potMWDkk7W2bnKMr7GV1JS4y2q/YvBJ?= =?us-ascii?Q?9N2joycWQ+xJq6EYLRYUmvcYk9s52rAJjOXyZ3pYpcVUsNaoLzgyXB2NakNz?= =?us-ascii?Q?oKHsWzr8sqGVC4VX4wDJb0u7SFt/J8ONVi36WI5w95gHyveEObNgBbdpEGqD?= =?us-ascii?Q?+Anfc2dw8H8EPNMx1m4cB5F1KUKrnxGE+7cL5hf9I/zzYLP1YQW2GnJt4xd2?= =?us-ascii?Q?UHD96biDBxTMobd2rowJ?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ef8c1182-7ec2-43ea-d74b-08dbbede721c 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:18:01.1699 (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: DU2P250MB0189 Subject: [FFmpeg-devel] [PATCH 22/61] avcodec/vp3: Avoid complete VLC struct, only use VLCElem* 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: Signed-off-by: Andreas Rheinhardt --- libavcodec/vp3.c | 61 ++++++++++++++++++++++++------------------------ 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/libavcodec/vp3.c b/libavcodec/vp3.c index 1abf7e8078..b7c323b153 100644 --- a/libavcodec/vp3.c +++ b/libavcodec/vp3.c @@ -190,6 +190,7 @@ typedef struct HuffTable { } HuffTable; typedef struct CoeffVLCs { + const VLCElem *vlc_tabs[80]; VLC vlcs[80]; } CoeffVLCs; @@ -1181,7 +1182,7 @@ static inline int get_coeff(GetBitContext *gb, int token, int16_t *coeff) * be passed into the next call to this same function. */ static int unpack_vlcs(Vp3DecodeContext *s, GetBitContext *gb, - const VLC *table, int coeff_index, + const VLCElem *vlc_table, int coeff_index, int plane, int eob_run) { @@ -1197,7 +1198,6 @@ static int unpack_vlcs(Vp3DecodeContext *s, GetBitContext *gb, /* local references to structure members to avoid repeated dereferences */ const int *coded_fragment_list = s->coded_fragment_list[plane]; Vp3Fragment *all_fragments = s->all_fragments; - const VLCElem *vlc_table = table->table; if (num_coeffs < 0) { av_log(s->avctx, AV_LOG_ERROR, @@ -1303,14 +1303,13 @@ static void reverse_dc_prediction(Vp3DecodeContext *s, */ static int unpack_dct_coeffs(Vp3DecodeContext *s, GetBitContext *gb) { - const VLC *coeff_vlc = s->coeff_vlc->vlcs; + const VLCElem *const *coeff_vlc = s->coeff_vlc->vlc_tabs; int dc_y_table; int dc_c_table; int ac_y_table; int ac_c_table; int residual_eob_run = 0; - const VLC *y_tables[64]; - const VLC *c_tables[64]; + const VLCElem *y_tables[64], *c_tables[64]; s->dct_tokens[0][0] = s->dct_tokens_base; @@ -1322,7 +1321,7 @@ static int unpack_dct_coeffs(Vp3DecodeContext *s, GetBitContext *gb) dc_c_table = get_bits(gb, 4); /* unpack the Y plane DC coefficients */ - residual_eob_run = unpack_vlcs(s, gb, &coeff_vlc[dc_y_table], 0, + residual_eob_run = unpack_vlcs(s, gb, coeff_vlc[dc_y_table], 0, 0, residual_eob_run); if (residual_eob_run < 0) return residual_eob_run; @@ -1333,11 +1332,11 @@ static int unpack_dct_coeffs(Vp3DecodeContext *s, GetBitContext *gb) reverse_dc_prediction(s, 0, s->fragment_width[0], s->fragment_height[0]); /* unpack the C plane DC coefficients */ - residual_eob_run = unpack_vlcs(s, gb, &coeff_vlc[dc_c_table], 0, + residual_eob_run = unpack_vlcs(s, gb, coeff_vlc[dc_c_table], 0, 1, residual_eob_run); if (residual_eob_run < 0) return residual_eob_run; - residual_eob_run = unpack_vlcs(s, gb, &coeff_vlc[dc_c_table], 0, + residual_eob_run = unpack_vlcs(s, gb, coeff_vlc[dc_c_table], 0, 2, residual_eob_run); if (residual_eob_run < 0) return residual_eob_run; @@ -1359,23 +1358,23 @@ static int unpack_dct_coeffs(Vp3DecodeContext *s, GetBitContext *gb) /* build tables of AC VLC tables */ for (int i = 1; i <= 5; i++) { /* AC VLC table group 1 */ - y_tables[i] = &coeff_vlc[ac_y_table + 16]; - c_tables[i] = &coeff_vlc[ac_c_table + 16]; + y_tables[i] = coeff_vlc[ac_y_table + 16]; + c_tables[i] = coeff_vlc[ac_c_table + 16]; } for (int i = 6; i <= 14; i++) { /* AC VLC table group 2 */ - y_tables[i] = &coeff_vlc[ac_y_table + 32]; - c_tables[i] = &coeff_vlc[ac_c_table + 32]; + y_tables[i] = coeff_vlc[ac_y_table + 32]; + c_tables[i] = coeff_vlc[ac_c_table + 32]; } for (int i = 15; i <= 27; i++) { /* AC VLC table group 3 */ - y_tables[i] = &coeff_vlc[ac_y_table + 48]; - c_tables[i] = &coeff_vlc[ac_c_table + 48]; + y_tables[i] = coeff_vlc[ac_y_table + 48]; + c_tables[i] = coeff_vlc[ac_c_table + 48]; } for (int i = 28; i <= 63; i++) { /* AC VLC table group 4 */ - y_tables[i] = &coeff_vlc[ac_y_table + 64]; - c_tables[i] = &coeff_vlc[ac_c_table + 64]; + y_tables[i] = coeff_vlc[ac_y_table + 64]; + c_tables[i] = coeff_vlc[ac_c_table + 64]; } /* decode all AC coefficients */ @@ -1406,7 +1405,7 @@ static int unpack_dct_coeffs(Vp3DecodeContext *s, GetBitContext *gb) * @return < 0 on error */ static int vp4_unpack_vlcs(Vp3DecodeContext *s, GetBitContext *gb, - const VLC *vlc_tables[64], + const VLCElem *const vlc_tables[64], int plane, int eob_tracker[64], int fragment) { int token; @@ -1419,7 +1418,7 @@ static int vp4_unpack_vlcs(Vp3DecodeContext *s, GetBitContext *gb, if (get_bits_left(gb) < 1) return AVERROR_INVALIDDATA; - token = get_vlc2(gb, vlc_tables[coeff_i]->table, 11, 3); + token = get_vlc2(gb, vlc_tables[coeff_i], 11, 3); /* use the token to get a zero run, a coefficient, and an eob run */ if ((unsigned) token <= 6U) { @@ -1526,12 +1525,12 @@ static void vp4_set_tokens_base(Vp3DecodeContext *s) static int vp4_unpack_dct_coeffs(Vp3DecodeContext *s, GetBitContext *gb) { - const VLC *coeff_vlc = s->coeff_vlc->vlcs; + const VLCElem *const *coeff_vlc = s->coeff_vlc->vlc_tabs; int dc_y_table; int dc_c_table; int ac_y_table; int ac_c_table; - const VLC *tables[2][64]; + const VLCElem *tables[2][64]; int eob_tracker[64]; VP4Predictor dc_pred[6][6]; int last_dc[NB_VP4_DC_TYPES]; @@ -1549,27 +1548,27 @@ static int vp4_unpack_dct_coeffs(Vp3DecodeContext *s, GetBitContext *gb) /* build tables of DC/AC VLC tables */ /* DC table group */ - tables[0][0] = &coeff_vlc[dc_y_table]; - tables[1][0] = &coeff_vlc[dc_c_table]; + tables[0][0] = coeff_vlc[dc_y_table]; + tables[1][0] = coeff_vlc[dc_c_table]; for (int i = 1; i <= 5; i++) { /* AC VLC table group 1 */ - tables[0][i] = &coeff_vlc[ac_y_table + 16]; - tables[1][i] = &coeff_vlc[ac_c_table + 16]; + tables[0][i] = coeff_vlc[ac_y_table + 16]; + tables[1][i] = coeff_vlc[ac_c_table + 16]; } for (int i = 6; i <= 14; i++) { /* AC VLC table group 2 */ - tables[0][i] = &coeff_vlc[ac_y_table + 32]; - tables[1][i] = &coeff_vlc[ac_c_table + 32]; + tables[0][i] = coeff_vlc[ac_y_table + 32]; + tables[1][i] = coeff_vlc[ac_c_table + 32]; } for (int i = 15; i <= 27; i++) { /* AC VLC table group 3 */ - tables[0][i] = &coeff_vlc[ac_y_table + 48]; - tables[1][i] = &coeff_vlc[ac_c_table + 48]; + tables[0][i] = coeff_vlc[ac_y_table + 48]; + tables[1][i] = coeff_vlc[ac_c_table + 48]; } for (int i = 28; i <= 63; i++) { /* AC VLC table group 4 */ - tables[0][i] = &coeff_vlc[ac_y_table + 64]; - tables[1][i] = &coeff_vlc[ac_c_table + 64]; + tables[0][i] = coeff_vlc[ac_y_table + 64]; + tables[1][i] = coeff_vlc[ac_c_table + 64]; } vp4_set_tokens_base(s); @@ -2501,6 +2500,7 @@ static av_cold int vp3_decode_init(AVCodecContext *avctx) 0, 0, avctx); if (ret < 0) return ret; + vlcs->vlc_tabs[i] = vlcs->vlcs[i].table; } } else { for (int i = 0; i < FF_ARRAY_ELEMS(vlcs->vlcs); i++) { @@ -2512,6 +2512,7 @@ static av_cold int vp3_decode_init(AVCodecContext *avctx) 0, 0, avctx); if (ret < 0) return ret; + vlcs->vlc_tabs[i] = vlcs->vlcs[i].table; } } } -- 2.34.1 _______________________________________________ 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".