mirror of https://git.ffmpeg.org/ffmpeg.git
dcadec: fix xxch_dmix_coeff and xxch_dmix_sf after merge
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
c867be03f6
commit
4e4dbb9983
|
@ -478,6 +478,8 @@ typedef struct {
|
||||||
FmtConvertContext fmt_conv;
|
FmtConvertContext fmt_conv;
|
||||||
} DCAContext;
|
} DCAContext;
|
||||||
|
|
||||||
|
static float dca_dmix_code(unsigned code);
|
||||||
|
|
||||||
static const uint16_t dca_vlc_offs[] = {
|
static const uint16_t dca_vlc_offs[] = {
|
||||||
0, 512, 640, 768, 1282, 1794, 2436, 3080, 3770, 4454, 5364,
|
0, 512, 640, 768, 1282, 1794, 2436, 3080, 3770, 4454, 5364,
|
||||||
5372, 5380, 5388, 5392, 5396, 5412, 5420, 5428, 5460, 5492, 5508,
|
5372, 5380, 5388, 5392, 5396, 5412, 5420, 5428, 5460, 5492, 5508,
|
||||||
|
@ -568,7 +570,7 @@ static int dca_parse_audio_coding_header(DCAContext *s, int base_channel,
|
||||||
static const int bitlen[11] = { 0, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3 };
|
static const int bitlen[11] = { 0, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3 };
|
||||||
static const int thr[11] = { 0, 1, 3, 3, 3, 3, 7, 7, 7, 7, 7 };
|
static const int thr[11] = { 0, 1, 3, 3, 3, 3, 7, 7, 7, 7, 7 };
|
||||||
int hdr_pos = 0, hdr_size = 0;
|
int hdr_pos = 0, hdr_size = 0;
|
||||||
float sign, mag, scale_factor;
|
float scale_factor;
|
||||||
int this_chans, acc_mask;
|
int this_chans, acc_mask;
|
||||||
int embedded_downmix;
|
int embedded_downmix;
|
||||||
int nchans, mask[8];
|
int nchans, mask[8];
|
||||||
|
@ -598,8 +600,8 @@ static int dca_parse_audio_coding_header(DCAContext *s, int base_channel,
|
||||||
/* check for downmixing information */
|
/* check for downmixing information */
|
||||||
if (get_bits1(&s->gb)) {
|
if (get_bits1(&s->gb)) {
|
||||||
embedded_downmix = get_bits1(&s->gb);
|
embedded_downmix = get_bits1(&s->gb);
|
||||||
scale_factor =
|
coeff = get_bits(&s->gb, 6);
|
||||||
1.0f / dca_dmixtable[(get_bits(&s->gb, 6) - 1) << 2];
|
scale_factor = -1.0f / dca_dmix_code(FFMAX(coeff<<2, 4)-3);
|
||||||
|
|
||||||
s->xxch_dmix_sf[s->xxch_chset] = scale_factor;
|
s->xxch_dmix_sf[s->xxch_chset] = scale_factor;
|
||||||
|
|
||||||
|
@ -619,10 +621,8 @@ static int dca_parse_audio_coding_header(DCAContext *s, int base_channel,
|
||||||
}
|
}
|
||||||
|
|
||||||
coeff = get_bits(&s->gb, 7);
|
coeff = get_bits(&s->gb, 7);
|
||||||
sign = (coeff & 64) ? 1.0 : -1.0;
|
|
||||||
mag = dca_dmixtable[((coeff & 63) - 1) << 2];
|
|
||||||
ichan = dca_xxch2index(s, 1 << i);
|
ichan = dca_xxch2index(s, 1 << i);
|
||||||
s->xxch_dmix_coeff[j][ichan] = sign * mag;
|
s->xxch_dmix_coeff[j][ichan] = dca_dmix_code(FFMAX(coeff<<2, 3)-3);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue