summaryrefslogtreecommitdiffstats
path: root/media/libstagefright/codecs/mp3dec/src/pvmp3_huffman_parsing.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'media/libstagefright/codecs/mp3dec/src/pvmp3_huffman_parsing.cpp')
-rw-r--r--media/libstagefright/codecs/mp3dec/src/pvmp3_huffman_parsing.cpp328
1 files changed, 0 insertions, 328 deletions
diff --git a/media/libstagefright/codecs/mp3dec/src/pvmp3_huffman_parsing.cpp b/media/libstagefright/codecs/mp3dec/src/pvmp3_huffman_parsing.cpp
deleted file mode 100644
index ff815dc..0000000
--- a/media/libstagefright/codecs/mp3dec/src/pvmp3_huffman_parsing.cpp
+++ /dev/null
@@ -1,328 +0,0 @@
-/* ------------------------------------------------------------------
- * Copyright (C) 1998-2009 PacketVideo
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
- * express or implied.
- * See the License for the specific language governing permissions
- * and limitations under the License.
- * -------------------------------------------------------------------
- */
-
-/*
-------------------------------------------------------------------------------
-
- PacketVideo Corp.
- MP3 Decoder Library
-
- Filename: pvmp3_huffman_decoding.cpp
-
- Funtions:
- pvmp3_huffman_quad_decoding
- pvmp3_huffman_pair_decoding
- pvmp3_huffman_pair_decoding_linbits
-
- Date: 09/21/2007
-
-------------------------------------------------------------------------------
- REVISION HISTORY
-
-
- Description:
-
-------------------------------------------------------------------------------
- INPUT AND OUTPUT DEFINITIONS
-
- Inputs:
- int32 is[],
- granuleInfo *grInfo, information for the given channel and granule
- tmp3dec_file *pVars, decoder state structure
- int32 part2_start, index to beginning of part 2 data
- mp3Header *info mp3 header info
-
- Outputs:
- int32 is[], uncompressed data
-
- Return:
- non zero frequency lines
-
-------------------------------------------------------------------------------
- FUNCTION DESCRIPTION
-
- These functions are used to decode huffman codewords from the input
- bitstream using combined binary search and look-up table approach.
-
-------------------------------------------------------------------------------
- REQUIREMENTS
-
-
-------------------------------------------------------------------------------
- REFERENCES
- [1] ISO MPEG Audio Subgroup Software Simulation Group (1996)
- ISO 13818-3 MPEG-2 Audio Decoder - Lower Sampling Frequency Extension
-
-
-------------------------------------------------------------------------------
- PSEUDO-CODE
-
-------------------------------------------------------------------------------
-*/
-
-
-/*----------------------------------------------------------------------------
-; INCLUDES
-----------------------------------------------------------------------------*/
-#include "pv_mp3_huffman.h"
-#include "s_mp3bits.h"
-#include "mp3_mem_funcs.h"
-#include "pvmp3_tables.h"
-
-
-/*----------------------------------------------------------------------------
-; MACROS
-; Define module specific macros here
-----------------------------------------------------------------------------*/
-
-
-/*----------------------------------------------------------------------------
-; DEFINES
-; Include all pre-processor statements here. Include conditional
-; compile variables also.
-----------------------------------------------------------------------------*/
-
-
-/*----------------------------------------------------------------------------
-; LOCAL FUNCTION DEFINITIONS
-; Function Prototype declaration
-----------------------------------------------------------------------------*/
-
-/*----------------------------------------------------------------------------
-; LOCAL STORE/BUFFER/POINTER DEFINITIONS
-; Variable declaration - defined here and used outside this module
-----------------------------------------------------------------------------*/
-
-/*----------------------------------------------------------------------------
-; EXTERNAL FUNCTION REFERENCES
-; Declare functions defined elsewhere and referenced in this module
-----------------------------------------------------------------------------*/
-
-/*----------------------------------------------------------------------------
-; EXTERNAL GLOBAL STORE/BUFFER/POINTER REFERENCES
-; Declare variables used in this module but defined elsewhere
-----------------------------------------------------------------------------*/
-
-/*----------------------------------------------------------------------------
-; FUNCTION CODE
-----------------------------------------------------------------------------*/
-
-int32 pvmp3_huffman_parsing(int32 is[SUBBANDS_NUMBER*FILTERBANK_BANDS],
- granuleInfo *grInfo,
- tmp3dec_file *pVars,
- int32 part2_start,
- mp3Header *info)
-
-
-{
- int32 i;
- int32 region1Start;
- int32 region2Start;
- int32 sfreq;
- uint32 grBits;
- void(*pt_huff)(struct huffcodetab *, int32 *, tmp3Bits *);
- struct huffcodetab *h;
-
- tmp3Bits *pMainData = &pVars->mainDataStream;
-
-
- /*int32 bt = (*si).ch[ch].gr[gr].window_switching_flag && ((*si).ch[ch].gr[gr].block_type == 2);*/
-
- sfreq = info->sampling_frequency + info->version_x + (info->version_x << 1);
-
- /* Find region boundary for short block case. */
-
-
- if ((grInfo->window_switching_flag) && (grInfo->block_type == 2))
- {
- if (info->version_x == MPEG_1)
- {
- /* Region2. */
- region1Start = 12;
- }
- else
- {
- /* Region2. */
- i = grInfo->region0_count + 1;
- region1Start = mp3_sfBandIndex[sfreq].s[i/3];
- }
-
- region1Start += region1Start << 1;
- region2Start = 576; /* No Region2 for short block case. */
- }
- else
- { /* Find region boundary for long block case. */
- i = grInfo->region0_count + 1;
- region1Start = mp3_sfBandIndex[sfreq].l[i];
- region2Start = mp3_sfBandIndex[sfreq].l[i + grInfo->region1_count + 1];
- }
-
- /* Read bigvalues area. */
-
-
- if (grInfo->big_values > (FILTERBANK_BANDS*SUBBANDS_NUMBER >> 1))
- {
- grInfo->big_values = (FILTERBANK_BANDS * SUBBANDS_NUMBER >> 1);
- }
-
- if ((grInfo->big_values << 1) > (uint32)region2Start)
- {
- h = &(pVars->ht[grInfo->table_select[0]]);
- if (h->linbits)
- {
- pt_huff = pvmp3_huffman_pair_decoding_linbits;
- }
- else
- {
- pt_huff = pvmp3_huffman_pair_decoding;
- }
-
- for (i = 0; i < region1Start; i += 2)
- {
- (*pt_huff)(h, &is[i], pMainData);
- }
-
- h = &(pVars->ht[grInfo->table_select[1]]);
- if (h->linbits)
- {
- pt_huff = pvmp3_huffman_pair_decoding_linbits;
- }
- else
- {
- pt_huff = pvmp3_huffman_pair_decoding;
- }
-
- for (; i < region2Start; i += 2)
- {
- (*pt_huff)(h, &is[i], pMainData);
- }
-
- h = &(pVars->ht[grInfo->table_select[2]]);
- if (h->linbits)
- {
- pt_huff = pvmp3_huffman_pair_decoding_linbits;
- }
- else
- {
- pt_huff = pvmp3_huffman_pair_decoding;
- }
-
- for (; (uint32)i < (grInfo->big_values << 1); i += 2)
- {
- (*pt_huff)(h, &is[i], pMainData);
- }
- }
- else if ((grInfo->big_values << 1) > (uint32)region1Start)
- {
- h = &(pVars->ht[grInfo->table_select[0]]);
- if (h->linbits)
- {
- pt_huff = pvmp3_huffman_pair_decoding_linbits;
- }
- else
- {
- pt_huff = pvmp3_huffman_pair_decoding;
- }
- for (i = 0; i < region1Start; i += 2)
- {
- (*pt_huff)(h, &is[i], pMainData);
- }
-
- h = &(pVars->ht[grInfo->table_select[1]]);
- if (h->linbits)
- {
- pt_huff = pvmp3_huffman_pair_decoding_linbits;
- }
- else
- {
- pt_huff = pvmp3_huffman_pair_decoding;
- }
- for (; (uint32)i < (grInfo->big_values << 1); i += 2)
- {
- (*pt_huff)(h, &is[i], pMainData);
- }
- }
- else
- {
- h = &(pVars->ht[grInfo->table_select[0]]);
- if (h->linbits)
- {
- pt_huff = pvmp3_huffman_pair_decoding_linbits;
- }
- else
- {
- pt_huff = pvmp3_huffman_pair_decoding;
- }
-
- for (i = 0; (uint32)i < (grInfo->big_values << 1); i += 2)
- {
- (*pt_huff)(h, &is[i], pMainData);
- }
- }
-
-
-
- /* Read count1 area. */
- h = &(pVars->ht[grInfo->count1table_select+32]);
-
- grBits = part2_start + grInfo->part2_3_length;
-
- while ((pMainData->usedBits < grBits) &&
- (i < FILTERBANK_BANDS*SUBBANDS_NUMBER - 4))
- {
- pvmp3_huffman_quad_decoding(h, &is[i], pMainData);
- i += 4;
- }
-
- if ((pMainData->usedBits < grBits) &&
- (i < FILTERBANK_BANDS*SUBBANDS_NUMBER))
- {
- pvmp3_huffman_quad_decoding(h, &is[i], pMainData);
- i += 4;
-
- if ((i - 2) >= FILTERBANK_BANDS*SUBBANDS_NUMBER)
- {
- i -= 2;
- is[i] = 0;
- is[(i+1)] = 0;
- }
- }
-
- if (pMainData->usedBits > grBits)
- {
- i -= 4;
-
- if (i < 0 || i > FILTERBANK_BANDS*SUBBANDS_NUMBER - 4)
- {
- /* illegal parameters may cause invalid access, set i to 0 */
- i = 0;
- }
-
- is[i] = 0;
- is[(i+1)] = 0;
- is[(i+2)] = 0;
- is[(i+3)] = 0;
-
- }
-
- pMainData->usedBits = grBits;
-
- return (i);
-
-}
-