Skip to content
  • Timothy B. Terriberry's avatar
    More anti-collapse fixes, as well as a fold fix. · a396e153
    Timothy B. Terriberry authored and Jean-Marc Valin's avatar Jean-Marc Valin committed
    This changes folding so that the LCG is never used on transients
     (either short blocks or long blocks with increased time
     resolution), except in the case that there's not enough decoded
     spectrum to fold yet.
    
    It also now only subtracts the anti-collapse bit from the total
     allocation in quant_all_bands() when space has actually been
     reserved for it.
    
    Finally, it cleans up some of the fill and collapse_mask tracking
     (this tracking was originally made intentionally sloppy to save
     work, but then converted to replace the existing fill flag at the
     last minute, which can have a number of logical implications).
    The changes, in particular:
    1) Splits of less than a block now correctly mark the second half
        as filled only if the whole block was filled (previously it
        would also mark it filled if the next block was filled).
    2) Splits of less than a block now correctly mark a block as
        un-collapsed if either half was un-collapsed, instead of marking
        the next block as un-collapsed when the high half was.
    3) The N=2 stereo special case now keeps its fill mask even when
        itheta==16384; previously this would have gotten cleared,
        despite the fact that we fold into the side in this case.
    4) The test against fill for folding now only considers the bits
        corresponding to the current set of blocks.
       Previously it would still fold if any later block was filled.
    5) The collapse mask used for the LCG fold data is now correctly
        initialized when B=16 on platforms with a 16-bit int.
    6) The high bits on a collapse mask are now cleared after the TF
        resolution changes and interleaving at level 0, instead of
        waiting until the very end.
       This prevents extraneous high flags set on mid from being mixed
        into the side flags for mid-side stereo.
    a396e153