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 109extern "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