opus_encoder_create method

Pointer<OpusEncoder> opus_encoder_create(
  1. int Fs,
  2. int channels,
  3. int application,
  4. Pointer<Int32> error,
)

Allocates and initializes an encoder state. There are three coding modes:

OPUS_APPLICATION_VOIP gives best quality at a given bitrate for voice signals. It enhances the input signal by high-pass filtering and emphasizing formants and harmonics. Optionally it includes in-band forward error correction to protect against packet loss. Use this mode for typical VoIP applications. Because of the enhancement, even at high bitrates the output may sound different from the input.

OPUS_APPLICATION_AUDIO gives best quality at a given bitrate for most non-voice signals like music. Use this mode for music and mixed (music/voice) content, broadcast, and applications requiring less than 15 ms of coding delay.

OPUS_APPLICATION_RESTRICTED_LOWDELAY configures low-delay mode that disables the speech-optimized mode in exchange for slightly reduced delay. This mode can only be set on an newly initialized or freshly reset encoder because it changes the codec delay.

This is useful when the caller knows that the speech-optimized modes will not be needed (use with caution). @param in Fs opus_int32: Sampling rate of input signal (Hz) This must be one of 8000, 12000, 16000, 24000, or 48000. @param in channels int: Number of channels (1 or 2) in input signal @param in application int: Coding mode (@ref OPUS_APPLICATION_VOIP/@ref OPUS_APPLICATION_AUDIO/@ref OPUS_APPLICATION_RESTRICTED_LOWDELAY) @param out error int*: @ref opus_errorcodes @note Regardless of the sampling rate and number channels selected, the Opus encoder can switch to a lower audio bandwidth or number of channels if the bitrate selected is too low. This also means that it is safe to always use 48 kHz stereo input and let the encoder optimize the encoding.

Implementation

ffi.Pointer<OpusEncoder> opus_encoder_create(
  int Fs,
  int channels,
  int application,
  ffi.Pointer<ffi.Int32> error,
) {
  return _opus_encoder_create(Fs, channels, application, error);
}