Fix collapse mask tracking for recombine steps.
authorTimothy B. Terriberry <tterribe@xiph.org>
Thu, 3 Feb 2011 09:57:57 +0000 (01:57 -0800)
committerJean-Marc Valin <jean-marc.valin@usherbrooke.ca>
Thu, 3 Feb 2011 11:31:51 +0000 (06:31 -0500)
commit57854e816a261415b07fa032af81bc6673401b04
treec475471c1c55426d099f45df59feb9f683dddac0
parentcf5d3a8cf28d18145424f555b0060e4e9465b1da
Fix collapse mask tracking for recombine steps.

The recombine loop for cm was correct if one started at 1 block,
 but was wrong otherwise (for a test case, convert 2 recombined
 blocks back to 4 with an initial cm of 0x3; the result should be
 0xF, but instead you get 0x7).
The recombine loop for fill was always wrong (for a test case,
 combine 8 blocks down to 1 with an initial fill=0xFE; the low bit
 remains unset).
This now properly interleaves and deinterleaves bits for these
 steps, which avoids declaring collapses (and skipping folding)
 where none, in fact, occurred.
libcelt/bands.c