@ -31,8 +31,6 @@
# endif
# endif
# include "avcodec.h"
# include "avcodec.h"
# include "get_bits.h"
# include "dsputil.h"
/* max frame size, in samples */
/* max frame size, in samples */
# define MPA_FRAME_SIZE 1152
# define MPA_FRAME_SIZE 1152
@ -81,29 +79,6 @@ typedef int16_t MPA_INT;
typedef int32_t MPA_INT ;
typedef int32_t MPA_INT ;
# endif
# endif
# define BACKSTEP_SIZE 512
# define EXTRABYTES 24
/* layer 3 "granule" */
typedef struct GranuleDef {
uint8_t scfsi ;
int part2_3_length ;
int big_values ;
int global_gain ;
int scalefac_compress ;
uint8_t block_type ;
uint8_t switch_point ;
int table_select [ 3 ] ;
int subblock_gain [ 3 ] ;
uint8_t scalefac_scale ;
uint8_t count1table_select ;
int region_size [ 3 ] ; /* number of huffman codes in each region */
int preflag ;
int short_start , long_end ; /* long/short band indexes */
uint8_t scale_factors [ 40 ] ;
INTFLOAT sb_hybrid [ SBLIMIT * 18 ] ; /* 576 samples */
} GranuleDef ;
# define MPA_DECODE_HEADER \
# define MPA_DECODE_HEADER \
int frame_size ; \
int frame_size ; \
int error_protection ; \
int error_protection ; \
@ -120,36 +95,6 @@ typedef struct MPADecodeHeader {
MPA_DECODE_HEADER
MPA_DECODE_HEADER
} MPADecodeHeader ;
} MPADecodeHeader ;
typedef struct MPADecodeContext {
MPA_DECODE_HEADER
uint8_t last_buf [ 2 * BACKSTEP_SIZE + EXTRABYTES ] ;
int last_buf_size ;
/* next header (used in free format parsing) */
uint32_t free_format_next_header ;
GetBitContext gb ;
GetBitContext in_gb ;
DECLARE_ALIGNED ( 16 , MPA_INT , synth_buf ) [ MPA_MAX_CHANNELS ] [ 512 * 2 ] ;
int synth_buf_offset [ MPA_MAX_CHANNELS ] ;
DECLARE_ALIGNED ( 16 , INTFLOAT , sb_samples ) [ MPA_MAX_CHANNELS ] [ 36 ] [ SBLIMIT ] ;
INTFLOAT mdct_buf [ MPA_MAX_CHANNELS ] [ SBLIMIT * 18 ] ; /* previous samples, for layer 3 MDCT */
GranuleDef granules [ 2 ] [ 2 ] ; /* Used in Layer 3 */
# ifdef DEBUG
int frame_count ;
# endif
int adu_mode ; ///< 0 for standard mp3, 1 for adu formatted mp3
int dither_state ;
int error_recognition ;
AVCodecContext * avctx ;
MPADSPContext mpadsp ;
} MPADecodeContext ;
/* layer 3 huffman tables */
typedef struct HuffTable {
int xsize ;
const uint8_t * bits ;
const uint16_t * codes ;
} HuffTable ;
int ff_mpa_l2_select_table ( int bitrate , int nb_channels , int freq , int lsf ) ;
int ff_mpa_l2_select_table ( int bitrate , int nb_channels , int freq , int lsf ) ;
int ff_mpa_decode_header ( AVCodecContext * avctx , uint32_t head , int * sample_rate , int * channels , int * frame_size , int * bitrate ) ;
int ff_mpa_decode_header ( AVCodecContext * avctx , uint32_t head , int * sample_rate , int * channels , int * frame_size , int * bitrate ) ;