1250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber/* ------------------------------------------------------------------
2250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber * Copyright (C) 1998-2009 PacketVideo
3250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber *
4250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber * Licensed under the Apache License, Version 2.0 (the "License");
5250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber * you may not use this file except in compliance with the License.
6250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber * You may obtain a copy of the License at
7250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber *
8250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber *      http://www.apache.org/licenses/LICENSE-2.0
9250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber *
10250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber * Unless required by applicable law or agreed to in writing, software
11250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber * distributed under the License is distributed on an "AS IS" BASIS,
12250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber * express or implied.
14250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber * See the License for the specific language governing permissions
15250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber * and limitations under the License.
16250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber * -------------------------------------------------------------------
17250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber */
18250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber/*
19250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber------------------------------------------------------------------------------
20250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber   PacketVideo Corp.
21250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber   MP3 Decoder Library
22250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
23250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber   Filename: pvmp3_getbits.h
24250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
25250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber     Date: 09/21/2007
26250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
27250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber------------------------------------------------------------------------------
28250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber REVISION HISTORY
29250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
30250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber Description:
31250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
32250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber------------------------------------------------------------------------------
33250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber INCLUDE DESCRIPTION
34250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
35250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
36250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber------------------------------------------------------------------------------
37250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber*/
38250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
39250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber/*----------------------------------------------------------------------------
40250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber; CONTINUE ONLY IF NOT ALREADY DEFINED
41250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber----------------------------------------------------------------------------*/
42250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber#ifndef PVMP3_GETBITS_H
43250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber#define PVMP3_GETBITS_H
44250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
45250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber/*----------------------------------------------------------------------------
46250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber; INCLUDES
47250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber----------------------------------------------------------------------------*/
48250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber#include "pvmp3_dec_defs.h"
49250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber#include "s_mp3bits.h"
50250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber#include "pvmp3_audio_type_defs.h"
51250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
52250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber/*----------------------------------------------------------------------------
53250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber; MACROS
54250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber; Define module specific macros here
55250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber----------------------------------------------------------------------------*/
56250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
57250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber/*----------------------------------------------------------------------------
58250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber; DEFINES
59250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber; Include all pre-processor statements here.
60250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber----------------------------------------------------------------------------*/
61250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber#define INBUF_ARRAY_INDEX_SHIFT  (3)
62250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber#define INBUF_BIT_WIDTH         (1<<(INBUF_ARRAY_INDEX_SHIFT))
63250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber#define INBUF_BIT_MODULO_MASK   ((INBUF_BIT_WIDTH)-1)
64250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
65250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
66250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber/*----------------------------------------------------------------------------
67250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber; EXTERNAL VARIABLES REFERENCES
68250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber; Declare variables used in this module but defined elsewhere
69250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber----------------------------------------------------------------------------*/
70250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
71250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber/*----------------------------------------------------------------------------
72250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber; SIMPLE TYPEDEF'S
73250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber----------------------------------------------------------------------------*/
74250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
75250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber/*----------------------------------------------------------------------------
76250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber; ENUMERATED TYPEDEF'S
77250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber----------------------------------------------------------------------------*/
78250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
79250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber/*----------------------------------------------------------------------------
80250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber; STRUCTURES TYPEDEF'S
81250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber----------------------------------------------------------------------------*/
82250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber#ifdef __cplusplus
83250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huberextern "C"
84250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber{
85250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber#endif
86250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
87250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    uint32 getNbits(tmp3Bits *pMainData,
88250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    int32 neededBits);
89250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
90250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    uint16 getUpTo9bits(tmp3Bits *pMainData,
91250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber                        int32 neededBits);
92250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
93250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    uint32 getUpTo17bits(tmp3Bits *pMainData,
94250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber                         int32 neededBits);
95250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
96250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber    uint8 get1bit(tmp3Bits *pMainData);
97250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
98250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber#ifdef __cplusplus
99250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber}
100250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber#endif
101250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
102250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber/*----------------------------------------------------------------------------
103250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber; GLOBAL FUNCTION DEFINITIONS
104250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber; Function Prototype declaration
105250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber----------------------------------------------------------------------------*/
106250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
107250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber/*----------------------------------------------------------------------------
108250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber; END
109250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber----------------------------------------------------------------------------*/
110250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
111250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber#endif
112250f2433c6e1cf2727a79971fdc6ce0f8677037aAndreas Huber
113