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