aboutsummaryrefslogtreecommitdiffstats
path: root/libavcodec/ac3dsp.h
diff options
context:
space:
mode:
authorJustin Ruggles <justin.ruggles@gmail.com>2011-05-26 15:53:25 -0400
committerJustin Ruggles <justin.ruggles@gmail.com>2011-05-28 12:39:28 -0400
commit6ca23db9cccac05bef9bf9c665821b396af12a0b (patch)
treea27bf20b461377d0f7e5566a205172768152a4a6 /libavcodec/ac3dsp.h
parent1323828a0fbfa428d2e39a9f094039637b7fef5b (diff)
downloadffmpeg-6ca23db9cccac05bef9bf9c665821b396af12a0b.tar.gz
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.
Diffstat (limited to 'libavcodec/ac3dsp.h')
-rw-r--r--libavcodec/ac3dsp.h20
1 files changed, 19 insertions, 1 deletions
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 <stdint.h>
+/**
+ * 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
@@ -102,9 +108,21 @@ typedef struct AC3DSPContext {
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;