Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/quite/celt.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTimothy B. Terriberry <tterribe@xiph.org>2011-01-21 10:08:31 +0300
committerJean-Marc Valin <jean-marc.valin@usherbrooke.ca>2011-01-21 14:53:03 +0300
commit6bdc53b86fc883c0fe63d6e15486eb515d453ce0 (patch)
treed3c19d577493b8fc6c4f929bca787ae118458351 /libcelt/bands.c
parent5da938b2dbe4fa4bd9bf3b81f306f8bb595466b5 (diff)
Fix collapse_masks overflow for mono.
We were always storing collapse_masks[i*C+1], which could have overflowed the buffer on the last band in mono. This also moves the stores outside the conditional, which allows common code to be used for masking the high bits, address generation, etc.
Diffstat (limited to 'libcelt/bands.c')
-rw-r--r--libcelt/bands.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/libcelt/bands.c b/libcelt/bands.c
index 132c9d9..cb4dc5b 100644
--- a/libcelt/bands.c
+++ b/libcelt/bands.c
@@ -1209,14 +1209,14 @@ void quant_all_bands(int encode, const CELTMode *m, int start, int end,
y_cm = quant_band(encode, m, i, Y, NULL, N, b/2, spread, B, intensity, tf_change,
effective_lowband != -1 ? norm2+effective_lowband : NULL, resynth, ec, &remaining_bits, LM,
norm2+M*eBands[i], bandE, 0, seed, Q15ONE, lowband_scratch, y_cm);
- collapse_masks[i*2+0] = (unsigned char)(x_cm&(1<<B)-1);
- collapse_masks[i*2+1] = (unsigned char)(y_cm&(1<<B)-1);
} else {
x_cm = quant_band(encode, m, i, X, Y, N, b, spread, B, intensity, tf_change,
effective_lowband != -1 ? norm+effective_lowband : NULL, resynth, ec, &remaining_bits, LM,
norm+M*eBands[i], bandE, 0, seed, Q15ONE, lowband_scratch, x_cm|y_cm);
- collapse_masks[i*C+1] = collapse_masks[i*C+0] = (unsigned char)(x_cm&(1<<B)-1);
+ y_cm = x_cm;
}
+ collapse_masks[i*C+0] = (unsigned char)(x_cm&(1<<B)-1);
+ collapse_masks[i*C+C-1] = (unsigned char)(y_cm&(1<<B)-1);
balance += pulses[i] + tell;
/* Update the folding position only as long as we have 1 bit/sample depth */