qdm2: refactor joined stereo support

qdm2 does support only two channels. Loop over the run once.

Reported-by: Mateusz "j00ru" Jurczyk and Gynvael Coldwind
CC: libav-stable@libav.org
(cherry picked from commit adadc3f244)

Signed-off-by: Luca Barbato <lu_zero@gentoo.org>
This commit is contained in:
Luca Barbato
2013-07-09 14:44:02 +02:00
parent c02d4c1a98
commit 160910acdb

View File

@@ -810,7 +810,7 @@ static void synthfilt_build_sb_samples(QDM2Context *q, GetBitContext *gb,
int length, int sb_min, int sb_max) int length, int sb_min, int sb_max)
{ {
int sb, j, k, n, ch, run, channels; int sb, j, k, n, ch, run, channels;
int joined_stereo, zero_encoding, chs; int joined_stereo, zero_encoding;
int type34_first; int type34_first;
float type34_div = 0; float type34_div = 0;
float type34_predictor; float type34_predictor;
@@ -964,16 +964,18 @@ static void synthfilt_build_sb_samples(QDM2Context *q, GetBitContext *gb,
} }
if (joined_stereo) { if (joined_stereo) {
float tmp[10][MPA_MAX_CHANNELS]; for (k = 0; k < run && j + k < 128; k++) {
q->sb_samples[0][j + k][sb] =
for (k = 0; k < run; k++) { q->tone_level[0][sb][(j + k) / 2] * samples[k];
tmp[k][0] = samples[k]; if (q->nb_channels == 2) {
tmp[k][1] = (sign_bits[(j + k) / 8]) ? -samples[k] : samples[k]; if (sign_bits[(j + k) / 8])
q->sb_samples[1][j + k][sb] =
q->tone_level[1][sb][(j + k) / 2] * -samples[k];
else
q->sb_samples[1][j + k][sb] =
q->tone_level[1][sb][(j + k) / 2] * samples[k];
}
} }
for (chs = 0; chs < q->nb_channels; chs++)
for (k = 0; k < run; k++)
if ((j + k) < 128)
q->sb_samples[chs][j + k][sb] = q->tone_level[chs][sb][((j + k)/2)] * tmp[k][chs];
} else { } else {
for (k = 0; k < run; k++) for (k = 0; k < run; k++)
if ((j + k) < 128) if ((j + k) < 128)