/* ------------------------------------------------------------------ * 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_dec_defs.h Date: 09/21/2007 ------------------------------------------------------------------------------ REVISION HISTORY Description: ------------------------------------------------------------------------------ INCLUDE DESCRIPTION This include file has the mp3 decoder common defines. ------------------------------------------------------------------------------ */ /*---------------------------------------------------------------------------- ; CONTINUE ONLY IF NOT ALREADY DEFINED ----------------------------------------------------------------------------*/ #ifndef PVMP3_DEC_DEFS_H #define PVMP3_DEC_DEFS_H /*---------------------------------------------------------------------------- ; INCLUDES ----------------------------------------------------------------------------*/ #include "pvmp3_audio_type_defs.h" #include "pvmp3decoder_api.h" /*---------------------------------------------------------------------------- ; MACROS ; Define module specific macros here ----------------------------------------------------------------------------*/ #define module(x, POW2) ((x)&(POW2-1)) /*---------------------------------------------------------------------------- ; DEFINES ; Include all pre-processor statements here. ----------------------------------------------------------------------------*/ #define BUFSIZE 8192 // big enough to hold 4608 bytes == biggest mp3 frame #define CHAN 2 #define GRAN 2 #define SUBBANDS_NUMBER 32 #define FILTERBANK_BANDS 18 #define HAN_SIZE 512 /* MPEG Header Definitions - ID Bit Values */ #define MPEG_1 0 #define MPEG_2 1 #define MPEG_2_5 2 #define INVALID_VERSION -1 /* MPEG Header Definitions - Mode Values */ #define MPG_MD_STEREO 0 #define MPG_MD_JOINT_STEREO 1 #define MPG_MD_DUAL_CHANNEL 2 #define MPG_MD_MONO 3 #define LEFT 0 #define RIGHT 1 #define SYNC_WORD (int32)0x7ff #define SYNC_WORD_LNGTH 11 /*---------------------------------------------------------------------------- ; EXTERNAL VARIABLES REFERENCES ; Declare variables used in this module but defined elsewhere ----------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------- ; SIMPLE TYPEDEF'S ----------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------- ; ENUMERATED TYPEDEF'S ----------------------------------------------------------------------------*/ #ifdef __cplusplus extern "C" { #endif /*---------------------------------------------------------------------------- ; STRUCTURES TYPEDEF'S ----------------------------------------------------------------------------*/ /* Header Information Structure */ typedef struct { int32 version_x; int32 layer_description; int32 error_protection; int32 bitrate_index; int32 sampling_frequency; int32 padding; int32 extension; int32 mode; int32 mode_ext; int32 copyright; int32 original; int32 emphasis; } mp3Header; /* Layer III side information. */ typedef struct { uint32 part2_3_length; uint32 big_values; int32 global_gain; uint32 scalefac_compress; uint32 window_switching_flag; uint32 block_type; uint32 mixed_block_flag; uint32 table_select[3]; uint32 subblock_gain[3]; uint32 region0_count; uint32 region1_count; uint32 preflag; uint32 scalefac_scale; uint32 count1table_select; } granuleInfo; typedef struct { uint32 scfsi[4]; granuleInfo gran[2]; } channelInfo; /* Layer III side info. */ typedef struct { uint32 main_data_begin; uint32 private_bits; channelInfo ch[2]; } mp3SideInfo; /* Layer III scale factors. */ typedef struct { int32 l[23]; /* [cb] */ int32 s[3][13]; /* [window][cb] */ } mp3ScaleFactors; #ifdef __cplusplus } #endif /*---------------------------------------------------------------------------- ; GLOBAL FUNCTION DEFINITIONS ; Function Prototype declaration ----------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------- ; END ----------------------------------------------------------------------------*/ #endif