ac3enc: move mant*_cnt and qmant*_ptr out of AC3EncodeContext
These fields are only used in quantize_mantissas() and reset on each call, no need to store them in the main context. Signed-off-by: Mans Rullgard <mans@mansr.com>
This commit is contained in:
parent
e0be794a71
commit
6f718471ea
@ -178,10 +178,6 @@ typedef struct AC3EncodeContext {
|
|||||||
int frame_bits; ///< all frame bits except exponents and mantissas
|
int frame_bits; ///< all frame bits except exponents and mantissas
|
||||||
int exponent_bits; ///< number of bits used for exponents
|
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;
|
SampleType **planar_samples;
|
||||||
uint8_t *bap_buffer;
|
uint8_t *bap_buffer;
|
||||||
uint8_t *bap1_buffer;
|
uint8_t *bap1_buffer;
|
||||||
@ -199,6 +195,10 @@ typedef struct AC3EncodeContext {
|
|||||||
DECLARE_ALIGNED(16, SampleType, windowed_samples)[AC3_WINDOW_SIZE];
|
DECLARE_ALIGNED(16, SampleType, windowed_samples)[AC3_WINDOW_SIZE];
|
||||||
} AC3EncodeContext;
|
} 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
|
#define CMIXLEV_NUM_OPTIONS 3
|
||||||
static const float cmixlev_options[CMIXLEV_NUM_OPTIONS] = {
|
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.
|
* Quantize a set of mantissas for a single channel in a single block.
|
||||||
*/
|
*/
|
||||||
static void quantize_mantissas_blk_ch(AC3EncodeContext *s, int32_t *fixed_coef,
|
static void quantize_mantissas_blk_ch(AC3Mant *s, int32_t *fixed_coef,
|
||||||
uint8_t *exp,
|
uint8_t *exp,
|
||||||
uint8_t *bap, uint16_t *qmant, int n)
|
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++) {
|
for (blk = 0; blk < AC3_MAX_BLOCKS; blk++) {
|
||||||
AC3Block *block = &s->blocks[blk];
|
AC3Block *block = &s->blocks[blk];
|
||||||
AC3Block *ref_block;
|
AC3Block *ref_block;
|
||||||
s->mant1_cnt = s->mant2_cnt = s->mant4_cnt = 0;
|
AC3Mant m = { 0 };
|
||||||
s->qmant1_ptr = s->qmant2_ptr = s->qmant4_ptr = NULL;
|
|
||||||
|
|
||||||
for (ch = 0; ch < s->channels; ch++) {
|
for (ch = 0; ch < s->channels; ch++) {
|
||||||
ref_block = block->exp_ref_block[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],
|
ref_block->exp[ch], ref_block->bap[ch],
|
||||||
block->qmant[ch], s->nb_coefs[ch]);
|
block->qmant[ch], s->nb_coefs[ch]);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user