Skip to content
Snippets Groups Projects
  1. Jan 27, 2011
    • Jean-Marc Valin's avatar
      Reducing waste at high bit-rate · 8ca16121
      Jean-Marc Valin authored
      We now encode the highest bitrate part of the split first and transfer
      any unused bits to the other part. We use a dead zone of three bits
      to prevent redistributing in cases of random fluctuation (or else
      we will statistically lower the allocation of higher frequencies at
      low-mid bitrates).
      8ca16121
    • Jean-Marc Valin's avatar
      Minor opus_compare fix · c30f8ca6
      Jean-Marc Valin authored
      c30f8ca6
    • Jean-Marc Valin's avatar
      Comparison tool for decoder compliance · 4cd3dd31
      Jean-Marc Valin authored
      4cd3dd31
    • Jean-Marc Valin's avatar
      Fixes fixed-point overflow on really low energy · 79afa9c6
      Jean-Marc Valin authored
      Makes celt_exp2() use Q10 input to avoid problems on very low energy.
      Also makes the pitch downsampling more conservative on gain to avoid
      problems later.
      79afa9c6
    • Jean-Marc Valin's avatar
      02ad779f
    • Timothy B. Terriberry's avatar
      Improve accuracy of update_lowband test. · 045e47ce
      Timothy B. Terriberry authored and Jean-Marc Valin's avatar Jean-Marc Valin committed
      045e47ce
    • Jean-Marc Valin's avatar
      Only allowing silence in non-hybrid mode. · 65d35a35
      Jean-Marc Valin authored
      Also defining a 1-byte packet as triggering the PLC/CNG
      65d35a35
    • 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
    • Jean-Marc Valin's avatar
    • Gregory Maxwell's avatar
  2. Jan 26, 2011
  3. Jan 25, 2011
  4. Jan 24, 2011
  5. Jan 23, 2011
  6. Jan 22, 2011
  7. Jan 21, 2011
  8. Jan 20, 2011
    • Jean-Marc Valin's avatar
      Fixes an irrelevant uninitialized bug · e8a373fd
      Jean-Marc Valin authored
      e8a373fd
    • Timothy B. Terriberry's avatar
      Remove useless ec_dec_tell() call. · a363e395
      Timothy B. Terriberry authored and Jean-Marc Valin's avatar Jean-Marc Valin committed
      a363e395
    • Timothy B. Terriberry's avatar
      Make collapse-detection bitexact. · 21af73eb
      Timothy B. Terriberry authored and Jean-Marc Valin's avatar Jean-Marc Valin committed
      Jean-Marc's original anti-collapse patch used a threshold on the
       content of a decoded band to determine whether or not it should
       be filled with random noise.
      Since this is highly sensitive to the accuracy of the
       implementation, it could lead to significant decoder output
       differences even if decoding error up to that point was relatively
       small.
      
      This patch detects collapsed bands from the output of the vector
       quantizer, using exact integer arithmetic.
      It makes two simplifying assumptions:
       a) If either input to haar1() is non-zero during TF resolution
           adjustments, then the output will be non-zero.
       b) If the content of a block is non-zero in any of the bands that
           are used for folding, then the folded output will be non-zero.
      b) in particular is likely to be false when SPREAD_NONE is used.
      It also ignores the case where mid and side are orthogonal in
       stereo_merge, but this is relatively unlikely.
      This misses just over 3% of the cases that Jean-Marc's anti-collapse
       detection strategy would catch, but does not mis-classify any (all
       detected collapses are true collapses).
      
      This patch overloads the "fill" parameter to mark which blocks have
       non-zero content for folding.
      As a consequence, if a set of blocks on one side of a split has
       collapsed, _no_ folding is done: the result would be zero anyway,
       except for short blocks with SPREAD_AGGRESSIVE that are split down
       to a single block, but a) that means a lot of bits were available
       so a collapse is unlikely and b) anti-collapse can fill the block
       anyway, if it's used.
      This also means that if itheta==0 or itheta==16384, we no longer
       fold at all on that side (even with long blocks), since we'd be
       multiplying the result by zero anyway.
      21af73eb
  9. Jan 18, 2011
Loading