1. 05 Feb, 2011 1 commit
  2. 04 Feb, 2011 12 commits
  3. 03 Feb, 2011 13 commits
  4. 02 Feb, 2011 3 commits
  5. 01 Feb, 2011 8 commits
    • Timothy B. Terriberry's avatar
      Limit mode creation to supported modes. · aa6fec66
      Timothy B. Terriberry authored
      We did no real error checking to see if a mode is supported when it
       is created.
      This patch implements checks for Jean-Marc's rules:
      1) A mode must have frames at least 1ms in length (no more than
          1000 per second).
      2) A mode must have shorts of at most 3.33 ms (at least 300 per
      It also adds error checking to dump_modes so we report the error
       instead of crashing when we fail to create a mode.
    • Jean-Marc Valin's avatar
    • Timothy B. Terriberry's avatar
      Add assertions for band size restrictions. · 2799c297
      Timothy B. Terriberry authored
      The way folding is implemented requires two restrictions:
      1. The last band must be the largest (so we can use its size to
       allocate a temporary buffer to handle interleaving/TF changes).
      2. No band can be larger than twice the size of the previous band
       (so that once we have enough data to start folding, we will always
       have enough data to fold).
      Mode creation makes a heuristic attempt to satisfy these
       conditions, but nothing actually guarantees it.
      This adds some asserts to check them during mode creation.
      They current pass for all supported custom modes.
    • Timothy B. Terriberry's avatar
      Don't allow empty eBands. · cb8f366a
      Timothy B. Terriberry authored
      Currently compute_ebands()'s attempts to round bands to even sizes
       and enforce size constraints on consecutive bands can leave some
       bands entirely empty (e.g., Fs=8000, frame_size=64, i=11).
      This adds a simple post-processing loop to remove such bands.
    • Jean-Marc Valin's avatar
    • Jean-Marc Valin's avatar
      Tuning the split threshold · 263e2719
      Jean-Marc Valin authored
    • Timothy B. Terriberry's avatar
      Add a seprate qtheta offset for two-phase stereo. · 411a84fa
      Timothy B. Terriberry authored
      9b34bd83 caused serious regressions for 240-sample frame stereo,
       because the previous qb limit was _always_ hit for two-phase
      Two-phase stereo really does operate with a different model (for
       example, the single bit allocated to the side should really
       probably be thought of as a sign bit for qtheta, but we don't
       count it as part of qtheta's allocation).
      The old code was equivalent to a separate two-phase offset of 12,
       however Greg Maxwell's testing demonstrates that 16 performs
    • Timothy B. Terriberry's avatar
      Adjust the splitting threshold. · 4499263b
      Timothy B. Terriberry authored
      Previously, we would only split a band if it was allocated more than
       32 bits.
      However, the N=4 codebook can only produce about 22.5 bits, and two
       N=2 bands combined can only produce 26 bits, including 8 bits for
       qtheta, so if we wait until we allocate 32, we're guaranteed to fall
      Several of the larger bands come pretty far from filling 32 bits as
       well, though their split versions will.
      Greg Maxwell also suggested adding an offset to the threshold to
       account for the inefficiency of using qtheta compared to another
       VQ dimension.
      This patch uses 1 bit as a placeholder, as it's a clear
       improvement, but we may adjust this later after collecting data on
       more possibilities over more files.
  6. 31 Jan, 2011 3 commits