blob: 2be9ab9d7cb03e080f265e7f208f3afa58621c72 [file] [log] [blame]
/* ------------------------------------------------------------------
* 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