@ -178,10 +178,6 @@ typedef struct AC3EncodeContext {
int frame_bits ; ///< all frame bits except exponents and mantissas
int exponent_bits ; ///< number of bits used for exponents
/* mantissa encoding */
int mant1_cnt , mant2_cnt , mant4_cnt ; ///< mantissa counts for bap=1,2,4
uint16_t * qmant1_ptr , * qmant2_ptr , * qmant4_ptr ; ///< mantissa pointers for bap=1,2,4
SampleType * * planar_samples ;
uint8_t * bap_buffer ;
uint8_t * bap1_buffer ;
@ -199,6 +195,10 @@ typedef struct AC3EncodeContext {
DECLARE_ALIGNED ( 16 , SampleType , windowed_samples ) [ AC3_WINDOW_SIZE ] ;
} AC3EncodeContext ;
typedef struct AC3Mant {
uint16_t * qmant1_ptr , * qmant2_ptr , * qmant4_ptr ; ///< mantissa pointers for bap=1,2,4
int mant1_cnt , mant2_cnt , mant4_cnt ; ///< mantissa counts for bap=1,2,4
} AC3Mant ;
# define CMIXLEV_NUM_OPTIONS 3
static const float cmixlev_options [ CMIXLEV_NUM_OPTIONS ] = {
@ -1248,7 +1248,7 @@ static inline int asym_quant(int c, int e, int qbits)
/**
* Quantize a set of mantissas for a single channel in a single block .
*/
static void quantize_mantissas_blk_ch ( AC3EncodeContex t * s , int32_t * fixed_coef ,
static void quantize_mantissas_blk_ch ( AC3Man t * s , int32_t * fixed_coef ,
uint8_t * exp ,
uint8_t * bap , uint16_t * qmant , int n )
{
@ -1350,12 +1350,11 @@ static void quantize_mantissas(AC3EncodeContext *s)
for ( blk = 0 ; blk < AC3_MAX_BLOCKS ; blk + + ) {
AC3Block * block = & s - > blocks [ blk ] ;
AC3Block * ref_block ;
s - > mant1_cnt = s - > mant2_cnt = s - > mant4_cnt = 0 ;
s - > qmant1_ptr = s - > qmant2_ptr = s - > qmant4_ptr = NULL ;
AC3Mant m = { 0 } ;
for ( ch = 0 ; ch < s - > channels ; ch + + ) {
ref_block = block - > exp_ref_block [ ch ] ;
quantize_mantissas_blk_ch ( s , block - > fixed_coef [ ch ] ,
quantize_mantissas_blk_ch ( & m , block - > fixed_coef [ ch ] ,
ref_block - > exp [ ch ] , ref_block - > bap [ ch ] ,
block - > qmant [ ch ] , s - > nb_coefs [ ch ] ) ;
}