1. 09 Feb, 2011 1 commit
  2. 08 Feb, 2011 1 commit
  3. 06 Feb, 2011 2 commits
    • Timothy B. Terriberry's avatar
      16-bit int fixes. · 285bc372
      Timothy B. Terriberry authored
      This fixes a number of issues for platforms with a 16-bit int, but
       by no means all of them.
      The type change for ec_window (for platforms where sizeof(size_t)==2)
       will break ABI (but not API) compatibility with libsilk and libopus,
       and reduce speed on x86-64, but allows the code to work in real-mode
       DOS without using the huge memory model, which is useful for testing
       16-bit int compliance.
    • Jean-Marc Valin's avatar
  4. 05 Feb, 2011 1 commit
  5. 04 Feb, 2011 7 commits
  6. 03 Feb, 2011 4 commits
  7. 02 Feb, 2011 1 commit
    • Timothy B. Terriberry's avatar
      Increase caps/allocation accuracy. · ce6d0904
      Timothy B. Terriberry authored
      This stores the caps array in 32nd bits/sample instead of 1/2 bits
       scaled by LM and the channel count, which is slightly less
       less accurate for the last two bands, and much more accurate for
       all the other bands.
      A constant offset is subtracted to allow it to represent values
       larger than 255 in 8 bits (the range of unoffset values is
      In addition, this replaces the last modeline in the allocation table
       with the caps array, allowing the initial interpolation to
       allocate 8 bits/sample or more, which was otherwise impossible.
  8. 01 Feb, 2011 2 commits
  9. 31 Jan, 2011 7 commits
  10. 30 Jan, 2011 2 commits
    • Timothy B. Terriberry's avatar
      Use a smarter per-band bitrate cap. · c5643074
      Timothy B. Terriberry authored
      The previous "dumb cap" of (64<<LM)*(C<<BITRES) was not actually
       achievable by many (most) bands, and did not take the cost of
       coding theta for splits into account, and so was too small for some
      This patch adds code to compute a fairly accurate estimate of the
       real maximum per-band rate (an estimate only because of rounding
       effects and the fact that the bit usage for theta is variable),
       which is then truncated and stored in an 8-bit table in the mode.
      This gives improved quality at all rates over 160 kbps/channel,
       prevents bits from being wasted all the way up to 255 kbps/channel
       (the maximum rate allowed, and approximately the maximum number of
       bits that can usefully be used regardless of the allocation), and
       prevents dynalloc and trim from producing enormous waste
       (eliminating the need for encoder logic to prevent this).
    • Jean-Marc Valin's avatar
      Error handling in _create() functions · d6c3d3ce
      Jean-Marc Valin authored
  11. 29 Jan, 2011 2 commits
  12. 28 Jan, 2011 1 commit
  13. 27 Jan, 2011 7 commits
    • Jean-Marc Valin's avatar
      Making anti-collapse a bit more conservative again · 47e905dc
      Jean-Marc Valin authored
      The energy memory can be lowered (not increased) during a transient
    • Jean-Marc Valin's avatar
      Changing some double constants to float · b417d839
      Jean-Marc Valin authored
    • Jean-Marc Valin's avatar
      Adjusting post-filter coefficients to be exact in 13 bit precision. · 61f40418
      Jean-Marc Valin authored
      That way they can be exact in 16 bits once multiplied by the gain
    • 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
    • Timothy B. Terriberry's avatar
      More anti-collapse fixes, as well as a fold fix. · a396e153
      Timothy B. Terriberry authored
      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.
    • Jean-Marc Valin's avatar
    • Gregory Maxwell's avatar
  14. 26 Jan, 2011 2 commits