summaryrefslogtreecommitdiff
path: root/libavcodec
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2013-11-29 00:23:51 +0100
committerMichael Niedermayer <michaelni@gmx.at>2013-11-29 00:24:41 +0100
commite9a47896a0d1cd8b6577f5a7752e158973d32d2a (patch)
treee69bc2319ea50cb4df6fcd9331ebedc028c58641 /libavcodec
parentcb751a6a96475f525d9933a55ad2b88c1ec92fa1 (diff)
parent25609b63d2e07d26d610f485a22082d32c96c0f5 (diff)
Merge commit '25609b63d2e07d26d610f485a22082d32c96c0f5'
* commit '25609b63d2e07d26d610f485a22082d32c96c0f5': dcadec: store the stereo downmix coefficients as float in the DCAContext. Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavcodec')
-rw-r--r--libavcodec/dcadec.c22
1 files changed, 8 insertions, 14 deletions
diff --git a/libavcodec/dcadec.c b/libavcodec/dcadec.c
index f20d46f0ba..fbd5dee5b2 100644
--- a/libavcodec/dcadec.c
+++ b/libavcodec/dcadec.c
@@ -400,7 +400,7 @@ typedef struct {
int scale_factor[DCA_PRIM_CHANNELS_MAX][DCA_SUBBANDS][2]; ///< scale factors (2 if transient)
int joint_huff[DCA_PRIM_CHANNELS_MAX]; ///< joint subband scale factors codebook
int joint_scale_factor[DCA_PRIM_CHANNELS_MAX][DCA_SUBBANDS]; ///< joint subband scale factors
- int downmix_coef[DCA_PRIM_CHANNELS_MAX][2]; ///< stereo downmix coefficients
+ float downmix_coef[DCA_PRIM_CHANNELS_MAX][2]; ///< stereo downmix coefficients
int dynrange_coef; ///< dynamic range coefficient
int high_freq_vq[DCA_PRIM_CHANNELS_MAX][DCA_SUBBANDS]; ///< VQ encoded high frequency subbands
@@ -958,8 +958,8 @@ static int dca_subframe_header(DCAContext *s, int base_channel, int block_index)
if (!base_channel && s->prim_channels > 2) {
if (s->downmix) {
for (j = base_channel; j < s->prim_channels; j++) {
- s->downmix_coef[j][0] = get_bits(&s->gb, 7);
- s->downmix_coef[j][1] = get_bits(&s->gb, 7);
+ s->downmix_coef[j][0] = dca_downmix_coeffs[get_bits(&s->gb, 7)];
+ s->downmix_coef[j][1] = dca_downmix_coeffs[get_bits(&s->gb, 7)];
}
} else {
int am = s->amode & DCA_CHANNEL_MASK;
@@ -975,8 +975,8 @@ static int dca_subframe_header(DCAContext *s, int base_channel, int block_index)
}
for (j = base_channel; j < s->prim_channels; j++) {
- s->downmix_coef[j][0] = dca_default_coeffs[am][j][0];
- s->downmix_coef[j][1] = dca_default_coeffs[am][j][1];
+ s->downmix_coef[j][0] = dca_downmix_coeffs[dca_default_coeffs[am][j][0]];
+ s->downmix_coef[j][1] = dca_downmix_coeffs[dca_default_coeffs[am][j][1]];
}
}
}
@@ -1084,9 +1084,9 @@ static int dca_subframe_header(DCAContext *s, int base_channel, int block_index)
av_log(s->avctx, AV_LOG_DEBUG, "Downmix coeffs:\n");
for (j = 0; j < s->prim_channels; j++) {
av_log(s->avctx, AV_LOG_DEBUG, "Channel 0, %d = %f\n", j,
- dca_downmix_coeffs[s->downmix_coef[j][0]]);
+ s->downmix_coef[j][0]);
av_log(s->avctx, AV_LOG_DEBUG, "Channel 1, %d = %f\n", j,
- dca_downmix_coeffs[s->downmix_coef[j][1]]);
+ s->downmix_coef[j][1]);
}
av_log(s->avctx, AV_LOG_DEBUG, "\n");
}
@@ -1185,18 +1185,12 @@ static void lfe_interpolation_fir(DCAContext *s, int decimation_select,
}
static void dca_downmix(float **samples, int srcfmt,
- int downmix_coef[DCA_PRIM_CHANNELS_MAX][2],
+ float coef[DCA_PRIM_CHANNELS_MAX][2],
const int8_t *channel_mapping)
{
int c, l, r, sl, sr, s;
int i;
float t, u, v;
- float coef[DCA_PRIM_CHANNELS_MAX][2];
-
- for (i = 0; i < DCA_PRIM_CHANNELS_MAX; i++) {
- coef[i][0] = dca_downmix_coeffs[downmix_coef[i][0]];
- coef[i][1] = dca_downmix_coeffs[downmix_coef[i][1]];
- }
switch (srcfmt) {
case DCA_MONO: