From patchwork Sun Sep 4 21:58:51 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 37662 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:139a:b0:8f:1db5:eae2 with SMTP id w26csp2275041pzh; Sun, 4 Sep 2022 15:00:38 -0700 (PDT) X-Google-Smtp-Source: AA6agR50DWaJg+/R2vrpbEc8UTwuT1mHLVCazgVEex7kxGXo/Ibb1ZsGirYwTfhzaJDKxFSuOMcA X-Received: by 2002:a17:907:9603:b0:742:9ed3:3af2 with SMTP id gb3-20020a170907960300b007429ed33af2mr17054160ejc.510.1662328838246; Sun, 04 Sep 2022 15:00:38 -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 t21-20020a170906269500b00741550f828bsi5596287ejc.919.2022.09.04.15.00.37; Sun, 04 Sep 2022 15:00:38 -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=qdt4Okit; 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 6183668B9F0; Mon, 5 Sep 2022 01:00:09 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-DBA-obe.outbound.protection.outlook.com (mail-dbaeur03olkn2042.outbound.protection.outlook.com [40.92.58.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 73CBA68B85C for ; Mon, 5 Sep 2022 01:00:05 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=avCla36YUemyLxnitSrE/cMrWfg3mHqLWRe/JpQDkb7MLO93GXjsncIMHcJYSRKMgy+FOqVi/p9yB1Jd6ogYhygJrczTi7MxyjNbRE9lh+6aBG73QQ0/xpd7pxN7ykhzCzgf9Kp5++AwVh8iXLtf3cCp8Ozdu8rjZ2IxSYTJRm0m4Zp3C95aMyfkYyD5gB8z8Xpgw8u35h4GnSk+Vd45fLKkONbOILgexteV6yRGRb6WgWo2lvupXlrmZs9CrJUm5ICTA83ncjl8EOPwjnhGfDSauk9imAzKeFb1cPiKc8lp9SqfqplmgMSfG5b5jSAa+/Gm0DSxUdTUEtZAqH3VAw== 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=DrEGbXqaKgVmojTbVddLA53t69pD1emCbgQV7m+cBTM=; b=hdO29scK5+7k/BRkGHNjFJRRrjJ0rwE1eOUdN6jBzayXjYqpYCjRE6BoCzaglBBxuZtNmF3Q1zt7VAITkDyOB1QzD+nRjX79V50CEkbxEb7/x5WqwZQxowmIzFPM92qatiFBhh217rB4kVQWANPIAD+oRSCRSN+XFffwKFSDgDzduC6BGzX7PmULDIOM4YUzqF3Rq2nysZzo+bzS4uwPVfVqaKOqKV1FAD495DZzHS8jXcptV7s0mmMQZ4q3wRTfgMQtQwZMHiPlNpdcROpe22VXJXzkbs3GD5YZvRYROxvGqTTMV1Bxv+VcbxNvbmcdl5rqEkntTYk0YUnGxanXog== 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=DrEGbXqaKgVmojTbVddLA53t69pD1emCbgQV7m+cBTM=; b=qdt4OkitEMwfjpdjNprAvvVwNLoN/t03xmCqejQoR7WL4BzQLakUM0EdVukVCGWXQ2BkvvPeSQupyK2gG1I7WqjFARWy9MEFIIe8Y9rvgFUTXjy9Y7ps7g8QGmabOEkIeTDDXWEjdQ4XrHu6AsMA/E1f324CMqoo3x7Cb87na6WjKf48op/3R+NTtA6YVaZb439nBNklKAIwmu5hjO0RX7yoDR3Ouvt0S3/lGjjgS0j6v1+bK1C4U6e22dJdDKrQ2mSkdPO6QMBGEfS8j0Iircfca2R9Mp3cZlSTvJUBXbiUhQleMDgZ4dEKJpFuh4Jo/ZNqAGvM7nctnRwjEj9Jbw== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by AS8P250MB0235.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:37a::10) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5588.17; Sun, 4 Sep 2022 22:00:03 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::f85a:9a02:f8be:7c47]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::f85a:9a02:f8be:7c47%2]) with mapi id 15.20.5588.010; Sun, 4 Sep 2022 22:00:03 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 4 Sep 2022 23:58:51 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [MHjohJAGRXiBQxT2/WMQgDEXX4mv4rdJTPH74ksy2xY=] X-ClientProxiedBy: ZR0P278CA0037.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:1d::6) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20220904215851.4164981-8-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: cee2465d-8d36-43c0-77be-08da8ec0d1b8 X-MS-Exchange-SLBlob-MailProps: AZnQBsB9XmpOESH07gTfyFtwl3n8uZhubFIPoIw3K2hrl3iD1ugtLm0lVFb/JaSJDLedGCO/98qGk5sHg5++RFvjTP+zx+7X+MD8FRMJk6LRKwNY29ISPmzBjfw5gPsckPNzMGyO8TFLUNIxmBHw8McTkvuYAdhuY0lpBpOUfQBpZi1ooLN8sQk5HsK1L6AufKkF5l5iOc+5cKw3Czo0X1a5egPZsx6JjHtc9E4zlBWGoAiKRB0jAluFxxvbagE1E8psfwn26435kldDTO4wTJXCWKkVhoUVjuvrOEKgVMyX+R7EycBDg24T2KcclACk/VNcUrYXwiud9pywkcYGXGiYg3up4gODBjBPT74kbaoJcv5GY31QyytIRw2pnEgaEuMEGfBAbnYYFPWOSMdzIwg4EnlQtcI8JMsr6BZVX/spPq4Ua2nlWURXC2zvafPRBDsyZu1IERTugn+0tt/Sb1PQ7GWH6Y7L3KrQkYwf6Y0qZrba6RBTTOO811DOfqRMpORRulg4ZT2YdAq1UT+31LPe1PVqNnuAWyh9TdArxpAYrb1SSQt4W/FRvv/nGjty3oHuAORB+WKtV+j1bcvL017t52naePLLPS9G7BeBGOCwquQaLmsLVp3snfwPi9fCCKP8zSKS5ofEotIbeRM+u0K0bTVgerPRy/dQPyuPpsFkIKyGXQdZkJn/o9rmpERfvk5wtZwH3XFVR6GdO5JJa/0YwmaqfAJF8RTS5jnJ5tDUbH4l3QHtbCA/6qkQWe1wNsa7AfxQ2yo= X-MS-TrafficTypeDiagnostic: AS8P250MB0235:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: qIU6PH2ngYxq0r5FWOUYm75yMUmvxlWFMTSBBkuph617eMnLG6y4QUvIENFRMYd4RJOkYEPPdHH8y0nVPOyOBmpPMyWNL1609dBOlQsvE1p/6xRpCdy2krsAw+bdsjWumJA6xyb//cZK4Nfh1qqjaSr6eQmyDgm8eNgL3AB1983E8o0689DoDF8K65muRrqcFw3781bZ4zfrZqpuzlnnZjxtZ6iEBbb4LvCJ2pOvr3z810pEA2y2TFLwO4Whf0ECnZCvOjCAR8S0NcEvjnB5La4H7XrEH3GD87Q2RlDnU/J7z3osTbPneTaZv779M7Tl/j3ngglli4DjfHN8BQaVvlrb2hH9lAlkhf9GgWlxu1DfyK6h86+SaOyy9UZ6vDJaWllrIw8ra7pe9JS/CGwXOv7peoXAHHmQOLqOFbZGi9Tp/jFjpmWawhZN5Xpc6cJNpnb3O558k8d2FQAJfpFx++BsjubzPJgGVCOtatBCoz29srPN1Dl4haDv/So9wSQr19CQvxRBGhNFXPqQIRm68W2P0PNkPs/j4Y+DMIQBNCzjj1WnJXt+OpiDIkK4jSap9TWzVwM/v/858IA3j8qmomzeqH5ZjcwR5JJoP90ORyM2XMRbSjKShMK4EqreDAcNVISzZxv/TTn1zs2QjODMqQ== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: GBSy/PLcM4Mv5Lpm0heyWvxcDNFM5VYU9I03phuNGtU06Y9qvRqwvWYRdhBudGc0ufO5QDD8Z1BwkQDYwLOTgXHt7cv4W0KdfQ+ZyOrOw1qODFz9TI6dW2+jcnLYeQdK1MD1tXVoJTZRtYkMlnn/Xo+nWOw8+jQK61TUDWrUu94f1WFJ+YDb+0yraNDaEuF8rJSczsAe6HuayWejH0AZMOBjYwkCxvV1nBcEccx94QA3uVM6/4JGtPCIWGzY97LI4c7AJky8Feenrdj1VJ0vLoSHCg28CioWx3E1aeAg+9uB9SzyD6RyD6Oi42XrPW6mGuap3f62kDJik6CNkIkeu4MdUhqSKQ9PucfAtCr6J5iALMNKVQcz7/FINMQVeoicI4/2glYcuZE45guiQlHkd74FX7rJQlVQZ3rC3kAdjkzBwUTiAeA9QHFWCkdReM/it1HSEjjvAwPEWwU1cjf1xpxO0wE2gE4sQJQHVmbQihE2xLDCPfXdqXZPVLyEqeKTknQoz1Qg4UrbfWSiNr9AVH45t0i3cLsu3GuOZpn6q0GeJIiYW7uhamMVzVQXGQWnXOa9qxiSFmjTvtY/Au4AUHfqQU1dahSl6uUKn8Sp7gFDTl1d30OfHU7NR8Zfv3KTLRkaETM4OzCQh/qJAqsDBov8gbsx5UCF8VEECG644IMIuBhtZLZHBdXlYa/z7qb6D8eV09cBK9feEiyz8fZ8ptiqqPoLw6DIH4Av6WJ5qgLno5DW55lkKGq7/5+VfZL8cQsoAIAyC8Raxnz+5dOCmH+Zyebf/HxHqJA8dOor6nsheuhMdMUyS+k90zwE+WqumV9tEPKAEUiLncn8Z5B62457I6J1diO7gUmw/8vNXs4RwR8utwzbsS9Xs2VY0xVnPPdyVDOdEn7/VE4HfA28Djr0Lv5bUrB2Cmd3K5n85W1tfJa6dhTb0DwkHti8KXSBoiSdgPie8DBxcuj/NgyO2CxnyHRpiiOuOgRScdFbbxUZwJ/7vQgBP2Ro1zBghpiDAK1hSCOSxZ/kdhv9JiguZ+PhUKeW5CDazhHLOknxEusUpC4t6CHoZf4Ihft32j8z8APfgfDehO4SHN8p7/woFrgw3ebqsRFlcBV5xmqn3MdhqUEd64mGcA/rW+Z7VLdm792MIXWS17jh0EjFlzCWEegNYXjpcUhGs39BOyinNoRaFmJxV0DSUe1WNtQiY61zc8LAHFG1Wh1fUOyaCUTgE/ZdGPL2pYbwvGzRgowdkIlPZcZjnERit0FBEmVogMccWYk+qYq294wi/t3hC8mP1exnHc2cxmfQb+5BzWt1hjbB5LdWbEb29a84ksNJxvv9 X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: cee2465d-8d36-43c0-77be-08da8ec0d1b8 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Sep 2022 22:00:03.2551 (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: AS8P250MB0235 Subject: [FFmpeg-devel] [PATCH 9/9] avcodec/wmaprodec: Use symbol table more efficiently 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: LasewwoZAXrf By using a symbol table one can already bake in applying a LUT on the return value of get_vlc2(). So change the symbol table for the vec2 and vec4 tables to avoid using the symbol_to_vec2/4 LUTs. Signed-off-by: Andreas Rheinhardt --- libavcodec/wmaprodata.h | 147 +++++++++++++++++----------------------- libavcodec/wmaprodec.c | 22 +++--- 2 files changed, 72 insertions(+), 97 deletions(-) diff --git a/libavcodec/wmaprodata.h b/libavcodec/wmaprodata.h index 3a30be40b5..057ce1d02d 100644 --- a/libavcodec/wmaprodata.h +++ b/libavcodec/wmaprodata.h @@ -325,67 +325,73 @@ static const float coef1_level[HUFF_COEF1_SIZE] = { */ #define HUFF_VEC4_SIZE 127 #define HUFF_VEC4_MAXBITS 14 -static const uint8_t vec4_table[HUFF_VEC4_SIZE][2] = { - { 126, 1 }, { 76, 6 }, { 28, 8 }, { 93, 10 }, { 69, 10 }, - { 117, 10 }, { 98, 10 }, { 31, 8 }, { 84, 8 }, { 38, 10 }, - { 9, 10 }, { 108, 9 }, { 96, 8 }, { 73, 8 }, { 67, 9 }, - { 121, 12 }, { 90, 12 }, { 110, 11 }, { 35, 12 }, { 54, 12 }, - { 17, 11 }, { 86, 9 }, { 44, 9 }, { 82, 8 }, { 41, 8 }, - { 36, 9 }, { 103, 9 }, { 78, 8 }, { 66, 8 }, { 11, 9 }, - { 97, 9 }, { 4, 12 }, { 19, 12 }, { 70, 12 }, { 55, 14 }, - { 20, 14 }, { 5, 13 }, { 51, 11 }, { 94, 11 }, { 106, 9 }, - { 101, 8 }, { 83, 9 }, { 42, 9 }, { 45, 11 }, { 46, 11 }, - { 112, 10 }, { 99, 9 }, { 8, 8 }, { 56, 6 }, { 1, 6 }, - { 75, 6 }, { 27, 6 }, { 72, 6 }, { 62, 6 }, { 113, 11 }, - { 124, 11 }, { 114, 10 }, { 15, 11 }, { 116, 11 }, { 24, 10 }, - { 59, 10 }, { 39, 11 }, { 10, 11 }, { 118, 9 }, { 105, 7 }, - { 71, 6 }, { 77, 7 }, { 85, 7 }, { 21, 6 }, { 7, 6 }, - { 6, 6 }, { 0, 5 }, { 79, 7 }, { 100, 11 }, { 48, 11 }, - { 87, 10 }, { 107, 9 }, { 92, 8 }, { 57, 6 }, { 119, 9 }, - { 29, 9 }, { 16, 10 }, { 49, 10 }, { 64, 9 }, { 95, 8 }, - { 58, 8 }, { 26, 6 }, { 61, 6 }, { 22, 6 }, { 23, 8 }, - { 81, 8 }, { 13, 9 }, { 53, 12 }, { 52, 12 }, { 123, 11 }, - { 33, 10 }, { 12, 8 }, { 40, 8 }, { 30, 8 }, { 47, 10 }, - { 111, 10 }, { 3, 10 }, { 68, 10 }, { 74, 9 }, { 115, 9 }, - { 91, 8 }, { 120, 10 }, { 25, 11 }, { 122, 11 }, { 89, 9 }, - { 2, 8 }, { 37, 8 }, { 65, 8 }, { 43, 9 }, { 34, 9 }, - { 14, 10 }, { 60, 11 }, { 18, 12 }, { 125, 12 }, { 50, 9 }, - { 80, 9 }, { 88, 9 }, { 109, 8 }, { 32, 8 }, { 102, 7 }, - { 104, 7 }, { 63, 7 }, +static const uint8_t vec4_lens[HUFF_VEC4_SIZE] = { + 1, 6, 8, 10, 10, 10, 10, 8, 8, 10, 10, 9, 8, 8, 9, 12, 12, 11, + 12, 12, 11, 9, 9, 8, 8, 9, 9, 8, 8, 9, 9, 12, 12, 12, 14, 14, + 13, 11, 11, 9, 8, 9, 9, 11, 11, 10, 9, 8, 6, 6, 6, 6, 6, 6, + 11, 11, 10, 11, 11, 10, 10, 11, 11, 9, 7, 6, 7, 7, 6, 6, 6, 5, + 7, 11, 11, 10, 9, 8, 6, 9, 9, 10, 10, 9, 8, 8, 6, 6, 6, 8, + 8, 9, 12, 12, 11, 10, 8, 8, 8, 10, 10, 10, 10, 9, 9, 8, 10, 11, + 11, 9, 8, 8, 8, 9, 9, 10, 11, 12, 12, 9, 9, 9, 8, 8, 7, 7, + 7, +}; + +/* The entry in the following table with symbol zero indicates + * that four further entries are coded explicitly; all other + * entries encode four numbers in the 0..15 range via + * the four nibbles of (symbol - 1). */ +static const uint16_t vec4_syms[HUFF_VEC4_SIZE] = { + 0, 4370, 275, 8195, 4146, 12545, 8225, 290, 4625, 515, + 20, 8706, 8210, 4355, 4131, 16385, 5121, 8961, 321, 1041, + 51, 4641, 546, 4610, 530, 513, 8451, 4385, 4130, 33, + 8211, 5, 66, 4161, 1281, 81, 6, 801, 8196, 8481, + 8449, 4611, 531, 561, 769, 12290, 8226, 19, 4097, 2, + 4369, 274, 4354, 4114, 12291, 16641, 12305, 49, 12321, 260, + 4100, 516, 21, 12546, 8466, 4353, 4371, 4626, 257, 18, + 17, 1, 4386, 8241, 771, 4865, 8705, 8194, 4098, 12561, + 276, 50, 785, 4116, 8209, 4099, 273, 4113, 258, 259, + 4609, 35, 1026, 1025, 16401, 305, 34, 529, 289, 770, + 12289, 4, 4145, 4356, 12306, 8193, 12801, 261, 16386, 4881, + 3, 514, 4129, 545, 306, 36, 4101, 65, 20481, 786, + 4401, 4866, 8721, 291, 8450, 8465, 4115, }; #define HUFF_VEC2_SIZE 137 #define HUFF_VEC2_MAXBITS 12 +/* The entry in the following table with symbol zero indicates + * that two further entries are coded explicitly; all other + * entries encode two numbers in the 0..15 range via + * (symbol - 1) & 0xF and (symbol - 1) >> 4. */ static const uint8_t vec2_table[HUFF_VEC2_SIZE][2] = { - { 18, 5 }, { 119, 10 }, { 132, 11 }, { 44, 11 }, { 68, 10 }, - { 121, 11 }, { 11, 11 }, { 75, 8 }, { 72, 7 }, { 36, 7 }, - { 104, 9 }, { 122, 10 }, { 27, 10 }, { 88, 9 }, { 66, 9 }, - { 33, 5 }, { 48, 6 }, { 91, 9 }, { 7, 9 }, { 85, 8 }, - { 62, 7 }, { 136, 3 }, { 64, 8 }, { 97, 9 }, { 80, 10 }, - { 123, 10 }, { 92, 8 }, { 120, 10 }, { 9, 10 }, { 42, 10 }, - { 108, 10 }, { 59, 6 }, { 20, 6 }, { 23, 8 }, { 109, 9 }, - { 25, 9 }, { 58, 7 }, { 4, 7 }, { 134, 11 }, { 133, 12 }, - { 14, 12 }, { 124, 10 }, { 110, 9 }, { 93, 8 }, { 38, 8 }, - { 78, 9 }, { 105, 9 }, { 73, 7 }, { 50, 7 }, { 40, 9 }, - { 56, 10 }, { 30, 11 }, { 126, 11 }, { 125, 10 }, { 69, 10 }, - { 111, 9 }, { 35, 6 }, { 60, 6 }, { 31, 6 }, { 2, 6 }, - { 16, 6 }, { 1, 6 }, { 86, 8 }, { 76, 8 }, { 94, 8 }, - { 52, 8 }, { 46, 5 }, { 19, 5 }, { 98, 9 }, { 54, 9 }, - { 28, 10 }, { 127, 10 }, { 106, 9 }, { 81, 8 }, { 6, 8 }, - { 89, 9 }, { 12, 11 }, { 135, 12 }, { 15, 12 }, { 43, 10 }, - { 112, 9 }, { 67, 9 }, { 82, 7 }, { 22, 7 }, { 74, 7 }, - { 63, 7 }, { 128, 10 }, { 115, 10 }, { 100, 9 }, { 65, 8 }, - { 47, 5 }, { 34, 5 }, { 95, 8 }, { 57, 10 }, { 10, 10 }, - { 116, 9 }, { 0, 7 }, { 3, 6 }, { 45, 6 }, { 61, 6 }, - { 8, 9 }, { 26, 9 }, { 101, 8 }, { 37, 7 }, { 49, 6 }, - { 83, 7 }, { 24, 8 }, { 113, 9 }, { 79, 9 }, { 87, 8 }, - { 117, 9 }, { 129, 10 }, { 131, 10 }, { 107, 9 }, { 99, 9 }, - { 39, 8 }, { 102, 8 }, { 41, 9 }, { 118, 9 }, { 96, 8 }, - { 77, 8 }, { 70, 7 }, { 5, 7 }, { 51, 7 }, { 55, 9 }, - { 29, 10 }, { 130, 11 }, { 13, 11 }, { 114, 9 }, { 90, 9 }, - { 71, 6 }, { 21, 6 }, { 84, 7 }, { 103, 8 }, { 53, 8 }, - { 17, 4 }, { 32, 4 }, + { 19, 5 }, { 165, 10 }, { 211, 11 }, { 46, 11 }, { 75, 10 }, + { 177, 11 }, { 12, 11 }, { 86, 8 }, { 83, 7 }, { 38, 7 }, + { 133, 9 }, { 178, 10 }, { 28, 10 }, { 104, 9 }, { 73, 9 }, + { 35, 5 }, { 52, 6 }, { 113, 9 }, { 8, 9 }, { 101, 8 }, + { 69, 7 }, { 0, 3 }, { 71, 8 }, { 119, 9 }, { 91, 10 }, + { 179, 10 }, { 114, 8 }, { 166, 10 }, { 10, 10 }, { 44, 10 }, + { 145, 10 }, { 66, 6 }, { 21, 6 }, { 24, 8 }, { 146, 9 }, + { 26, 9 }, { 65, 7 }, { 5, 7 }, { 226, 11 }, { 225, 12 }, + { 15, 12 }, { 180, 10 }, { 147, 9 }, { 115, 8 }, { 40, 8 }, + { 89, 9 }, { 134, 9 }, { 84, 7 }, { 54, 7 }, { 42, 9 }, + { 60, 10 }, { 31, 11 }, { 193, 11 }, { 181, 10 }, { 76, 10 }, + { 148, 9 }, { 37, 6 }, { 67, 6 }, { 33, 6 }, { 3, 6 }, + { 17, 6 }, { 2, 6 }, { 102, 8 }, { 87, 8 }, { 116, 8 }, + { 56, 8 }, { 50, 5 }, { 20, 5 }, { 120, 9 }, { 58, 9 }, + { 29, 10 }, { 194, 10 }, { 135, 9 }, { 97, 8 }, { 7, 8 }, + { 105, 9 }, { 13, 11 }, { 241, 12 }, { 16, 12 }, { 45, 10 }, + { 149, 9 }, { 74, 9 }, { 98, 7 }, { 23, 7 }, { 85, 7 }, + { 70, 7 }, { 195, 10 }, { 161, 10 }, { 129, 9 }, { 72, 8 }, + { 51, 5 }, { 36, 5 }, { 117, 8 }, { 61, 10 }, { 11, 10 }, + { 162, 9 }, { 1, 7 }, { 4, 6 }, { 49, 6 }, { 68, 6 }, + { 9, 9 }, { 27, 9 }, { 130, 8 }, { 39, 7 }, { 53, 6 }, + { 99, 7 }, { 25, 8 }, { 150, 9 }, { 90, 9 }, { 103, 8 }, + { 163, 9 }, { 196, 10 }, { 210, 10 }, { 136, 9 }, { 121, 9 }, + { 41, 8 }, { 131, 8 }, { 43, 9 }, { 164, 9 }, { 118, 8 }, + { 88, 8 }, { 81, 7 }, { 6, 7 }, { 55, 7 }, { 59, 9 }, + { 30, 10 }, { 209, 11 }, { 14, 11 }, { 151, 9 }, { 106, 9 }, + { 82, 6 }, { 22, 6 }, { 100, 7 }, { 132, 8 }, { 57, 8 }, + { 18, 4 }, { 34, 4 }, }; @@ -414,37 +420,6 @@ static const uint8_t vec1_table[HUFF_VEC1_SIZE][2] = { { 80, 10 }, { 81, 10 }, { 43, 8 }, { 44, 8 }, { 24, 6 }, { 12, 4 }, }; - - -static const uint16_t symbol_to_vec4[HUFF_VEC4_SIZE] = { - 0, 1, 2, 3, 4, 5, 16, 17, 18, 19, - 20, 32, 33, 34, 35, 48, 49, 50, 64, 65, - 80, 256, 257, 258, 259, 260, 272, 273, 274, 275, - 288, 289, 290, 304, 305, 320, 512, 513, 514, 515, - 528, 529, 530, 544, 545, 560, 768, 769, 770, 784, - 785, 800, 1024, 1025, 1040, 1280, 4096, 4097, 4098, 4099, - 4100, 4112, 4113, 4114, 4115, 4128, 4129, 4130, 4144, 4145, - 4160, 4352, 4353, 4354, 4355, 4368, 4369, 4370, 4384, 4385, - 4400, 4608, 4609, 4610, 4624, 4625, 4640, 4864, 4865, 4880, - 5120, 8192, 8193, 8194, 8195, 8208, 8209, 8210, 8224, 8225, - 8240, 8448, 8449, 8450, 8464, 8465, 8480, 8704, 8705, 8720, - 8960, 12288, 12289, 12290, 12304, 12305, 12320, 12544, 12545, 12560, - 12800, 16384, 16385, 16400, 16640, 20480, 0, -}; - - -static const uint8_t symbol_to_vec2[HUFF_VEC2_SIZE] = { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, - 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, - 30, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, - 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 64, 65, - 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 80, 81, 82, 83, 84, - 85, 86, 87, 88, 89, 90, 96, 97, 98, 99, 100, 101, 102, 103, 104, - 105, 112, 113, 114, 115, 116, 117, 118, 119, 120, 128, 129, 130, 131, 132, - 133, 134, 135, 144, 145, 146, 147, 148, 149, 150, 160, 161, 162, 163, 164, - 165, 176, 177, 178, 179, 180, 192, 193, 194, 195, 208, 209, 210, 224, 225, - 240, 0, -}; /** @} */ diff --git a/libavcodec/wmaprodec.c b/libavcodec/wmaprodec.c index 698841dcaf..701dfa955c 100644 --- a/libavcodec/wmaprodec.c +++ b/libavcodec/wmaprodec.c @@ -331,11 +331,11 @@ static av_cold void decode_init_static(void) &coef1_table[0][1], 2, &coef1_table[0][0], 2, 1, 0, 0, 3912); INIT_VLC_STATIC_FROM_LENGTHS(&vec4_vlc, VLCBITS, HUFF_VEC4_SIZE, - &vec4_table[0][1], 2, - &vec4_table[0][0], 2, 1, 0, 0, 604); + vec4_lens, 1, + vec4_syms, 2, 2, -1, 0, 604); INIT_VLC_STATIC_FROM_LENGTHS(&vec2_vlc, VLCBITS, HUFF_VEC2_SIZE, &vec2_table[0][1], 2, - &vec2_table[0][0], 2, 1, 0, 0, 562); + &vec2_table[0][0], 2, 1, -1, 0, 562); INIT_VLC_STATIC_FROM_LENGTHS(&vec1_vlc, VLCBITS, HUFF_VEC1_SIZE, &vec1_table[0][1], 2, &vec1_table[0][0], 2, 1, 0, 0, 562); @@ -957,10 +957,10 @@ static int decode_coeffs(WMAProDecodeCtx *s, int c) idx = get_vlc2(&s->gb, vec4_vlc.table, VLCBITS, VEC4MAXDEPTH); - if (idx == HUFF_VEC4_SIZE - 1) { + if ((int)idx < 0) { for (i = 0; i < 4; i += 2) { idx = get_vlc2(&s->gb, vec2_vlc.table, VLCBITS, VEC2MAXDEPTH); - if (idx == HUFF_VEC2_SIZE - 1) { + if ((int)idx < 0) { uint32_t v0, v1; v0 = get_vlc2(&s->gb, vec1_vlc.table, VLCBITS, VEC1MAXDEPTH); if (v0 == HUFF_VEC1_SIZE - 1) @@ -971,15 +971,15 @@ static int decode_coeffs(WMAProDecodeCtx *s, int c) vals[i ] = av_float2int(v0); vals[i+1] = av_float2int(v1); } else { - vals[i] = fval_tab[symbol_to_vec2[idx] >> 4 ]; - vals[i+1] = fval_tab[symbol_to_vec2[idx] & 0xF]; + vals[i] = fval_tab[idx >> 4 ]; + vals[i+1] = fval_tab[idx & 0xF]; } } } else { - vals[0] = fval_tab[ symbol_to_vec4[idx] >> 12 ]; - vals[1] = fval_tab[(symbol_to_vec4[idx] >> 8) & 0xF]; - vals[2] = fval_tab[(symbol_to_vec4[idx] >> 4) & 0xF]; - vals[3] = fval_tab[ symbol_to_vec4[idx] & 0xF]; + vals[0] = fval_tab[ idx >> 12 ]; + vals[1] = fval_tab[(idx >> 8) & 0xF]; + vals[2] = fval_tab[(idx >> 4) & 0xF]; + vals[3] = fval_tab[ idx & 0xF]; } /** decode sign */