| /* ----------------------------------------------------------------------------- |
| Software License for The Fraunhofer FDK AAC Codec Library for Android |
| |
| © Copyright 1995 - 2018 Fraunhofer-Gesellschaft zur Förderung der angewandten |
| Forschung e.V. All rights reserved. |
| |
| 1. INTRODUCTION |
| The Fraunhofer FDK AAC Codec Library for Android ("FDK AAC Codec") is software |
| that implements the MPEG Advanced Audio Coding ("AAC") encoding and decoding |
| scheme for digital audio. This FDK AAC Codec software is intended to be used on |
| a wide variety of Android devices. |
| |
| AAC's HE-AAC and HE-AAC v2 versions are regarded as today's most efficient |
| general perceptual audio codecs. AAC-ELD is considered the best-performing |
| full-bandwidth communications codec by independent studies and is widely |
| deployed. AAC has been standardized by ISO and IEC as part of the MPEG |
| specifications. |
| |
| Patent licenses for necessary patent claims for the FDK AAC Codec (including |
| those of Fraunhofer) may be obtained through Via Licensing |
| (www.vialicensing.com) or through the respective patent owners individually for |
| the purpose of encoding or decoding bit streams in products that are compliant |
| with the ISO/IEC MPEG audio standards. Please note that most manufacturers of |
| Android devices already license these patent claims through Via Licensing or |
| directly from the patent owners, and therefore FDK AAC Codec software may |
| already be covered under those patent licenses when it is used for those |
| licensed purposes only. |
| |
| Commercially-licensed AAC software libraries, including floating-point versions |
| with enhanced sound quality, are also available from Fraunhofer. Users are |
| encouraged to check the Fraunhofer website for additional applications |
| information and documentation. |
| |
| 2. COPYRIGHT LICENSE |
| |
| Redistribution and use in source and binary forms, with or without modification, |
| are permitted without payment of copyright license fees provided that you |
| satisfy the following conditions: |
| |
| You must retain the complete text of this software license in redistributions of |
| the FDK AAC Codec or your modifications thereto in source code form. |
| |
| You must retain the complete text of this software license in the documentation |
| and/or other materials provided with redistributions of the FDK AAC Codec or |
| your modifications thereto in binary form. You must make available free of |
| charge copies of the complete source code of the FDK AAC Codec and your |
| modifications thereto to recipients of copies in binary form. |
| |
| The name of Fraunhofer may not be used to endorse or promote products derived |
| from this library without prior written permission. |
| |
| You may not charge copyright license fees for anyone to use, copy or distribute |
| the FDK AAC Codec software or your modifications thereto. |
| |
| Your modified versions of the FDK AAC Codec must carry prominent notices stating |
| that you changed the software and the date of any change. For modified versions |
| of the FDK AAC Codec, the term "Fraunhofer FDK AAC Codec Library for Android" |
| must be replaced by the term "Third-Party Modified Version of the Fraunhofer FDK |
| AAC Codec Library for Android." |
| |
| 3. NO PATENT LICENSE |
| |
| NO EXPRESS OR IMPLIED LICENSES TO ANY PATENT CLAIMS, including without |
| limitation the patents of Fraunhofer, ARE GRANTED BY THIS SOFTWARE LICENSE. |
| Fraunhofer provides no warranty of patent non-infringement with respect to this |
| software. |
| |
| You may use this FDK AAC Codec software or modifications thereto only for |
| purposes that are authorized by appropriate patent licenses. |
| |
| 4. DISCLAIMER |
| |
| This FDK AAC Codec software is provided by Fraunhofer on behalf of the copyright |
| holders and contributors "AS IS" and WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, |
| including but not limited to the implied warranties of merchantability and |
| fitness for a particular purpose. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR |
| CONTRIBUTORS BE LIABLE for any direct, indirect, incidental, special, exemplary, |
| or consequential damages, including but not limited to procurement of substitute |
| goods or services; loss of use, data, or profits, or business interruption, |
| however caused and on any theory of liability, whether in contract, strict |
| liability, or tort (including negligence), arising in any way out of the use of |
| this software, even if advised of the possibility of such damage. |
| |
| 5. CONTACT INFORMATION |
| |
| Fraunhofer Institute for Integrated Circuits IIS |
| Attention: Audio and Multimedia Departments - FDK AAC LL |
| Am Wolfsmantel 33 |
| 91058 Erlangen, Germany |
| |
| www.iis.fraunhofer.de/amm |
| amm-info@iis.fraunhofer.de |
| ----------------------------------------------------------------------------- */ |
| |
| /**************************** AAC decoder library ****************************** |
| |
| Author(s): Josef Hoepfl, Tobias Chalupka |
| |
| Description: Definition of constant tables |
| |
| *******************************************************************************/ |
| |
| #include "aac_rom.h" |
| |
| /* Prescale InverseQuantTable by 4 to save |
| redundant shifts in invers quantization |
| */ |
| #define SCL_TAB(a) (a >> 4) |
| const FIXP_DBL InverseQuantTable[INV_QUANT_TABLESIZE + 1] = { |
| SCL_TAB(0x32CBFD40), SCL_TAB(0x330FC340), SCL_TAB(0x33539FC0), |
| SCL_TAB(0x33979280), SCL_TAB(0x33DB9BC0), SCL_TAB(0x341FBB80), |
| SCL_TAB(0x3463F180), SCL_TAB(0x34A83DC0), SCL_TAB(0x34ECA000), |
| SCL_TAB(0x35311880), SCL_TAB(0x3575A700), SCL_TAB(0x35BA4B80), |
| SCL_TAB(0x35FF0600), SCL_TAB(0x3643D680), SCL_TAB(0x3688BCC0), |
| SCL_TAB(0x36CDB880), SCL_TAB(0x3712CA40), SCL_TAB(0x3757F1C0), |
| SCL_TAB(0x379D2F00), SCL_TAB(0x37E28180), SCL_TAB(0x3827E9C0), |
| SCL_TAB(0x386D6740), SCL_TAB(0x38B2FA40), SCL_TAB(0x38F8A2C0), |
| SCL_TAB(0x393E6080), SCL_TAB(0x39843380), SCL_TAB(0x39CA1BC0), |
| SCL_TAB(0x3A101940), SCL_TAB(0x3A562BC0), SCL_TAB(0x3A9C5340), |
| SCL_TAB(0x3AE28FC0), SCL_TAB(0x3B28E180), SCL_TAB(0x3B6F4800), |
| SCL_TAB(0x3BB5C340), SCL_TAB(0x3BFC5380), SCL_TAB(0x3C42F880), |
| SCL_TAB(0x3C89B200), SCL_TAB(0x3CD08080), SCL_TAB(0x3D176340), |
| SCL_TAB(0x3D5E5B00), SCL_TAB(0x3DA56700), SCL_TAB(0x3DEC87C0), |
| SCL_TAB(0x3E33BCC0), SCL_TAB(0x3E7B0640), SCL_TAB(0x3EC26400), |
| SCL_TAB(0x3F09D640), SCL_TAB(0x3F515C80), SCL_TAB(0x3F98F740), |
| SCL_TAB(0x3FE0A600), SCL_TAB(0x40286900), SCL_TAB(0x40704000), |
| SCL_TAB(0x40B82B00), SCL_TAB(0x41002A00), SCL_TAB(0x41483D00), |
| SCL_TAB(0x41906400), SCL_TAB(0x41D89F00), SCL_TAB(0x4220ED80), |
| SCL_TAB(0x42695000), SCL_TAB(0x42B1C600), SCL_TAB(0x42FA5000), |
| SCL_TAB(0x4342ED80), SCL_TAB(0x438B9E80), SCL_TAB(0x43D46380), |
| SCL_TAB(0x441D3B80), SCL_TAB(0x44662780), SCL_TAB(0x44AF2680), |
| SCL_TAB(0x44F83900), SCL_TAB(0x45415F00), SCL_TAB(0x458A9880), |
| SCL_TAB(0x45D3E500), SCL_TAB(0x461D4500), SCL_TAB(0x4666B800), |
| SCL_TAB(0x46B03E80), SCL_TAB(0x46F9D800), SCL_TAB(0x47438480), |
| SCL_TAB(0x478D4400), SCL_TAB(0x47D71680), SCL_TAB(0x4820FC00), |
| SCL_TAB(0x486AF500), SCL_TAB(0x48B50000), SCL_TAB(0x48FF1E80), |
| SCL_TAB(0x49494F80), SCL_TAB(0x49939380), SCL_TAB(0x49DDEA80), |
| SCL_TAB(0x4A285400), SCL_TAB(0x4A72D000), SCL_TAB(0x4ABD5E80), |
| SCL_TAB(0x4B080000), SCL_TAB(0x4B52B400), SCL_TAB(0x4B9D7A80), |
| SCL_TAB(0x4BE85380), SCL_TAB(0x4C333F00), SCL_TAB(0x4C7E3D00), |
| SCL_TAB(0x4CC94D00), SCL_TAB(0x4D146F80), SCL_TAB(0x4D5FA500), |
| SCL_TAB(0x4DAAEC00), SCL_TAB(0x4DF64580), SCL_TAB(0x4E41B180), |
| SCL_TAB(0x4E8D2F00), SCL_TAB(0x4ED8BF80), SCL_TAB(0x4F246180), |
| SCL_TAB(0x4F701600), SCL_TAB(0x4FBBDC00), SCL_TAB(0x5007B480), |
| SCL_TAB(0x50539F00), SCL_TAB(0x509F9B80), SCL_TAB(0x50EBA980), |
| SCL_TAB(0x5137C980), SCL_TAB(0x5183FB80), SCL_TAB(0x51D03F80), |
| SCL_TAB(0x521C9500), SCL_TAB(0x5268FC80), SCL_TAB(0x52B57580), |
| SCL_TAB(0x53020000), SCL_TAB(0x534E9C80), SCL_TAB(0x539B4A80), |
| SCL_TAB(0x53E80A80), SCL_TAB(0x5434DB80), SCL_TAB(0x5481BE80), |
| SCL_TAB(0x54CEB280), SCL_TAB(0x551BB880), SCL_TAB(0x5568CF80), |
| SCL_TAB(0x55B5F800), SCL_TAB(0x56033200), SCL_TAB(0x56507D80), |
| SCL_TAB(0x569DDA00), SCL_TAB(0x56EB4800), SCL_TAB(0x5738C700), |
| SCL_TAB(0x57865780), SCL_TAB(0x57D3F900), SCL_TAB(0x5821AC00), |
| SCL_TAB(0x586F7000), SCL_TAB(0x58BD4500), SCL_TAB(0x590B2B00), |
| SCL_TAB(0x59592200), SCL_TAB(0x59A72A80), SCL_TAB(0x59F54380), |
| SCL_TAB(0x5A436D80), SCL_TAB(0x5A91A900), SCL_TAB(0x5ADFF500), |
| SCL_TAB(0x5B2E5180), SCL_TAB(0x5B7CBF80), SCL_TAB(0x5BCB3E00), |
| SCL_TAB(0x5C19CD00), SCL_TAB(0x5C686D80), SCL_TAB(0x5CB71E00), |
| SCL_TAB(0x5D05DF80), SCL_TAB(0x5D54B200), SCL_TAB(0x5DA39500), |
| SCL_TAB(0x5DF28880), SCL_TAB(0x5E418C80), SCL_TAB(0x5E90A100), |
| SCL_TAB(0x5EDFC680), SCL_TAB(0x5F2EFC00), SCL_TAB(0x5F7E4280), |
| SCL_TAB(0x5FCD9900), SCL_TAB(0x601D0080), SCL_TAB(0x606C7800), |
| SCL_TAB(0x60BC0000), SCL_TAB(0x610B9800), SCL_TAB(0x615B4100), |
| SCL_TAB(0x61AAF980), SCL_TAB(0x61FAC300), SCL_TAB(0x624A9C80), |
| SCL_TAB(0x629A8600), SCL_TAB(0x62EA8000), SCL_TAB(0x633A8A00), |
| SCL_TAB(0x638AA480), SCL_TAB(0x63DACF00), SCL_TAB(0x642B0980), |
| SCL_TAB(0x647B5400), SCL_TAB(0x64CBAE80), SCL_TAB(0x651C1900), |
| SCL_TAB(0x656C9400), SCL_TAB(0x65BD1E80), SCL_TAB(0x660DB900), |
| SCL_TAB(0x665E6380), SCL_TAB(0x66AF1E00), SCL_TAB(0x66FFE880), |
| SCL_TAB(0x6750C280), SCL_TAB(0x67A1AC80), SCL_TAB(0x67F2A600), |
| SCL_TAB(0x6843B000), SCL_TAB(0x6894C900), SCL_TAB(0x68E5F200), |
| SCL_TAB(0x69372B00), SCL_TAB(0x69887380), SCL_TAB(0x69D9CB80), |
| SCL_TAB(0x6A2B3300), SCL_TAB(0x6A7CAA80), SCL_TAB(0x6ACE3180), |
| SCL_TAB(0x6B1FC800), SCL_TAB(0x6B716E00), SCL_TAB(0x6BC32400), |
| SCL_TAB(0x6C14E900), SCL_TAB(0x6C66BD80), SCL_TAB(0x6CB8A180), |
| SCL_TAB(0x6D0A9500), SCL_TAB(0x6D5C9800), SCL_TAB(0x6DAEAA00), |
| SCL_TAB(0x6E00CB80), SCL_TAB(0x6E52FC80), SCL_TAB(0x6EA53D00), |
| SCL_TAB(0x6EF78C80), SCL_TAB(0x6F49EB80), SCL_TAB(0x6F9C5980), |
| SCL_TAB(0x6FEED700), SCL_TAB(0x70416380), SCL_TAB(0x7093FF00), |
| SCL_TAB(0x70E6AA00), SCL_TAB(0x71396400), SCL_TAB(0x718C2D00), |
| SCL_TAB(0x71DF0580), SCL_TAB(0x7231ED00), SCL_TAB(0x7284E300), |
| SCL_TAB(0x72D7E880), SCL_TAB(0x732AFD00), SCL_TAB(0x737E2080), |
| SCL_TAB(0x73D15300), SCL_TAB(0x74249480), SCL_TAB(0x7477E480), |
| SCL_TAB(0x74CB4400), SCL_TAB(0x751EB200), SCL_TAB(0x75722F00), |
| SCL_TAB(0x75C5BB00), SCL_TAB(0x76195580), SCL_TAB(0x766CFF00), |
| SCL_TAB(0x76C0B700), SCL_TAB(0x77147E00), SCL_TAB(0x77685400), |
| SCL_TAB(0x77BC3880), SCL_TAB(0x78102B80), SCL_TAB(0x78642D80), |
| SCL_TAB(0x78B83E00), SCL_TAB(0x790C5D00), SCL_TAB(0x79608B00), |
| SCL_TAB(0x79B4C780), SCL_TAB(0x7A091280), SCL_TAB(0x7A5D6C00), |
| SCL_TAB(0x7AB1D400), SCL_TAB(0x7B064A80), SCL_TAB(0x7B5ACF80), |
| SCL_TAB(0x7BAF6380), SCL_TAB(0x7C040580), SCL_TAB(0x7C58B600), |
| SCL_TAB(0x7CAD7500), SCL_TAB(0x7D024200), SCL_TAB(0x7D571E00), |
| SCL_TAB(0x7DAC0800), SCL_TAB(0x7E010080), SCL_TAB(0x7E560780), |
| SCL_TAB(0x7EAB1C80), SCL_TAB(0x7F004000), SCL_TAB(0x7F557200), |
| SCL_TAB(0x7FAAB200), SCL_TAB(0x7FFFFFFF)}; |
| |
| /** |
| * \brief Table representing scale factor gains. Given a scale factor sf, and a |
| * value pSpec[i] the gain is given by: MantissaTable[sf % 4][msb] = 2^(sf % 4) |
| * / (1<<ExponentTable[sf % 4][msb] The second dimension "msb" represents the |
| * upper scale factor bit count floor(log2(scalefactor >> 2)) The corresponding |
| * exponents for the values in this tables are stored in ExponentTable[sf % |
| * 4][msb] below. |
| */ |
| const FIXP_DBL MantissaTable[4][14] = { |
| {0x40000000, 0x50A28C00, 0x6597FA80, 0x40000000, 0x50A28C00, 0x6597FA80, |
| 0x40000000, 0x50A28C00, 0x6597FA80, 0x40000000, 0x50A28C00, 0x6597FA80, |
| 0x40000000, 0x50A28C00}, |
| {0x4C1BF800, 0x5FE44380, 0x78D0DF80, 0x4C1BF800, 0x5FE44380, 0x78D0DF80, |
| 0x4C1BF800, 0x5FE44380, 0x78D0DF80, 0x4C1BF800, 0x5FE44380, 0x78D0DF80, |
| 0x4C1BF800, 0x5FE44380}, |
| {0x5A827980, 0x7208F800, 0x47D66B00, 0x5A827980, 0x7208F800, 0x47D66B00, |
| 0x5A827980, 0x7208F800, 0x47D66B00, 0x5A827980, 0x7208F800, 0x47D66B00, |
| 0x5A827980, 0x7208F800}, |
| {0x6BA27E80, 0x43CE3E80, 0x556E0400, 0x6BA27E80, 0x43CE3E80, 0x556E0400, |
| 0x6BA27E80, 0x43CE3E80, 0x556E0400, 0x6BA27E80, 0x43CE3E80, 0x556E0400, |
| 0x6BA27E80, 0x43CE3E80}}; |
| |
| const SCHAR ExponentTable[4][14] = { |
| {1, 2, 3, 5, 6, 7, 9, 10, 11, 13, 14, 15, 17, 18}, |
| {1, 2, 3, 5, 6, 7, 9, 10, 11, 13, 14, 15, 17, 18}, |
| {1, 2, 4, 5, 6, 8, 9, 10, 12, 13, 14, 16, 17, 18}, |
| {1, 3, 4, 5, 7, 8, 9, 11, 12, 13, 15, 16, 17, 19}}; |
| |
| /* 41 scfbands */ |
| static const SHORT sfb_96_1024[42] = { |
| 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, 52, |
| 56, 64, 72, 80, 88, 96, 108, 120, 132, 144, 156, 172, 188, 212, |
| 240, 276, 320, 384, 448, 512, 576, 640, 704, 768, 832, 896, 960, 1024}; |
| /* 12 scfbands */ |
| static const SHORT sfb_96_128[13] = {0, 4, 8, 12, 16, 20, 24, |
| 32, 40, 48, 64, 92, 128}; |
| |
| /* 47 scfbands*/ |
| static const SHORT sfb_64_1024[48] = { |
| 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, |
| 48, 52, 56, 64, 72, 80, 88, 100, 112, 124, 140, 156, |
| 172, 192, 216, 240, 268, 304, 344, 384, 424, 464, 504, 544, |
| 584, 624, 664, 704, 744, 784, 824, 864, 904, 944, 984, 1024}; |
| |
| /* 12 scfbands */ |
| static const SHORT sfb_64_128[13] = {0, 4, 8, 12, 16, 20, 24, |
| 32, 40, 48, 64, 92, 128}; |
| |
| /* 49 scfbands */ |
| static const SHORT sfb_48_1024[50] = { |
| 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 48, 56, |
| 64, 72, 80, 88, 96, 108, 120, 132, 144, 160, 176, 196, 216, |
| 240, 264, 292, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, |
| 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 1024}; |
| /* 14 scfbands */ |
| static const SHORT sfb_48_128[15] = {0, 4, 8, 12, 16, 20, 28, 36, |
| 44, 56, 68, 80, 96, 112, 128}; |
| |
| /* 51 scfbands */ |
| static const SHORT sfb_32_1024[52] = { |
| 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 48, 56, |
| 64, 72, 80, 88, 96, 108, 120, 132, 144, 160, 176, 196, 216, |
| 240, 264, 292, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, |
| 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960, 992, 1024}; |
| |
| /* 47 scfbands */ |
| static const SHORT sfb_24_1024[48] = { |
| 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, |
| 52, 60, 68, 76, 84, 92, 100, 108, 116, 124, 136, 148, |
| 160, 172, 188, 204, 220, 240, 260, 284, 308, 336, 364, 396, |
| 432, 468, 508, 552, 600, 652, 704, 768, 832, 896, 960, 1024}; |
| |
| /* 15 scfbands */ |
| static const SHORT sfb_24_128[16] = {0, 4, 8, 12, 16, 20, 24, 28, |
| 36, 44, 52, 64, 76, 92, 108, 128}; |
| |
| /* 43 scfbands */ |
| static const SHORT sfb_16_1024[44] = { |
| 0, 8, 16, 24, 32, 40, 48, 56, 64, 72, 80, 88, 100, 112, 124, |
| 136, 148, 160, 172, 184, 196, 212, 228, 244, 260, 280, 300, 320, 344, 368, |
| 396, 424, 456, 492, 532, 572, 616, 664, 716, 772, 832, 896, 960, 1024}; |
| |
| /* 15 scfbands */ |
| static const SHORT sfb_16_128[16] = {0, 4, 8, 12, 16, 20, 24, 28, |
| 32, 40, 48, 60, 72, 88, 108, 128}; |
| |
| /* 40 scfbands */ |
| static const SHORT sfb_8_1024[41] = { |
| 0, 12, 24, 36, 48, 60, 72, 84, 96, 108, 120, 132, 144, 156, |
| 172, 188, 204, 220, 236, 252, 268, 288, 308, 328, 348, 372, 396, 420, |
| 448, 476, 508, 544, 580, 620, 664, 712, 764, 820, 880, 944, 1024}; |
| |
| /* 15 scfbands */ |
| static const SHORT sfb_8_128[16] = {0, 4, 8, 12, 16, 20, 24, 28, |
| 36, 44, 52, 60, 72, 88, 108, 128}; |
| |
| static const SHORT |
| sfb_96_960[42] = {0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, |
| 44, 48, 52, 56, 64, 72, 80, 88, 96, 108, 120, |
| 132, 144, 156, 172, 188, 212, 240, 276, 320, 384, 448, |
| 512, 576, 640, 704, 768, 832, 896, 960}; /* 40 scfbands */ |
| |
| static const SHORT sfb_96_120[13] = {0, 4, 8, 12, 16, 20, 24, |
| 32, 40, 48, 64, 92, 120}; /* 12 scfbands */ |
| |
| static const SHORT sfb_64_960[47] = { |
| 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, |
| 48, 52, 56, 64, 72, 80, 88, 100, 112, 124, 140, 156, |
| 172, 192, 216, 240, 268, 304, 344, 384, 424, 464, 504, 544, |
| 584, 624, 664, 704, 744, 784, 824, 864, 904, 944, 960}; /* 46 scfbands */ |
| |
| static const SHORT sfb_64_120[13] = {0, 4, 8, 12, 16, 20, 24, |
| 32, 40, 48, 64, 92, 120}; /* 12 scfbands */ |
| |
| static const SHORT sfb_48_960[50] = { |
| 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 48, 56, |
| 64, 72, 80, 88, 96, 108, 120, 132, 144, 160, 176, 196, 216, |
| 240, 264, 292, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, |
| 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960}; /* 49 scfbands */ |
| static const SHORT sfb_48_120[15] = { |
| 0, 4, 8, 12, 16, 20, 28, 36, |
| 44, 56, 68, 80, 96, 112, 120}; /* 14 scfbands */ |
| |
| static const SHORT sfb_32_960[50] = { |
| 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 48, 56, |
| 64, 72, 80, 88, 96, 108, 120, 132, 144, 160, 176, 196, 216, |
| 240, 264, 292, 320, 352, 384, 416, 448, 480, 512, 544, 576, 608, |
| 640, 672, 704, 736, 768, 800, 832, 864, 896, 928, 960}; /* 49 scfbands */ |
| |
| static const SHORT sfb_24_960[47] = { |
| 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, |
| 52, 60, 68, 76, 84, 92, 100, 108, 116, 124, 136, 148, |
| 160, 172, 188, 204, 220, 240, 260, 284, 308, 336, 364, 396, |
| 432, 468, 508, 552, 600, 652, 704, 768, 832, 896, 960}; /* 46 scfbands */ |
| |
| static const SHORT sfb_24_120[16] = { |
| 0, 4, 8, 12, 16, 20, 24, 28, |
| 36, 44, 52, 64, 76, 92, 108, 120}; /* 15 scfbands */ |
| |
| static const SHORT sfb_16_960[43] = {0, 8, 16, 24, 32, 40, 48, 56, |
| 64, 72, 80, 88, 100, 112, 124, 136, |
| 148, 160, 172, 184, 196, 212, 228, 244, |
| 260, 280, 300, 320, 344, 368, 396, 424, |
| 456, 492, 532, 572, 616, 664, 716, 772, |
| 832, 896, 960}; /* 42 scfbands */ |
| |
| static const SHORT sfb_16_120[16] = { |
| 0, 4, 8, 12, 16, 20, 24, 28, |
| 32, 40, 48, 60, 72, 88, 108, 120}; /* 15 scfbands */ |
| |
| static const SHORT sfb_8_960[41] = {0, 12, 24, 36, 48, 60, 72, 84, 96, |
| 108, 120, 132, 144, 156, 172, 188, 204, 220, |
| 236, 252, 268, 288, 308, 328, 348, 372, 396, |
| 420, 448, 476, 508, 544, 580, 620, 664, 712, |
| 764, 820, 880, 944, 960}; /* 40 scfbands */ |
| |
| static const SHORT sfb_8_120[16] = { |
| 0, 4, 8, 12, 16, 20, 24, 28, |
| 36, 44, 52, 60, 72, 88, 108, 120}; /* 15 scfbands */ |
| |
| static const SHORT |
| sfb_96_768[] = {0, 4, 8, 12, 16, 20, 24, 28, 32, 36, |
| 40, 44, 48, 52, 56, 64, 72, 80, 88, 96, |
| 108, 120, 132, 144, 156, 172, 188, 212, 240, 276, |
| 320, 384, 448, 512, 576, 640, 704, 768}; /* 37 scfbands */ |
| static const SHORT sfb_96_96[] = {0, 4, 8, 12, 16, 20, 24, |
| 32, 40, 48, 64, 92, 96}; /* 12 scfbands */ |
| |
| static const SHORT sfb_64_768[] = |
| { |
| 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, |
| 44, 48, 52, 56, 64, 72, 80, 88, 100, 112, 124, |
| 140, 156, 172, 192, 216, 240, 268, 304, 344, 384, 424, |
| 464, 504, 544, 584, 624, 664, 704, 744, 768}; /* 41 scfbands */ |
| |
| static const SHORT sfb_64_96[] = {0, 4, 8, 12, 16, 20, 24, |
| 32, 40, 48, 64, 92, 96}; /* 12 scfbands */ |
| |
| static const SHORT |
| sfb_48_768[] = {0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 48, |
| 56, 64, 72, 80, 88, 96, 108, 120, 132, 144, 160, 176, |
| 196, 216, 240, 264, 292, 320, 352, 384, 416, 448, 480, 512, |
| 544, 576, 608, 640, 672, 704, 736, 768}; /* 43 scfbands */ |
| |
| static const SHORT sfb_48_96[] = {0, 4, 8, 12, 16, 20, 28, |
| 36, 44, 56, 68, 80, 96}; /* 12 scfbands */ |
| |
| static const SHORT |
| sfb_32_768[] = {0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 48, |
| 56, 64, 72, 80, 88, 96, 108, 120, 132, 144, 160, 176, |
| 196, 216, 240, 264, 292, 320, 352, 384, 416, 448, 480, 512, |
| 544, 576, 608, 640, 672, 704, 736, 768}; /* 43 scfbands */ |
| |
| static const SHORT |
| sfb_24_768[] = {0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, |
| 52, 60, 68, 76, 84, 92, 100, 108, 116, 124, 136, 148, |
| 160, 172, 188, 204, 220, 240, 260, 284, 308, 336, 364, 396, |
| 432, 468, 508, 552, 600, 652, 704, 768}; /* 43 scfbands */ |
| |
| static const SHORT sfb_24_96[] = {0, 4, 8, 12, 16, 20, 24, 28, |
| 36, 44, 52, 64, 76, 92, 96}; /* 14 scfbands */ |
| |
| static const SHORT sfb_16_768[] = {0, 8, 16, 24, 32, 40, 48, 56, 64, |
| 72, 80, 88, 100, 112, 124, 136, 148, 160, |
| 172, 184, 196, 212, 228, 244, 260, 280, 300, |
| 320, 344, 368, 396, 424, 456, 492, 532, 572, |
| 616, 664, 716, 768}; /* 39 scfbands */ |
| |
| static const SHORT sfb_16_96[] = {0, 4, 8, 12, 16, 20, 24, 28, |
| 32, 40, 48, 60, 72, 88, 96}; /* 14 scfbands */ |
| |
| static const SHORT |
| sfb_8_768[] = {0, 12, 24, 36, 48, 60, 72, 84, 96, 108, |
| 120, 132, 144, 156, 172, 188, 204, 220, 236, 252, |
| 268, 288, 308, 328, 348, 372, 396, 420, 448, 476, |
| 508, 544, 580, 620, 664, 712, 764, 768}; /* 37 scfbands */ |
| |
| static const SHORT sfb_8_96[] = {0, 4, 8, 12, 16, 20, 24, 28, |
| 36, 44, 52, 60, 72, 88, 96}; /* 14 scfbands */ |
| |
| static const SHORT sfb_48_512[37] = { |
| 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, |
| 52, 56, 60, 68, 76, 84, 92, 100, 112, 124, 136, 148, 164, |
| 184, 208, 236, 268, 300, 332, 364, 396, 428, 460, 512}; /* 36 scfbands */ |
| static const SHORT |
| sfb_32_512[38] = {0, 4, 8, 12, 16, 20, 24, 28, 32, 36, |
| 40, 44, 48, 52, 56, 64, 72, 80, 88, 96, |
| 108, 120, 132, 144, 160, 176, 192, 212, 236, 260, |
| 288, 320, 352, 384, 416, 448, 480, 512}; /* 37 scfbands */ |
| static const SHORT sfb_24_512[32] = { |
| 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, |
| 44, 52, 60, 68, 80, 92, 104, 120, 140, 164, 192, |
| 224, 256, 288, 320, 352, 384, 416, 448, 480, 512}; /* 31 scfbands */ |
| |
| static const SHORT sfb_48_480[36] = { |
| 0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, 44, 48, |
| 52, 56, 64, 72, 80, 88, 96, 108, 120, 132, 144, 156, 172, |
| 188, 212, 240, 272, 304, 336, 368, 400, 432, 480}; /* 35 scfbands */ |
| static const SHORT |
| sfb_32_480[38] = {0, 4, 8, 12, 16, 20, 24, 28, 32, 36, |
| 40, 44, 48, 52, 56, 60, 64, 72, 80, 88, |
| 96, 104, 112, 124, 136, 148, 164, 180, 200, 224, |
| 256, 288, 320, 352, 384, 416, 448, 480}; /* 37 scfbands */ |
| static const SHORT sfb_24_480[31] = |
| {0, 4, 8, 12, 16, 20, 24, 28, 32, 36, 40, |
| 44, 52, 60, 68, 80, 92, 104, 120, 140, 164, 192, |
| 224, 256, 288, 320, 352, 384, 416, 448, 480}; /* 30 scfbands */ |
| |
| const SFB_INFO sfbOffsetTables[5][16] = {{ |
| {sfb_96_1024, sfb_96_128, 41, 12}, |
| {sfb_96_1024, sfb_96_128, 41, 12}, |
| {sfb_64_1024, sfb_64_128, 47, 12}, |
| {sfb_48_1024, sfb_48_128, 49, 14}, |
| {sfb_48_1024, sfb_48_128, 49, 14}, |
| {sfb_32_1024, sfb_48_128, 51, 14}, |
| {sfb_24_1024, sfb_24_128, 47, 15}, |
| {sfb_24_1024, sfb_24_128, 47, 15}, |
| {sfb_16_1024, sfb_16_128, 43, 15}, |
| {sfb_16_1024, sfb_16_128, 43, 15}, |
| {sfb_16_1024, sfb_16_128, 43, 15}, |
| {sfb_8_1024, sfb_8_128, 40, 15}, |
| {sfb_8_1024, sfb_8_128, 40, 15}, |
| }, |
| { |
| {sfb_96_960, sfb_96_120, 40, 12}, |
| {sfb_96_960, sfb_96_120, 40, 12}, |
| {sfb_64_960, sfb_64_120, 46, 12}, |
| {sfb_48_960, sfb_48_120, 49, 14}, |
| {sfb_48_960, sfb_48_120, 49, 14}, |
| {sfb_32_960, sfb_48_120, 49, 14}, |
| {sfb_24_960, sfb_24_120, 46, 15}, |
| {sfb_24_960, sfb_24_120, 46, 15}, |
| {sfb_16_960, sfb_16_120, 42, 15}, |
| {sfb_16_960, sfb_16_120, 42, 15}, |
| {sfb_16_960, sfb_16_120, 42, 15}, |
| {sfb_8_960, sfb_8_120, 40, 15}, |
| {sfb_8_960, sfb_8_120, 40, 15}, |
| }, |
| { |
| {sfb_96_768, sfb_96_96, 37, 12}, |
| {sfb_96_768, sfb_96_96, 37, 12}, |
| {sfb_64_768, sfb_64_96, 41, 12}, |
| {sfb_48_768, sfb_48_96, 43, 12}, |
| {sfb_48_768, sfb_48_96, 43, 12}, |
| {sfb_32_768, sfb_48_96, 43, 12}, |
| {sfb_24_768, sfb_24_96, 43, 14}, |
| {sfb_24_768, sfb_24_96, 43, 14}, |
| {sfb_16_768, sfb_16_96, 39, 14}, |
| {sfb_16_768, sfb_16_96, 39, 14}, |
| {sfb_16_768, sfb_16_96, 39, 14}, |
| {sfb_8_768, sfb_8_96, 37, 14}, |
| {sfb_8_768, sfb_8_96, 37, 14}, |
| }, |
| { |
| {sfb_48_512, NULL, 36, 0}, |
| {sfb_48_512, NULL, 36, 0}, |
| {sfb_48_512, NULL, 36, 0}, |
| {sfb_48_512, NULL, 36, 0}, |
| {sfb_48_512, NULL, 36, 0}, |
| {sfb_32_512, NULL, 37, 0}, |
| {sfb_24_512, NULL, 31, 0}, |
| {sfb_24_512, NULL, 31, 0}, |
| {sfb_24_512, NULL, 31, 0}, |
| {sfb_24_512, NULL, 31, 0}, |
| {sfb_24_512, NULL, 31, 0}, |
| {sfb_24_512, NULL, 31, 0}, |
| {sfb_24_512, NULL, 31, 0}, |
| }, |
| { |
| {sfb_48_480, NULL, 35, 0}, |
| {sfb_48_480, NULL, 35, 0}, |
| {sfb_48_480, NULL, 35, 0}, |
| {sfb_48_480, NULL, 35, 0}, |
| {sfb_48_480, NULL, 35, 0}, |
| {sfb_32_480, NULL, 37, 0}, |
| {sfb_24_480, NULL, 30, 0}, |
| {sfb_24_480, NULL, 30, 0}, |
| {sfb_24_480, NULL, 30, 0}, |
| {sfb_24_480, NULL, 30, 0}, |
| {sfb_24_480, NULL, 30, 0}, |
| {sfb_24_480, NULL, 30, 0}, |
| {sfb_24_480, NULL, 30, 0}, |
| }}; |
| |
| /*# don't use 1 bit hufman tables */ |
| /* |
| MPEG-2 AAC 2 BITS parallel Hufman Tables |
| |
| Bit 0: = 1=ENDNODE, 0=INDEX |
| Bit 1: = CODEWORD LEN MOD 2 |
| Bit 2..9: = VALUE/REF Tables 1..10,SCL |
| Bit 2..11: = VALUE/REF Table 11 |
| */ |
| const USHORT HuffmanCodeBook_1[51][4] = { |
| {0x0157, 0x0157, 0x0004, 0x0018}, {0x0008, 0x000c, 0x0010, 0x0014}, |
| {0x015b, 0x015b, 0x0153, 0x0153}, {0x0057, 0x0057, 0x0167, 0x0167}, |
| {0x0257, 0x0257, 0x0117, 0x0117}, {0x0197, 0x0197, 0x0147, 0x0147}, |
| {0x001c, 0x0030, 0x0044, 0x0058}, {0x0020, 0x0024, 0x0028, 0x002c}, |
| {0x014b, 0x014b, 0x0163, 0x0163}, {0x0217, 0x0217, 0x0127, 0x0127}, |
| {0x0187, 0x0187, 0x0097, 0x0097}, {0x016b, 0x016b, 0x0017, 0x0017}, |
| {0x0034, 0x0038, 0x003c, 0x0040}, {0x0143, 0x0143, 0x0107, 0x0107}, |
| {0x011b, 0x011b, 0x0067, 0x0067}, {0x0193, 0x0193, 0x0297, 0x0297}, |
| {0x019b, 0x019b, 0x0247, 0x0247}, {0x0048, 0x004c, 0x0050, 0x0054}, |
| {0x01a7, 0x01a7, 0x0267, 0x0267}, {0x0113, 0x0113, 0x025b, 0x025b}, |
| {0x0053, 0x0053, 0x005b, 0x005b}, {0x0253, 0x0253, 0x0047, 0x0047}, |
| {0x005c, 0x0070, 0x0084, 0x0098}, {0x0060, 0x0064, 0x0068, 0x006c}, |
| {0x012b, 0x012b, 0x0123, 0x0123}, {0x018b, 0x018b, 0x00a7, 0x00a7}, |
| {0x0227, 0x0227, 0x0287, 0x0287}, {0x0087, 0x0087, 0x010b, 0x010b}, |
| {0x0074, 0x0078, 0x007c, 0x0080}, {0x021b, 0x021b, 0x0027, 0x0027}, |
| {0x01a3, 0x01a3, 0x0093, 0x0093}, {0x0183, 0x0183, 0x0207, 0x0207}, |
| {0x024b, 0x024b, 0x004b, 0x004b}, {0x0088, 0x008c, 0x0090, 0x0094}, |
| {0x0063, 0x0063, 0x0103, 0x0103}, {0x0007, 0x0007, 0x02a7, 0x02a7}, |
| {0x009b, 0x009b, 0x026b, 0x026b}, {0x0263, 0x0263, 0x01ab, 0x01ab}, |
| {0x009c, 0x00a0, 0x00a4, 0x00b8}, {0x0241, 0x0011, 0x0069, 0x0019}, |
| {0x0211, 0x0041, 0x0291, 0x0299}, {0x00a8, 0x00ac, 0x00b0, 0x00b4}, |
| {0x008b, 0x008b, 0x0223, 0x0223}, {0x00a3, 0x00a3, 0x020b, 0x020b}, |
| {0x02ab, 0x02ab, 0x0283, 0x0283}, {0x002b, 0x002b, 0x0083, 0x0083}, |
| {0x00bc, 0x00c0, 0x00c4, 0x00c8}, {0x0003, 0x0003, 0x022b, 0x022b}, |
| {0x028b, 0x028b, 0x02a3, 0x02a3}, {0x0023, 0x0023, 0x0203, 0x0203}, |
| {0x000b, 0x000b, 0x00ab, 0x00ab}}; |
| |
| const USHORT HuffmanCodeBook_2[39][4] = { |
| {0x0004, 0x000c, 0x0020, 0x0034}, {0x0157, 0x0157, 0x0159, 0x0008}, |
| {0x0153, 0x0153, 0x0257, 0x0257}, {0x0010, 0x0014, 0x0018, 0x001c}, |
| {0x0117, 0x0117, 0x0057, 0x0057}, {0x0147, 0x0147, 0x0197, 0x0197}, |
| {0x0167, 0x0167, 0x0185, 0x0161}, {0x0125, 0x0095, 0x0065, 0x0215}, |
| {0x0024, 0x0028, 0x002c, 0x0030}, {0x0051, 0x0149, 0x0119, 0x0141}, |
| {0x0015, 0x0199, 0x0259, 0x0245}, {0x0191, 0x0265, 0x0105, 0x0251}, |
| {0x0045, 0x0111, 0x0169, 0x01a5}, {0x0038, 0x0044, 0x0058, 0x006c}, |
| {0x0295, 0x0059, 0x003c, 0x0040}, {0x0227, 0x0227, 0x021b, 0x021b}, |
| {0x0123, 0x0123, 0x0087, 0x0087}, {0x0048, 0x004c, 0x0050, 0x0054}, |
| {0x018b, 0x018b, 0x006b, 0x006b}, {0x029b, 0x029b, 0x01a3, 0x01a3}, |
| {0x0207, 0x0207, 0x01ab, 0x01ab}, {0x0093, 0x0093, 0x0103, 0x0103}, |
| {0x005c, 0x0060, 0x0064, 0x0068}, {0x0213, 0x0213, 0x010b, 0x010b}, |
| {0x012b, 0x012b, 0x0249, 0x0061}, {0x0181, 0x0291, 0x0241, 0x0041}, |
| {0x0005, 0x0099, 0x0019, 0x0025}, {0x0070, 0x0074, 0x0078, 0x0088}, |
| {0x02a5, 0x0261, 0x0011, 0x00a5}, {0x0049, 0x0285, 0x0269, 0x0089}, |
| {0x0221, 0x007c, 0x0080, 0x0084}, {0x020b, 0x020b, 0x0003, 0x0003}, |
| {0x00a3, 0x00a3, 0x02a3, 0x02a3}, {0x02ab, 0x02ab, 0x0083, 0x0083}, |
| {0x008c, 0x0090, 0x0094, 0x0098}, {0x028b, 0x028b, 0x0023, 0x0023}, |
| {0x0283, 0x0283, 0x002b, 0x002b}, {0x000b, 0x000b, 0x0203, 0x0203}, |
| {0x022b, 0x022b, 0x00ab, 0x00ab}}; |
| |
| const USHORT HuffmanCodeBook_3[39][4] = { |
| {0x0003, 0x0003, 0x0004, 0x0008}, {0x0005, 0x0101, 0x0011, 0x0041}, |
| {0x000c, 0x0010, 0x0014, 0x0020}, {0x0017, 0x0017, 0x0143, 0x0143}, |
| {0x0051, 0x0111, 0x0045, 0x0151}, {0x0105, 0x0055, 0x0018, 0x001c}, |
| {0x0157, 0x0157, 0x0147, 0x0147}, {0x0117, 0x0117, 0x0009, 0x0201}, |
| {0x0024, 0x002c, 0x0040, 0x0054}, {0x0241, 0x0019, 0x0065, 0x0028}, |
| {0x0183, 0x0183, 0x0193, 0x0193}, {0x0030, 0x0034, 0x0038, 0x003c}, |
| {0x0027, 0x0027, 0x0253, 0x0253}, {0x005b, 0x005b, 0x0083, 0x0083}, |
| {0x0063, 0x0063, 0x0093, 0x0093}, {0x0023, 0x0023, 0x0213, 0x0213}, |
| {0x0044, 0x0048, 0x004c, 0x0050}, {0x004b, 0x004b, 0x0167, 0x0167}, |
| {0x0163, 0x0163, 0x0097, 0x0097}, {0x0197, 0x0197, 0x0125, 0x0085}, |
| {0x0185, 0x0121, 0x0159, 0x0255}, {0x0058, 0x005c, 0x0060, 0x0070}, |
| {0x0119, 0x0245, 0x0281, 0x0291}, {0x0069, 0x00a5, 0x0205, 0x0109}, |
| {0x01a1, 0x0064, 0x0068, 0x006c}, {0x002b, 0x002b, 0x01a7, 0x01a7}, |
| {0x0217, 0x0217, 0x014b, 0x014b}, {0x0297, 0x0297, 0x016b, 0x016b}, |
| {0x0074, 0x0078, 0x007c, 0x0080}, {0x00a3, 0x00a3, 0x0263, 0x0263}, |
| {0x0285, 0x0129, 0x0099, 0x00a9}, {0x02a1, 0x01a9, 0x0199, 0x0265}, |
| {0x02a5, 0x0084, 0x0088, 0x008c}, {0x0223, 0x0223, 0x008b, 0x008b}, |
| {0x0227, 0x0227, 0x0189, 0x0259}, {0x0219, 0x0090, 0x0094, 0x0098}, |
| {0x02ab, 0x02ab, 0x026b, 0x026b}, {0x029b, 0x029b, 0x024b, 0x024b}, |
| {0x020b, 0x020b, 0x0229, 0x0289}}; |
| |
| const USHORT HuffmanCodeBook_4[38][4] = { |
| {0x0004, 0x0008, 0x000c, 0x0018}, {0x0155, 0x0151, 0x0115, 0x0055}, |
| {0x0145, 0x0005, 0x0015, 0x0001}, {0x0141, 0x0045, 0x0010, 0x0014}, |
| {0x0107, 0x0107, 0x0053, 0x0053}, {0x0103, 0x0103, 0x0113, 0x0113}, |
| {0x001c, 0x0020, 0x0034, 0x0048}, {0x0043, 0x0043, 0x0013, 0x0013}, |
| {0x0024, 0x0028, 0x002c, 0x0030}, {0x015b, 0x015b, 0x0197, 0x0197}, |
| {0x0167, 0x0167, 0x0257, 0x0257}, {0x005b, 0x005b, 0x011b, 0x011b}, |
| {0x0067, 0x0067, 0x014b, 0x014b}, {0x0038, 0x003c, 0x0040, 0x0044}, |
| {0x0193, 0x0193, 0x0251, 0x0095}, {0x0161, 0x0245, 0x0125, 0x0215}, |
| {0x0185, 0x0019, 0x0049, 0x0025}, {0x0109, 0x0211, 0x0061, 0x0241}, |
| {0x004c, 0x0050, 0x0058, 0x006c}, {0x0091, 0x0121, 0x0205, 0x0181}, |
| {0x0085, 0x0009, 0x0201, 0x0054}, {0x0023, 0x0023, 0x0083, 0x0083}, |
| {0x005c, 0x0060, 0x0064, 0x0068}, {0x01a7, 0x01a7, 0x016b, 0x016b}, |
| {0x019b, 0x019b, 0x0297, 0x0297}, {0x0267, 0x0267, 0x025b, 0x025b}, |
| {0x00a5, 0x0069, 0x0099, 0x01a1}, {0x0070, 0x0074, 0x0078, 0x0084}, |
| {0x0291, 0x0129, 0x0261, 0x0189}, {0x0285, 0x01a9, 0x0225, 0x0249}, |
| {0x0219, 0x02a5, 0x007c, 0x0080}, {0x029b, 0x029b, 0x026b, 0x026b}, |
| {0x00a3, 0x00a3, 0x002b, 0x002b}, {0x0088, 0x008c, 0x0090, 0x0094}, |
| {0x0283, 0x0283, 0x008b, 0x008b}, {0x0223, 0x0223, 0x020b, 0x020b}, |
| {0x02ab, 0x02ab, 0x02a3, 0x02a3}, {0x00ab, 0x00ab, 0x0229, 0x0289}}; |
| |
| const USHORT HuffmanCodeBook_5[41][4] = { |
| {0x0113, 0x0113, 0x0004, 0x0008}, {0x010d, 0x0115, 0x0151, 0x00d1}, |
| {0x000c, 0x0010, 0x0014, 0x0028}, {0x00d7, 0x00d7, 0x014f, 0x014f}, |
| {0x00cf, 0x00cf, 0x0157, 0x0157}, {0x0018, 0x001c, 0x0020, 0x0024}, |
| {0x010b, 0x010b, 0x0193, 0x0193}, {0x011b, 0x011b, 0x0093, 0x0093}, |
| {0x00c9, 0x0159, 0x008d, 0x0195}, {0x0149, 0x00d9, 0x018d, 0x0095}, |
| {0x002c, 0x0030, 0x0044, 0x0058}, {0x0105, 0x011d, 0x0051, 0x01d1}, |
| {0x0034, 0x0038, 0x003c, 0x0040}, {0x00c7, 0x00c7, 0x01d7, 0x01d7}, |
| {0x015f, 0x015f, 0x004f, 0x004f}, {0x0147, 0x0147, 0x00df, 0x00df}, |
| {0x0057, 0x0057, 0x01cf, 0x01cf}, {0x0048, 0x004c, 0x0050, 0x0054}, |
| {0x018b, 0x018b, 0x019b, 0x019b}, {0x008b, 0x008b, 0x009b, 0x009b}, |
| {0x0085, 0x009d, 0x01c9, 0x0059}, {0x019d, 0x01d9, 0x0185, 0x0049}, |
| {0x005c, 0x0060, 0x0074, 0x0088}, {0x0011, 0x0101, 0x0161, 0x0121}, |
| {0x0064, 0x0068, 0x006c, 0x0070}, {0x00c3, 0x00c3, 0x0213, 0x0213}, |
| {0x00e3, 0x00e3, 0x000f, 0x000f}, {0x0217, 0x0217, 0x020f, 0x020f}, |
| {0x0143, 0x0143, 0x0017, 0x0017}, {0x0078, 0x007c, 0x0080, 0x0084}, |
| {0x005f, 0x005f, 0x0047, 0x0047}, {0x01c7, 0x01c7, 0x020b, 0x020b}, |
| {0x0083, 0x0083, 0x01a3, 0x01a3}, {0x001b, 0x001b, 0x021b, 0x021b}, |
| {0x008c, 0x0090, 0x0094, 0x0098}, {0x01df, 0x01df, 0x0183, 0x0183}, |
| {0x0009, 0x00a1, 0x001d, 0x0041}, {0x01c1, 0x021d, 0x0205, 0x01e1}, |
| {0x0061, 0x0005, 0x009c, 0x00a0}, {0x0023, 0x0023, 0x0203, 0x0203}, |
| {0x0223, 0x0223, 0x0003, 0x0003}}; |
| |
| const USHORT HuffmanCodeBook_6[40][4] = { |
| {0x0004, 0x0008, 0x000c, 0x001c}, {0x0111, 0x0115, 0x00d1, 0x0151}, |
| {0x010d, 0x0155, 0x014d, 0x00d5}, {0x00cd, 0x0010, 0x0014, 0x0018}, |
| {0x00d9, 0x0159, 0x0149, 0x00c9}, {0x0109, 0x018d, 0x0119, 0x0095}, |
| {0x0195, 0x0091, 0x008d, 0x0191}, {0x0020, 0x0024, 0x0038, 0x004c}, |
| {0x0099, 0x0189, 0x0089, 0x0199}, {0x0028, 0x002c, 0x0030, 0x0034}, |
| {0x0147, 0x0147, 0x015f, 0x015f}, {0x00df, 0x00df, 0x01cf, 0x01cf}, |
| {0x00c7, 0x00c7, 0x01d7, 0x01d7}, {0x0057, 0x0057, 0x004f, 0x004f}, |
| {0x003c, 0x0040, 0x0044, 0x0048}, {0x011f, 0x011f, 0x0107, 0x0107}, |
| {0x0053, 0x0053, 0x01d3, 0x01d3}, {0x019f, 0x019f, 0x0085, 0x01c9}, |
| {0x01d9, 0x009d, 0x0059, 0x0049}, {0x0050, 0x005c, 0x0070, 0x0084}, |
| {0x0185, 0x01dd, 0x0054, 0x0058}, {0x005f, 0x005f, 0x0047, 0x0047}, |
| {0x01c7, 0x01c7, 0x0017, 0x0017}, {0x0060, 0x0064, 0x0068, 0x006c}, |
| {0x000f, 0x000f, 0x0163, 0x0163}, {0x0143, 0x0143, 0x00c3, 0x00c3}, |
| {0x0217, 0x0217, 0x00e3, 0x00e3}, {0x020f, 0x020f, 0x0013, 0x0013}, |
| {0x0074, 0x0078, 0x007c, 0x0080}, {0x0183, 0x0183, 0x0083, 0x0083}, |
| {0x021b, 0x021b, 0x000b, 0x000b}, {0x0103, 0x0103, 0x01a3, 0x01a3}, |
| {0x00a3, 0x00a3, 0x020b, 0x020b}, {0x0088, 0x008c, 0x0090, 0x0094}, |
| {0x0123, 0x0123, 0x001b, 0x001b}, {0x0213, 0x0213, 0x0005, 0x0205}, |
| {0x001d, 0x0061, 0x021d, 0x01e1}, {0x01c1, 0x0041, 0x0098, 0x009c}, |
| {0x0223, 0x0223, 0x0203, 0x0203}, {0x0003, 0x0003, 0x0023, 0x0023}}; |
| |
| const USHORT HuffmanCodeBook_7[31][4] = { |
| {0x0003, 0x0003, 0x0004, 0x0008}, {0x0007, 0x0007, 0x0043, 0x0043}, |
| {0x0045, 0x000c, 0x0010, 0x0024}, {0x0049, 0x0085, 0x0009, 0x0081}, |
| {0x0014, 0x0018, 0x001c, 0x0020}, {0x004f, 0x004f, 0x00c7, 0x00c7}, |
| {0x008b, 0x008b, 0x000f, 0x000f}, {0x00c3, 0x00c3, 0x00c9, 0x008d}, |
| {0x0105, 0x0051, 0x0145, 0x0055}, {0x0028, 0x002c, 0x0040, 0x0054}, |
| {0x00cd, 0x0109, 0x0101, 0x0011}, {0x0030, 0x0034, 0x0038, 0x003c}, |
| {0x0093, 0x0093, 0x014b, 0x014b}, {0x0097, 0x0097, 0x0143, 0x0143}, |
| {0x005b, 0x005b, 0x0017, 0x0017}, {0x0187, 0x0187, 0x00d3, 0x00d3}, |
| {0x0044, 0x0048, 0x004c, 0x0050}, {0x014f, 0x014f, 0x010f, 0x010f}, |
| {0x00d7, 0x00d7, 0x018b, 0x018b}, {0x009b, 0x009b, 0x01c7, 0x01c7}, |
| {0x018d, 0x0181, 0x0019, 0x0111}, {0x0058, 0x005c, 0x0060, 0x0068}, |
| {0x005d, 0x0151, 0x009d, 0x0115}, {0x00d9, 0x01c9, 0x00dd, 0x0119}, |
| {0x0155, 0x0191, 0x01cd, 0x0064}, {0x001f, 0x001f, 0x01c3, 0x01c3}, |
| {0x006c, 0x0070, 0x0074, 0x0078}, {0x015b, 0x015b, 0x0197, 0x0197}, |
| {0x011f, 0x011f, 0x01d3, 0x01d3}, {0x01d7, 0x01d7, 0x015f, 0x015f}, |
| {0x019d, 0x0199, 0x01d9, 0x01dd}}; |
| |
| const USHORT HuffmanCodeBook_8[31][4] = { |
| {0x0004, 0x0008, 0x0010, 0x0024}, {0x0047, 0x0047, 0x0049, 0x0005}, |
| {0x0085, 0x0041, 0x0089, 0x000c}, {0x0003, 0x0003, 0x000b, 0x000b}, |
| {0x0014, 0x0018, 0x001c, 0x0020}, {0x0083, 0x0083, 0x004f, 0x004f}, |
| {0x00c7, 0x00c7, 0x008f, 0x008f}, {0x00cb, 0x00cb, 0x00cd, 0x0051}, |
| {0x0105, 0x0091, 0x0109, 0x000d}, {0x0028, 0x002c, 0x0040, 0x0054}, |
| {0x00c1, 0x00d1, 0x010d, 0x0095}, {0x0030, 0x0034, 0x0038, 0x003c}, |
| {0x0057, 0x0057, 0x014b, 0x014b}, {0x0147, 0x0147, 0x00d7, 0x00d7}, |
| {0x014f, 0x014f, 0x0113, 0x0113}, {0x0117, 0x0117, 0x0103, 0x0103}, |
| {0x0044, 0x0048, 0x004c, 0x0050}, {0x0153, 0x0153, 0x0013, 0x0013}, |
| {0x018b, 0x018b, 0x009b, 0x009b}, {0x005b, 0x005b, 0x0187, 0x0187}, |
| {0x018d, 0x00d9, 0x0155, 0x0015}, {0x0058, 0x005c, 0x0060, 0x0068}, |
| {0x0119, 0x0141, 0x0191, 0x005d}, {0x009d, 0x01c9, 0x0159, 0x00dd}, |
| {0x01c5, 0x0195, 0x01cd, 0x0064}, {0x019b, 0x019b, 0x011f, 0x011f}, |
| {0x006c, 0x0070, 0x0074, 0x0078}, {0x001b, 0x001b, 0x01d3, 0x01d3}, |
| {0x0183, 0x0183, 0x015f, 0x015f}, {0x019f, 0x019f, 0x01db, 0x01db}, |
| {0x01d5, 0x001d, 0x01c1, 0x01dd}}; |
| |
| const USHORT HuffmanCodeBook_9[84][4] = { |
| {0x0003, 0x0003, 0x0004, 0x0008}, {0x0007, 0x0007, 0x0043, 0x0043}, |
| {0x0045, 0x000c, 0x0010, 0x002c}, {0x0049, 0x0085, 0x0009, 0x0081}, |
| {0x0014, 0x0018, 0x001c, 0x0020}, {0x004f, 0x004f, 0x008b, 0x008b}, |
| {0x00c7, 0x00c7, 0x000d, 0x00c1}, {0x00c9, 0x008d, 0x0105, 0x0051}, |
| {0x0109, 0x0145, 0x0024, 0x0028}, {0x0093, 0x0093, 0x00cf, 0x00cf}, |
| {0x0103, 0x0103, 0x0013, 0x0013}, {0x0030, 0x0044, 0x0058, 0x00a4}, |
| {0x0034, 0x0038, 0x003c, 0x0040}, {0x0057, 0x0057, 0x014b, 0x014b}, |
| {0x0187, 0x0187, 0x010f, 0x010f}, {0x0097, 0x0097, 0x005b, 0x005b}, |
| {0x00d3, 0x00d3, 0x0141, 0x0189}, {0x0048, 0x004c, 0x0050, 0x0054}, |
| {0x0015, 0x01c5, 0x014d, 0x0205}, {0x0061, 0x0111, 0x00d5, 0x0099}, |
| {0x005d, 0x0181, 0x00a1, 0x0209}, {0x018d, 0x01c9, 0x0151, 0x0065}, |
| {0x005c, 0x0068, 0x007c, 0x0090}, {0x0245, 0x009d, 0x0060, 0x0064}, |
| {0x001b, 0x001b, 0x0117, 0x0117}, {0x00db, 0x00db, 0x00e3, 0x00e3}, |
| {0x006c, 0x0070, 0x0074, 0x0078}, {0x01c3, 0x01c3, 0x00a7, 0x00a7}, |
| {0x020f, 0x020f, 0x0193, 0x0193}, {0x01cf, 0x01cf, 0x0203, 0x0203}, |
| {0x006b, 0x006b, 0x011b, 0x011b}, {0x0080, 0x0084, 0x0088, 0x008c}, |
| {0x024b, 0x024b, 0x0157, 0x0157}, {0x0023, 0x0023, 0x001f, 0x001f}, |
| {0x00df, 0x00df, 0x00ab, 0x00ab}, {0x00e7, 0x00e7, 0x0123, 0x0123}, |
| {0x0094, 0x0098, 0x009c, 0x00a0}, {0x0287, 0x0287, 0x011f, 0x011f}, |
| {0x015b, 0x015b, 0x0197, 0x0197}, {0x0213, 0x0213, 0x01d3, 0x01d3}, |
| {0x024f, 0x024f, 0x006f, 0x006f}, {0x00a8, 0x00bc, 0x00d0, 0x00f4}, |
| {0x00ac, 0x00b0, 0x00b4, 0x00b8}, {0x0217, 0x0217, 0x0027, 0x0027}, |
| {0x0163, 0x0163, 0x00e9, 0x0289}, {0x0241, 0x00ad, 0x0125, 0x0199}, |
| {0x0071, 0x0251, 0x01a1, 0x02c5}, {0x00c0, 0x00c4, 0x00c8, 0x00cc}, |
| {0x0165, 0x0129, 0x01d5, 0x015d}, {0x02c9, 0x0305, 0x00b1, 0x00ed}, |
| {0x028d, 0x0255, 0x01d9, 0x01e1}, {0x012d, 0x0281, 0x019d, 0x00f1}, |
| {0x00d4, 0x00d8, 0x00dc, 0x00e0}, {0x0029, 0x0169, 0x0291, 0x0219}, |
| {0x0309, 0x01a5, 0x01e5, 0x02d1}, {0x002d, 0x0259, 0x02cd, 0x0295}, |
| {0x00e4, 0x00e8, 0x00ec, 0x00f0}, {0x0223, 0x0223, 0x021f, 0x021f}, |
| {0x0173, 0x0173, 0x030f, 0x030f}, {0x016f, 0x016f, 0x01df, 0x01df}, |
| {0x0133, 0x0133, 0x01af, 0x01af}, {0x00f8, 0x010c, 0x0120, 0x0134}, |
| {0x00fc, 0x0100, 0x0104, 0x0108}, {0x01ab, 0x01ab, 0x0313, 0x0313}, |
| {0x025f, 0x025f, 0x02d7, 0x02d7}, {0x02c3, 0x02c3, 0x01b3, 0x01b3}, |
| {0x029b, 0x029b, 0x0033, 0x0033}, {0x0110, 0x0114, 0x0118, 0x011c}, |
| {0x01eb, 0x01eb, 0x0317, 0x0317}, {0x029f, 0x029f, 0x0227, 0x0227}, |
| {0x0303, 0x0303, 0x01ef, 0x01ef}, {0x0263, 0x0263, 0x0267, 0x0267}, |
| {0x0124, 0x0128, 0x012c, 0x0130}, {0x022b, 0x022b, 0x02df, 0x02df}, |
| {0x01f3, 0x01f3, 0x02db, 0x02db}, {0x02e3, 0x02e3, 0x022f, 0x022f}, |
| {0x031f, 0x031f, 0x031b, 0x031b}, {0x0138, 0x013c, 0x0140, 0x0144}, |
| {0x02a1, 0x0269, 0x0321, 0x02a5}, {0x02e5, 0x0325, 0x02e9, 0x0271}, |
| {0x02a9, 0x026d, 0x0231, 0x02ad}, {0x02b1, 0x02f1, 0x0148, 0x014c}, |
| {0x032b, 0x032b, 0x02ef, 0x02ef}, {0x032f, 0x032f, 0x0333, 0x0333}}; |
| |
| const USHORT HuffmanCodeBook_10[82][4] = { |
| {0x0004, 0x000c, 0x0020, 0x004c}, {0x0045, 0x0085, 0x0049, 0x0008}, |
| {0x008b, 0x008b, 0x0007, 0x0007}, {0x0010, 0x0014, 0x0018, 0x001c}, |
| {0x0043, 0x0043, 0x00c7, 0x00c7}, {0x008f, 0x008f, 0x004f, 0x004f}, |
| {0x00cb, 0x00cb, 0x00cf, 0x00cf}, {0x0009, 0x0081, 0x0109, 0x0091}, |
| {0x0024, 0x0028, 0x002c, 0x0038}, {0x0105, 0x0051, 0x0001, 0x00d1}, |
| {0x010d, 0x000d, 0x00c1, 0x0111}, {0x0149, 0x0095, 0x0030, 0x0034}, |
| {0x0147, 0x0147, 0x0057, 0x0057}, {0x00d7, 0x00d7, 0x014f, 0x014f}, |
| {0x003c, 0x0040, 0x0044, 0x0048}, {0x0117, 0x0117, 0x0153, 0x0153}, |
| {0x009b, 0x009b, 0x018b, 0x018b}, {0x00db, 0x00db, 0x0013, 0x0013}, |
| {0x005b, 0x005b, 0x0103, 0x0103}, {0x0050, 0x0064, 0x0078, 0x00c0}, |
| {0x0054, 0x0058, 0x005c, 0x0060}, {0x0187, 0x0187, 0x018f, 0x018f}, |
| {0x0157, 0x0157, 0x011b, 0x011b}, {0x0193, 0x0193, 0x0159, 0x009d}, |
| {0x01cd, 0x01c9, 0x0195, 0x00a1}, {0x0068, 0x006c, 0x0070, 0x0074}, |
| {0x00dd, 0x0015, 0x005d, 0x0141}, {0x0061, 0x01c5, 0x00e1, 0x011d}, |
| {0x01d1, 0x0209, 0x0199, 0x015d}, {0x0205, 0x020d, 0x0121, 0x0211}, |
| {0x007c, 0x0084, 0x0098, 0x00ac}, {0x01d5, 0x0161, 0x0215, 0x0080}, |
| {0x019f, 0x019f, 0x01db, 0x01db}, {0x0088, 0x008c, 0x0090, 0x0094}, |
| {0x00a7, 0x00a7, 0x001b, 0x001b}, {0x021b, 0x021b, 0x00e7, 0x00e7}, |
| {0x024f, 0x024f, 0x0067, 0x0067}, {0x024b, 0x024b, 0x0183, 0x0183}, |
| {0x009c, 0x00a0, 0x00a4, 0x00a8}, {0x01a3, 0x01a3, 0x0127, 0x0127}, |
| {0x0253, 0x0253, 0x00ab, 0x00ab}, {0x0247, 0x0247, 0x01df, 0x01df}, |
| {0x01e3, 0x01e3, 0x0167, 0x0167}, {0x00b0, 0x00b4, 0x00b8, 0x00bc}, |
| {0x021f, 0x021f, 0x00eb, 0x00eb}, {0x0257, 0x0257, 0x012b, 0x012b}, |
| {0x028b, 0x028b, 0x006b, 0x006b}, {0x028f, 0x028f, 0x01a7, 0x01a7}, |
| {0x00c4, 0x00d8, 0x00ec, 0x0100}, {0x00c8, 0x00cc, 0x00d0, 0x00d4}, |
| {0x025b, 0x025b, 0x0023, 0x0023}, {0x0293, 0x0293, 0x001f, 0x001f}, |
| {0x00af, 0x00af, 0x025d, 0x00ed}, {0x01a9, 0x0285, 0x006d, 0x01e5}, |
| {0x00dc, 0x00e0, 0x00e4, 0x00e8}, {0x01c1, 0x0221, 0x0169, 0x02cd}, |
| {0x0295, 0x0261, 0x016d, 0x0201}, {0x012d, 0x02c9, 0x029d, 0x0299}, |
| {0x01e9, 0x02d1, 0x02c5, 0x00b1}, {0x00f0, 0x00f4, 0x00f8, 0x00fc}, |
| {0x0225, 0x00f1, 0x01ad, 0x02d5}, {0x0131, 0x01ed, 0x0171, 0x030d}, |
| {0x02d9, 0x0025, 0x0229, 0x0029}, {0x0071, 0x0241, 0x0311, 0x0265}, |
| {0x0104, 0x010c, 0x0120, 0x0134}, {0x01b1, 0x0309, 0x02a1, 0x0108}, |
| {0x02a7, 0x02a7, 0x0307, 0x0307}, {0x0110, 0x0114, 0x0118, 0x011c}, |
| {0x022f, 0x022f, 0x01f3, 0x01f3}, {0x02df, 0x02df, 0x0317, 0x0317}, |
| {0x031b, 0x031b, 0x026b, 0x026b}, {0x02e3, 0x02e3, 0x0233, 0x0233}, |
| {0x0124, 0x0128, 0x012c, 0x0130}, {0x0283, 0x0283, 0x031f, 0x031f}, |
| {0x002f, 0x002f, 0x02ab, 0x02ab}, {0x026f, 0x026f, 0x02af, 0x02af}, |
| {0x02c3, 0x02c3, 0x02ef, 0x02ef}, {0x0138, 0x013c, 0x0140, 0x0144}, |
| {0x02e7, 0x02e7, 0x02eb, 0x02eb}, {0x0033, 0x0033, 0x0323, 0x0323}, |
| {0x0271, 0x0329, 0x0325, 0x032d}, {0x02f1, 0x0301, 0x02b1, 0x0331}}; |
| |
| const USHORT HuffmanCodeBook_11[152][4] = { |
| {0x0004, 0x0010, 0x0038, 0x008c}, {0x0001, 0x0085, 0x0008, 0x000c}, |
| {0x0843, 0x0843, 0x0007, 0x0007}, {0x0083, 0x0083, 0x008b, 0x008b}, |
| {0x0014, 0x0018, 0x001c, 0x0024}, {0x0107, 0x0107, 0x010b, 0x010b}, |
| {0x0185, 0x008d, 0x010d, 0x0009}, {0x0189, 0x0101, 0x018d, 0x0020}, |
| {0x0093, 0x0093, 0x0207, 0x0207}, {0x0028, 0x002c, 0x0030, 0x0034}, |
| {0x0113, 0x0113, 0x020b, 0x020b}, {0x0193, 0x0193, 0x020f, 0x020f}, |
| {0x000f, 0x000f, 0x0183, 0x0183}, {0x0097, 0x0097, 0x0117, 0x0117}, |
| {0x003c, 0x0050, 0x0064, 0x0078}, {0x0040, 0x0044, 0x0048, 0x004c}, |
| {0x028b, 0x028b, 0x0213, 0x0213}, {0x0287, 0x0287, 0x0197, 0x0197}, |
| {0x028f, 0x028f, 0x0217, 0x0217}, {0x0291, 0x0119, 0x0309, 0x0099}, |
| {0x0054, 0x0058, 0x005c, 0x0060}, {0x0199, 0x030d, 0x0305, 0x0811}, |
| {0x080d, 0x02c1, 0x01c1, 0x0241}, {0x0219, 0x0341, 0x0011, 0x0311}, |
| {0x0201, 0x0809, 0x0295, 0x0815}, {0x0068, 0x006c, 0x0070, 0x0074}, |
| {0x03c1, 0x0141, 0x0441, 0x0389}, {0x011d, 0x038d, 0x0299, 0x0315}, |
| {0x0819, 0x0541, 0x019d, 0x009d}, {0x04c1, 0x081d, 0x0805, 0x0385}, |
| {0x007c, 0x0080, 0x0084, 0x0088}, {0x0391, 0x05c1, 0x021d, 0x0641}, |
| {0x0821, 0x00c1, 0x0319, 0x0825}, {0x0409, 0x0395, 0x0829, 0x06c1}, |
| {0x01a1, 0x0121, 0x040d, 0x0015}, {0x0090, 0x00c8, 0x011c, 0x0170}, |
| {0x0094, 0x0098, 0x00a0, 0x00b4}, {0x0741, 0x082d, 0x029d, 0x0411}, |
| {0x0399, 0x031d, 0x0281, 0x009c}, {0x0223, 0x0223, 0x07c3, 0x07c3}, |
| {0x00a4, 0x00a8, 0x00ac, 0x00b0}, {0x0833, 0x0833, 0x0407, 0x0407}, |
| {0x00a3, 0x00a3, 0x083b, 0x083b}, {0x0417, 0x0417, 0x0837, 0x0837}, |
| {0x048f, 0x048f, 0x02a3, 0x02a3}, {0x00b8, 0x00bc, 0x00c0, 0x00c4}, |
| {0x039f, 0x039f, 0x048b, 0x048b}, {0x0323, 0x0323, 0x0127, 0x0127}, |
| {0x01a7, 0x01a7, 0x083f, 0x083f}, {0x0493, 0x0493, 0x041b, 0x041b}, |
| {0x00cc, 0x00e0, 0x00f4, 0x0108}, {0x00d0, 0x00d4, 0x00d8, 0x00dc}, |
| {0x001b, 0x001b, 0x0227, 0x0227}, {0x0497, 0x0497, 0x03a3, 0x03a3}, |
| {0x041f, 0x041f, 0x0487, 0x0487}, {0x01ab, 0x01ab, 0x0303, 0x0303}, |
| {0x00e4, 0x00e8, 0x00ec, 0x00f0}, {0x012b, 0x012b, 0x00a7, 0x00a7}, |
| {0x02a7, 0x02a7, 0x0513, 0x0513}, {0x050b, 0x050b, 0x0327, 0x0327}, |
| {0x050f, 0x050f, 0x049b, 0x049b}, {0x00f8, 0x00fc, 0x0100, 0x0104}, |
| {0x022b, 0x022b, 0x0423, 0x0423}, {0x02ab, 0x02ab, 0x03a7, 0x03a7}, |
| {0x01af, 0x01af, 0x0507, 0x0507}, {0x001f, 0x001f, 0x032b, 0x032b}, |
| {0x010c, 0x0110, 0x0114, 0x0118}, {0x049f, 0x049f, 0x058f, 0x058f}, |
| {0x0517, 0x0517, 0x00ab, 0x00ab}, {0x0593, 0x0593, 0x012f, 0x012f}, |
| {0x0137, 0x0137, 0x051b, 0x051b}, {0x0120, 0x0134, 0x0148, 0x015c}, |
| {0x0124, 0x0128, 0x012c, 0x0130}, {0x01b7, 0x01b7, 0x058b, 0x058b}, |
| {0x0043, 0x0043, 0x0597, 0x0597}, {0x02af, 0x02af, 0x022d, 0x0425}, |
| {0x051d, 0x04a1, 0x0801, 0x0691}, {0x0138, 0x013c, 0x0140, 0x0144}, |
| {0x0381, 0x068d, 0x032d, 0x00b5}, {0x0235, 0x01b1, 0x0689, 0x02b5}, |
| {0x0521, 0x0599, 0x0429, 0x03a9}, {0x0139, 0x0231, 0x0585, 0x0611}, |
| {0x014c, 0x0150, 0x0154, 0x0158}, {0x00ad, 0x060d, 0x0685, 0x0131}, |
| {0x059d, 0x070d, 0x0615, 0x0695}, {0x0239, 0x0711, 0x03ad, 0x01b9}, |
| {0x02b1, 0x0335, 0x0331, 0x0021}, {0x0160, 0x0164, 0x0168, 0x016c}, |
| {0x042d, 0x0609, 0x04a5, 0x02b9}, {0x0699, 0x0529, 0x013d, 0x05a1}, |
| {0x0525, 0x0339, 0x04a9, 0x0715}, {0x04ad, 0x00b9, 0x0709, 0x0619}, |
| {0x0174, 0x0188, 0x019c, 0x01cc}, {0x0178, 0x017c, 0x0180, 0x0184}, |
| {0x0605, 0x0435, 0x0401, 0x03b5}, {0x061d, 0x03b1, 0x069d, 0x01bd}, |
| {0x00b1, 0x0719, 0x0789, 0x02bd}, {0x023d, 0x0705, 0x05a5, 0x0791}, |
| {0x018c, 0x0190, 0x0194, 0x0198}, {0x03b9, 0x06a1, 0x04b5, 0x0621}, |
| {0x0795, 0x078d, 0x05a9, 0x052d}, {0x0431, 0x033d, 0x03bd, 0x0721}, |
| {0x00bd, 0x071d, 0x0025, 0x0481}, {0x01a0, 0x01a4, 0x01a8, 0x01b8}, |
| {0x06a5, 0x0625, 0x04b1, 0x0439}, {0x06a9, 0x04b9, 0x0531, 0x0799}, |
| {0x079d, 0x01ac, 0x01b0, 0x01b4}, {0x0727, 0x0727, 0x043f, 0x043f}, |
| {0x05af, 0x05af, 0x072f, 0x072f}, {0x0787, 0x0787, 0x062b, 0x062b}, |
| {0x01bc, 0x01c0, 0x01c4, 0x01c8}, {0x072b, 0x072b, 0x05b7, 0x05b7}, |
| {0x0537, 0x0537, 0x06af, 0x06af}, {0x062f, 0x062f, 0x07a3, 0x07a3}, |
| {0x05bb, 0x05bb, 0x0637, 0x0637}, {0x01d0, 0x01e4, 0x01f8, 0x020c}, |
| {0x01d4, 0x01d8, 0x01dc, 0x01e0}, {0x06b3, 0x06b3, 0x04bf, 0x04bf}, |
| {0x053b, 0x053b, 0x002b, 0x002b}, {0x05b3, 0x05b3, 0x07a7, 0x07a7}, |
| {0x0503, 0x0503, 0x0633, 0x0633}, {0x01e8, 0x01ec, 0x01f0, 0x01f4}, |
| {0x002f, 0x002f, 0x0733, 0x0733}, {0x07ab, 0x07ab, 0x06b7, 0x06b7}, |
| {0x0683, 0x0683, 0x063b, 0x063b}, {0x053f, 0x053f, 0x05bf, 0x05bf}, |
| {0x01fc, 0x0200, 0x0204, 0x0208}, {0x07af, 0x07af, 0x06bb, 0x06bb}, |
| {0x0037, 0x0037, 0x0583, 0x0583}, {0x0737, 0x0737, 0x063f, 0x063f}, |
| {0x06bf, 0x06bf, 0x07b3, 0x07b3}, {0x0210, 0x0214, 0x0218, 0x021c}, |
| {0x003b, 0x003b, 0x073b, 0x073b}, {0x07b7, 0x07b7, 0x0033, 0x0033}, |
| {0x07bb, 0x07bb, 0x0701, 0x0601}, {0x073d, 0x003d, 0x0781, 0x07bd}, |
| {0x0118, 0x0117, 0x0100, 0x0109}, {0x05a5, 0x05a1, 0x05b7, 0x0513}, |
| {0x08f9, 0x08ff, 0x0821, 0x08ff}, {0x084f, 0x08ff, 0x08bc, 0x08ff}, |
| {0x0815, 0x08ff, 0x0837, 0x08ff}, {0x080d, 0x08ff, 0x085f, 0x08ff}, |
| {0x084a, 0x08ff, 0x087d, 0x08ff}, {0x08ff, 0x08ff, 0x08a8, 0x08ff}, |
| {0x0815, 0x08ff, 0x083f, 0x08ff}, {0x0830, 0x08ff, 0x0894, 0x08ff}, |
| {0x08d4, 0x08ff, 0x0825, 0x08ff}, {0x08ef, 0x08ff, 0x083f, 0x08ff}, |
| {0x0809, 0x08ff, 0x08fc, 0x08ff}, {0x0842, 0x08ff, 0x08b3, 0x08ff}, |
| {0x070d, 0x07a9, 0x060e, 0x06e2}, {0x06c7, 0x06d0, 0x04b2, 0x0407}}; |
| |
| const USHORT HuffmanCodeBook_SCL[65][4] = { |
| {0x00f3, 0x00f3, 0x0004, 0x0008}, {0x00ef, 0x00ef, 0x00f5, 0x00e9}, |
| {0x00f9, 0x000c, 0x0010, 0x0014}, {0x00e7, 0x00e7, 0x00ff, 0x00ff}, |
| {0x00e1, 0x0101, 0x00dd, 0x0105}, {0x0018, 0x001c, 0x0020, 0x0028}, |
| {0x010b, 0x010b, 0x00db, 0x00db}, {0x010f, 0x010f, 0x00d5, 0x0111}, |
| {0x00d1, 0x0115, 0x00cd, 0x0024}, {0x011b, 0x011b, 0x00cb, 0x00cb}, |
| {0x002c, 0x0030, 0x0034, 0x0040}, {0x00c7, 0x00c7, 0x011f, 0x011f}, |
| {0x0121, 0x00c1, 0x0125, 0x00bd}, {0x0129, 0x00b9, 0x0038, 0x003c}, |
| {0x0133, 0x0133, 0x012f, 0x012f}, {0x0137, 0x0137, 0x013b, 0x013b}, |
| {0x0044, 0x0048, 0x004c, 0x0058}, {0x00b7, 0x00b7, 0x00af, 0x00af}, |
| {0x00b1, 0x013d, 0x00a9, 0x00a5}, {0x0141, 0x00a1, 0x0050, 0x0054}, |
| {0x0147, 0x0147, 0x009f, 0x009f}, {0x014b, 0x014b, 0x009b, 0x009b}, |
| {0x005c, 0x0060, 0x0064, 0x0070}, {0x014f, 0x014f, 0x0095, 0x008d}, |
| {0x0155, 0x0085, 0x0091, 0x0089}, {0x0151, 0x0081, 0x0068, 0x006c}, |
| {0x015f, 0x015f, 0x0167, 0x0167}, {0x007b, 0x007b, 0x007f, 0x007f}, |
| {0x0074, 0x0078, 0x0080, 0x00b0}, {0x0159, 0x0075, 0x0069, 0x006d}, |
| {0x0071, 0x0061, 0x0161, 0x007c}, {0x0067, 0x0067, 0x005b, 0x005b}, |
| {0x0084, 0x0088, 0x008c, 0x009c}, {0x005f, 0x005f, 0x0169, 0x0055}, |
| {0x004d, 0x000d, 0x0005, 0x0009}, {0x0001, 0x0090, 0x0094, 0x0098}, |
| {0x018b, 0x018b, 0x018f, 0x018f}, {0x0193, 0x0193, 0x0197, 0x0197}, |
| {0x019b, 0x019b, 0x01d7, 0x01d7}, {0x00a0, 0x00a4, 0x00a8, 0x00ac}, |
| {0x0187, 0x0187, 0x016f, 0x016f}, {0x0173, 0x0173, 0x0177, 0x0177}, |
| {0x017b, 0x017b, 0x017f, 0x017f}, {0x0183, 0x0183, 0x01a3, 0x01a3}, |
| {0x00b4, 0x00c8, 0x00dc, 0x00f0}, {0x00b8, 0x00bc, 0x00c0, 0x00c4}, |
| {0x01bf, 0x01bf, 0x01c3, 0x01c3}, {0x01c7, 0x01c7, 0x01cb, 0x01cb}, |
| {0x01cf, 0x01cf, 0x01d3, 0x01d3}, {0x01bb, 0x01bb, 0x01a7, 0x01a7}, |
| {0x00cc, 0x00d0, 0x00d4, 0x00d8}, {0x01ab, 0x01ab, 0x01af, 0x01af}, |
| {0x01b3, 0x01b3, 0x01b7, 0x01b7}, {0x01db, 0x01db, 0x001b, 0x001b}, |
| {0x0023, 0x0023, 0x0027, 0x0027}, {0x00e0, 0x00e4, 0x00e8, 0x00ec}, |
| {0x002b, 0x002b, 0x0017, 0x0017}, {0x019f, 0x019f, 0x01e3, 0x01e3}, |
| {0x01df, 0x01df, 0x0013, 0x0013}, {0x001f, 0x001f, 0x003f, 0x003f}, |
| {0x00f4, 0x00f8, 0x00fc, 0x0100}, {0x0043, 0x0043, 0x004b, 0x004b}, |
| {0x0053, 0x0053, 0x0047, 0x0047}, {0x002f, 0x002f, 0x0033, 0x0033}, |
| {0x003b, 0x003b, 0x0037, 0x0037}}; |
| |
| /* .CodeBook = HuffmanCodeBook_x, .Dimension = 4, .numBits = 2, .Offset = 0 */ |
| const CodeBookDescription AACcodeBookDescriptionTable[13] = { |
| {NULL, 0, 0, 0}, |
| {HuffmanCodeBook_1, 4, 2, 1}, |
| {HuffmanCodeBook_2, 4, 2, 1}, |
| {HuffmanCodeBook_3, 4, 2, 0}, |
| {HuffmanCodeBook_4, 4, 2, 0}, |
| {HuffmanCodeBook_5, 2, 4, 4}, |
| {HuffmanCodeBook_6, 2, 4, 4}, |
| {HuffmanCodeBook_7, 2, 4, 0}, |
| {HuffmanCodeBook_8, 2, 4, 0}, |
| {HuffmanCodeBook_9, 2, 4, 0}, |
| {HuffmanCodeBook_10, 2, 4, 0}, |
| {HuffmanCodeBook_11, 2, 5, 0}, |
| {HuffmanCodeBook_SCL, 1, 8, 60}}; |
| |
| const CodeBookDescription AACcodeBookDescriptionSCL = {HuffmanCodeBook_SCL, 1, |
| 8, 60}; |
| |
| /* ********************************************************************************************* |
| */ |
| /* Table: HuffTree41 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* description: This table contains the decode tree for spectral data |
| * (Codebook 1). */ |
| /* bit 23 and 11 not used */ |
| /* bit 22 and 10 determine end value */ |
| /* bit 21-12 and 9-0 (offset to next node) or (index value * |
| * 4) */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* input: codeword */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* output: index * 4 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* HuffTree */ |
| const UINT aHuffTree41[80] = { |
| 0x4a0001, 0x026002, 0x013003, 0x021004, 0x01c005, 0x00b006, 0x010007, |
| 0x019008, 0x00900e, 0x00a03a, 0x400528, 0x00c037, 0x00d03b, 0x454404, |
| 0x00f04c, 0x448408, 0x017011, 0x01202e, 0x42c40c, 0x034014, 0x01502c, |
| 0x016049, 0x410470, 0x01804e, 0x414424, 0x03201a, 0x02001b, 0x520418, |
| 0x02f01d, 0x02a01e, 0x01f04d, 0x41c474, 0x540420, 0x022024, 0x04a023, |
| 0x428510, 0x025029, 0x430508, 0x02703c, 0x028047, 0x50c434, 0x438478, |
| 0x04802b, 0x46443c, 0x02d03e, 0x4404b0, 0x44451c, 0x03003f, 0x03104b, |
| 0x52444c, 0x033039, 0x4f0450, 0x035041, 0x036046, 0x4e8458, 0x04f038, |
| 0x45c53c, 0x4604e0, 0x4f8468, 0x46c4d4, 0x04503d, 0x4ac47c, 0x518480, |
| 0x043040, 0x4844dc, 0x042044, 0x4884a8, 0x4bc48c, 0x530490, 0x4a4494, |
| 0x4984b8, 0x49c4c4, 0x5044b4, 0x5004c0, 0x4d04c8, 0x4f44cc, 0x4d8538, |
| 0x4ec4e4, 0x52c4fc, 0x514534}; |
| |
| /* ********************************************************************************************* |
| */ |
| /* Table: HuffTree42 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* description: This table contains the decode tree for spectral data |
| * (Codebook 2). */ |
| /* bit 23 and 11 not used */ |
| /* bit 22 and 10 determine end value */ |
| /* bit 21-12 and 9-0 (offset to next node) or (index value * |
| * 4) */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* input: codeword */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* output: index * 4 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| const UINT aHuffTree42[80] = { |
| 0x026001, 0x014002, 0x009003, 0x010004, 0x01d005, 0x00600d, 0x007018, |
| 0x450008, 0x4e0400, 0x02e00a, 0x03900b, 0x03d00c, 0x43c404, 0x01b00e, |
| 0x00f04f, 0x4d8408, 0x023011, 0x01203b, 0x01a013, 0x41440c, 0x015020, |
| 0x016040, 0x025017, 0x500410, 0x038019, 0x540418, 0x41c444, 0x02d01c, |
| 0x420520, 0x01e042, 0x03701f, 0x4244cc, 0x02a021, 0x02204c, 0x478428, |
| 0x024031, 0x42c4dc, 0x4304e8, 0x027033, 0x4a0028, 0x50c029, 0x4344a4, |
| 0x02c02b, 0x470438, 0x4404c8, 0x4f8448, 0x04902f, 0x04b030, 0x44c484, |
| 0x524032, 0x4ec454, 0x03e034, 0x035046, 0x4c4036, 0x488458, 0x4d445c, |
| 0x460468, 0x04e03a, 0x51c464, 0x03c04a, 0x46c514, 0x47453c, 0x04503f, |
| 0x47c4ac, 0x044041, 0x510480, 0x04304d, 0x4e448c, 0x490518, 0x49449c, |
| 0x048047, 0x4c0498, 0x4b84a8, 0x4b0508, 0x4fc4b4, 0x4bc504, 0x5304d0, |
| 0x5344f0, 0x4f452c, 0x528538}; |
| |
| /* ********************************************************************************************* |
| */ |
| /* Table: HuffTree43 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* description: This table contains the decode tree for spectral data |
| * (Codebook 3). */ |
| /* bit 23 and 11 not used */ |
| /* bit 22 and 10 determine end value */ |
| /* bit 21-12 and 9-0 (offset to next node) or (index value * |
| * 4) */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* input: codeword */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* output: index * 4 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| const UINT aHuffTree43[80] = { |
| 0x400001, 0x002004, 0x00300a, 0x46c404, 0x00b005, 0x00600d, 0x034007, |
| 0x037008, 0x494009, 0x4d8408, 0x42440c, 0x00c01b, 0x490410, 0x00e016, |
| 0x00f011, 0x010014, 0x4144fc, 0x01201d, 0x020013, 0x508418, 0x4c0015, |
| 0x41c440, 0x022017, 0x018026, 0x019035, 0x03801a, 0x420444, 0x01c01f, |
| 0x430428, 0x02101e, 0x44842c, 0x478434, 0x4b4438, 0x45443c, 0x02c023, |
| 0x039024, 0x02503f, 0x48844c, 0x030027, 0x02e028, 0x032029, 0x02a041, |
| 0x4d402b, 0x4504f0, 0x04302d, 0x4584a8, 0x02f03b, 0x46045c, 0x03103d, |
| 0x464046, 0x033044, 0x46853c, 0x47049c, 0x045036, 0x4744dc, 0x4a047c, |
| 0x500480, 0x4ac03a, 0x4b8484, 0x03c04e, 0x48c524, 0x03e040, 0x4984e8, |
| 0x50c4a4, 0x4b0530, 0x042047, 0x4bc04b, 0x4e44c4, 0x5184c8, 0x52c4cc, |
| 0x5204d0, 0x04d048, 0x04a049, 0x4e004c, 0x51c4ec, 0x4f4510, 0x5284f8, |
| 0x50404f, 0x514538, 0x540534}; |
| |
| /* ********************************************************************************************* |
| */ |
| /* Table: HuffTree44 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* description: This table contains the decode tree for spectral data |
| * (Codebook 4). */ |
| /* bit 23 and 11 not used */ |
| /* bit 22 and 10 determine end value */ |
| /* bit 21-12 and 9-0 (offset to next node) or (index value * |
| * 4) */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* input: codeword */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* output: index * 4 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| const UINT aHuffTree44[80] = { |
| 0x001004, 0x020002, 0x036003, 0x490400, 0x005008, 0x010006, 0x01f007, |
| 0x404428, 0x00e009, 0x01100a, 0x00b018, 0x01600c, 0x03700d, 0x408015, |
| 0x00f03e, 0x40c424, 0x410478, 0x022012, 0x038013, 0x01e014, 0x454414, |
| 0x448418, 0x025017, 0x47441c, 0x030019, 0x02601a, 0x02d01b, 0x01c034, |
| 0x01d029, 0x4204f0, 0x4dc42c, 0x470430, 0x02103c, 0x4a0434, 0x02302a, |
| 0x440024, 0x4384a8, 0x43c44c, 0x02703a, 0x02802c, 0x444524, 0x4504e0, |
| 0x02b03d, 0x458480, 0x45c4f4, 0x04b02e, 0x04f02f, 0x460520, 0x042031, |
| 0x048032, 0x049033, 0x514464, 0x03504c, 0x540468, 0x47c46c, 0x4844d8, |
| 0x039044, 0x4884fc, 0x03b045, 0x48c53c, 0x49449c, 0x4b8498, 0x03f046, |
| 0x041040, 0x4c44a4, 0x50c4ac, 0x04a043, 0x5184b0, 0x4e44b4, 0x4bc4ec, |
| 0x04e047, 0x4c04e8, 0x4c8510, 0x4cc52c, 0x4d0530, 0x5044d4, 0x53804d, |
| 0x5284f8, 0x508500, 0x51c534}; |
| |
| /* ********************************************************************************************* |
| */ |
| /* Table: HuffTree21 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* description: This table contains the decode tree for spectral data |
| * (Codebook 5). */ |
| /* bit 23 and 11 not used */ |
| /* bit 22 and 10 determine end value */ |
| /* bit 21-12 and 9-0 (offset to next node) or (index value * |
| * 2) */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* input: codeword */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* output: index * 2 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| const UINT aHuffTree21[80] = { |
| 0x450001, 0x044002, 0x042003, 0x035004, 0x026005, 0x022006, 0x013007, |
| 0x010008, 0x00d009, 0x01c00a, 0x01f00b, 0x01e00c, 0x4a0400, 0x01b00e, |
| 0x03200f, 0x47e402, 0x020011, 0x01204d, 0x40449c, 0x017014, 0x015019, |
| 0x01603f, 0x406458, 0x01804f, 0x448408, 0x04901a, 0x40a45a, 0x48c40c, |
| 0x01d031, 0x40e48e, 0x490410, 0x492412, 0x021030, 0x480414, 0x033023, |
| 0x02402e, 0x02503e, 0x416482, 0x02a027, 0x02802c, 0x029040, 0x418468, |
| 0x02b04a, 0x41a486, 0x02d048, 0x41c484, 0x04e02f, 0x41e426, 0x420434, |
| 0x42249e, 0x424494, 0x03d034, 0x428470, 0x039036, 0x03703b, 0x038041, |
| 0x42a476, 0x03a04b, 0x42c454, 0x03c047, 0x42e472, 0x430478, 0x43246e, |
| 0x496436, 0x488438, 0x43a466, 0x046043, 0x43c464, 0x04504c, 0x43e462, |
| 0x460440, 0x44245e, 0x45c444, 0x46a446, 0x44a456, 0x47444c, 0x45244e, |
| 0x46c47c, 0x48a47a, 0x49a498}; |
| |
| /* ********************************************************************************************* |
| */ |
| /* Table: HuffTree22 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* description: This table contains the decode tree for spectral data |
| * (Codebook 6). */ |
| /* bit 23 and 11 not used */ |
| /* bit 22 and 10 determine end value */ |
| /* bit 21-12 and 9-0 (offset to next node) or (index value * |
| * 2) */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* input: codeword */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* output: index * 2 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| const UINT aHuffTree22[80] = { |
| 0x03c001, 0x02f002, 0x020003, 0x01c004, 0x00f005, 0x00c006, 0x016007, |
| 0x04d008, 0x00b009, 0x01500a, 0x400490, 0x40e402, 0x00d013, 0x00e02a, |
| 0x40c404, 0x019010, 0x011041, 0x038012, 0x40a406, 0x014037, 0x40849c, |
| 0x4a0410, 0x04a017, 0x458018, 0x412422, 0x02801a, 0x01b029, 0x480414, |
| 0x02401d, 0x01e02b, 0x48a01f, 0x416432, 0x02d021, 0x026022, 0x023039, |
| 0x418468, 0x025043, 0x48641a, 0x027040, 0x41c488, 0x41e48c, 0x42045a, |
| 0x47c424, 0x04c02c, 0x46e426, 0x03602e, 0x428478, 0x030033, 0x43c031, |
| 0x04b032, 0x42e42a, 0x03403a, 0x035048, 0x42c442, 0x470430, 0x494434, |
| 0x43649a, 0x45c438, 0x04403b, 0x43a454, 0x04503d, 0x03e03f, 0x43e464, |
| 0x440460, 0x484444, 0x049042, 0x446448, 0x44a456, 0x46644c, 0x047046, |
| 0x44e452, 0x450462, 0x47445e, 0x46a496, 0x49846c, 0x472476, 0x47a482, |
| 0x04e04f, 0x47e492, 0x48e49e}; |
| |
| /* ********************************************************************************************* |
| */ |
| /* Table: HuffTree23 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* description: This table contains the decode tree for spectral data |
| * (Codebook 7). */ |
| /* bit 23 and 11 not used */ |
| /* bit 22 and 10 determine end value */ |
| /* bit 21-12 and 9-0 (offset to next node) or (index value * |
| * 2) */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* input: codeword */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* output: index * 2 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| const UINT aHuffTree23[63] = { |
| 0x400001, 0x002003, 0x410402, 0x004007, 0x412005, 0x01c006, 0x420404, |
| 0x00800b, 0x01d009, 0x00a01f, 0x406026, 0x00c012, 0x00d00f, 0x02700e, |
| 0x408440, 0x010022, 0x028011, 0x45440a, 0x013017, 0x029014, 0x024015, |
| 0x01602f, 0x43c40c, 0x02b018, 0x019033, 0x03201a, 0x43e01b, 0x47040e, |
| 0x422414, 0x01e025, 0x432416, 0x020021, 0x418442, 0x41a452, 0x036023, |
| 0x41c446, 0x46441e, 0x424430, 0x426434, 0x436428, 0x44442a, 0x02e02a, |
| 0x45642c, 0x03002c, 0x02d03b, 0x46642e, 0x43a438, 0x460448, 0x031037, |
| 0x47244a, 0x45a44c, 0x034039, 0x038035, 0x47844e, 0x462450, 0x474458, |
| 0x46a45c, 0x03a03c, 0x45e47a, 0x476468, 0x03d03e, 0x47c46c, 0x46e47e}; |
| |
| /* ********************************************************************************************* |
| */ |
| /* Table: HuffTree24 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* description: This table contains the decode tree for spectral data |
| * (Codebook 8). */ |
| /* bit 23 and 11 not used */ |
| /* bit 22 and 10 determine end value */ |
| /* bit 21-12 and 9-0 (offset to next node) or (index value * |
| * 2) */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* input: codeword */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* output: index * 2 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| const UINT aHuffTree24[63] = { |
| 0x001006, 0x01d002, 0x005003, 0x424004, 0x400420, 0x414402, 0x00700a, |
| 0x008020, 0x00901f, 0x404432, 0x00b011, 0x00c00e, 0x00d032, 0x406446, |
| 0x02300f, 0x033010, 0x458408, 0x025012, 0x013016, 0x01402f, 0x015038, |
| 0x46840a, 0x028017, 0x01801a, 0x039019, 0x40c47a, 0x03e01b, 0x03b01c, |
| 0x40e47e, 0x41201e, 0x422410, 0x416434, 0x02a021, 0x02202b, 0x418444, |
| 0x02c024, 0x41a456, 0x02d026, 0x027034, 0x46241c, 0x029036, 0x41e45c, |
| 0x426031, 0x428430, 0x45242a, 0x03702e, 0x42c464, 0x03003c, 0x47442e, |
| 0x436442, 0x438454, 0x43a448, 0x03503a, 0x43c466, 0x43e03d, 0x44a440, |
| 0x44c472, 0x46044e, 0x45a450, 0x45e470, 0x46a476, 0x46c478, 0x47c46e}; |
| |
| /* ********************************************************************************************* |
| */ |
| /* Table: HuffTree25 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* description: This table contains the decode tree for spectral data |
| * (Codebook 9). */ |
| /* bit 23 and 11 not used */ |
| /* bit 22 and 10 determine end value */ |
| /* bit 21-12 and 9-0 (offset to next node) or (index value * |
| * 2) */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* input: codeword */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* output: index * 2 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| const UINT aHuffTree25[168] = { |
| 0x400001, 0x002003, 0x41a402, 0x004007, 0x41c005, 0x035006, 0x434404, |
| 0x008010, 0x00900c, 0x04a00a, 0x42000b, 0x44e406, 0x03600d, 0x03800e, |
| 0x05a00f, 0x408468, 0x01101a, 0x012016, 0x039013, 0x070014, 0x46e015, |
| 0x40a440, 0x03b017, 0x01804d, 0x01904f, 0x4b840c, 0x01b022, 0x01c041, |
| 0x03f01d, 0x01e020, 0x01f05b, 0x40e4ee, 0x02107c, 0x45c410, 0x02302c, |
| 0x024028, 0x053025, 0x026045, 0x02707d, 0x412522, 0x047029, 0x05e02a, |
| 0x02b08a, 0x526414, 0x05602d, 0x02e081, 0x02f032, 0x06e030, 0x031080, |
| 0x416544, 0x079033, 0x034091, 0x41852c, 0x43641e, 0x04b037, 0x42246a, |
| 0x43c424, 0x04c03a, 0x426456, 0x03c066, 0x03d03e, 0x482428, 0x45842a, |
| 0x040072, 0x42c4ba, 0x050042, 0x04305c, 0x044074, 0x42e4be, 0x06a046, |
| 0x4dc430, 0x075048, 0x0490a3, 0x44a432, 0x450438, 0x43a452, 0x48443e, |
| 0x04e068, 0x45a442, 0x4d4444, 0x051088, 0x052087, 0x44648c, 0x077054, |
| 0x4da055, 0x50a448, 0x057060, 0x06b058, 0x05906d, 0x44c4f6, 0x46c454, |
| 0x45e474, 0x06905d, 0x460520, 0x05f07e, 0x462494, 0x061063, 0x07f062, |
| 0x464496, 0x06408b, 0x08d065, 0x542466, 0x067071, 0x4d2470, 0x4724ec, |
| 0x478476, 0x53a47a, 0x09b06c, 0x47c4ac, 0x4f847e, 0x06f078, 0x510480, |
| 0x48649e, 0x4884a0, 0x07307b, 0x49c48a, 0x4a648e, 0x098076, 0x4904c0, |
| 0x4924ea, 0x4c8498, 0x07a08e, 0x51249a, 0x4a24d6, 0x5064a4, 0x4f24a8, |
| 0x4aa4de, 0x51e4ae, 0x4b0538, 0x082092, 0x083085, 0x08f084, 0x5464b2, |
| 0x096086, 0x4ce4b4, 0x4d04b6, 0x089090, 0x4bc508, 0x4c253e, 0x08c0a4, |
| 0x5284c4, 0x4e04c6, 0x4ca4fa, 0x5144cc, 0x4f04d8, 0x4e24fc, 0x09309c, |
| 0x094099, 0x095097, 0x4e4516, 0x4e652e, 0x4e84fe, 0x4f450c, 0x09a09f, |
| 0x500502, 0x50450e, 0x09d0a0, 0x09e0a5, 0x518530, 0x51a54a, 0x0a70a1, |
| 0x0a20a6, 0x51c534, 0x53c524, 0x54052a, 0x548532, 0x536550, 0x54c54e}; |
| |
| /* ********************************************************************************************* |
| */ |
| /* Table: HuffTree26 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* description: This table contains the decode tree for spectral data |
| * (Codebook 10). */ |
| /* bit 23 and 11 not used */ |
| /* bit 22 and 10 determine end value */ |
| /* bit 21-12 and 9-0 (offset to next node) or (index value * |
| * 2) */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* input: codeword */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* output: index * 2 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| const UINT aHuffTree26[168] = { |
| 0x006001, 0x002013, 0x00300f, 0x00400d, 0x03b005, 0x40046e, 0x037007, |
| 0x00800a, 0x009067, 0x402420, 0x05600b, 0x00c057, 0x434404, 0x06600e, |
| 0x406470, 0x03c010, 0x059011, 0x06f012, 0x49e408, 0x014019, 0x03f015, |
| 0x016044, 0x017042, 0x079018, 0x4b840a, 0x01a01f, 0x01b047, 0x07c01c, |
| 0x08701d, 0x06901e, 0x44640c, 0x020027, 0x04b021, 0x02204f, 0x023025, |
| 0x02406b, 0x40e4e0, 0x081026, 0x528410, 0x02802c, 0x06c029, 0x08f02a, |
| 0x02b078, 0x53a412, 0x05202d, 0x02e033, 0x02f031, 0x0300a2, 0x4144ce, |
| 0x0a6032, 0x416534, 0x09a034, 0x09f035, 0x0360a7, 0x54e418, 0x03a038, |
| 0x436039, 0x43841a, 0x41c41e, 0x42246a, 0x05803d, 0x03e068, 0x424484, |
| 0x04005b, 0x04107a, 0x42645a, 0x043093, 0x4d2428, 0x05e045, 0x046072, |
| 0x42a45e, 0x048060, 0x073049, 0x04a098, 0x42c4c4, 0x07504c, 0x09504d, |
| 0x04e09c, 0x51042e, 0x063050, 0x077051, 0x43053c, 0x053084, 0x065054, |
| 0x4e4055, 0x4fe432, 0x43a454, 0x43c46c, 0x43e486, 0x07005a, 0x4a0440, |
| 0x07105c, 0x05d07b, 0x45c442, 0x05f08a, 0x476444, 0x07f061, 0x06206a, |
| 0x448506, 0x06408e, 0x52644a, 0x54444c, 0x45644e, 0x452450, 0x488458, |
| 0x4604ec, 0x4624f6, 0x50e464, 0x08206d, 0x0a406e, 0x542466, 0x4a2468, |
| 0x48a472, 0x474089, 0x4d8478, 0x097074, 0x47a508, 0x08d076, 0x47c4b6, |
| 0x51247e, 0x4804fc, 0x4bc482, 0x48c4a4, 0x48e4d4, 0x07d07e, 0x4904da, |
| 0x49208b, 0x094080, 0x49450c, 0x4964e2, 0x09d083, 0x52a498, 0x085091, |
| 0x0a5086, 0x4cc49a, 0x08808c, 0x4ee49c, 0x4a64ba, 0x4a84c0, 0x4c24aa, |
| 0x4ac4f0, 0x4ae4d0, 0x4ca4b0, 0x0900a1, 0x4b24ea, 0x092099, 0x4b4516, |
| 0x4d64be, 0x4c650a, 0x522096, 0x4c8524, 0x4dc4f2, 0x4de4f4, 0x4e6548, |
| 0x09e09b, 0x5384e8, 0x5204f8, 0x4fa53e, 0x50051a, 0x0a30a0, 0x502536, |
| 0x514504, 0x51e518, 0x54a51c, 0x54052c, 0x52e546, 0x530532, 0x54c550}; |
| |
| /* ********************************************************************************************* |
| */ |
| /* Table: HuffTree27 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* description: This table contains the decode tree for spectral data |
| * (Codebook 11). */ |
| /* bit 23 and 11 not used */ |
| /* bit 22 and 10 determine end value */ |
| /* bit 21-12 and 9-0 (offset to next node) or (index value * |
| * 2) */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* input: codeword */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* output: index * 2 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| const UINT aHuffTree27[288] = { |
| 0x00100d, 0x002006, 0x003004, 0x400424, 0x047005, 0x402446, 0x048007, |
| 0x00800a, 0x00904c, 0x44a404, 0x07400b, 0x00c0bb, 0x466406, 0x00e014, |
| 0x00f054, 0x04e010, 0x051011, 0x0a9012, 0x0130bc, 0x408464, 0x01501f, |
| 0x01601a, 0x017059, 0x0af018, 0x0ca019, 0x40a0e4, 0x01b05e, 0x01c084, |
| 0x0bf01d, 0x05d01e, 0x55a40c, 0x020026, 0x021066, 0x043022, 0x023062, |
| 0x02408d, 0x025108, 0x40e480, 0x027030, 0x02802c, 0x02906b, 0x02a0da, |
| 0x06502b, 0x4105c8, 0x0a402d, 0x0ec02e, 0x0dd02f, 0x532412, 0x06e031, |
| 0x032036, 0x03303e, 0x0fd034, 0x0fc035, 0x4145b0, 0x03703a, 0x038117, |
| 0x10d039, 0x5ba416, 0x10f03b, 0x03c041, 0x5fa03d, 0x41c418, 0x10403f, |
| 0x04011d, 0x41a5f4, 0x11c042, 0x41e61c, 0x087044, 0x0f5045, 0x0d9046, |
| 0x4204a2, 0x640422, 0x04904a, 0x426448, 0x04b073, 0x428468, 0x46c04d, |
| 0x48a42a, 0x04f077, 0x076050, 0x42c4b0, 0x0520a7, 0x096053, 0x42e4a8, |
| 0x05507d, 0x07a056, 0x0d4057, 0x0df058, 0x442430, 0x05a081, 0x05b09b, |
| 0x05c0e2, 0x5b8432, 0x4fe434, 0x05f09e, 0x0e6060, 0x0610d6, 0x57c436, |
| 0x0cc063, 0x112064, 0x4384a0, 0x43a5ca, 0x067089, 0x0680b7, 0x0690a2, |
| 0x0a106a, 0x43c59c, 0x09206c, 0x06d0ba, 0x60643e, 0x0d106f, 0x0700ee, |
| 0x0de071, 0x10b072, 0x44056c, 0x46a444, 0x075094, 0x48c44c, 0x44e490, |
| 0x095078, 0x0ab079, 0x4504ce, 0x07b097, 0x11e07c, 0x630452, 0x0ac07e, |
| 0x07f099, 0x080106, 0x4544b8, 0x0820b1, 0x0830e5, 0x4fc456, 0x0b3085, |
| 0x08609d, 0x45853e, 0x0880c2, 0x5c045a, 0x08a08f, 0x08b0ce, 0x08c0f7, |
| 0x58645c, 0x11108e, 0x45e5c4, 0x0c4090, 0x10a091, 0x4604e4, 0x0d0093, |
| 0x462608, 0x48e46e, 0x4704b2, 0x4d2472, 0x0980bd, 0x4f2474, 0x0e309a, |
| 0x4764aa, 0x0be09c, 0x47851a, 0x47a4de, 0x09f0b5, 0x0a00c1, 0x50047c, |
| 0x57847e, 0x0a30c3, 0x504482, 0x0e90a5, 0x0a6100, 0x4c8484, 0x0a811f, |
| 0x48662a, 0x0c70aa, 0x488494, 0x4924d0, 0x0ad0c8, 0x0ae0d8, 0x496636, |
| 0x10e0b0, 0x4f8498, 0x0f30b2, 0x49a4dc, 0x0f20b4, 0x53c49c, 0x0b60cb, |
| 0x49e57a, 0x0b80e0, 0x0b9109, 0x5e44a4, 0x5484a6, 0x4ac4ae, 0x4b44ca, |
| 0x4d64b6, 0x4ba5da, 0x0c60c0, 0x4bc51e, 0x4be556, 0x6204c0, 0x4c24c4, |
| 0x0f80c5, 0x5664c6, 0x4cc53a, 0x4d462c, 0x0f10c9, 0x4d8552, 0x4da4fa, |
| 0x5be4e0, 0x0cd0ff, 0x5244e2, 0x0cf0e8, 0x4e6568, 0x59a4e8, 0x0f90d2, |
| 0x1010d3, 0x5ac4ea, 0x0d50d7, 0x4ec634, 0x4ee560, 0x4f44f0, 0x4f6638, |
| 0x502522, 0x0db0dc, 0x5065a6, 0x508604, 0x60050a, 0x50c0fb, 0x63250e, |
| 0x1130e1, 0x5a4510, 0x5125fc, 0x516514, 0x51863e, 0x51c536, 0x0e70f4, |
| 0x55c520, 0x602526, 0x0eb0ea, 0x5cc528, 0x5ea52a, 0x1140ed, 0x60c52c, |
| 0x1020ef, 0x0f0119, 0x58e52e, 0x530622, 0x558534, 0x53861e, 0x55e540, |
| 0x5800f6, 0x57e542, 0x5445e6, 0x5465e8, 0x0fa115, 0x54c54a, 0x54e60e, |
| 0x5ae550, 0x1160fe, 0x5f0554, 0x564562, 0x56a58a, 0x56e5ee, 0x10310c, |
| 0x5705d0, 0x107105, 0x5725d4, 0x57463a, 0x5765b4, 0x5825bc, 0x5845e2, |
| 0x5885de, 0x58c592, 0x5ce590, 0x5945f6, 0x63c596, 0x11b110, 0x5d8598, |
| 0x5c259e, 0x5e05a0, 0x5a25c6, 0x5a860a, 0x5aa5ec, 0x5b2610, 0x11a118, |
| 0x6185b6, 0x5f25d2, 0x5d6616, 0x5dc5f8, 0x61a5fe, 0x612614, 0x62e624, |
| 0x626628}; |
| |
| /* get starting addresses of huffman tables into an array [convert codebook into |
| * starting address] */ |
| /* cb tree */ |
| const UINT *aHuffTable[MAX_CB] = { |
| aHuffTree41, |
| /* 0 - */ /* use tree 1 as dummy here */ |
| aHuffTree41, /* 1 1 */ |
| aHuffTree42, /* 2 2 */ |
| aHuffTree43, /* 3 3 */ |
| aHuffTree44, /* 4 4 */ |
| aHuffTree21, /* 5 5 */ |
| aHuffTree22, /* 6 6 */ |
| aHuffTree23, /* 7 7 */ |
| aHuffTree24, /* 8 8 */ |
| aHuffTree25, /* 9 9 */ |
| aHuffTree26, /* 10 10 */ |
| aHuffTree27, /* 11 11 */ |
| aHuffTree41, |
| /* 12 - */ /* use tree 1 as dummy here */ |
| aHuffTree41, |
| /* 13 - */ /* use tree 1 as dummy here */ |
| aHuffTree41, |
| /* 14 - */ /* use tree 1 as dummy here */ |
| aHuffTree41, |
| /* 15 - */ /* use tree 1 as dummy here */ |
| aHuffTree27, /* 16 11 */ |
| aHuffTree27, /* 17 11 */ |
| aHuffTree27, /* 18 11 */ |
| aHuffTree27, /* 19 11 */ |
| aHuffTree27, /* 20 11 */ |
| aHuffTree27, /* 21 11 */ |
| aHuffTree27, /* 22 11 */ |
| aHuffTree27, /* 23 11 */ |
| aHuffTree27, /* 24 11 */ |
| aHuffTree27, /* 25 11 */ |
| aHuffTree27, /* 26 11 */ |
| aHuffTree27, /* 27 11 */ |
| aHuffTree27, /* 28 11 */ |
| aHuffTree27, /* 29 11 */ |
| aHuffTree27, /* 30 11 */ |
| aHuffTree27}; /* 31 11 */ |
| |
| /*--------------------------------------------------------------------------------------------- |
| data-description: |
| The following tables contain the quantized values. Two or four of the |
| quantized values are indexed by the result of the decoding in the decoding tree |
| (see tables above). |
| -------------------------------------------------------------------------------------------- |
| */ |
| |
| /* ********************************************************************************************* |
| */ |
| /* Table: ValTab41 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* description: This table contains the quantized values for codebooks |
| * 1-2. */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| const SCHAR aValTab41[324] = { |
| -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, 1, -1, -1, 0, -1, -1, -1, |
| 0, 0, -1, -1, 0, 1, -1, -1, 1, -1, -1, -1, 1, 0, -1, -1, 1, 1, |
| -1, 0, -1, -1, -1, 0, -1, 0, -1, 0, -1, 1, -1, 0, 0, -1, -1, 0, |
| 0, 0, -1, 0, 0, 1, -1, 0, 1, -1, -1, 0, 1, 0, -1, 0, 1, 1, |
| -1, 1, -1, -1, -1, 1, -1, 0, -1, 1, -1, 1, -1, 1, 0, -1, -1, 1, |
| 0, 0, -1, 1, 0, 1, -1, 1, 1, -1, -1, 1, 1, 0, -1, 1, 1, 1, |
| 0, -1, -1, -1, 0, -1, -1, 0, 0, -1, -1, 1, 0, -1, 0, -1, 0, -1, |
| 0, 0, 0, -1, 0, 1, 0, -1, 1, -1, 0, -1, 1, 0, 0, -1, 1, 1, |
| 0, 0, -1, -1, 0, 0, -1, 0, 0, 0, -1, 1, 0, 0, 0, -1, 0, 0, |
| 0, 0, 0, 0, 0, 1, 0, 0, 1, -1, 0, 0, 1, 0, 0, 0, 1, 1, |
| 0, 1, -1, -1, 0, 1, -1, 0, 0, 1, -1, 1, 0, 1, 0, -1, 0, 1, |
| 0, 0, 0, 1, 0, 1, 0, 1, 1, -1, 0, 1, 1, 0, 0, 1, 1, 1, |
| 1, -1, -1, -1, 1, -1, -1, 0, 1, -1, -1, 1, 1, -1, 0, -1, 1, -1, |
| 0, 0, 1, -1, 0, 1, 1, -1, 1, -1, 1, -1, 1, 0, 1, -1, 1, 1, |
| 1, 0, -1, -1, 1, 0, -1, 0, 1, 0, -1, 1, 1, 0, 0, -1, 1, 0, |
| 0, 0, 1, 0, 0, 1, 1, 0, 1, -1, 1, 0, 1, 0, 1, 0, 1, 1, |
| 1, 1, -1, -1, 1, 1, -1, 0, 1, 1, -1, 1, 1, 1, 0, -1, 1, 1, |
| 0, 0, 1, 1, 0, 1, 1, 1, 1, -1, 1, 1, 1, 0, 1, 1, 1, 1}; |
| |
| /* ********************************************************************************************* |
| */ |
| /* Table: ValTab42 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* description: This table contains the quantized values for codebooks |
| * 3-4. */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| const SCHAR aValTab42[324] = { |
| 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 2, 0, |
| 0, 2, 0, 0, 0, 2, 1, 0, 0, 2, 2, 0, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 2, 0, 1, |
| 1, 0, 0, 1, 1, 1, 0, 1, 1, 2, 0, 1, 2, 0, 0, 1, 2, 1, 0, 1, 2, 2, 0, 2, 0, |
| 0, 0, 2, 0, 1, 0, 2, 0, 2, 0, 2, 1, 0, 0, 2, 1, 1, 0, 2, 1, 2, 0, 2, 2, 0, |
| 0, 2, 2, 1, 0, 2, 2, 2, 1, 0, 0, 0, 1, 0, 0, 1, 1, 0, 0, 2, 1, 0, 1, 0, 1, |
| 0, 1, 1, 1, 0, 1, 2, 1, 0, 2, 0, 1, 0, 2, 1, 1, 0, 2, 2, 1, 1, 0, 0, 1, 1, |
| 0, 1, 1, 1, 0, 2, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 0, 1, 1, 2, |
| 1, 1, 1, 2, 2, 1, 2, 0, 0, 1, 2, 0, 1, 1, 2, 0, 2, 1, 2, 1, 0, 1, 2, 1, 1, |
| 1, 2, 1, 2, 1, 2, 2, 0, 1, 2, 2, 1, 1, 2, 2, 2, 2, 0, 0, 0, 2, 0, 0, 1, 2, |
| 0, 0, 2, 2, 0, 1, 0, 2, 0, 1, 1, 2, 0, 1, 2, 2, 0, 2, 0, 2, 0, 2, 1, 2, 0, |
| 2, 2, 2, 1, 0, 0, 2, 1, 0, 1, 2, 1, 0, 2, 2, 1, 1, 0, 2, 1, 1, 1, 2, 1, 1, |
| 2, 2, 1, 2, 0, 2, 1, 2, 1, 2, 1, 2, 2, 2, 2, 0, 0, 2, 2, 0, 1, 2, 2, 0, 2, |
| 2, 2, 1, 0, 2, 2, 1, 1, 2, 2, 1, 2, 2, 2, 2, 0, 2, 2, 2, 1, 2, 2, 2, 2}; |
| |
| /* ********************************************************************************************* |
| */ |
| /* Table: ValTab21 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* description: This table contains the quantized values for codebooks |
| * 5-6. */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| const SCHAR aValTab21[162] = { |
| -4, -4, -4, -3, -4, -2, -4, -1, -4, 0, -4, 1, -4, 2, -4, 3, -4, 4, |
| -3, -4, -3, -3, -3, -2, -3, -1, -3, 0, -3, 1, -3, 2, -3, 3, -3, 4, |
| -2, -4, -2, -3, -2, -2, -2, -1, -2, 0, -2, 1, -2, 2, -2, 3, -2, 4, |
| -1, -4, -1, -3, -1, -2, -1, -1, -1, 0, -1, 1, -1, 2, -1, 3, -1, 4, |
| 0, -4, 0, -3, 0, -2, 0, -1, 0, 0, 0, 1, 0, 2, 0, 3, 0, 4, |
| 1, -4, 1, -3, 1, -2, 1, -1, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, |
| 2, -4, 2, -3, 2, -2, 2, -1, 2, 0, 2, 1, 2, 2, 2, 3, 2, 4, |
| 3, -4, 3, -3, 3, -2, 3, -1, 3, 0, 3, 1, 3, 2, 3, 3, 3, 4, |
| 4, -4, 4, -3, 4, -2, 4, -1, 4, 0, 4, 1, 4, 2, 4, 3, 4, 4}; |
| |
| /* ********************************************************************************************* |
| */ |
| /* Table: ValTab22 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* description: This table contains the quantized values for codebooks |
| * 7-8. */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| const SCHAR aValTab22[128] = { |
| 0, 0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 1, 0, 1, 1, 1, 2, |
| 1, 3, 1, 4, 1, 5, 1, 6, 1, 7, 2, 0, 2, 1, 2, 2, 2, 3, 2, 4, 2, 5, |
| 2, 6, 2, 7, 3, 0, 3, 1, 3, 2, 3, 3, 3, 4, 3, 5, 3, 6, 3, 7, 4, 0, |
| 4, 1, 4, 2, 4, 3, 4, 4, 4, 5, 4, 6, 4, 7, 5, 0, 5, 1, 5, 2, 5, 3, |
| 5, 4, 5, 5, 5, 6, 5, 7, 6, 0, 6, 1, 6, 2, 6, 3, 6, 4, 6, 5, 6, 6, |
| 6, 7, 7, 0, 7, 1, 7, 2, 7, 3, 7, 4, 7, 5, 7, 6, 7, 7}; |
| |
| /* ********************************************************************************************* |
| */ |
| /* Table: ValTab23 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* description: This table contains the quantized values for codebooks |
| * 9-10. */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| const SCHAR aValTab23[338] = { |
| 0, 0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, |
| 9, 0, 10, 0, 11, 0, 12, 1, 0, 1, 1, 1, 2, 1, 3, 1, 4, 1, 5, |
| 1, 6, 1, 7, 1, 8, 1, 9, 1, 10, 1, 11, 1, 12, 2, 0, 2, 1, 2, |
| 2, 2, 3, 2, 4, 2, 5, 2, 6, 2, 7, 2, 8, 2, 9, 2, 10, 2, 11, |
| 2, 12, 3, 0, 3, 1, 3, 2, 3, 3, 3, 4, 3, 5, 3, 6, 3, 7, 3, |
| 8, 3, 9, 3, 10, 3, 11, 3, 12, 4, 0, 4, 1, 4, 2, 4, 3, 4, 4, |
| 4, 5, 4, 6, 4, 7, 4, 8, 4, 9, 4, 10, 4, 11, 4, 12, 5, 0, 5, |
| 1, 5, 2, 5, 3, 5, 4, 5, 5, 5, 6, 5, 7, 5, 8, 5, 9, 5, 10, |
| 5, 11, 5, 12, 6, 0, 6, 1, 6, 2, 6, 3, 6, 4, 6, 5, 6, 6, 6, |
| 7, 6, 8, 6, 9, 6, 10, 6, 11, 6, 12, 7, 0, 7, 1, 7, 2, 7, 3, |
| 7, 4, 7, 5, 7, 6, 7, 7, 7, 8, 7, 9, 7, 10, 7, 11, 7, 12, 8, |
| 0, 8, 1, 8, 2, 8, 3, 8, 4, 8, 5, 8, 6, 8, 7, 8, 8, 8, 9, |
| 8, 10, 8, 11, 8, 12, 9, 0, 9, 1, 9, 2, 9, 3, 9, 4, 9, 5, 9, |
| 6, 9, 7, 9, 8, 9, 9, 9, 10, 9, 11, 9, 12, 10, 0, 10, 1, 10, 2, |
| 10, 3, 10, 4, 10, 5, 10, 6, 10, 7, 10, 8, 10, 9, 10, 10, 10, 11, 10, |
| 12, 11, 0, 11, 1, 11, 2, 11, 3, 11, 4, 11, 5, 11, 6, 11, 7, 11, 8, |
| 11, 9, 11, 10, 11, 11, 11, 12, 12, 0, 12, 1, 12, 2, 12, 3, 12, 4, 12, |
| 5, 12, 6, 12, 7, 12, 8, 12, 9, 12, 10, 12, 11, 12, 12}; |
| |
| /* ********************************************************************************************* |
| */ |
| /* Table: ValTab24 */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| /* description: This table contains the quantized values for codebooks 11. |
| */ |
| /* --------------------------------------------------------------------------------------------- |
| */ |
| const SCHAR aValTab24[578] = { |
| 0, 0, 0, 1, 0, 2, 0, 3, 0, 4, 0, 5, 0, 6, 0, 7, 0, 8, 0, |
| 9, 0, 10, 0, 11, 0, 12, 0, 13, 0, 14, 0, 15, 0, 16, 1, 0, 1, 1, |
| 1, 2, 1, 3, 1, 4, 1, 5, 1, 6, 1, 7, 1, 8, 1, 9, 1, 10, 1, |
| 11, 1, 12, 1, 13, 1, 14, 1, 15, 1, 16, 2, 0, 2, 1, 2, 2, 2, 3, |
| 2, 4, 2, 5, 2, 6, 2, 7, 2, 8, 2, 9, 2, 10, 2, 11, 2, 12, 2, |
| 13, 2, 14, 2, 15, 2, 16, 3, 0, 3, 1, 3, 2, 3, 3, 3, 4, 3, 5, |
| 3, 6, 3, 7, 3, 8, 3, 9, 3, 10, 3, 11, 3, 12, 3, 13, 3, 14, 3, |
| 15, 3, 16, 4, 0, 4, 1, 4, 2, 4, 3, 4, 4, 4, 5, 4, 6, 4, 7, |
| 4, 8, 4, 9, 4, 10, 4, 11, 4, 12, 4, 13, 4, 14, 4, 15, 4, 16, 5, |
| 0, 5, 1, 5, 2, 5, 3, 5, 4, 5, 5, 5, 6, 5, 7, 5, 8, 5, 9, |
| 5, 10, 5, 11, 5, 12, 5, 13, 5, 14, 5, 15, 5, 16, 6, 0, 6, 1, 6, |
| 2, 6, 3, 6, 4, 6, 5, 6, 6, 6, 7, 6, 8, 6, 9, 6, 10, 6, 11, |
| 6, 12, 6, 13, 6, 14, 6, 15, 6, 16, 7, 0, 7, 1, 7, 2, 7, 3, 7, |
| 4, 7, 5, 7, 6, 7, 7, 7, 8, 7, 9, 7, 10, 7, 11, 7, 12, 7, 13, |
| 7, 14, 7, 15, 7, 16, 8, 0, 8, 1, 8, 2, 8, 3, 8, 4, 8, 5, 8, |
| 6, 8, 7, 8, 8, 8, 9, 8, 10, 8, 11, 8, 12, 8, 13, 8, 14, 8, 15, |
| 8, 16, 9, 0, 9, 1, 9, 2, 9, 3, 9, 4, 9, 5, 9, 6, 9, 7, 9, |
| 8, 9, 9, 9, 10, 9, 11, 9, 12, 9, 13, 9, 14, 9, 15, 9, 16, 10, 0, |
| 10, 1, 10, 2, 10, 3, 10, 4, 10, 5, 10, 6, 10, 7, 10, 8, 10, 9, 10, |
| 10, 10, 11, 10, 12, 10, 13, 10, 14, 10, 15, 10, 16, 11, 0, 11, 1, 11, 2, |
| 11, 3, 11, 4, 11, 5, 11, 6, 11, 7, 11, 8, 11, 9, 11, 10, 11, 11, 11, |
| 12, 11, 13, 11, 14, 11, 15, 11, 16, 12, 0, 12, 1, 12, 2, 12, 3, 12, 4, |
| 12, 5, 12, 6, 12, 7, 12, 8, 12, 9, 12, 10, 12, 11, 12, 12, 12, 13, 12, |
| 14, 12, 15, 12, 16, 13, 0, 13, 1, 13, 2, 13, 3, 13, 4, 13, 5, 13, 6, |
| 13, 7, 13, 8, 13, 9, 13, 10, 13, 11, 13, 12, 13, 13, 13, 14, 13, 15, 13, |
| 16, 14, 0, 14, 1, 14, 2, 14, 3, 14, 4, 14, 5, 14, 6, 14, 7, 14, 8, |
| 14, 9, 14, 10, 14, 11, 14, 12, 14, 13, 14, 14, 14, 15, 14, 16, 15, 0, 15, |
| 1, 15, 2, 15, 3, 15, 4, 15, 5, 15, 6, 15, 7, 15, 8, 15, 9, 15, 10, |
| 15, 11, 15, 12, 15, 13, 15, 14, 15, 15, 15, 16, 16, 0, 16, 1, 16, 2, 16, |
| 3, 16, 4, 16, 5, 16, 6, 16, 7, 16, 8, 16, 9, 16, 10, 16, 11, 16, 12, |
| 16, 13, 16, 14, 16, 15, 16, 16}; |
| |
| /* cb quant. val table */ |
| const SCHAR *aQuantTable[] = { |
| aValTab41, |
| /* 0 - */ /* use quant. val talble 1 as dummy here */ |
| aValTab41, /* 1 1 */ |
| aValTab41, /* 2 1 */ |
| aValTab42, /* 3 2 */ |
| aValTab42, /* 4 2 */ |
| aValTab21, /* 5 3 */ |
| aValTab21, /* 6 3 */ |
| aValTab22, /* 7 4 */ |
| aValTab22, /* 8 4 */ |
| aValTab23, /* 9 5 */ |
| aValTab23, /* 10 5 */ |
| aValTab24, /* 11 6 */ |
| aValTab41, |
| /* 12 - */ /* use quant. val talble 1 as dummy here */ |
|