From patchwork Sun Oct 23 19:36:02 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 38925 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:4a86:b0:9d:28a3:170e with SMTP id fn6csp1859965pzb; Sun, 23 Oct 2022 12:37:08 -0700 (PDT) X-Google-Smtp-Source: AMsMyM7nKoQIdK8Q+M9+UaPfPhDHcZ8TNtrB0Iir69SRQI8p0kbgJr7NeC4nij6qABzSu7FQdxQF X-Received: by 2002:a17:907:8690:b0:791:9f83:6872 with SMTP id qa16-20020a170907869000b007919f836872mr22911842ejc.386.1666553828435; Sun, 23 Oct 2022 12:37:08 -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 l18-20020a50c112000000b00459b3e9983esi24616330edf.113.2022.10.23.12.37.08; Sun, 23 Oct 2022 12:37:08 -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=dP6PTBrJ; 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 A2E4D68BD2D; Sun, 23 Oct 2022 22:36:32 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02olkn2032.outbound.protection.outlook.com [40.92.50.32]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AD70368BCF6 for ; Sun, 23 Oct 2022 22:36:29 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MCAcjJRFqouPatimtHfvdUZ6RdUqJCqn5nNM1P3EUkmt5qTzqE1iakis6c4AgSgFwbO8YNxgDRf+CgNNjUPP6gcY95P7W0q8paIwEInXt8i8qLK+eLzqP45ppw2GOi3ACFgSMqme8Y1RyNr7p+AsXZgmCIJZBcoezIGH+HMreXRvZwx/bTsf1KpzPCGvcF+C1W+22t8KLinqKsrC+v2mcXkDF7698v8CLmuJKKpxMr5XP9grBRae8fHzp6IZt92aOtYBy2AVgvh8MoWVJHfE8Wto8CeBptFwjisGWRNQECD3JuHpJ89tBD819npAqBoQq4/zAHbYdLHDx6QZS+qxnQ== 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=qyvGGWi/g7SJZqeNmVm27Rr1QQVgNoryP1gpCE3zkVY=; b=AFqJtLcDy2i8IgO3U55sNu0K+d6lDXxYbmbZnhAtfgvwCF4L/Eab5eHaqKUe3Ud2EDnBrc1CJj9UBN/4qwU1EKz8CAclrGntGwCyhRbvkPC7GacReBcDCRb/PTnIugcxXLy93XLTqPsVz8H8QQJiXRMRkObsImzB+lueO5+yx2SnK5DjJsn3poKBUKXZmWvTgTeVRe6kEh6if1Mq2Dxtm6Iq8yXoAPTKVJkb+2u/SZ0emoSpF0dr+sMyRPSLUju6TxdYuf8hMqEuzFNcK+pTNNPTNqNrpiCTl5wvB0IsZwdTrYg5qKxnBq88dfNjehCwDMxOiGPBor56vvU6qIec9g== 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=qyvGGWi/g7SJZqeNmVm27Rr1QQVgNoryP1gpCE3zkVY=; b=dP6PTBrJK0SY1NH3P7cYtq4+twnJx4V2Wg3cp9uPM6gnG2r3Dq7LJnWJxe+VyxcCeEp5NaEPF0u+DdIg5W3OiGU9rsmXyLjR/6q87A1NQfFkw86O8f9XbjQLIJhTDk+9UC4VCAojrnMVAWjYQhnmpYZijTCNFmQJmPbobyuR/tUWct9ZNNqM1tHO3koJvrRlVGnUMLFhRVp91FWlaKv3FkHwhtIRwuQ5cjPumoQwZJx+S2msd71twjhByqKGvk9ywd4EJF/hhI60LjrxHJW3a95EqAuW+lSMQlhNXmwR28koKSH+RDP5TIv0w5gPr+P9kp89doYwIb086rDhSmckNw== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by GV2P250MB0825.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:aa::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5746.23; Sun, 23 Oct 2022 19:36:18 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::f9d7:680f:70c4:44fe]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::f9d7:680f:70c4:44fe%7]) with mapi id 15.20.5709.015; Sun, 23 Oct 2022 19:36:18 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 23 Oct 2022 21:36:02 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [JHZ4WIWFBuKUGHNUKF0+Wtw1i1o2bBolFfRWMdHq99Y=] X-ClientProxiedBy: FR3P281CA0032.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:1c::13) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20221023193610.674990-8-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|GV2P250MB0825:EE_ X-MS-Office365-Filtering-Correlation-Id: 2faef4f2-0f16-40f6-4d22-08dab52ddb6b X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmqH3kRfXJefTqIxzT/YbMNWLdp293YXLPILQHc5y53W/tigsizWYkcVLxeNNJ+zEkMsc/6jHrLGZ56T8Vz0Jw2zrq/qXAtYZzRBthh2oQhcIqgYjv8PH6ZjLDITca+hsBpTkS0zD2miky7hRVWksNh9i7pz1OPtnGZ8skTW3YTHQ6FvCd8OZ1Pyav6xF9QNvysfh0rJJU2e8QM7mjS1mnnoVkXppjhTOC0B5hP1GmV0v5UbENpGoulFiu9Rgpe4x7DB7UenE1BADoj8yToa7a0af5BUyHqnnO66L61hkvjsx1WNa+XmhMYbctX0WTlXv40BXjKw7RYMvwGydxfPPyNJXsoKDLi4LOInSFlt9NkIrbvtkOAk1EIkc0jLUItK9JWfd4JoUOJkcL8KIeYJESmWNMFbFijVeW+KKk7m/jyfoNpMD6rSz0Mo3n/NQIG6G8REdhbPIw7abRsN1YDbwVW9HMZIVliEbezz5II0T58p8f5yLXyZPZBM1UpXi1bEyUNU9CfkBZLUno/lgc4JTtqATYgK4NHKu7sSPwjzrTwEYUGNy9rjjG3mBFaW5rjwuBqY5DdYB5cO85dnk7x99+pr+5EjkjPgDjgIP+DQESkYWkEUJRAN7i+o/17EFhy9j33ji3APkXtgZxaOAbxwWojqekNd6vfGmKEB/yuJv2OJpiMopmZkITNIR/T2QeThHUcFHtaZhrNEzSRblrum3O5ym11DnWpbY+VQWLP0OiOWASRO0/Y7OCZRXAgxzqgauAc= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: oGKUuydDFbyBSsDisXqV8LQp5sCqvReUS7XX/8VVIY2Mscf27ne6C87vCv4mE/zJfd036XNrY6Ie/l0FoaYPZJi53vEdjTSYY/b0cnvvybYCOnlHiVTd+Eoi0vaob2nLXfiph1VsuZpJa/5ixuDJBRL9RoaxQpPpnUabQM/b6hgD5cQL9P6C6M3m85TlKtQbkY54jaaSY3sCwrVss6R3sutgtBdfz9M0D6mn4NMQY3/surR3jxEmRieXuBGOxqreUAYKm+kD0CQdocXAxxrFNEQkP8lW+2zOtmtWTWFHetQnLVBS5WidFA9iTfTyTZ7HpN0YyEiBmgNWW70LpTTts3nPYzFrlmstHN75jXAPovWdqd2w/Zqa0LVkFB/5kUwCgeFkWsLsufaavKxI65FzLmYqJF5WodW+Zzp43N7jyaWOg5b+E3euuQ78hzv9AYY32nYNob5+O1AJ0RJLvO275fsogwy6ZFnfz74rl2Vg8phFKH8czCUZ5NvFXtbkcGDxqOLa92HdfUBsnBgFQ2kJbqX8g+du7BT0rcWoscFrqs0C8y3gMRvDriBfdEm1qTqQt7Z9h3ICk8mVqTpW4rBTZkj5zeOJrQGOoS5M6FLbqd3lbKWbcVZQoz4B3YJMq1xtCd5+I/HuKueKYOlw0AApUi4+YEjOG6U+f3qsEu/UlWzcVEMFo+rlxzIGSdqMfTFX X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: CLFKmfVtB7Uq9dd5MWyz+zqXH1l13ImOEc+SRBjQJePV+wQSTTZPzMIgFy9aSEsDsra3k3/Gxk+oa+62AxysNCDckJkfzSVa+eb7PRoiNRe4Nr3lj2IbDvyhVh1ZO56PxbaPHDaB7D6UTB+NrvIogczP04+vEkKZQnktpPJ7myHJObXFLv4HDuW6uXba1hI7h86gcCCJlDnXZDyYv/KLmh2wl4xqgd2IBHvFtO9KK0dkmxLNSpUXbdKkjO8dzH+dzKxfvx/5k5AK0nzWu8a1P17vUFyrSpNSyXpmaIUEEUfa8Tl2pCO0Fc3p5qh+3d2wpmk6pSKlPlChFsVlzVddIiUjgFcMxMw81KlqTYFlYYbw3rjuySt2MBW+pk3i/2nSuzZ0O9meeX8uq03Dsn7TLNscLL9CAWDetHLpjU74Z9Gh/QgyrXsg9IHhwrpyqmlCwKzj4q4awtJkKYNJR65zFbSYbFn0TSvAY5qfnDS34kyddkqBzxMhtQ5ELd8Pb1zNRn4uGcVJ8cCepNF++fWBdfWQSmtab/if0GEq4WgEUi4akVBUpcOBgWDC/etgeOdqMA7RUA9j5aIA/IBnTyWgtAy+p21DgSq56PGu3Wp94sR54zsW+cPRqWPgGQ96FQnGNleUPvIIov1YrTBp5rDBeL6Zy8a5/e1/pPer26pbdKiyoBNJ/TV/tcWO3LPQ0kIQhsY+NlLDP6+KTCDEB8r3Rc3FptVtyXAvb0JLqYmrLQMJCMwnzWEd6P9g3aZWI0PSCUUa9/pNjeNOYOCaJvoFiiQ5dqvfakrrtKN2vZT1sW2SCzQ2ioIQgx1nXtofTKbQCCi6OkZlotZtM19dYPmc5/seSUmj+AMiqc5LEvcTOugJu/xHRJ7IhJOb5eatz2KdbYpU3gIBApokdvQseekGkgvNv7Wf/BJC/E8g2lzXQ+BQJ8Jr1DDsoZSs0clmziaJl+9srNxPkdy+3LwXWAmwdMhi9wxEC/GfyW7qFuhxDmK0/DKJN0X4w5qoUGoEF67n+r8eqtpTgG3SjKJbr69n71Yv1UjabANgQ4AjTsAKk4MmX0yWUWrZ0VgVVVvH2pTeSGJjcTjztzuptjlAaYF7EkGFbNVxdm4LoyU/1c+8i+NfQRNge/FeWWNJ7ek34qbrpi9i7Lky6ilPz/azz1bHuD42ZOPDHbPKf7MBXrG3tKXWQfb+qMzIZDNT3ccN9i5bntEysNuKhcti7sYnm4GjDFgXZRlcV/5J76lRHs5Nm4LKvwi7aVYh/X9i5PcZ/rEkKphoz45c67jdBVPM74famVpqsbj1AzNs14rJ8cxK6zwl8nR2ORS5MFk3SrKiiF/H X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 2faef4f2-0f16-40f6-4d22-08dab52ddb6b X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 23 Oct 2022 19:36:18.7463 (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: GV2P250MB0825 Subject: [FFmpeg-devel] [PATCH 09/17] avcodec/mpeg12: Pass parameters explicitly in ff_init_2d_vlc_rl() 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: ex/1VGBzouGw This allows to exploit that ff_rl_mpeg1 and ff_rl_mpeg2 only differ in their VLC table. Signed-off-by: Andreas Rheinhardt --- libavcodec/mpeg12.c | 23 ++++++++++++++--------- libavcodec/mpeg12vlc.h | 8 +++----- libavcodec/speedhqdec.c | 4 +++- 3 files changed, 20 insertions(+), 15 deletions(-) diff --git a/libavcodec/mpeg12.c b/libavcodec/mpeg12.c index 351ebf420f..282e473700 100644 --- a/libavcodec/mpeg12.c +++ b/libavcodec/mpeg12.c @@ -63,14 +63,15 @@ static const uint8_t table_mb_btype[11][2] = { { 2, 5 }, // 0x1E MB_QUANT|MB_FOR|MB_BACK|MB_PAT }; -av_cold void ff_init_2d_vlc_rl(const RLTable *rl, RL_VLC_ELEM rl_vlc[], - unsigned static_size, int flags) +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) { int i; VLCElem table[680] = { 0 }; VLC vlc = { .table = table, .table_allocated = static_size }; av_assert0(static_size <= FF_ARRAY_ELEMS(table)); - init_vlc(&vlc, TEX_VLC_BITS, rl->n + 2, &rl->table_vlc[0][1], 4, 2, &rl->table_vlc[0][0], 4, 2, INIT_VLC_USE_NEW_STATIC | flags); + init_vlc(&vlc, TEX_VLC_BITS, n + 2, &table_vlc[0][1], 4, 2, &table_vlc[0][0], 4, 2, INIT_VLC_USE_NEW_STATIC | flags); for (i = 0; i < vlc.table_size; i++) { int code = vlc.table[i].sym; @@ -84,15 +85,15 @@ av_cold void ff_init_2d_vlc_rl(const RLTable *rl, RL_VLC_ELEM rl_vlc[], run = 0; level = code; } else { - if (code == rl->n) { //esc + if (code == n) { //esc run = 65; level = 0; - } else if (code == rl->n+1) { //eob + } else if (code == n + 1) { //eob run = 0; level = 127; } else { - run = rl->table_run [code] + 1; - level = rl->table_level[code]; + run = table_run [code] + 1; + level = table_level[code]; } } rl_vlc[i].len = len; @@ -151,8 +152,12 @@ static av_cold void mpeg12_init_vlcs(void) &table_mb_btype[0][1], 2, 1, &table_mb_btype[0][0], 2, 1, 64); - INIT_2D_VLC_RL(ff_rl_mpeg1, ff_mpeg1_rl_vlc, 0); - INIT_2D_VLC_RL(ff_rl_mpeg2, ff_mpeg2_rl_vlc, 0); + ff_init_2d_vlc_rl(ff_mpeg1_vlc_table, ff_mpeg1_rl_vlc, ff_rl_mpeg1.table_run, + ff_rl_mpeg1.table_level, ff_rl_mpeg1.n, + FF_ARRAY_ELEMS(ff_mpeg1_rl_vlc), 0); + ff_init_2d_vlc_rl(ff_mpeg2_vlc_table, ff_mpeg2_rl_vlc, ff_rl_mpeg1.table_run, + ff_rl_mpeg1.table_level, ff_rl_mpeg1.n, + FF_ARRAY_ELEMS(ff_mpeg2_rl_vlc), 0); } av_cold void ff_mpeg12_init_vlcs(void) diff --git a/libavcodec/mpeg12vlc.h b/libavcodec/mpeg12vlc.h index 5a04834bee..dc7f0269bf 100644 --- a/libavcodec/mpeg12vlc.h +++ b/libavcodec/mpeg12vlc.h @@ -50,9 +50,6 @@ extern VLC ff_mv_vlc; void ff_mpeg12_init_vlcs(void); -#define INIT_2D_VLC_RL(rl, rl_vlc, flags)\ - ff_init_2d_vlc_rl(&rl, rl_vlc, FF_ARRAY_ELEMS(rl_vlc), flags) - #define MPEG12_RL_NB_ELEMS 111 extern RLTable ff_rl_mpeg1; @@ -64,8 +61,9 @@ extern const uint16_t ff_mpeg2_vlc_table[MPEG12_RL_NB_ELEMS + 2][2]; extern RL_VLC_ELEM ff_mpeg1_rl_vlc[]; extern RL_VLC_ELEM ff_mpeg2_rl_vlc[]; -void ff_init_2d_vlc_rl(const RLTable *rl, RL_VLC_ELEM rl_vlc[], - unsigned static_size, int flags); +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); void ff_mpeg1_init_uni_ac_vlc(const int8_t max_level[], const uint8_t index_run[], const uint16_t table_vlc[][2], uint8_t uni_ac_vlc_len[]); diff --git a/libavcodec/speedhqdec.c b/libavcodec/speedhqdec.c index 7cb5ff03cc..3a5b0eab05 100644 --- a/libavcodec/speedhqdec.c +++ b/libavcodec/speedhqdec.c @@ -566,7 +566,9 @@ static av_cold void speedhq_static_init(void) ff_mpeg12_vlc_dc_chroma_code, 2, 2, INIT_VLC_OUTPUT_LE, 514); - INIT_2D_VLC_RL(ff_rl_speedhq, speedhq_rl_vlc, INIT_VLC_LE); + ff_init_2d_vlc_rl(ff_speedhq_vlc_table, speedhq_rl_vlc, ff_rl_speedhq.table_run, + ff_rl_speedhq.table_level, ff_rl_speedhq.n, + FF_ARRAY_ELEMS(speedhq_rl_vlc), INIT_VLC_LE); compute_alpha_vlcs(); }