From patchwork Sun Oct 30 23:56:25 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 39065 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:8e01:b0:a3:a294:714c with SMTP id y1csp607606pzj; Sun, 30 Oct 2022 16:58:13 -0700 (PDT) X-Google-Smtp-Source: AMsMyM65lSZLY0bS6VH6rVuzruxn2eZJKDnVjwhoI23v3YipWxXd/yCPCxBGviDKAbqMgy9cK0+U X-Received: by 2002:a17:906:4bd3:b0:731:3bdf:b95c with SMTP id x19-20020a1709064bd300b007313bdfb95cmr10587099ejv.677.1667174293221; Sun, 30 Oct 2022 16:58:13 -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 r20-20020a50c014000000b00458bb34ee93si5593198edb.149.2022.10.30.16.58.12; Sun, 30 Oct 2022 16:58:13 -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=IDXybsF+; 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 333FF68BDD1; Mon, 31 Oct 2022 01:57:11 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR04-DB3-obe.outbound.protection.outlook.com (mail-oln040092074015.outbound.protection.outlook.com [40.92.74.15]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5BA5B68BD8D for ; Mon, 31 Oct 2022 01:57:08 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=VejHj3Dv8mvlM/LD+FI15IQ59lmtqjVMQhIWxu3F2lopEUHnr0GeYtMWVuk7467OwjdD35t6jw5WwNCEi8wFQstIo2aQrziby6YL6UO4irpyChbUNBYJX4OrMmi+WGX8HaTPcl1W9qwHLibV9Tkroit3m13+peCsVkWXnEnE3zBr05jEDb7sg8RDCHAbg72Od2iwUBzWJ0CcB4e7gcy2MH0lojARTYZbn1v5sWZWppe4ImrXGAq16rtrmZuAP2+DzeBfWzucwvp97d+oqdZu5eOp/zVWjha9syhuhSddTajxpDBq080utEMibKXT6LR+0ZRBVymI3e18ISlpFnTwFQ== 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=CWpqlJaTOQwyEVS5i2rmopXW0pBsSyVuTrgHjYJeBbw=; b=B6w990OmZzf6QPyTennzJf9jxNyx/KswkLkedCcTzZs6blVhD/0Aiu1YkoB06B5Uy88O0M+FwqttVr2qCG0I4TqFTocDpG2YafgGs0BduwJGkPWjcOlhSP7czzkBkQyVax9MemVsbgaiVWDRRxbjP6LPIRHK1W6xbtKpCi75cHn++Deiwd96Qqj45U7D4BxVMSFeyyZwYDH7SHuUHEhVRvMXnIbC/iNHaRf7BHkNPqY99wF6vp78ZBNypPaQCkFKFfyqgxaGOFJdMhknMcOT040yK6pfCa/LcNqpRa/1w9Pxrmwv0AfIA5vHQpbufs2061bweKIH2Vs2KxtTjfKXvg== 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=CWpqlJaTOQwyEVS5i2rmopXW0pBsSyVuTrgHjYJeBbw=; b=IDXybsF+UmuGV+uZ9pbp1hMdBxHE4BaP7JfXl44lQ31HgRZVR6OnJ8HaBYogdF+8Nmhsyid5aYhIFI2nNtu1oCzGaaJ6cZe6HMaIFh9X3xjruc4PU6AB8s1ZU1tXro2/EEESFaMoTJTseoSYfi9R9QA82GLyyhTnP1ZUCWs97LYdXwcFj8tG9OG4wpmPEG9N32+xCYpWLuTKNodSLIqvbFhsPVr77sN6WbXjE/Bxi9LLi2r5gtNYQoSDdJVd7S3iZ/Z+9MvQzOYIJqAvSwi87zsvfUWt5x5xr3xZD6/mtBCniObWuS6DHWKZw77XiqT62ln/yqb1aB/slNTtfbw8MA== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by GV1P250MB0857.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:97::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5769.19; Sun, 30 Oct 2022 23:57:02 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::739a:8740:19c5:925c]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::739a:8740:19c5:925c%5]) with mapi id 15.20.5769.019; Sun, 30 Oct 2022 23:57:02 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 31 Oct 2022 00:56:25 +0100 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [mCyKzdIR9lDiOr3elGFqJZr9kfLrOIiOoymzwiKXIuM=] X-ClientProxiedBy: FR0P281CA0146.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:96::20) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20221030235631.11750-12-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|GV1P250MB0857:EE_ X-MS-Office365-Filtering-Correlation-Id: 1fa22951-88ed-4c66-591b-08dabad27065 X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmqZLd1X3toBDX9YZ7dpDxvLntjoD2me+n3Cr5v9OzcLSaQJDyeheEqRQJ89EVW4HEUDf3xgJ0/9e+9Og9k+vPUQOCNpSoY385VSe3hUNqlKtmg7QerzpdTN6UEizO45zG2b3wqKzjoT1rbrPDek/ZcrCAM7NBVX0sxEKhAAL142/iyLyQG8KYBdt2WuNau0koXBav55V9kKL4/WX+bNK28mxqm2y2pNPEkbRq7Sbl5Dn/lpXzrkQh0hiRd3nCGssFK+46PFZfvEXx3J3HMCusQ53mLVJgPu0rHMUzeRZ7e+p06b8jnEmVhIwpjfOh3UXBu+kxdmEhU8F4BRCrg7kkqwudnDcOO1M+ABNfuEdhEhg8wEvIhsxVkkqLvqQtmfsATv2oPSDpOT1tsDTSXTGJEmk+EYkpGUvnPtQeQ7vPhOnVXoyS5q0m/SFY1PYEmyh+5V2j+OEr86Rnv8jzSvVvMv5ezy2u4dHjb17eYhHVL0VHALDO0TZEudtU7vN/ECW/OEM4g+HDmOguC7XBzDXdKXFT2O69houbXgHK0hdepPYvecS805g+uG3nKvXQuvwLgRi98HdAwb0JVoEQ/IJXKyTD+KCrU218B2mAQr8joTwOKPmC70krfLrHoT2KF3n5ed+OF1b3XH8QTE5g1E3+Lj9EPtOYULhG8E/0Jv4wf5/Xlv6qitX8KhjOJh1WZzLKnI9AGHizeuLr04h5sayzBS9bdl02iRBHFQW4ptXGqi3csWLjL8nHCy91JyWhgKLw0= X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: +Y05jybCVh6X1RdjUfuyl8NYj9FceWIyBKfjdHqA+OoUBUuMMdHg0tBM4n2i5hnEwOdfyQGhMHsmw/l4uWDL1TrBu6GVA3camisNhv/xmsUAtvYMYGFA1nRRDGdjOBkjdP06ZQJUBX2olUX4egIN+vAjj7Q+atL5IaX/abr39uVH28T+u9xunwmVT8PFL++/lBVEd1HRgC+2tBhcNrzzKvBpjV/9kyqrsde2MCb/vBs/Gl7xlCBcHvKb2FdHjee3QXXaiTJTuYYdUZ5M9mhSCIwxAlPvVRyixmnJa/cTaTzMzCQQMDIhRjfBn/LeqdVBjIKGgY1zvxxDqjcVZVpSXsDYEdsqsrsFtyHL8S3h6qqF7+O1FBOz2A5tZp8KboxLKkn4EFK2BqNWk1SNrCPlxj9WkcXhJHBg8/Fo0gyIY51lE79TIvP5M5NJ2vhUKuJx2gXEs+sL+Im8LxAb7tBNEM2iO8vt9rtw6AVNLOi+0cF1XJFUQ5vu5MvrDMbcq4+EvOesuFIY9RNHiTui4jOEd4xD5vCKzxCx44rNUlD5bPZu2u5fSBQtOqKkE/XIlzItgM5tVV/oVf4MZ/YwXY0d6neTfU4nUXF4n4cJGKcjqz05jtKJVVKFe3d31T9ej/r6eLebbqTsisDhgrxwmtBZmQ5MNViuwmaIo6cHpTmEK3Giw5g+phESV7/UGTGWyf4K X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Nuxjj0uyoQ1fnQOWjtaBZVnQr6wfsBEAXUQ7xZpj0PdizYncRltzqpiqD6rnuhm9/OHi039yrXjZlcB4j4+c8OfQIcCAEa5DBVD7zttyE6BHaVmSX7HLbgL/Bw4jF4ZmAGMIMmlNlTDegDgKs+7SAbu0f/hyUgzc3f2RXPSPbIdbCGXqlFzJxcVHXdv7zde8S7G2nGNJSQS1pJrjGjjnmXcV9Fhg6g/5CIKaibTs1IeIMLpld32ZfWMiAjZrCdyntr1PWmSXvXGhE8BKTJgQ+JHzdx9mku/7GHPMgK5+u+1X1BlzB+jwRZilhSbOhu7szXSBel8JaGLeHpX32M95XlmgsXL3iT4GNHa7vwq2RrPMMLN4zhGtJMTCjW8/wHiRn2KZPmytx11AtQGsd+dYrRkhBif9yg5hCdDNEgk05vsm64N33NO/4ADOaOcIOOXHr1tP538r/8gpvl5Ae/Ccir2fsHBaO/sy+qzP/0MxUn/PnR3z86LG/lzXhI4MW3MG2yLDBXdSSdfMtSUuIUY3AJpiYBDqdbjDkKEjQX0VC+Jn/V9ZdQdMS4FNcdx8Dl+9jUJsaP9Y7uLMjGjx2wyTbK9dZHrn9e7KHfr1hzqg04IGEjNI+AL2MmwupaVMYh7Xbpwc0VcXsXte7ADhJ5NqljeCvBUpuYlAceSs18Mg38W6JanhtmQbgnWD70BjQAPICTUZqzdfIDcB/EhZ+S3sIvuSPZgdNukM8aYN9M5gOL2sxrKN84OVK+H8MMXhc4Ypq9QdtfGGEOWWre9S7zqHEuei1+fTscMf8IyNUjKWzE5huCLBHbH/nXdjFYmdAq0o/cQ/VkK5GKzjHiVcG1AQi/GpN9kzloS5mA2Owk2+XGV1obQ9ywft2VLnp15ov9gExFRE8r1q3t3IwY+XFjdMsinbhy+e2ighCpWOMbydc92aUXuTfX+C4rX+2iL4nZqhOcFDXgHIIHbMoxekZJQfHfHVFmwfzs5dOdY8a3WtX2EavbqeVpQquYHj9N8WxAOvDfhPEAYu/I7wKWUq2lnL1KDnEbh0qO/zHat6EJmwmfofD+EpMqXB+LbmOhpD91e+JOSO0yal5IZy33GhbT7I7jBh+4PHap1h8N4fvMjz3tfSHmOAEITJJm28fI8Iq+pJnwDAL34t0/ZL5QDCf6hltm/I29lVyXtmfItfjw8tH9Dh/uux8eoFfPNPRJjFfPEu9B6e6RvlPe2OBSfYKQt5M3h01ro9L49JXLgtQcvVQ29x7vgNdKwosoz+pthKRlu07zf+8NjFHLqS2KRrpvQ8Tx0ftu/3Kjsz1gnUNabxJF+iDJj6zwf5B7S4a4pBrm2A X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 1fa22951-88ed-4c66-591b-08dabad27065 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 30 Oct 2022 23:57:01.9811 (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: GV1P250MB0857 Subject: [FFmpeg-devel] [PATCH 13/19] avcodec/msmpeg4dec: Factor initializing VLCs shared with VC-1 out 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: SOmhVlIkW4ba It will be useful in the following commits. Signed-off-by: Andreas Rheinhardt --- libavcodec/msmpeg4data.c | 30 ++++++++++++++++++++++++++++++ libavcodec/msmpeg4data.h | 2 ++ libavcodec/msmpeg4dec.c | 18 +----------------- 3 files changed, 33 insertions(+), 17 deletions(-) diff --git a/libavcodec/msmpeg4data.c b/libavcodec/msmpeg4data.c index 63f30ac544..7b54eea221 100644 --- a/libavcodec/msmpeg4data.c +++ b/libavcodec/msmpeg4data.c @@ -30,6 +30,10 @@ #include "h263data.h" #include "mpeg4videodata.h" #include "msmpeg4data.h" +#include "rl.h" +#include "vlc.h" +#include "libavutil/attributes.h" +#include "libavutil/thread.h" uint32_t ff_v2_dc_lum_table[512][2]; uint32_t ff_v2_dc_chroma_table[512][2]; @@ -38,6 +42,32 @@ VLC ff_msmp4_mb_i_vlc; VLC ff_msmp4_dc_luma_vlc[2]; VLC ff_msmp4_dc_chroma_vlc[2]; +static av_cold void msmp4_vc1_vlcs_init(void) +{ + INIT_VLC_STATIC(&ff_msmp4_dc_luma_vlc[0], MSMP4_DC_VLC_BITS, 120, + &ff_table0_dc_lum[0][1], 8, 4, + &ff_table0_dc_lum[0][0], 8, 4, 1158); + INIT_VLC_STATIC(&ff_msmp4_dc_chroma_vlc[0], MSMP4_DC_VLC_BITS, 120, + &ff_table0_dc_chroma[0][1], 8, 4, + &ff_table0_dc_chroma[0][0], 8, 4, 1118); + INIT_VLC_STATIC(&ff_msmp4_dc_luma_vlc[1], MSMP4_DC_VLC_BITS, 120, + &ff_table1_dc_lum[0][1], 8, 4, + &ff_table1_dc_lum[0][0], 8, 4, 1476); + INIT_VLC_STATIC(&ff_msmp4_dc_chroma_vlc[1], MSMP4_DC_VLC_BITS, 120, + &ff_table1_dc_chroma[0][1], 8, 4, + &ff_table1_dc_chroma[0][0], 8, 4, 1216); + + INIT_VLC_STATIC(&ff_msmp4_mb_i_vlc, MSMP4_MB_INTRA_VLC_BITS, 64, + &ff_msmp4_mb_i_table[0][1], 4, 2, + &ff_msmp4_mb_i_table[0][0], 4, 2, 536); +} + +av_cold void ff_msmp4_vc1_vlcs_init_once(void) +{ + static AVOnce init_static_once = AV_ONCE_INIT; + ff_thread_once(&init_static_once, msmp4_vc1_vlcs_init); +} + /* intra picture macroblock coded block pattern */ const uint16_t ff_msmp4_mb_i_table[64][2] = { { 0x1, 1 }, { 0x17, 6 }, { 0x9, 5 }, { 0x5, 5 }, diff --git a/libavcodec/msmpeg4data.h b/libavcodec/msmpeg4data.h index 4f904d7610..ccbfde36f7 100644 --- a/libavcodec/msmpeg4data.h +++ b/libavcodec/msmpeg4data.h @@ -48,6 +48,8 @@ typedef struct MVTable { } MVTable; FF_VISIBILITY_PUSH_HIDDEN +void ff_msmp4_vc1_vlcs_init_once(void); + #define MSMP4_MB_INTRA_VLC_BITS 9 extern VLC ff_msmp4_mb_i_vlc; #define MSMP4_DC_VLC_BITS 9 diff --git a/libavcodec/msmpeg4dec.c b/libavcodec/msmpeg4dec.c index a7ba53f68e..2be8cf2bf6 100644 --- a/libavcodec/msmpeg4dec.c +++ b/libavcodec/msmpeg4dec.c @@ -316,19 +316,6 @@ static av_cold void msmpeg4_decode_init_static(void) mv->table_mv_bits, 1, 1, mv->table_mv_code, 2, 2, 2694); - INIT_VLC_STATIC(&ff_msmp4_dc_luma_vlc[0], MSMP4_DC_VLC_BITS, 120, - &ff_table0_dc_lum[0][1], 8, 4, - &ff_table0_dc_lum[0][0], 8, 4, 1158); - INIT_VLC_STATIC(&ff_msmp4_dc_chroma_vlc[0], MSMP4_DC_VLC_BITS, 120, - &ff_table0_dc_chroma[0][1], 8, 4, - &ff_table0_dc_chroma[0][0], 8, 4, 1118); - INIT_VLC_STATIC(&ff_msmp4_dc_luma_vlc[1], MSMP4_DC_VLC_BITS, 120, - &ff_table1_dc_lum[0][1], 8, 4, - &ff_table1_dc_lum[0][0], 8, 4, 1476); - INIT_VLC_STATIC(&ff_msmp4_dc_chroma_vlc[1], MSMP4_DC_VLC_BITS, 120, - &ff_table1_dc_chroma[0][1], 8, 4, - &ff_table1_dc_chroma[0][0], 8, 4, 1216); - INIT_VLC_STATIC(&v2_dc_lum_vlc, MSMP4_DC_VLC_BITS, 512, &ff_v2_dc_lum_table[0][1], 8, 4, &ff_v2_dc_lum_table[0][0], 8, 4, 1472); @@ -354,13 +341,10 @@ static av_cold void msmpeg4_decode_init_static(void) offset += ff_mb_non_intra_vlc[i].table_size; } - INIT_VLC_STATIC(&ff_msmp4_mb_i_vlc, MSMP4_MB_INTRA_VLC_BITS, 64, - &ff_msmp4_mb_i_table[0][1], 4, 2, - &ff_msmp4_mb_i_table[0][0], 4, 2, 536); - INIT_VLC_STATIC(&ff_inter_intra_vlc, INTER_INTRA_VLC_BITS, 4, &ff_table_inter_intra[0][1], 2, 1, &ff_table_inter_intra[0][0], 2, 1, 8); + ff_msmp4_vc1_vlcs_init_once(); } av_cold int ff_msmpeg4_decode_init(AVCodecContext *avctx)