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 AB4174AB31 for ; Wed, 12 Jun 2024 13:51:58 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 4E19C68D96D; Wed, 12 Jun 2024 16:51:18 +0300 (EEST) Received: from EUR02-AM0-obe.outbound.protection.outlook.com (mail-am0eur02olkn2011.outbound.protection.outlook.com [40.92.49.11]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6BA4F68D917 for ; Wed, 12 Jun 2024 16:51:12 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=cdO9/iXcrOWw55JzJGcLyMqkoHFl2x5IaogLH+nwv5sBpnjPcg9rqzJN0VOt+4SoCgp4LWddg0SjOxcQqHrU6sb1sRutDu16bFuTe26nIkokQikmAvJMzN9Tmm+SWtYnxpvuRjOGVwway6msjOOjsQUSxeaKV5e/ad09RRJ0uGaVT5qhJtUtBDIzc+zzFYB0GOM2gHEjd7uctN4W4g8X+k5K1dx6w/w/gW0ptjr2j7TktsSSPT9XpwqNG7Ttn5iCra/idYcOSbfz3rpubqmAs3pojA7sw0zA8x9A0bkEdtLPJuJ7gjuuLre2ZR5FneIirBRY138gCt6KZLgj7b1pDg== 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=rVXqEVZ3WA0OmKe3zjgbSrgrO7dDO9qDDG9YY6XkdJE=; b=bdccw36uXi9mJ27Rdu/q353Z9iig9GztzzbABp9X6opsFmwdjvMq9NssOYU3fz0tKyx60D75u4f/P7tXQ86gxYqh8uU9pvizbtLdbxvMSlFj2lwdNMLkYT8yBrrUVwYuFfmKcz4+uqFlASotB7mk7X2hNPoTCvsbU972Jd0p89T3dBf/uVq8U8peu6Hbm8MORyP+nfLRmUooQohotXyFb0vrnI6MSLcnO5Xl0mzy9qI36aB3JuVdKcSLiqWCtHpvoEQQWO2RLR/LZt2jvrdYEbBw4jDDKkDY2SAErKSD9jJgIr/lL0/l5iD0eQxYZ5TFxr7yUBRlLACeZCZtvc6KhQ== 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=rVXqEVZ3WA0OmKe3zjgbSrgrO7dDO9qDDG9YY6XkdJE=; b=t78Nkr9QIWab+7goRZps1FJGCA/q7JG7lXBS9779ZtDBISR9c3gKJ/GQm52r1h0uAES/Ieod3KXWJaNr7R61AbRwK9LtxUg7gXaA2ERbzXYgxANHjls7+dNzDXCb6aBFE6GmIIOKDtNN/lurHnjvc4a/5JvwHZwndTABGlwthtHdX2jbvVvy+pOgdY3jmP/uQaKwQ0r5qKx8SvSuZNTwXYiCt6CLOByp3sceex1MH87O090GG9F3SrE1fUDXXq9SS3nFU5PLDAsuaa/AlkRdYFrJSm5lqTZNOQLcWCCq1x1rrmQPClb0ZYoLgMvy7nJMKoxAjhZlN9KO7hrB4q7onw== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by AS1P250MB0479.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:4a4::14) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7633.36; Wed, 12 Jun 2024 13:51:10 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614%3]) with mapi id 15.20.7633.036; Wed, 12 Jun 2024 13:51:10 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 12 Jun 2024 15:48:11 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [IQTjNBAa5jUCsOdNUHCHX3sUqBqNia1Dkbt+sO2zai4=] X-ClientProxiedBy: ZR0P278CA0189.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:44::6) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240612134853.2102377-14-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|AS1P250MB0479:EE_ X-MS-Office365-Filtering-Correlation-Id: 9a432f88-2ca2-49ef-5692-08dc8ae6b757 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199020|440099020|3412199017|1710799020; X-Microsoft-Antispam-Message-Info: gUKURXozn4MAt7oMV7O+3TrJ94fT/RzbroJUGahNR502hswKXJkcJcpLg+ubwmdnKyzYhFLiNba26mGMwrYmqZ1XS4IvoUTLfPh8fhk4UKQ9q7Qsjfm+FQDUHqaGJXfWc2nTWDWxz7JeMSGQaRKP6Rlkerfnif07qUzrtGhqJ4vzXJfxJ6CBTsjTWNM3VkqgZfjnCbycg09EKf9d5hUQHizvcmdiAkMEdf7gAw9nIE1p+C2lbljaBbwO0TwNjfkdI9oJplBKYCvbBptXHwHaeJ22BEZ6Yg9qx/u8C9LQnf8VeaKeC2W6gMof667888FpqIKYx3SWt9vI2CN2FrKtuTMUlpXcfce7yWbEgCHI8Xa1f2NQ3LotFXfY+Jjpr7aDSst5DFMA865RciioM4JGXzTbbiwiWeiVOgqelp703R5Fh3jRmf0oY9IfA7qCFh3NYKat2caP+Yrdd36ytQDp4RjWjivlN6JfQR0x0q2gY84W9w+LUW1fuuq5tthineztljXu79EwwrNKpOxF5pQd2vTDVXF/7AYH1Pkh3i1bq37KFPHnamIexCYdPztByK8C9QXe1dtgi8gQjfUKAFsr0OY6DjvEHt3D4/Km9nfckDX3lfTuE75ctKcp1wWhPq1b X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?r47fc+u0aXRtSPzBVjpZeE4/Gh1Vv6xfmQUokmTD5veCngONHeUatTyNxs9A?= =?us-ascii?Q?w0UjEOSaaiKq06kJGsMy11S5NLXQk/EfbOP+gvfMJd1B7wqX5mYtPOfKQGSP?= =?us-ascii?Q?i+XhjXiqZPteM7c4GXyTNwHCHjNbbi2AXybMxY0BMRr45kF9O9lGHgGy9q5E?= =?us-ascii?Q?zSTVzX3RpCRkg6kn3M0kaRHT0ih+ERHgrVWs9IkVrxxuD6dMGvnUExDJWyiq?= =?us-ascii?Q?ifMMXIL8QCSGRgfxF7XHPoXxoqzvgPoyscuTay3Bt2C0KQ/wTkPSdFV/Jf7m?= =?us-ascii?Q?2SezHa4+IeCiJ8SPNb1eLB4/ArIoQXap5EDKYoVSSZn9Jl3z2ryVCvToIZH3?= =?us-ascii?Q?6S/fu4NLqJzWuhFyl3bbdfq4CAitoLPxOzpovzgCkbmxx2WvpMojYnClBVfC?= =?us-ascii?Q?+rhSzISb56We3vD453lPREj1OTi66GhXSLPThNSK0TzugpauMpaN9WIn8Vex?= =?us-ascii?Q?xex2++hlpqcvckQNaQ1Gin+1q/s+lKRSVh/GDGyQIkS17OoPLaGPhc8oCHUU?= =?us-ascii?Q?xnoCxo75oqZIPCAYgsNxfIIKR2XiOGZd1jXyeULkjtviRns1SC3XiEM0pxKT?= =?us-ascii?Q?+mBea1h1NZIEWEd5RPrLAES7pMAc+55m8/NEFXnAz/YTeMIGdcNH1eLv3z0/?= =?us-ascii?Q?0AVcF+0w+Hb7mjihxYe4ZT9AvpBrOFH4FYCYH2fCkL7GtS+9AX5KmYI/QK0x?= =?us-ascii?Q?0Fbo625CSDHdFLEUwsp6VQozgKWmGzyS1kfjolSzIK72LCDzai+QGfdjMk3E?= =?us-ascii?Q?VvkxJlsADJXZFsw8ZAXJ5q8mQbzuo9L+DGTN4NxQeFvTSPIx8HP6rHIkl22q?= =?us-ascii?Q?Y5QqSPDMvAlhlU29iuH6Lc3dYjutTV4aXSGKZEoz2P98NVP5Mksf2lp9pEG5?= =?us-ascii?Q?P0VI6B7OiEnzah2YC+3sY/MB8aBO2y5fukZUMkcsrYfDt8W070/5l5hBxXaX?= =?us-ascii?Q?9NRlQhPCrnrdftist4pdy8J/Fc3LINxs0YIht5mIrpwcdKBqyQ4/yiJ60kp3?= =?us-ascii?Q?xttwKaEg187WbmYWQgyKmdLNEpWOvWD8OdJa/pWX9a7qqIyJXKkJbSO1J01h?= =?us-ascii?Q?8bigcWGdpqrb46g+BTYDSvUICVHXWXV4Dg7MPlWFhn7GBOjP6Q9EcwIfRTAm?= =?us-ascii?Q?kxJbRyHew6Qw8oudindqRvIz+Pm4g8AZp2eZXtHDdwpTV4rNK3scmLvXFrYu?= =?us-ascii?Q?kkoquBwHpWILMHemxSIdnKuxOjffhUZFNu3ng1RM25wzBvzOGwggWLmcDyae?= =?us-ascii?Q?kt14L0w+SpQl9VWpSoK9ypmEkgLqkQWunPK2ka9b2A=3D=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9a432f88-2ca2-49ef-5692-08dc8ae6b757 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 12 Jun 2024 13:51:10.4663 (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: AS1P250MB0479 Subject: [FFmpeg-devel] [PATCH 15/57] avcodec/mpeg12dec: Use VLC symbol table 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: Possible by using MB_TYPE_CODEC_SPECIFIC for MB_TYPE_ZERO_MV and due to the MB_TYPE_*_MV flags fitting into an int16_t. Signed-off-by: Andreas Rheinhardt --- libavcodec/mpeg12.c | 42 +++++++++++++++++++++++++++++++++--------- libavcodec/mpeg12dec.c | 28 ---------------------------- libavcodec/mpeg12dec.h | 2 ++ 3 files changed, 35 insertions(+), 37 deletions(-) diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c index 62d7fd1814..444ea83f3c 100644 --- a/libavcodec/mpeg12.c +++ b/libavcodec/mpeg12.c @@ -31,14 +31,12 @@ #include "libavutil/avassert.h" #include "libavutil/thread.h" -#include "avcodec.h" #include "mpegvideo.h" -#include "mpeg12.h" #include "mpeg12codecs.h" #include "mpeg12data.h" #include "mpeg12dec.h" +#include "mpegutils.h" #include "rl.h" -#include "startcode.h" static const uint8_t table_mb_ptype[7][2] = { { 3, 5 }, // 0x01 MB_INTRA @@ -64,6 +62,30 @@ static const uint8_t table_mb_btype[11][2] = { { 2, 5 }, // 0x1E MB_QUANT|MB_FOR|MB_BACK|MB_PAT }; +static const int16_t ptype2mb_type[7] = { + MB_TYPE_INTRA, + MB_TYPE_FORWARD_MV | MB_TYPE_CBP | MB_TYPE_ZERO_MV | MB_TYPE_16x16, + MB_TYPE_FORWARD_MV, + MB_TYPE_FORWARD_MV | MB_TYPE_CBP, + MB_TYPE_QUANT | MB_TYPE_INTRA, + MB_TYPE_QUANT | MB_TYPE_FORWARD_MV | MB_TYPE_CBP | MB_TYPE_ZERO_MV | MB_TYPE_16x16, + MB_TYPE_QUANT | MB_TYPE_FORWARD_MV | MB_TYPE_CBP, +}; + +static const int16_t btype2mb_type[11] = { + MB_TYPE_INTRA, + MB_TYPE_BACKWARD_MV, + MB_TYPE_BACKWARD_MV | MB_TYPE_CBP, + MB_TYPE_FORWARD_MV, + MB_TYPE_FORWARD_MV | MB_TYPE_CBP, + MB_TYPE_BIDIR_MV, + MB_TYPE_BIDIR_MV | MB_TYPE_CBP, + MB_TYPE_QUANT | MB_TYPE_INTRA, + MB_TYPE_QUANT | MB_TYPE_BACKWARD_MV | MB_TYPE_CBP, + MB_TYPE_QUANT | MB_TYPE_FORWARD_MV | MB_TYPE_CBP, + MB_TYPE_QUANT | MB_TYPE_BIDIR_MV | MB_TYPE_CBP, +}; + av_cold void ff_init_2d_vlc_rl(const uint16_t table_vlc[][2], RL_VLC_ELEM rl_vlc[], const int8_t table_run[], const uint8_t table_level[], int n, unsigned static_size, int flags) @@ -146,12 +168,14 @@ static av_cold void mpeg12_init_vlcs(void) &ff_mpeg12_mbPatTable[0][1], 2, 1, &ff_mpeg12_mbPatTable[0][0], 2, 1, 0); - VLC_INIT_STATIC_TABLE(ff_mb_ptype_vlc, MB_PTYPE_VLC_BITS, 7, - &table_mb_ptype[0][1], 2, 1, - &table_mb_ptype[0][0], 2, 1, 0); - VLC_INIT_STATIC_TABLE(ff_mb_btype_vlc, MB_BTYPE_VLC_BITS, 11, - &table_mb_btype[0][1], 2, 1, - &table_mb_btype[0][0], 2, 1, 0); + VLC_INIT_STATIC_SPARSE_TABLE(ff_mb_ptype_vlc, MB_PTYPE_VLC_BITS, 7, + &table_mb_ptype[0][1], 2, 1, + &table_mb_ptype[0][0], 2, 1, + ptype2mb_type, 2, 2, 0); + VLC_INIT_STATIC_SPARSE_TABLE(ff_mb_btype_vlc, MB_BTYPE_VLC_BITS, 11, + &table_mb_btype[0][1], 2, 1, + &table_mb_btype[0][0], 2, 1, + btype2mb_type, 2, 2, 0); ff_init_2d_vlc_rl(ff_mpeg1_vlc_table, ff_mpeg1_rl_vlc, ff_mpeg12_run, ff_mpeg12_level, MPEG12_RL_NB_ELEMS, diff --git a/libavcodec/mpeg12dec.c b/libavcodec/mpeg12dec.c index 601106138e..e0e9a8fb1e 100644 --- a/libavcodec/mpeg12dec.c +++ b/libavcodec/mpeg12dec.c @@ -93,32 +93,6 @@ typedef struct Mpeg1Context { int64_t timecode_frame_start; /*< GOP timecode frame start number, in non drop frame format */ } Mpeg1Context; -#define MB_TYPE_ZERO_MV 0x20000000 - -static const uint32_t ptype2mb_type[7] = { - MB_TYPE_INTRA, - MB_TYPE_FORWARD_MV | MB_TYPE_CBP | MB_TYPE_ZERO_MV | MB_TYPE_16x16, - MB_TYPE_FORWARD_MV, - MB_TYPE_FORWARD_MV | MB_TYPE_CBP, - MB_TYPE_QUANT | MB_TYPE_INTRA, - MB_TYPE_QUANT | MB_TYPE_FORWARD_MV | MB_TYPE_CBP | MB_TYPE_ZERO_MV | MB_TYPE_16x16, - MB_TYPE_QUANT | MB_TYPE_FORWARD_MV | MB_TYPE_CBP, -}; - -static const uint32_t btype2mb_type[11] = { - MB_TYPE_INTRA, - MB_TYPE_BACKWARD_MV, - MB_TYPE_BACKWARD_MV | MB_TYPE_CBP, - MB_TYPE_FORWARD_MV, - MB_TYPE_FORWARD_MV | MB_TYPE_CBP, - MB_TYPE_BIDIR_MV, - MB_TYPE_BIDIR_MV | MB_TYPE_CBP, - MB_TYPE_QUANT | MB_TYPE_INTRA, - MB_TYPE_QUANT | MB_TYPE_BACKWARD_MV | MB_TYPE_CBP, - MB_TYPE_QUANT | MB_TYPE_FORWARD_MV | MB_TYPE_CBP, - MB_TYPE_QUANT | MB_TYPE_BIDIR_MV | MB_TYPE_CBP, -}; - /* as H.263, but only 17 codes */ static int mpeg_decode_motion(MpegEncContext *s, int fcode, int pred) { @@ -483,7 +457,6 @@ static int mpeg_decode_mb(MpegEncContext *s, int16_t block[12][64]) "Invalid mb type in P-frame at %d %d\n", s->mb_x, s->mb_y); return AVERROR_INVALIDDATA; } - mb_type = ptype2mb_type[mb_type]; break; case AV_PICTURE_TYPE_B: mb_type = get_vlc2(&s->gb, ff_mb_btype_vlc, MB_BTYPE_VLC_BITS, 1); @@ -492,7 +465,6 @@ static int mpeg_decode_mb(MpegEncContext *s, int16_t block[12][64]) "Invalid mb type in B-frame at %d %d\n", s->mb_x, s->mb_y); return AVERROR_INVALIDDATA; } - mb_type = btype2mb_type[mb_type]; break; } ff_tlog(s->avctx, "mb_type=%x\n", mb_type); diff --git a/libavcodec/mpeg12dec.h b/libavcodec/mpeg12dec.h index 4641179149..79809b7c3e 100644 --- a/libavcodec/mpeg12dec.h +++ b/libavcodec/mpeg12dec.h @@ -25,6 +25,8 @@ #include "get_bits.h" #include "mpeg12vlc.h" +#define MB_TYPE_ZERO_MV MB_TYPE_CODEC_SPECIFIC + static inline int decode_dc(GetBitContext *gb, int component) { int code, diff; -- 2.40.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".