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 65DDA4789A for ; Tue, 26 Sep 2023 22:18:01 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D676668CA95; Wed, 27 Sep 2023 01:17:07 +0300 (EEST) Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2067.outbound.protection.outlook.com [40.92.90.67]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BA90568CA44 for ; Wed, 27 Sep 2023 01:17:06 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=QhVniel+RmgVymJJh9Q8GiwYUj+++13HGagFwgCpFFNOdgcnNqD3hLrqoy8My4+Im7ptoId576hgN5ZxZcQrlCLsIhrdV+sUH3mvCLfaUK3iWKszHWpFKXzRmX1oPlOe9y02p1+nSldWznxMOLJSdltV90DxWyp4pEy7JGbD8+4hmDtH/6RNHhk4H2mlXkL8HLqSTufWI8JEFONgVclEPKAqLiSZe3iJheGptjnM+gFtMyZx83i9F4Wyas1hhETVfgia2kBRPs8SDxW5U2CinO7dtZz7wKrzAGfzFUWMzAaGcfgqSQ2ICoIwANLNtNDx8utWa1FHWp3Ts72sC4ZuxA== 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=x9pdBDN4ST2Z5KMixlOctk/LQLrci/OriOL39gsCAEg=; b=aifXFfbRkR/uHs/uuCJkGCLvoWtJqDsYXjaqAn6nujUIm/nXwxTBqQjKFeSD5LH/S8HkaUhBmGlx/8/bUqC69k8asCsvWP4MtH7FOrF1KPnMt55eQFzBht/TPXRosOkugwfibecFSXLhmVux/84oRsSj2PyiKy3ujTjKo8vrOsK7oevhfdkFajohJ4zMf0Xc6oN6veGYACLxTWYDH6zKFExMIcNo5zar7VBA9dLG7BiuQkCEnH52xWrFjy+bKytJvtCtLd9RZzso0jD9RUrD/WLcD8n3CjlLFfzJilogKe9tPLU8GjBU7VuTHyBspicqA/R/ikD0Uh8Fmte2fRuvUg== 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=x9pdBDN4ST2Z5KMixlOctk/LQLrci/OriOL39gsCAEg=; b=BA7CXv22GHbpUpSwx1yP/M3XV4bG5T/VOM6cZj3bt3i+XcGtri0MBhJcex/728Wo+xEYU8dzg3IKrBJJs1UEDszErrflxwWtdIZ/dDRuFYAXavhH7Jmsede9kAWjNkCgEDcB40eMKnTshqyvZh+mjArR4f/ZyBCtb5C9MIUrgbwJvR28L8QZPKQn0xGRxH/S4q/KfoH52qaIfQtsLcsTnAFY3LsH3G8nIMBlkh+OppUtvL+IscxFmAvrnv6709dFFOlOY3ZQebyR5uR/SoiXP8IbR6XkdyX05+vj7GGJGJOl6u+6WNwjXcLPVaDjYfViL4SlrtTCYOj9HKAIqr2T/g== 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:17:05 +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:17:05 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:16:43 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [PbVmdJSj0sDh9GDVXrrE59NiCPIhEP84] 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-11-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: 85cbe285-0acc-4b5f-f94f-08dbbede50c2 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 6STf+qsGU9yZz7feOXHsRqdr6tJ99A+JRA/BmU8mnORTb65BhDrdu0IQlDDQjPn2+LKj+TN5cNEayp6j+p5HmE9vYozj3U3wzGV68awEGfRJD0HKjsSTQb5e77aQNKknFE+Dk12WdkRE41Kie+HY7JStutR1Jg+FkXj3QEhILNwTcpe5BV6v3PSeO6RjjWRQwFfAxqUt5L0qB2p9vIjudLrL+xzLsfepQfEn11JegPemfCQpmnM5wBO7RldnViILhg1ZMtg71NTfgQllcqdRSgMJxFMAFJkcIDcD++Eeu9jDP9aIlmiGp1XoqnvKCnRCRdXCGDfl/61H78YqgJXg9rlpSzeVlWXyPq5vGkiXzHrrHE/fcL60ebDYTV3dTwqbC+/cp3AIstr+4QNCAHB+tcE3TwNCGzHMefM3dyP/sULBMUSs1x+qRS4jxKMUFBNIdcwj8UJLbc1vajqxfuF2yMg1OaZIgslQu4+/0F4kwP0jxV7SXPLgmhebjY/pifnTNaLpi37U7klINuXy0ndqKm1GlliJoGOZkjxXZt17TIL8nqQK9SRWLPnPZ6kvHnfkTfx7B0vPTIEg7/7btmDT/zcbrNceJ3gKfhhbD5o+bNJGM06O4xTFkWWqkj9txSV9 X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?4hiaak1GawusZ5UfdcgGKgdxrizQiCmjLYqqoKBh7CmFr6QZJIrhChEgL6p1?= =?us-ascii?Q?BjAflcnOIv/pPVgJ0MDvDwrr2vpGdHnKzCX1nhFLb8DtBf7Rp5HqurfGOgMq?= =?us-ascii?Q?FEd9RoR+04f6rGJsB7N+Uyue1ks29pHH2fVX/xqaEurF8V+oy0InDEE9vQTp?= =?us-ascii?Q?SBiuMpNYgex0aafY0d1gdQBt1jU+UT4cBsVCzwXkqPwW+heQ30reIFfnGewE?= =?us-ascii?Q?rQGIbWrz6n0rh+pbonrcqGqqVg1eZ3Mlb7gXWpvvTBCpQy6drLJP1kYcdbEb?= =?us-ascii?Q?1drsixPeq2fvJcOI53b0SR4vjf2Bpf3KGD0zmpBoOXehNOlYu4MEc+DX0PFg?= =?us-ascii?Q?IDKdEoJatyKYfIqA5VnmMwbxnsVGcLPfZKjbDE8HfB1agSEisKJcfZruI2AS?= =?us-ascii?Q?m44JGekLq9ZY2OMABfCToSzZ16G+fn3/grivKgcyA2W6x32cnlTgcaY5S1ZF?= =?us-ascii?Q?aAToWRk2xOMEDxXyueUj5DP1WmYXdClOpo+meIc5w23uV8pMUi5DJYKb4hqM?= =?us-ascii?Q?2O2U6tKbTfL1TcfY4ExJlw7RPGJatflMGhY/RtqCyxDyGykcNHpMS5VQWaYE?= =?us-ascii?Q?pnWqBrR8eT0cn+Ov0cduw/It12acVX88SYxnOoJGc4MBLNFv0tg8gNz1npj1?= =?us-ascii?Q?eCPh2GY32lbSwfAAxruRrBcdi6HoU3Ehb4lrGrD+eU+6hZtXLoIZscoIbgWu?= =?us-ascii?Q?d6Z7lVxZRWA9+3+DzfqmGwMaXmb1GWofEcigGDCIX6A1k0STqCeYEFqRAwIM?= =?us-ascii?Q?AHxehLYp/5gPlX9B1f3f3sluUJ7O94sek9lj2aRe5VI89glyNbCy7E0N+pRO?= =?us-ascii?Q?/CaG0GLgP3CgOllO4g2zJImP7H2b9C6PU+xI9BNKDpTRiCVBmQv8WLq+gOAg?= =?us-ascii?Q?80zXx2lKFbCE91fwN8vSSIw2CqKU/bHBr5WMafuLSTerH0PZ94wLkSbzik/8?= =?us-ascii?Q?xrutKAsfdRvDy7/CKa8KT+OLWTsizcM+5TTpcodhbvS0I0s1VEM5ZuRej0hz?= =?us-ascii?Q?KRyQ8X4cl/8QO6g7TT0B4O9PPZekLMYgyqJWdQpg9X0lS0CzxRR5UFRimoHk?= =?us-ascii?Q?Z6BR/ostlkBewORAyraS6B1LO6hARXzC7uT1j9f2ewn1j7auIb4pmKx3V+8y?= =?us-ascii?Q?ItVkCh9seoFsItkcrr6bsRb99jF5jgW0y35dsHzVVazBdErJz2tJYYJLnJNV?= =?us-ascii?Q?sD2Nc8bJLG6I3UFcc6cb6SsztyhtKIB0B8pFgG1f0fJfuj6cwWsXxG8SUy/g?= =?us-ascii?Q?eJ3dLwLC7x01cq2gFE6t?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 85cbe285-0acc-4b5f-f94f-08dbbede50c2 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:17:05.2465 (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 12/61] avcodec/svq1dec: 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 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: 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/svq1dec.c | 82 ++++++++++++++++++++------------------------ 1 file changed, 38 insertions(+), 44 deletions(-) diff --git a/libavcodec/svq1dec.c b/libavcodec/svq1dec.c index 8563b29164..372420bffe 100644 --- a/libavcodec/svq1dec.c +++ b/libavcodec/svq1dec.c @@ -45,12 +45,12 @@ #include "svq1.h" #define SVQ1_BLOCK_TYPE_VLC_BITS 3 -static VLC svq1_block_type; -static VLC svq1_motion_component; -static VLC svq1_intra_multistage[6]; -static VLC svq1_inter_multistage[6]; -static VLC svq1_intra_mean; -static VLC svq1_inter_mean; +static VLCElem svq1_block_type[8]; +static VLCElem svq1_motion_component[176]; +static const VLCElem *svq1_intra_multistage[6]; +static const VLCElem *svq1_inter_multistage[6]; +static VLCElem svq1_intra_mean[632]; +static VLCElem svq1_inter_mean[1434]; /* motion vector (prediction) */ typedef struct svq1_pmv_s { @@ -190,7 +190,7 @@ static int svq1_decode_block_intra(GetBitContext *bitbuf, uint8_t *pixels, height = 1 << ((3 + level) / 2); /* get number of stages (-1 skips vector, 0 for mean only) */ - stages = get_vlc2(bitbuf, svq1_intra_multistage[level].table, 3, 3) - 1; + stages = get_vlc2(bitbuf, svq1_intra_multistage[level], 3, 3) - 1; if (stages == -1) { for (y = 0; y < height; y++) @@ -206,7 +206,7 @@ static int svq1_decode_block_intra(GetBitContext *bitbuf, uint8_t *pixels, } av_assert0(stages >= 0); - mean = get_vlc2(bitbuf, svq1_intra_mean.table, 8, 3); + mean = get_vlc2(bitbuf, svq1_intra_mean, 8, 3); if (stages == 0) { for (y = 0; y < height; y++) @@ -257,7 +257,7 @@ static int svq1_decode_block_non_intra(GetBitContext *bitbuf, uint8_t *pixels, height = 1 << ((3 + level) / 2); /* get number of stages (-1 skips vector, 0 for mean only) */ - stages = get_vlc2(bitbuf, svq1_inter_multistage[level].table, 3, 2) - 1; + stages = get_vlc2(bitbuf, svq1_inter_multistage[level], 3, 2) - 1; if (stages == -1) continue; /* skip vector */ @@ -270,7 +270,7 @@ static int svq1_decode_block_non_intra(GetBitContext *bitbuf, uint8_t *pixels, } av_assert0(stages >= 0); - mean = get_vlc2(bitbuf, svq1_inter_mean.table, 9, 3) - 256; + mean = get_vlc2(bitbuf, svq1_inter_mean, 9, 3) - 256; if (buggy) { if (mean == -128) @@ -307,7 +307,7 @@ static int svq1_decode_motion_vector(GetBitContext *bitbuf, svq1_pmv *mv, for (i = 0; i < 2; i++) { /* get motion code */ - diff = get_vlc2(bitbuf, svq1_motion_component.table, 7, 2); + diff = get_vlc2(bitbuf, svq1_motion_component, 7, 2); if (diff < 0) return AVERROR_INVALIDDATA; else if (diff) { @@ -472,7 +472,7 @@ static int svq1_decode_delta_block(AVCodecContext *avctx, HpelDSPContext *hdsp, int result = 0; /* get block type */ - block_type = get_vlc2(bitbuf, svq1_block_type.table, + block_type = get_vlc2(bitbuf, svq1_block_type, SVQ1_BLOCK_TYPE_VLC_BITS, 1); /* reset motion vectors */ @@ -779,41 +779,35 @@ static int svq1_decode_frame(AVCodecContext *avctx, AVFrame *cur, static av_cold void svq1_static_init(void) { - VLC_INIT_STATIC(&svq1_block_type, SVQ1_BLOCK_TYPE_VLC_BITS, 4, - &ff_svq1_block_type_vlc[0][1], 2, 1, - &ff_svq1_block_type_vlc[0][0], 2, 1, 8); - - VLC_INIT_STATIC(&svq1_motion_component, 7, 33, - &ff_mvtab[0][1], 2, 1, - &ff_mvtab[0][0], 2, 1, 176); - - for (int i = 0, offset = 0; i < 6; i++) { - static const uint8_t sizes[2][6] = { { 14, 10, 14, 18, 16, 18 }, - { 10, 10, 14, 14, 14, 16 } }; - static VLCElem table[168]; - svq1_intra_multistage[i].table = &table[offset]; - svq1_intra_multistage[i].table_allocated = sizes[0][i]; - offset += sizes[0][i]; - vlc_init(&svq1_intra_multistage[i], 3, 8, - &ff_svq1_intra_multistage_vlc[i][0][1], 2, 1, - &ff_svq1_intra_multistage_vlc[i][0][0], 2, 1, - VLC_INIT_USE_STATIC); - svq1_inter_multistage[i].table = &table[offset]; - svq1_inter_multistage[i].table_allocated = sizes[1][i]; - offset += sizes[1][i]; - vlc_init(&svq1_inter_multistage[i], 3, 8, - &ff_svq1_inter_multistage_vlc[i][0][1], 2, 1, - &ff_svq1_inter_multistage_vlc[i][0][0], 2, 1, - VLC_INIT_USE_STATIC); + static VLCElem table[168]; + VLCInitState state = VLC_INIT_STATE(table); + + VLC_INIT_STATIC_TABLE(svq1_block_type, SVQ1_BLOCK_TYPE_VLC_BITS, 4, + &ff_svq1_block_type_vlc[0][1], 2, 1, + &ff_svq1_block_type_vlc[0][0], 2, 1, 0); + + VLC_INIT_STATIC_TABLE(svq1_motion_component, 7, 33, + &ff_mvtab[0][1], 2, 1, + &ff_mvtab[0][0], 2, 1, 0); + + for (int i = 0; i < 6; i++) { + svq1_intra_multistage[i] = + ff_vlc_init_tables(&state, 3, 8, + &ff_svq1_intra_multistage_vlc[i][0][1], 2, 1, + &ff_svq1_intra_multistage_vlc[i][0][0], 2, 1, 0); + svq1_inter_multistage[i] = + ff_vlc_init_tables(&state, 3, 8, + &ff_svq1_inter_multistage_vlc[i][0][1], 2, 1, + &ff_svq1_inter_multistage_vlc[i][0][0], 2, 1, 0); } - VLC_INIT_STATIC(&svq1_intra_mean, 8, 256, - &ff_svq1_intra_mean_vlc[0][1], 4, 2, - &ff_svq1_intra_mean_vlc[0][0], 4, 2, 632); + VLC_INIT_STATIC_TABLE(svq1_intra_mean, 8, 256, + &ff_svq1_intra_mean_vlc[0][1], 4, 2, + &ff_svq1_intra_mean_vlc[0][0], 4, 2, 0); - VLC_INIT_STATIC(&svq1_inter_mean, 9, 512, - &ff_svq1_inter_mean_vlc[0][1], 4, 2, - &ff_svq1_inter_mean_vlc[0][0], 4, 2, 1434); + VLC_INIT_STATIC_TABLE(svq1_inter_mean, 9, 512, + &ff_svq1_inter_mean_vlc[0][1], 4, 2, + &ff_svq1_inter_mean_vlc[0][0], 4, 2, 0); } static av_cold int svq1_decode_init(AVCodecContext *avctx) -- 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".