1d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/* ------------------------------------------------------------------ 2d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * Copyright (C) 1998-2009 PacketVideo 3d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * 4d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * Licensed under the Apache License, Version 2.0 (the "License"); 5d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * you may not use this file except in compliance with the License. 6d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * You may obtain a copy of the License at 7d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * 8d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * http://www.apache.org/licenses/LICENSE-2.0 9d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * 10d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * Unless required by applicable law or agreed to in writing, software 11d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * distributed under the License is distributed on an "AS IS" BASIS, 12d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either 13d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * express or implied. 14d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * See the License for the specific language governing permissions 15d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * and limitations under the License. 16d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber * ------------------------------------------------------------------- 17d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber */ 18d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/* 19d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------ 20d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 21d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber PacketVideo Corp. 22d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber MP3 Decoder Library 23d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 24d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber Filename: pvmp3_decode_huff_cw.cpp 25d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 26d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber Funtions: 27d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pvmp3_decode_huff_cw_tab0 28d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pvmp3_decode_huff_cw_tab1 29d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pvmp3_decode_huff_cw_tab2 30d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pvmp3_decode_huff_cw_tab3 31d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pvmp3_decode_huff_cw_tab5 32d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pvmp3_decode_huff_cw_tab6 33d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pvmp3_decode_huff_cw_tab7 34d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pvmp3_decode_huff_cw_tab8 35d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pvmp3_decode_huff_cw_tab9 36d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pvmp3_decode_huff_cw_tab10 37d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pvmp3_decode_huff_cw_tab11 38d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pvmp3_decode_huff_cw_tab12 39d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pvmp3_decode_huff_cw_tab13 40d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pvmp3_decode_huff_cw_tab15 41d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pvmp3_decode_huff_cw_tab16 42d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pvmp3_decode_huff_cw_tab24 43d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pvmp3_decode_huff_cw_tab32 44d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pvmp3_decode_huff_cw_tab33 45d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 46d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber Date: 09/21/2007 47d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 48d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------ 49d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber REVISION HISTORY 50d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 51d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 52d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber Description: 53d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 54d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------ 55d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber INPUT AND OUTPUT DEFINITIONS 56d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 57d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber Inputs: 58d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber BITS *pMainData = pointer to input mp3 Main data bit stream 59d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 60d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 61d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber Outputs: 62d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber cw = bit field extracted from a leaf entry of packed mp3 Huffman Tables 63d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 64d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 65d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------ 66d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber FUNCTION DESCRIPTION 67d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 68d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber These functions are used to decode huffman codewords from the input 69d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber bitstream using combined binary search and look-up table approach. 70d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 71d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------ 72d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber REQUIREMENTS 73d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 74d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 75d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------ 76d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber REFERENCES 77d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber [1] ISO MPEG Audio Subgroup Software Simulation Group (1996) 78d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber ISO 13818-3 MPEG-2 Audio Decoder - Lower Sampling Frequency Extension 79d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 80d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber [2] Introduction to Algorithms, 81d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest. 82d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber The MIT press, 1990 83d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 84d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber [3] "Selecting an Optimal Huffman Decoder for AAC", 85d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber Vladimir Z. Mesarovic, et al. 86d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber AES 111th Convention, September 21-24, 2001, New York, USA 87d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 88d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------ 89d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber PSEUDO-CODE 90d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 91d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber------------------------------------------------------------------------------ 92d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber*/ 93d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 94d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 95d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*---------------------------------------------------------------------------- 96d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; INCLUDES 97d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/ 98d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#include "pv_mp3dec_fxd_op.h" 99d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#include "pvmp3_tables.h" 100d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#include "pvmp3_getbits.h" 101d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber#include "pvmp3_decode_huff_cw.h" 102d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 103d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*---------------------------------------------------------------------------- 104d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; MACROS 105d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; Define module specific macros here 106d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/ 107d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 108d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 109d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*---------------------------------------------------------------------------- 110d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; DEFINES 111d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; Include all pre-processor statements here. Include conditional 112d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; compile variables also. 113d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/ 114d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 115d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 116d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*---------------------------------------------------------------------------- 117d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; LOCAL FUNCTION DEFINITIONS 118d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; Function Prototype declaration 119d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/ 120d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 121d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*---------------------------------------------------------------------------- 122d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; LOCAL STORE/BUFFER/POINTER DEFINITIONS 123d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; Variable declaration - defined here and used outside this module 124d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/ 125d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 126d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*---------------------------------------------------------------------------- 127d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; EXTERNAL FUNCTION REFERENCES 128d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; Declare functions defined elsewhere and referenced in this module 129d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/ 130d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 131d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*---------------------------------------------------------------------------- 132d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES 133d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; Declare variables used in this module but defined elsewhere 134d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/ 135d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 136d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*---------------------------------------------------------------------------- 137d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; FUNCTION CODE 138d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/ 139d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 140d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberuint16 pvmp3_decode_huff_cw_tab0(tmp3Bits *pMainData) 141d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber{ 142d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber OSCL_UNUSED_ARG(pMainData); 143d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber return(0); 144d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 145d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber} 146d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 147d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*---------------------------------------------------------------------------- 148d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; FUNCTION CODE 149d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/ 150d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberuint16 pvmp3_decode_huff_cw_tab1(tmp3Bits *pMainData) 151d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber{ 152d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint32 tmp; 153d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint16 cw; 154d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 155d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = getUpTo9bits(pMainData, 3); /* hufftable1 */ 156d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 157d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber cw = *(huffTable_1 + tmp); 158d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pMainData->usedBits -= (3 - (cw & 0xFF)); 159d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber return(cw >> 8); 160d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 161d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber} 162d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 163d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 164d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*---------------------------------------------------------------------------- 165d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; FUNCTION CODE 166d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/ 167d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberuint16 pvmp3_decode_huff_cw_tab2(tmp3Bits *pMainData) 168d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber{ 169d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint32 tmp; 170d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint16 cw; 171d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 172d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = getUpTo9bits(pMainData, 6); /* huffTable_2,3 */ 173d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 174d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber if (tmp >> 3) 175d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 176d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 3) - 1; 177d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 178d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else 179d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 180d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = tmp + 7; 181d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 182d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 183d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber cw = *(huffTable_2 + tmp); 184d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pMainData->usedBits -= (6 - (cw & 0xFF)); 185d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 186d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber return(cw >> 8); 187d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber} 188d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 189d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 190d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*---------------------------------------------------------------------------- 191d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; FUNCTION CODE 192d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/ 193d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberuint16 pvmp3_decode_huff_cw_tab3(tmp3Bits *pMainData) 194d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber{ 195d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint32 tmp; 196d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint16 cw; 197d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 198d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = getUpTo9bits(pMainData, 6); /* huffTable_2,3 */ 199d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 200d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber if (tmp >> 3) 201d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 202d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 3) - 1; 203d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 204d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else 205d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 206d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = tmp + 7; 207d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 208d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 209d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber cw = *(huffTable_3 + tmp); 210d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pMainData->usedBits -= (6 - (cw & 0xFF)); 211d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 212d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber return(cw >> 8); 213d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber} 214d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 215d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 216d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*---------------------------------------------------------------------------- 217d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; FUNCTION CODE 218d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/ 219d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberuint16 pvmp3_decode_huff_cw_tab5(tmp3Bits *pMainData) 220d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber{ 221d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint32 tmp; 222d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint16 cw; 223d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 224d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = getUpTo9bits(pMainData, 8); /* huffTable_5 */ 225d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 226d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber if ((tmp >> 5)) 227d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 228d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 5) - 1; 229d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 230d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 1) >= 2) 231d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 232d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 1) - 2 + 7; 233d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 234d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else 235d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 236d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp & 3) + 21; 237d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 238d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 239d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber cw = *(huffTable_5 + tmp); 240d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pMainData->usedBits -= (8 - (cw & 0xFF)); 241d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 242d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber return(cw >> 8); 243d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber} 244d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 245d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*---------------------------------------------------------------------------- 246d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; FUNCTION CODE 247d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/ 248d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberuint16 pvmp3_decode_huff_cw_tab6(tmp3Bits *pMainData) 249d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber{ 250d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint32 tmp; 251d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint16 cw; 252d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 253d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = getUpTo9bits(pMainData, 7); /* huffTable_6 */ 254d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber if ((tmp >> 3) >= 3) 255d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 256d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 3) - 3; 257d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 258d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if (tmp >> 1) 259d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 260d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 1) - 1 + 13; 261d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 262d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else 263d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 264d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = tmp + 24; 265d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 266d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 267d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber cw = *(huffTable_6 + tmp); 268d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pMainData->usedBits -= (7 - (cw & 0xFF)); 269d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 270d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber return(cw >> 8); 271d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber} 272d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 273d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 274d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*---------------------------------------------------------------------------- 275d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; FUNCTION CODE 276d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/ 277d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberuint16 pvmp3_decode_huff_cw_tab7(tmp3Bits *pMainData) 278d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber{ 279d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint32 tmp; 280d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint16 cw; 281d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 282d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = getUpTo17bits(pMainData, 10); /* huffTable_7 */ 283d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber if ((tmp >> 7) >= 2) 284d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 285d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 7) - 2; 286d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 287d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 4) >= 7) 288d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 289d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 4) - 7 + 6; 290d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 291d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 1) >= 2) 292d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 293d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 1) - 2 + 15; 294d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 295d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else 296d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 297d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp & 3) + 69; 298d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 299d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 300d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber cw = *(huffTable_7 + tmp); 301d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pMainData->usedBits -= (10 - (cw & 0xFF)); 302d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 303d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber return(cw >> 8); 304d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber} 305d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 306d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 307d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*---------------------------------------------------------------------------- 308d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; FUNCTION CODE 309d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/ 310d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberuint16 pvmp3_decode_huff_cw_tab8(tmp3Bits *pMainData) 311d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber{ 312d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint32 tmp; 313d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint16 cw; 314d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 315d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = getUpTo17bits(pMainData, 11); /* huffTable_8 */ 316d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber if ((tmp >> 7) >= 2) 317d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 318d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 7) - 2; 319d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 320d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 5) >= 5) 321d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 322d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 5) - 5 + 14; 323d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 324d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 2) >= 3) 325d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 326d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 2) - 3 + 17; 327d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 328d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else 329d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 330d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp) + 54; 331d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 332d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 333d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber cw = *(huffTable_8 + tmp); 334d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pMainData->usedBits -= (11 - (cw & 0xFF)); 335d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 336d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber return(cw >> 8); 337d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber} 338d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 339d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 340d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*---------------------------------------------------------------------------- 341d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; FUNCTION CODE 342d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/ 343d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberuint16 pvmp3_decode_huff_cw_tab9(tmp3Bits *pMainData) 344d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber{ 345d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint32 tmp; 346d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint16 cw; 347d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 348d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = getUpTo9bits(pMainData, 9); /* huffTable_9 */ 349d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber if ((tmp >> 5) >= 5) 350d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 351d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 5) - 5; 352d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 353d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 3) >= 6) 354d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 355d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 3) - 6 + 11; 356d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 357d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 1) >= 4) 358d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 359d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 1) - 4 + 25; 360d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 361d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else 362d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 363d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = tmp + 45; 364d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 365d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 366d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber cw = *(huffTable_9 + tmp); 367d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pMainData->usedBits -= (9 - (cw & 0xFF)); 368d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 369d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber return(cw >> 8); 370d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber} 371d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 372d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 373d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*---------------------------------------------------------------------------- 374d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; FUNCTION CODE 375d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/ 376d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberuint16 pvmp3_decode_huff_cw_tab10(tmp3Bits *pMainData) 377d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber{ 378d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint32 tmp; 379d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint16 cw; 380d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 381d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = getUpTo17bits(pMainData, 11); /* huffTable_10 */ 382d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber if (tmp >> 10) 383d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 384d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 10) - 1; 385d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 386d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 7) >= 3) 387d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 388d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 7) - 3 + 1; 389d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 390d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 5) >= 8) 391d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 392d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 5) - 8 + 6; 393d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 394d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 3) >= 18) 395d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 396d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 3) - 18 + 10; 397d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 398d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 2) >= 24) 399d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 400d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 2) - 24 + 24; 401d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 402d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 1) >= 12) 403d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 404d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 1) - 12 + 36; 405d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 406d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else 407d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 408d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp) + 72; 409d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 410d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 411d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber cw = *(huffTable_10 + tmp); 412d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pMainData->usedBits -= (11 - (cw & 0xFF)); 413d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 414d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber return(cw >> 8); 415d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber} 416d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 417d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 418d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*---------------------------------------------------------------------------- 419d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; FUNCTION CODE 420d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/ 421d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberuint16 pvmp3_decode_huff_cw_tab11(tmp3Bits *pMainData) 422d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber{ 423d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint32 tmp; 424d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint16 cw; 425d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 426d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = getUpTo17bits(pMainData, 11); /* huffTable_11 */ 427d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber if ((tmp >> 8) >= 3) 428d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 429d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 8) - 3; 430d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 431d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 6) >= 7) 432d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 433d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 6) - 7 + 5; 434d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 435d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 3) >= 32) 436d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 437d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 3) - 32 + 10; 438d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 439d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 2) >= 10) 440d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 441d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 2) - 10 + 34; 442d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 443d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 1) >= 8) 444d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 445d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 1) - 8 + 88; 446d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 447d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else 448d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 449d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp & 0xFF) + 100; 450d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 451d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber cw = *(huffTable_11 + tmp); 452d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pMainData->usedBits -= (11 - (cw & 0xFF)); 453d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 454d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber return(cw >> 8); 455d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber} 456d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 457d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 458d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*---------------------------------------------------------------------------- 459d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; FUNCTION CODE 460d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/ 461d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberuint16 pvmp3_decode_huff_cw_tab12(tmp3Bits *pMainData) 462d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber{ 463d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint32 tmp; 464d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint16 cw; 465d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 466d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = getUpTo17bits(pMainData, 10); /* huffTable_12 */ 467d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber if ((tmp >> 7) >= 5) 468d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 469d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 7) - 5; 470d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 471d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 5) >= 12) 472d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 473d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 5) - 12 + 3; 474d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 475d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 4) >= 17) 476d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 477d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 4) - 17 + 11; 478d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 479d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 2) >= 32) 480d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 481d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 2) - 32 + 18; 482d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 483d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 1) >= 16) 484d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 485d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 1) - 16 + 54; 486d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 487d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else 488d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 489d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp & 0x1F) + 102; 490d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 491d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 492d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber cw = *(huffTable_12 + tmp); 493d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pMainData->usedBits -= (10 - (cw & 0xFF)); 494d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 495d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber return(cw >> 8); 496d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber} 497d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 498d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 499d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*---------------------------------------------------------------------------- 500d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; FUNCTION CODE 501d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/ 502d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberuint16 pvmp3_decode_huff_cw_tab13(tmp3Bits *pMainData) 503d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber{ 504d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint32 tmp; 505d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint16 cw; 506d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 507d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = getNbits(pMainData, 19); /* huffTable_13 */ 508d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber if (tmp >> 18) 509d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 510d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = 0; 511d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 512d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 15) >= 4) 513d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 514d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 15) - 4 + 1; 515d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 516d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 11) >= 32) 517d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 518d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 11) - 32 + 5; 519d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 520d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 9) >= 64) 521d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 522d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 9) - 64 + 37; 523d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 524d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 8) >= 64) 525d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 526d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 8) - 64 + 101; 527d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 528d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 7) >= 64) 529d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 530d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 7) - 64 + 165; 531d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 532d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 6) >= 32) 533d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 534d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 6) - 32 + 229; 535d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 536d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 5) >= 32) 537d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 538d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 5) - 32 + 325; 539d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 540d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 4) >= 32) 541d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 542d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 4) - 32 + 357; 543d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 544d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 3) >= 32) 545d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 546d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 3) - 32 + 389; 547d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 548d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 2) >= 2) 549d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 550d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 2) - 2 + 421; 551d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 552d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else 553d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 554d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp & 0x7) + 483; 555d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 556d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 557d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber cw = *(huffTable_13 + tmp); 558d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pMainData->usedBits -= (19 - (cw & 0xFF)); 559d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 560d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber return(cw >> 8); 561d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber} 562d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 563d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 564d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*---------------------------------------------------------------------------- 565d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; FUNCTION CODE 566d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/ 567d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberuint16 pvmp3_decode_huff_cw_tab15(tmp3Bits *pMainData) 568d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber{ 569d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint32 tmp; 570d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint16 cw; 571d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 572d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = getUpTo17bits(pMainData, 13); /* huffTable_15 */ 573d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber if ((tmp >> 9) >= 10) 574d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 575d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 9) - 10; 576d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 577d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 6) >= 39) 578d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 579d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 6) - 39 + 6; 580d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 581d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 4) >= 62) 582d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 583d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 4) - 62 + 47; 584d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 585d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 3) >= 60) 586d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 587d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 3) - 60 + 141; 588d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 589d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 2) >= 64) 590d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 591d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 2) - 64 + 205; 592d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 593d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 1) >= 32) 594d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 595d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 1) - 32 + 261; 596d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 597d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else 598d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 599d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp & 0x3f) + 357; 600d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 601d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 602d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber cw = *(huffTable_15 + tmp); 603d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pMainData->usedBits -= (13 - (cw & 0xFF)); 604d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 605d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber return(cw >> 8); 606d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber} 607d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 608d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 609d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*---------------------------------------------------------------------------- 610d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; FUNCTION CODE 611d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/ 612d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberuint16 pvmp3_decode_huff_cw_tab16(tmp3Bits *pMainData) 613d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber{ 614d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint32 tmp; 615d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint16 cw; 616d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 617d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = getUpTo17bits(pMainData, 17); /* huffTable_16 */ 618d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber if (tmp >> 16) 619d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 620d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = 0; 621d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 622d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 13) >= 4) 623d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 624d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 13) - 4 + 1; 625d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 626d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 9) >= 38) 627d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 628d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 9) - 38 + 5; 629d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 630d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 7) >= 94) 631d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 632d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 7) - 94 + 31; 633d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 634d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 5) >= 214) 635d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 636d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 5) - 214 + 89; 637d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 638d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 3) >= 704) 639d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 640d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber if ((tmp >> 4) >= 384) 641d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 642d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 4) - 384 + 315; 643d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 644d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else 645d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 646d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 3) - 704 + 251; 647d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 648d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 649d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 8) >= 14) 650d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 651d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 8) - 14 + 359; 652d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 653d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp) >= 3456) 654d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 655d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber if ((tmp >> 2) >= 868) 656d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 657d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 2) - 868 + 383; 658d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 659d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else 660d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 661d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp) - 3456 + 367; 662d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 663d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 664d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else 665d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 666d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = ((tmp >> 6) & 0x3f) + 411; 667d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 668d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 669d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber cw = *(huffTable_16 + tmp); 670d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pMainData->usedBits -= (17 - (cw & 0xFF)); 671d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 672d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber return(cw >> 8); 673d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber} 674d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 675d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 676d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 677d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*---------------------------------------------------------------------------- 678d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; FUNCTION CODE 679d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/ 680d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberuint16 pvmp3_decode_huff_cw_tab24(tmp3Bits *pMainData) 681d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber{ 682d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint32 tmp; 683d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint16 cw; 684d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 685d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = getUpTo17bits(pMainData, 12); /* huffTable_24 */ 686d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber if ((tmp >> 6) >= 41) 687d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 688d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 6) - 41; 689d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 690d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 3) >= 218) 691d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 692d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 3) - 218 + 23; 693d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 694d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 2) >= 336) 695d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 696d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 2) - 336 + 133; 697d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 698d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 1) >= 520) 699d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 700d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 1) - 520 + 233; 701d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 702d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp) >= 1024) 703d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 704d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp) - 1024 + 385; 705d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 706d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else if ((tmp >> 1) >= 352) 707d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 708d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber if ((tmp >> 8) == 3) 709d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 710d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 8) - 3 + 433; 711d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 712d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else 713d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 714d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = (tmp >> 1) - 352 + 401; 715d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 716d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 717d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else 718d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 719d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber tmp = ((tmp >> 4) & 0x3f) + 434; 720d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 721d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 722d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber cw = *(huffTable_24 + tmp); 723d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pMainData->usedBits -= (12 - (cw & 0xFF)); 724d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 725d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber return(cw >> 8); 726d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber} 727d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 728d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 729d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber/*---------------------------------------------------------------------------- 730d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber; FUNCTION CODE 731d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber----------------------------------------------------------------------------*/ 732d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberuint16 pvmp3_decode_huff_cw_tab32(tmp3Bits *pMainData) 733d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber{ 734d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint32 tmp = getUpTo9bits(pMainData, 6); /* huffTable_32 */ 735d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber if ((tmp >> 5)) 736d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 737d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pMainData->usedBits -= 5; 738d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber return(0); 739d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 740d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber else 741d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber { 742d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint16 cw = *(huffTable_32 + (tmp & 0x1f)); 743d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber pMainData->usedBits -= (6 - (cw & 0xFF)); 744d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 745d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber return(cw >> 8); 746d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber } 747d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 748d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber} 749d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 750d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 751d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huberuint16 pvmp3_decode_huff_cw_tab33(tmp3Bits *pMainData) 752d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber{ 753d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 754d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber uint16 tmp = getUpTo9bits(pMainData, 4); /* huffTable_33 */ 755d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 756d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber return((0x0f - tmp)); 757d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber} 758d9618f23226f46c752e56f712bc4b505117d8b4bAndreas Huber 759