From 6ca23db9cccac05bef9bf9c665821b396af12a0b Mon Sep 17 00:00:00 2001 From: Justin Ruggles Date: Thu, 26 May 2011 15:53:25 -0400 Subject: ac3enc: modify mantissa bit counting to keep bap counts for all values of bap instead of just 0 to 4. This does all the actual bit counting as a final step. --- libavcodec/ac3dsp.h | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) (limited to 'libavcodec/ac3dsp.h') diff --git a/libavcodec/ac3dsp.h b/libavcodec/ac3dsp.h index b750767e81..8eeafd68ac 100644 --- a/libavcodec/ac3dsp.h +++ b/libavcodec/ac3dsp.h @@ -24,6 +24,12 @@ #include +/** + * Number of mantissa bits written for each bap value. + * bap values with fractional bits are set to 0 and are calculated separately. + */ +extern const uint16_t ff_ac3_bap_bits[16]; + typedef struct AC3DSPContext { /** * Set each encoded exponent in a block to the minimum of itself and the @@ -101,10 +107,22 @@ typedef struct AC3DSPContext { int snr_offset, int floor, const uint8_t *bap_tab, uint8_t *bap); + /** + * Update bap counts using the supplied array of bap. + * + * @param[out] mant_cnt bap counts for 1 block + * @param[in] bap array of bap, pointing to start coef bin + * @param[in] len number of elements to process + */ + void (*update_bap_counts)(uint16_t mant_cnt[16], uint8_t *bap, int len); + /** * Calculate the number of bits needed to encode a set of mantissas. + * + * @param[in] mant_cnt bap counts for all blocks + * @return mantissa bit count */ - int (*compute_mantissa_size)(int mant_cnt[5], uint8_t *bap, int nb_coefs); + int (*compute_mantissa_size)(uint16_t mant_cnt[6][16]); void (*extract_exponents)(uint8_t *exp, int32_t *coef, int nb_coefs); } AC3DSPContext; -- cgit v1.2.3