1 /* ------------------------------------------------------------------
2  * Copyright (C) 1998-2009 PacketVideo
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either
13  * express or implied.
14  * See the License for the specific language governing permissions
15  * and limitations under the License.
16  * -------------------------------------------------------------------
17  */
18 /*
19 ------------------------------------------------------------------------------
20    PacketVideo Corp.
21    MP3 Decoder Library
22 
23    Filename: pvmp3_dec_defs.h
24 
25      Date: 09/21/2007
26 
27 ------------------------------------------------------------------------------
28  REVISION HISTORY
29 
30  Description:
31 
32 ------------------------------------------------------------------------------
33  INCLUDE DESCRIPTION
34 
35  This include file has the mp3 decoder common defines.
36 
37 ------------------------------------------------------------------------------
38 */
39 
40 /*----------------------------------------------------------------------------
41 ; CONTINUE ONLY IF NOT ALREADY DEFINED
42 ----------------------------------------------------------------------------*/
43 #ifndef PVMP3_DEC_DEFS_H
44 #define PVMP3_DEC_DEFS_H
45 
46 /*----------------------------------------------------------------------------
47 ; INCLUDES
48 ----------------------------------------------------------------------------*/
49 #include "pvmp3_audio_type_defs.h"
50 #include "pvmp3decoder_api.h"
51 
52 /*----------------------------------------------------------------------------
53 ; MACROS
54 ; Define module specific macros here
55 ----------------------------------------------------------------------------*/
56 #define module(x, POW2)   ((x)&(POW2-1))
57 
58 /*----------------------------------------------------------------------------
59 ; DEFINES
60 ; Include all pre-processor statements here.
61 ----------------------------------------------------------------------------*/
62 #define BUFSIZE   8192   // big enough to hold 4608 bytes == biggest mp3 frame
63 
64 #define CHAN           2
65 #define GRAN           2
66 
67 
68 #define SUBBANDS_NUMBER        32
69 #define FILTERBANK_BANDS       18
70 #define HAN_SIZE              512
71 
72 
73 /* MPEG Header Definitions - ID Bit Values */
74 
75 #define MPEG_1              0
76 #define MPEG_2              1
77 #define MPEG_2_5            2
78 #define INVALID_VERSION     -1
79 
80 /* MPEG Header Definitions - Mode Values */
81 
82 #define MPG_MD_STEREO           0
83 #define MPG_MD_JOINT_STEREO     1
84 #define MPG_MD_DUAL_CHANNEL     2
85 #define MPG_MD_MONO             3
86 
87 
88 
89 #define LEFT        0
90 #define RIGHT       1
91 
92 
93 #define SYNC_WORD         (int32)0x7ff
94 #define SYNC_WORD_LNGTH   11
95 
96 /*----------------------------------------------------------------------------
97 ; EXTERNAL VARIABLES REFERENCES
98 ; Declare variables used in this module but defined elsewhere
99 ----------------------------------------------------------------------------*/
100 
101 /*----------------------------------------------------------------------------
102 ; SIMPLE TYPEDEF'S
103 ----------------------------------------------------------------------------*/
104 
105 /*----------------------------------------------------------------------------
106 ; ENUMERATED TYPEDEF'S
107 ----------------------------------------------------------------------------*/
108 #ifdef __cplusplus
109 extern "C"
110 {
111 #endif
112 
113     /*----------------------------------------------------------------------------
114     ; STRUCTURES TYPEDEF'S
115     ----------------------------------------------------------------------------*/
116 
117     /* Header Information Structure */
118 
119     typedef struct
120     {
121         int32 version_x;
122         int32 layer_description;
123         int32 error_protection;
124         int32 bitrate_index;
125         int32 sampling_frequency;
126         int32 padding;
127         int32 extension;
128         int32 mode;
129         int32 mode_ext;
130         int32 copyright;
131         int32 original;
132         int32 emphasis;
133     } mp3Header;
134 
135 
136     /* Layer III side information. */
137 
138     typedef  struct
139     {
140         uint32 part2_3_length;
141         uint32 big_values;
142         int32 global_gain;
143         uint32 scalefac_compress;
144         uint32 window_switching_flag;
145         uint32 block_type;
146         uint32 mixed_block_flag;
147         uint32 table_select[3];
148         uint32 subblock_gain[3];
149         uint32 region0_count;
150         uint32 region1_count;
151         uint32 preflag;
152         uint32 scalefac_scale;
153         uint32 count1table_select;
154 
155     } granuleInfo;
156 
157     typedef  struct
158     {
159         uint32      scfsi[4];
160         granuleInfo gran[2];
161 
162     } channelInfo;
163 
164     /* Layer III side info. */
165 
166     typedef struct
167     {
168         uint32      main_data_begin;
169         uint32      private_bits;
170         channelInfo ch[2];
171 
172     } mp3SideInfo;
173 
174     /* Layer III scale factors. */
175     typedef struct
176     {
177         int32 l[23];            /* [cb] */
178         int32 s[3][13];         /* [window][cb] */
179 
180     } mp3ScaleFactors;
181 
182 
183 #ifdef __cplusplus
184 }
185 #endif
186 
187 /*----------------------------------------------------------------------------
188 ; GLOBAL FUNCTION DEFINITIONS
189 ; Function Prototype declaration
190 ----------------------------------------------------------------------------*/
191 
192 /*----------------------------------------------------------------------------
193 ; END
194 ----------------------------------------------------------------------------*/
195 
196 #endif
197 
198 
199 
200