1. 30 Dec, 2017 1 commit
  2. 04 Dec, 2017 1 commit
  3. 23 Sep, 2017 1 commit
    • Rostislav Pehlivanov's avatar
      opusenc: implement a psychoacoustic system · 2ad1768c
      Rostislav Pehlivanov authored
      This commit implements a psychoacoustic system for the native Opus
      encoder. Its unlike any other psychoacoustic system known since its
      capable of using a lookahead to make better choices on how to treat the
      current frame and how many bits to allocate for it (and future frames).
      
      Also, whilst the main bulk of the analysis function has to run in a
      single thread, the per-frame anaylsis functions does not modify the main
      psychoacoustic context, so in the future it will be fairly trivial to
      run those as slice threads.
      Signed-off-by: 's avatarRostislav Pehlivanov <atomnuker@gmail.com>
      2ad1768c
  4. 18 Jul, 2017 2 commits
  5. 14 Jul, 2017 1 commit
  6. 13 Jul, 2017 1 commit
  7. 10 Jul, 2017 1 commit
  8. 16 May, 2017 2 commits
  9. 07 Apr, 2017 4 commits
  10. 27 Mar, 2017 1 commit
    • Kyle Swanson's avatar
      libavcodec/opusenc: use correct format specifiers · b12693fa
      Kyle Swanson authored
      Squelches the following compiler warnings:
      
      libavcodec/opusenc.c:1051:16: warning: format specifies type 'long' but
      the argument has type 'long long' [-Wformat]
                     avctx->bit_rate/1000, clipped_rate/1000);
                     ^~~~~~~~~~~~~~~~~~~~
      libavcodec/opusenc.c:1051:38: warning: format specifies type 'long' but
      the argument has type 'long long' [-Wformat]
                     avctx->bit_rate/1000, clipped_rate/1000);
                                           ^~~~~~~~~~~~~~~~~
      b12693fa
  11. 18 Feb, 2017 1 commit
  12. 16 Feb, 2017 1 commit
  13. 15 Feb, 2017 1 commit
  14. 14 Feb, 2017 1 commit
    • Rostislav Pehlivanov's avatar
      opus: add a native Opus encoder · 5f47c85e
      Rostislav Pehlivanov authored
      This marks the first time anyone has written an Opus encoder without
      using any libopus code. The aim of the encoder is to prove how far
      the format can go by writing the craziest encoder for it.
      
      Right now the encoder's basic, it only supports CBR encoding, however
      internally every single feature the CELT layer has is implemented
      (except the pitch pre-filter which needs to work well with the rest of
      whatever gets implemented). Psychoacoustic and rate control systems are
      under development.
      
      The encoder takes in frames of 120 samples and depending on the value of
      opus_delay the plan is to use the extra buffered frames as lookahead.
      Right now the encoder will pick the nearest largest legal frame size and
      won't use the lookahead, but that'll change once there's a
      psychoacoustic system.
      
      Even though its a pretty basic encoder its already outperforming
      any other native encoder FFmpeg has by a huge amount.
      
      The PVQ search algorithm is faster and more accurate than libopus's
      algorithm so the encoder's performance is close to that of libopus
      at zero complexity (libopus has more SIMD).
      The algorithm might be ported to libopus or other codecs using PVQ in
      the future.
      
      The encoder still has a few minor bugs, like desyncs at ultra low
      bitrates (below 9kbps with 20ms frames).
      Signed-off-by: 's avatarRostislav Pehlivanov <atomnuker@gmail.com>
      5f47c85e