[FFmpeg-devel] [PATCH v2 5/5] opus: add a native Opus encoder

Rostislav Pehlivanov atomnuker at gmail.com
Sat Feb 11 17:40:23 EET 2017

On 11 February 2017 at 00:25, Rostislav Pehlivanov <atomnuker at gmail.com>

> 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: Rostislav Pehlivanov <atomnuker at gmail.com>
> ---

I don't free the frame and rc pointers from the main encoder struct on exit,
fixed locally.

More information about the ffmpeg-devel mailing list