Skip to content
Snippets Groups Projects
  1. Aug 10, 2015
    • Koen Vos's avatar
      Fix for flutter with FEC · 3499e78b
      Koen Vos authored and Jean-Marc Valin's avatar Jean-Marc Valin committed
      
      The bug was caused by an improper feedback of the per-frame bitrate, causing
      the bitrate to jump up and down from frame to frame, within a packet.
      The patch avoids this, and also gives a slight improvement in general for
      multi-frame packets, even without FEC.
      
      Signed-off-by: default avatarJean-Marc Valin <jmvalin@jmvalin.ca>
      3499e78b
  2. Feb 06, 2014
  3. Nov 18, 2013
  4. Nov 15, 2013
  5. Sep 16, 2013
  6. May 20, 2013
  7. May 08, 2013
    • Timothy B. Terriberry's avatar
      Use dynamic stack allocation in the SILK encoder. · c152d602
      Timothy B. Terriberry authored
      This makes all remaining large stack allocations use the vararray
       macros.
      This continues the work of 6f2d9f50 to allow compiling with
       NONTHREADSAFE_PSEUDOSTACK to move the memory for large buffers
       off the stack for devices where it is very limited.
      
      It also does this for some additional large buffers used by the
       PLC in the decoder.
      c152d602
  8. Oct 11, 2012
  9. Sep 12, 2012
  10. Apr 20, 2012
  11. Mar 08, 2012
  12. Dec 14, 2011
  13. Dec 13, 2011
    • Koen Vos's avatar
      Improves the accuracy such that it matches a float decoder much better · bbfc9c9e
      Koen Vos authored and Jean-Marc Valin's avatar Jean-Marc Valin committed
      bbfc9c9e
    • Koen Vos's avatar
      SILK fixes following last codec WG meeting · bf75c8ec
      Koen Vos authored and Jean-Marc Valin's avatar Jean-Marc Valin committed
      decoder:
      - fixed incorrect scaling of filter states for the smallest quantization
        step sizes
      - NLSF2A now limits the prediction gain of LPC filters
      
      encoder:
      - increased damping of LTP coefficients in LTP analysis
      - increased white noise fraction in noise shaping LPC analysis
      - introduced maximum total prediction gain.  Used by Burg's method to
        exit early if prediction gain is exceeded.  This improves packet
        loss robustness and numerical robustness in Burg's method
      - Prefiltered signal is now in int32 Q10 domain, from int16 Q0
      - Increased max number of iterations in CBR gain control loop from 5 to 6
      - Removed useless code from LTP scaling control
      - Optimization: smarter LPC loop unrolling
      - Switched default win32 compile mode to be floating-point
      
      resampler:
      - made resampler have constant delay of 0.75 ms; removed delay
        compensation from silk code.
      - removed obsolete table entries (~850 Bytes)
      - increased downsampling filter order from 16 to 18/24/36 (depending on
        frequency ratio)
      - reoptimized filter coefficients
      bf75c8ec
  14. Oct 28, 2011
  15. Oct 24, 2011
  16. Oct 22, 2011
  17. Oct 20, 2011
    • Jean-Marc Valin's avatar
      Implements hard CBR for SILK · 294bfec2
      Jean-Marc Valin authored
      This is achieved by running the encoding process in a loop and
      padding when we don't reach the exact rate. It also implements
      VBR-with-cap, which means we no longer need to artificially decrease
      the SILK bandwidth when it's close to the cap.
      294bfec2
  18. Oct 19, 2011
  19. Oct 18, 2011
  20. Oct 17, 2011
    • Timothy B. Terriberry's avatar
      Fix side-channel index for VAD/LBRR flags. · 1e03a6eb
      Timothy B. Terriberry authored and Jean-Marc Valin's avatar Jean-Marc Valin committed
      Neither the encoder nor decoder were incrementing the side-channel
       index for a mid-only frame.
      Unfortunately, they used that index to index the VAD flags and LBRR
       flags.
      This made the VAD flags for the side channel particularly useless,
       as you couldn't tell which frame a flag belonged to without
       decoding most of the packet.
      It also desynched the LBRR information, as look at the wrong LBRR
       flags to decide when it had to code a mid-only flag.
      If some frames were skipped in the side channel, then the last few
       VAD flags and LBRR flags would be garbage, but still get encoded.
      
      This patch fixes this by continuing to increment nFramesDecoded or
       nFramesEncoded, even when skipping a frame in the side channel.
      This makes the side-channel VAD and LBRR flags correspond to the
       correct time periods for frames greater than 20 ms.
      It also fixes a bug where if DTX was not used on the packet where
       the side channel got turned off, it would never get used again
       until the encoder attempted to encode something in the side
       channel again.
      1e03a6eb
    • Timothy B. Terriberry's avatar
      Fix the side frame conditional coding rules. · 53cc1a03
      Timothy B. Terriberry authored and Jean-Marc Valin's avatar Jean-Marc Valin committed
      b24e5746 introduced changes to LastGainIndex which broke
       conditional coding for side frames after a mid-only frame (i.e.,
       in a 60 ms frame where the side is coded, not coded, then coded
       again).
      These rules were a mess in general, however, because the side
       channel state kept a different nFramesDecoded count from the mid
       channel state, and had no way to tell if the prior side frame was
       coded.
      
      This patch attempts to rationalize them by moving the conditional
       coding decision up to the top level, where all this information is
       available.
      The first coded side frame after an uncoded side frame now always
       uses independent coding.
      If such a frame is also not the first side frame in an Opus frame,
       then it doesn't include an LTP scaling parameter (because the LTP
       state is well-defined).
      53cc1a03
  21. Oct 12, 2011
    • Jean-Marc Valin's avatar
      Misc bug fixes · b24e5746
      Jean-Marc Valin authored
      - There was a bug where the decoder resampler was not properly initialized
      when fs_kHz == API_fs_kHz. In that case the resampler would continue to
      upsample, and the output was corrupt.
      
      - The delay value in the decoder was taken from the state before it was
      potentially updated. This caused the decoder to apply the new dalay value one
      frame late
      
      - The encoder and decoder states are now updated more consistently, when
      the sampling rate changes (pesq liked these changes)
      
      - Properly resetting the side channel encoder and decoder for the first
      frame with side coding active again
      
      - Faster updating the "ratio" value in the LR_to_MS() code for large
      prediction values means that for certain extreme/artificial input
      signals the output looks better
      b24e5746
  22. Oct 10, 2011
  23. Oct 09, 2011
  24. Oct 07, 2011
  25. Oct 06, 2011
    • Koen Vos's avatar
      SILK update · 88875669
      Koen Vos authored and Jean-Marc Valin's avatar Jean-Marc Valin committed
      Simplifies mono/stereo switching in SILK
      Fixes a quantization mismatch between encoder and decoder
      Constrains the pitch lags in the same way in the encoder and decoder
      88875669
  26. Oct 05, 2011
  27. Oct 03, 2011
  28. Sep 28, 2011
  29. Sep 27, 2011
  30. Sep 16, 2011
  31. Sep 07, 2011
Loading