From patchwork Tue Sep 26 22:17:09 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 43950 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:2a18:b0:15d:8365:d4b8 with SMTP id e24csp2210592pzh; Tue, 26 Sep 2023 15:21:56 -0700 (PDT) X-Google-Smtp-Source: AGHT+IF2Au4/LdNjx4StcL66u6NwULCk2NZ/UYEJtAcc/tQwoXXOiBlbr++5cnloAL+01vCY/Zcf X-Received: by 2002:a2e:8853:0:b0:2c0:20e3:990f with SMTP id z19-20020a2e8853000000b002c020e3990fmr315366ljj.10.1695766916619; Tue, 26 Sep 2023 15:21:56 -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 va1-20020a17090711c100b009a63cbd4b02si12857550ejb.932.2023.09.26.15.21.56; Tue, 26 Sep 2023 15:21:56 -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=SfJ4V87U; 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 BB97668CB43; Wed, 27 Sep 2023 01:20:13 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2094.outbound.protection.outlook.com [40.92.89.94]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A954068CB3E for ; Wed, 27 Sep 2023 01:20:11 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=AquM2lF28q7C/66CA47IC9xhxevEJJ4BSTv7dYsfmuF5jUFHThCGE0nMY6sRMRiL58+maG1BJVPiRShXIsNXNXy06YMtRCPWFvFw8O4Hm/L3XW9LPWKbXRRExn0i9wko9sYmYaZ1ACDSnpDd2V3Lrjl1bKl8NyY8unCAifA4rhLi8VO3vfojVm+5ACt/hRFQIKGbaX7WCGVuOWfvqMoNrk7+0boAIASh1haP9nSCJIvNwq/4AU8G6XzkEcOVvcsq6qbzQBaEQE7Xt27ygZLAodN7JxjRpauEwPmeJYXmvjPsb1Y/AVT1R5obsLlFij1C2eFrwnu5j+mRfckKGvDH/g== 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=1B5enq/LsnORfIO6itSi1wk5sL5DIsJnFCwfBKe4ezU=; b=YIlNqYpUGpMh8YTNn45Xp6n5tJ+o3Gi6hy857nyn6jAMntzd/1mnaol+J2CJw1YUUHerqYnx+7PPN4OOUiXbO+PsZRTztMiaDHA1TvO9EyMwXJiqIIOWuATwyLnMLe99DzzUKmqRBVc9EnM0YxD4cwgLKKkxmsuJHh9Ut1uHUqG9JXhnZBLO6qUpeAuEQFmBT1CNHsDLavNI3STnyv7NiM/ry71PqdfaCT27aPT4YnZnCTX7m8bRcPv88lzjz3O+AQiD3/OuLdDHtsi/bu6YP4ZvEKx4zlk5VtH/VJgGpANmYVkOQoJtJBl/fAcN6Q5RronrArJuqWZwuZZSqunUow== 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=1B5enq/LsnORfIO6itSi1wk5sL5DIsJnFCwfBKe4ezU=; b=SfJ4V87UltFw5dG+DVhqzQC5PP5JJbDmxVMcebxqvyz9FX2uMGg1VcxPaQJskSelv5Xo6sqYGnYgSwMhFQB86rw3JbQ3zP6NgOVZAF9E7MELgzt1PuZipl6pIfPFFdIf80js/BzdI8VZp6i1TgziOxx9ybrxOAUssWDkCuylCCQdIT+Psm0ZfO5eV35+gN6U7YNW8cSj6iw1yvXY5CudsVEXJ/v9XxWQ8BsVVfzHEDJlMv32oztPykgbAwy+4fua13ldNiCc/zpkVTSsfNX9t58R17g/hgmzls0iflDPQGaCeDEMVyAHcCXch7yukOOWC1Gvj/IOwMCtpbpzDloLmg== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS8P250MB0393.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37e::16) 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:20:10 +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:20:10 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 27 Sep 2023 00:17:09 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [TNy71Cc8LU3Pe5gnpYXIPM/+N49sLlfx] 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-37-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS8P250MB0393:EE_ X-MS-Office365-Filtering-Correlation-Id: 78e8dcea-3337-495e-e1a7-08dbbedebee1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: hegMkX7ZLgCiXScJZGYl9XFRbyEEzz+OI7qFK5VmkKVO6ukiDYzE+t/SoGYkk7+W7rdZZWEWBPht6UfDVYleG6NKRK2tSk4fnwoobTUrmGto4mHRHhIyx4n0cGaUdkklSgpdwycd4POjvjlS5ERv72kugvhkBU1xGvJJx939H7vDALRlSiM6Hk3j+0QiB2klWILyYr3nVVHDgrmIzMVGfxyDRFsQYIbRKziqaIeHwJd6UFY367P/YZicFIH7kmBtxkOAQ7G2wcnGGbrzDVNtmy2VqI3MARFVvgYRHKuSaNmdXHDbI3nhm6PfQdyg/uNijheMIDDB5okYbhcUbKHkVIqHlaxFvDUOvRekEu4638i0yTU57t73LTeB0LBnJ/Ikt2DR6NPIMT/F5cq3my6DsLcRZTaa20XrFIyfqHtnCJCEKL7Mro72E15VUvLGVvAn3mUkHgvWjJcf4w8uGBNXmek1W4tB7z3M+jmMMQfrJXE3zEcsK2sOD84vmHhRjNuANOV4Hp9pB24HqS6/t4eyf8dhnK6JVK/NfVxFR5JPUvM1e5GakZssIEMLUK0b6kKDVYP/q5ENHe7rvYk6U1bU+5WU5ZECW3kPmerid9ljNZTICa6mqj7yCyx0pbAA8LTN X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: UpGYhdC0xIBjW3IhtC3yvs7d5ViKzmk+ni5XclSMpHpwy4C1SmYlBfecM3YPfcZMLTXQ3cBrK92q1+jg6HSzj+kiqvr9upgV5WJl6M1KVasmtRz586+icn9eLkLWhGlxhg6Ay8ATpEpKz+gYmpdnIun8QFT8Okju9Wz17bdX3MCNnDcfFMpm8/0wEceNQoEsJ/NQyrwkFnSLTybyTk40Sl35LRdHEQEyFcI6KOLcZfkzd1JiisoXsCLBF/uCg694fibToWVgfo7vGxYwFxRnRzt6B4WW9PFWS6DplvXhFdTMgvii9pjuiG7//j75cDnAS1E7SxVtBcLBkpM5vGAotXMxYyVkruOldAmQ8FKMPtDnVAaJwlpdoRIONFSOvdaaKKYQ4l6cYLr5SyUMoiQ2LDCmdS5IRiLcHBBCy5jyQcQ/30mghrgsWpCNE0DNzXOfrFY1AbqBR/gta89Sds2m7z8Rh9nnc+5xwDCLoPXmAkrvk+Gdz//mtSvYjai+U7KBhOxVPMXBQFTNOvoIxBpRrDGm91RpoqXaF+CHstLDUiJoQdDs/WVM+QxmTbwVcFbsqSrVIqvpwMmgM9NfgnS2sLi9vqzod+APp6o6GvLkuAI81WhqPsf7aiomh+RPhQSsBPLh5LK4306TXGt5xtl36vrpyrXHGp/9R8LwA3nxTEVF+WS9hq5l7VsJEYV21bFCWvpqIQQ280uEx7zCkbgboiBd9SSq4BHpzqF4yymCGbeCbDWtubbaARG8YecuVYn51aeQvRbrvH7FPrUeQDa7eXLtauUsZKt7/NtWZyG2DQ+xE82sHfRh+SxDmc+jrWD9/17YnBj/HWcN3EvghzOqkq2m5SPo62dOfK7fuBV/CPghb0SA5iiDlLn4PTMt+27pvRoMJS/bNMuVvLFrm0Jvy7ya6uJz/u/RU/cr4btZvV/zGP5Is9qiEwaARXcO9i2ngZJZZ8mHg4J7YfI09YMoHYii/qEipok6jismKczDYMYGl1LGVxHkb5Of59zODiMyNJ9V3WAeMBO3bQ2X9CSQ26E/6/8NV8hhJk2Zy0NqUKdZUyVE6OOmgNzSfuKPzxZGgvrUz6/W8iKKy29fdm6V0LQAfDvBDOsB+0HMHr59lCTDX3DUZwwAgnnXihgjrpGrZ+pHbQBMt6JuI6QLQfaMYQHkMVDeTS1H7XZ+S6PPWKyvv2HLw7OXVFkDUN1/+7uKc88AmQ9qZdSOCkLKd3cURHCtoIBz8ZNBxwYTHGeWY19Grmn9/4rZIFZmoQq/1Fur X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 78e8dcea-3337-495e-e1a7-08dbbedebee1 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:20:10.0252 (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: AS8P250MB0393 Subject: [FFmpeg-devel] [PATCH 38/61] avcodec/mpeg4videodec: 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: eEfcE6oH8xCD For all VLCs here, the number of bits of the VLC is write-only, because it is hardcoded at the call site. Therefore one can replace these VLC structures with the only thing that is actually used: The pointer to the VLCElem table. And in some cases one can even avoid this. Signed-off-by: Andreas Rheinhardt --- libavcodec/mpeg4videodec.c | 93 ++++++++++++++++++-------------------- 1 file changed, 45 insertions(+), 48 deletions(-) diff --git a/libavcodec/mpeg4videodec.c b/libavcodec/mpeg4videodec.c index 51a2c7fe35..347e5f7809 100644 --- a/libavcodec/mpeg4videodec.c +++ b/libavcodec/mpeg4videodec.c @@ -57,12 +57,12 @@ #define MB_TYPE_B_VLC_BITS 4 #define STUDIO_INTRA_BITS 9 -static VLC dc_lum, dc_chrom; -static VLC sprite_trajectory; -static VLC mb_type_b_vlc; -static VLC studio_intra_tab[12]; -static VLC studio_luma_dc; -static VLC studio_chroma_dc; +static VLCElem dc_lum[512], dc_chrom[512]; +static VLCElem sprite_trajectory[128]; +static VLCElem mb_type_b_vlc[16]; +static const VLCElem *studio_intra_tab[12]; +static VLCElem studio_luma_dc[528]; +static VLCElem studio_chroma_dc[528]; static const uint8_t mpeg4_block_count[4] = { 0, 6, 8, 12 }; @@ -448,14 +448,14 @@ static int mpeg4_decode_sprite_trajectory(Mpeg4DecContext *ctx, GetBitContext *g int length; int x = 0, y = 0; - length = get_vlc2(gb, sprite_trajectory.table, SPRITE_TRAJ_VLC_BITS, 2); + length = get_vlc2(gb, sprite_trajectory, SPRITE_TRAJ_VLC_BITS, 2); if (length > 0) x = get_xbits(gb, length); if (!(ctx->divx_version == 500 && ctx->divx_build == 413)) check_marker(s->avctx, gb, "before sprite_trajectory"); - length = get_vlc2(gb, sprite_trajectory.table, SPRITE_TRAJ_VLC_BITS, 2); + length = get_vlc2(gb, sprite_trajectory, SPRITE_TRAJ_VLC_BITS, 2); if (length > 0) y = get_xbits(gb, length); @@ -890,9 +890,9 @@ static inline int mpeg4_decode_dc(MpegEncContext *s, int n, int *dir_ptr) int level, code; if (n < 4) - code = get_vlc2(&s->gb, dc_lum.table, DC_VLC_BITS, 1); + code = get_vlc2(&s->gb, dc_lum, DC_VLC_BITS, 1); else - code = get_vlc2(&s->gb, dc_chrom.table, DC_VLC_BITS, 1); + code = get_vlc2(&s->gb, dc_chrom, DC_VLC_BITS, 1); if (code < 0 || code > 9 /* && s->nbit < 9 */) { av_log(s->avctx, AV_LOG_ERROR, "illegal dc vlc\n"); @@ -1839,7 +1839,7 @@ static int mpeg4_decode_mb(MpegEncContext *s, int16_t block[6][64]) cbp = 0; } else { modb2 = get_bits1(&s->gb); - mb_type = get_vlc2(&s->gb, mb_type_b_vlc.table, MB_TYPE_B_VLC_BITS, 1); + mb_type = get_vlc2(&s->gb, mb_type_b_vlc, MB_TYPE_B_VLC_BITS, 1); if (mb_type < 0) { av_log(s->avctx, AV_LOG_ERROR, "illegal MB_type\n"); return AVERROR_INVALIDDATA; @@ -2071,7 +2071,7 @@ static int mpeg4_decode_studio_block(MpegEncContext *s, int32_t block[64], int n int cc, dct_dc_size, dct_diff, code, j, idx = 1, group = 0, run = 0, additional_code_len, sign, mismatch; - const VLC *cur_vlc = &studio_intra_tab[0]; + const VLCElem *cur_vlc = studio_intra_tab[0]; uint8_t *const scantable = s->intra_scantable.permutated; const uint16_t *quant_matrix; uint32_t flc; @@ -2085,14 +2085,14 @@ static int mpeg4_decode_studio_block(MpegEncContext *s, int32_t block[64], int n if (n < 4) { cc = 0; - dct_dc_size = get_vlc2(&s->gb, studio_luma_dc.table, STUDIO_INTRA_BITS, 2); + dct_dc_size = get_vlc2(&s->gb, studio_luma_dc, STUDIO_INTRA_BITS, 2); quant_matrix = s->intra_matrix; } else { cc = (n & 1) + 1; if (ctx->rgb) - dct_dc_size = get_vlc2(&s->gb, studio_luma_dc.table, STUDIO_INTRA_BITS, 2); + dct_dc_size = get_vlc2(&s->gb, studio_luma_dc, STUDIO_INTRA_BITS, 2); else - dct_dc_size = get_vlc2(&s->gb, studio_chroma_dc.table, STUDIO_INTRA_BITS, 2); + dct_dc_size = get_vlc2(&s->gb, studio_chroma_dc, STUDIO_INTRA_BITS, 2); quant_matrix = s->chroma_intra_matrix; } @@ -2121,7 +2121,7 @@ static int mpeg4_decode_studio_block(MpegEncContext *s, int32_t block[64], int n /* AC Coefficients */ while (1) { - group = get_vlc2(&s->gb, cur_vlc->table, STUDIO_INTRA_BITS, 2); + group = get_vlc2(&s->gb, cur_vlc, STUDIO_INTRA_BITS, 2); if (group < 0) { av_log(s->avctx, AV_LOG_ERROR, "illegal ac coefficient group vlc\n"); @@ -2129,7 +2129,7 @@ static int mpeg4_decode_studio_block(MpegEncContext *s, int32_t block[64], int n } additional_code_len = ac_state_tab[group][0]; - cur_vlc = &studio_intra_tab[ac_state_tab[group][1]]; + cur_vlc = studio_intra_tab[ac_state_tab[group][1]]; if (group == 0) { /* End of Block */ @@ -3760,28 +3760,25 @@ static int mpeg4_update_thread_context_for_user(AVCodecContext *dst, static av_cold void mpeg4_init_static(void) { static uint8_t mpeg4_rvlc_rl_tables[2][2][2 * MAX_RUN + MAX_LEVEL + 3]; + static VLCElem vlc_buf[6498]; + VLCInitState state = VLC_INIT_STATE(vlc_buf); - VLC_INIT_STATIC_FROM_LENGTHS(&studio_luma_dc, STUDIO_INTRA_BITS, 19, - &ff_mpeg4_studio_dc_luma[0][1], 2, - &ff_mpeg4_studio_dc_luma[0][0], 2, 1, - 0, 0, 528); + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(studio_luma_dc, STUDIO_INTRA_BITS, 19, + &ff_mpeg4_studio_dc_luma[0][1], 2, + &ff_mpeg4_studio_dc_luma[0][0], 2, 1, + 0, 0); - VLC_INIT_STATIC_FROM_LENGTHS(&studio_chroma_dc, STUDIO_INTRA_BITS, 19, - &ff_mpeg4_studio_dc_chroma[0][1], 2, - &ff_mpeg4_studio_dc_chroma[0][0], 2, 1, - 0, 0, 528); + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(studio_chroma_dc, STUDIO_INTRA_BITS, 19, + &ff_mpeg4_studio_dc_chroma[0][1], 2, + &ff_mpeg4_studio_dc_chroma[0][0], 2, 1, + 0, 0); - for (unsigned i = 0, offset = 0; i < 12; i++) { - static VLCElem vlc_buf[6498]; - - studio_intra_tab[i].table = &vlc_buf[offset]; - studio_intra_tab[i].table_allocated = FF_ARRAY_ELEMS(vlc_buf) - offset; - ff_vlc_init_from_lengths(&studio_intra_tab[i], - STUDIO_INTRA_BITS, 24, - &ff_mpeg4_studio_intra[i][0][1], 2, - &ff_mpeg4_studio_intra[i][0][0], 2, 1, - 0, VLC_INIT_STATIC_OVERLONG, NULL); - offset += studio_intra_tab[i].table_size; + for (unsigned i = 0; i < 12; i++) { + studio_intra_tab[i] = + ff_vlc_init_tables_from_lengths(&state, STUDIO_INTRA_BITS, 24, + &ff_mpeg4_studio_intra[i][0][1], 2, + &ff_mpeg4_studio_intra[i][0][0], 2, 1, + 0, 0); } ff_mpeg4_init_rl_intra(); @@ -3790,18 +3787,18 @@ static av_cold void mpeg4_init_static(void) INIT_FIRST_VLC_RL(ff_mpeg4_rl_intra, 554); VLC_INIT_RL(ff_rvlc_rl_inter, 1072); INIT_FIRST_VLC_RL(ff_rvlc_rl_intra, 1072); - VLC_INIT_STATIC(&dc_lum, DC_VLC_BITS, 10 /* 13 */, - &ff_mpeg4_DCtab_lum[0][1], 2, 1, - &ff_mpeg4_DCtab_lum[0][0], 2, 1, 512); - VLC_INIT_STATIC(&dc_chrom, DC_VLC_BITS, 10 /* 13 */, - &ff_mpeg4_DCtab_chrom[0][1], 2, 1, - &ff_mpeg4_DCtab_chrom[0][0], 2, 1, 512); - VLC_INIT_STATIC_FROM_LENGTHS(&sprite_trajectory, SPRITE_TRAJ_VLC_BITS, 15, - ff_sprite_trajectory_lens, 1, - NULL, 0, 0, 0, 0, 128); - VLC_INIT_STATIC(&mb_type_b_vlc, MB_TYPE_B_VLC_BITS, 4, - &ff_mb_type_b_tab[0][1], 2, 1, - &ff_mb_type_b_tab[0][0], 2, 1, 16); + VLC_INIT_STATIC_TABLE(dc_lum, DC_VLC_BITS, 10 /* 13 */, + &ff_mpeg4_DCtab_lum[0][1], 2, 1, + &ff_mpeg4_DCtab_lum[0][0], 2, 1, 0); + VLC_INIT_STATIC_TABLE(dc_chrom, DC_VLC_BITS, 10 /* 13 */, + &ff_mpeg4_DCtab_chrom[0][1], 2, 1, + &ff_mpeg4_DCtab_chrom[0][0], 2, 1, 0); + VLC_INIT_STATIC_TABLE_FROM_LENGTHS(sprite_trajectory, SPRITE_TRAJ_VLC_BITS, 15, + ff_sprite_trajectory_lens, 1, + NULL, 0, 0, 0, 0); + VLC_INIT_STATIC_TABLE(mb_type_b_vlc, MB_TYPE_B_VLC_BITS, 4, + &ff_mb_type_b_tab[0][1], 2, 1, + &ff_mb_type_b_tab[0][0], 2, 1, 0); } static av_cold int decode_init(AVCodecContext *avctx)