OpusSharp OpusSharp
OpusSharp OpusSharp
DocFX + Singulink = ♥

Search Results for

    Edit this page

    Class NativeOpus

    Native opus handler that directly calls the exported opus functions. Requires a dynamically loaded library.

    Inheritance
    object
    NativeOpus
    Inherited Members
    object.Equals(object)
    object.Equals(object, object)
    object.GetHashCode()
    object.GetType()
    object.MemberwiseClone()
    object.ReferenceEquals(object, object)
    object.ToString()
    Namespace: OpusSharp.Core
    Assembly: OpusSharp.Core.dll
    Syntax
    public static class NativeOpus

    Methods

    opus_decode(OpusDecoderSafeHandle, byte*, int, short*, int, int)

    Decode an Opus packet.

    Declaration
    public static extern int opus_decode(OpusDecoderSafeHandle st, byte* data, int len, short* pcm, int frame_size, int decode_fec)
    Parameters
    Type Name Description
    OpusDecoderSafeHandle st

    Decoder state.

    byte* data

    Input payload. Use a NULL pointer to indicate packet loss.

    int len

    Number of bytes in payload.

    short* pcm

    Output signal (interleaved if 2 channels). length is frame_sizechannelssizeof(short).

    int frame_size

    Number of samples per channel of available space in pcm. If this is less than the maximum packet duration (120ms; 5760 for 48kHz), this function will not be capable of decoding some packets. In the case of PLC (data==NULL) or FEC (decode_fec=1), then frame_size needs to be exactly the duration of audio that is missing, otherwise the decoder will not be in the optimal state to decode the next incoming packet. For the PLC and FEC cases, frame_size must be a multiple of 2.5 ms.

    int decode_fec

    Flag (0 or 1) to request that any in-band forward error correction data be decoded. If no such data is available, the frame is decoded as if it were lost.

    Returns
    Type Description
    int

    Number of decoded samples or OpusErrorCodes.

    opus_decode_float(OpusDecoderSafeHandle, byte*, int, float*, int, int)

    Decode an Opus packet with floating point output.

    Declaration
    public static extern int opus_decode_float(OpusDecoderSafeHandle st, byte* data, int len, float* pcm, int frame_size, int decode_fec)
    Parameters
    Type Name Description
    OpusDecoderSafeHandle st

    Decoder state.

    byte* data

    Input payload. Use a NULL pointer to indicate packet loss.

    int len

    Number of bytes in payload.

    float* pcm

    Output signal (interleaved if 2 channels). length is frame_sizechannelssizeof(float).

    int frame_size

    Number of samples per channel of available space in pcm. If this is less than the maximum packet duration (120ms; 5760 for 48kHz), this function will not be capable of decoding some packets. In the case of PLC (data==NULL) or FEC (decode_fec=1), then frame_size needs to be exactly the duration of audio that is missing, otherwise the decoder will not be in the optimal state to decode the next incoming packet. For the PLC and FEC cases, frame_size must be a multiple of 2.5 ms.

    int decode_fec

    Flag (0 or 1) to request that any in-band forward error correction data be decoded. If no such data is available the frame is decoded as if it were lost.

    Returns
    Type Description
    int

    Number of decoded samples or OpusErrorCodes

    opus_decoder_create(int, int, int*)

    Allocates and initializes a OpusDecoderSafeHandle state.

    Declaration
    public static extern OpusDecoderSafeHandle opus_decoder_create(int Fs, int channels, int* error)
    Parameters
    Type Name Description
    int Fs

    Sample rate to decode at (Hz). This must be one of 8000, 12000, 16000, 24000, or 48000.

    int channels

    Number of channels (1 or 2) to decode.

    int* error

    OPUS_OK Success or OpusErrorCodes.

    Returns
    Type Description
    OpusDecoderSafeHandle

    OpusDecoderSafeHandle

    opus_decoder_ctl(OpusDecoderSafeHandle, int)

    Perform a CTL function on an OpusDecoderSafeHandle.

    Declaration
    public static extern int opus_decoder_ctl(OpusDecoderSafeHandle st, int request)
    Parameters
    Type Name Description
    OpusDecoderSafeHandle st

    Decoder state.

    int request

    This and all remaining parameters should be replaced by one of the convenience macros in GenericCTL or DecoderCTL.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_decoder_ctl(OpusDecoderSafeHandle, int, int)

    Perform a CTL function on an OpusDecoderSafeHandle.

    Declaration
    public static extern int opus_decoder_ctl(OpusDecoderSafeHandle st, int request, int data)
    Parameters
    Type Name Description
    OpusDecoderSafeHandle st

    Decoder state.

    int request

    This and all remaining parameters should be replaced by one of the convenience macros in GenericCTL or DecoderCTL.

    int data

    The data to input.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_decoder_ctl(OpusDecoderSafeHandle, int, void*)

    Perform a CTL function on an OpusDecoderSafeHandle.

    Declaration
    public static extern int opus_decoder_ctl(OpusDecoderSafeHandle st, int request, void* data)
    Parameters
    Type Name Description
    OpusDecoderSafeHandle st

    Decoder state.

    int request

    This and all remaining parameters should be replaced by one of the convenience macros in GenericCTL or DecoderCTL.

    void* data

    The data to input or output.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_decoder_destroy(IntPtr)

    Frees an OpusDecoderSafeHandle allocated by opus_decoder_create(int, int, int*).

    Declaration
    public static extern void opus_decoder_destroy(IntPtr st)
    Parameters
    Type Name Description
    IntPtr st

    State to be freed.

    opus_decoder_dred_decode(OpusDecoderSafeHandle, OpusDREDSafeHandle, int, short*, int)

    Decode audio from an OpusDREDSafeHandle packet with floating point output.

    Declaration
    public static extern int opus_decoder_dred_decode(OpusDecoderSafeHandle st, OpusDREDSafeHandle dred, int dred_offset, short* pcm, int frame_size)
    Parameters
    Type Name Description
    OpusDecoderSafeHandle st

    Decoder state.

    OpusDREDSafeHandle dred

    DRED state.

    int dred_offset

    position of the redundancy to decode (in samples before the beginning of the real audio data in the packet).

    short* pcm

    Output signal (interleaved if 2 channels). length is frame_sizechannelssizeof(short)

    int frame_size

    Number of samples per channel to decode in pcm. frame_size must be a multiple of 2.5 ms.

    Returns
    Type Description
    int

    Number of decoded samples or OpusErrorCodes.

    opus_decoder_dred_decode_float(OpusDecoderSafeHandle, OpusDREDSafeHandle, int, float*, int)

    Decode audio from an OpusDREDSafeHandle packet with floating point output.

    Declaration
    public static extern int opus_decoder_dred_decode_float(OpusDecoderSafeHandle st, OpusDREDSafeHandle dred, int dred_offset, float* pcm, int frame_size)
    Parameters
    Type Name Description
    OpusDecoderSafeHandle st

    Decoder state.

    OpusDREDSafeHandle dred

    DRED state.

    int dred_offset

    position of the redundancy to decode (in samples before the beginning of the real audio data in the packet).

    float* pcm

    Output signal (interleaved if 2 channels). length is frame_sizechannelssizeof(float).

    int frame_size

    Number of samples per channel to decode in pcm. frame_size must be a multiple of 2.5 ms.

    Returns
    Type Description
    int

    Number of decoded samples or OpusErrorCodes.

    opus_decoder_get_nb_samples(OpusDecoderSafeHandle, byte*, int)

    Gets the number of samples of an Opus packet.

    Declaration
    public static extern int opus_decoder_get_nb_samples(OpusDecoderSafeHandle dec, byte* packet, int len)
    Parameters
    Type Name Description
    OpusDecoderSafeHandle dec

    Decoder state.

    byte* packet

    Opus packet.

    int len

    Length of packet.

    Returns
    Type Description
    int

    Number of samples or OpusErrorCodes.

    opus_decoder_get_size(int)

    Gets the size of an OpusDecoderSafeHandle structure.

    Declaration
    public static extern int opus_decoder_get_size(int channels)
    Parameters
    Type Name Description
    int channels

    Number of channels. This must be 1 or 2.

    Returns
    Type Description
    int

    The size in bytes.

    opus_decoder_init(OpusDecoderSafeHandle, int, int)

    Initializes a previously allocated OpusDecoderSafeHandle state.

    Declaration
    public static extern int opus_decoder_init(OpusDecoderSafeHandle st, int Fs, int channels)
    Parameters
    Type Name Description
    OpusDecoderSafeHandle st

    Decoder state.

    int Fs

    Sampling rate to decode to (Hz). This must be one of 8000, 12000, 16000, 24000, or 48000.

    int channels

    Number of channels (1 or 2) to decode.

    Returns
    Type Description
    int

    OPUS_OK Success or OpusErrorCodes.

    opus_dred_alloc(int*)

    Allocates and initializes a OpusDREDSafeHandle state.

    Declaration
    public static extern OpusDREDSafeHandle opus_dred_alloc(int* error)
    Parameters
    Type Name Description
    int* error

    OPUS_OK Success or OpusErrorCodes.

    Returns
    Type Description
    OpusDREDSafeHandle

    OpusDREDSafeHandle

    opus_dred_decoder_create(int*)

    Allocates and initializes an OpusDREDDecoderSafeHandle state.

    Declaration
    public static extern OpusDREDDecoderSafeHandle opus_dred_decoder_create(int* error)
    Parameters
    Type Name Description
    int* error

    OPUS_OK Success or OpusErrorCodes.

    Returns
    Type Description
    OpusDREDDecoderSafeHandle

    OpusDREDDecoderSafeHandle

    opus_dred_decoder_ctl(OpusDREDDecoderSafeHandle, int)

    Perform a CTL function on an OpusDREDDecoderSafeHandle.

    Declaration
    public static extern int opus_dred_decoder_ctl(OpusDREDDecoderSafeHandle dred_dec, int request)
    Parameters
    Type Name Description
    OpusDREDDecoderSafeHandle dred_dec

    DRED Decoder state.

    int request

    This and all remaining parameters should be replaced by one of the convenience macros in GenericCTL or DecoderCTL.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_dred_decoder_ctl(OpusDREDDecoderSafeHandle, int, void*)

    Perform a CTL function on an OpusDREDDecoderSafeHandle.

    Declaration
    public static extern int opus_dred_decoder_ctl(OpusDREDDecoderSafeHandle dred_dec, int request, void* data)
    Parameters
    Type Name Description
    OpusDREDDecoderSafeHandle dred_dec

    DRED Decoder state.

    int request

    This and all remaining parameters should be replaced by one of the convenience macros in GenericCTL or DecoderCTL.

    void* data

    The data to input or output.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_dred_decoder_destroy(IntPtr)

    Frees an OpusDREDDecoderSafeHandle allocated by opus_dred_decoder_create(int*).

    Declaration
    public static extern void opus_dred_decoder_destroy(IntPtr dec)
    Parameters
    Type Name Description
    IntPtr dec

    State to be freed.

    opus_dred_decoder_get_size()

    Gets the size of an OpusDREDDecoderSafeHandle structure.

    Declaration
    public static extern int opus_dred_decoder_get_size()
    Returns
    Type Description
    int

    The size in bytes.

    opus_dred_decoder_init(OpusDREDDecoderSafeHandle)

    Initializes an OpusDREDDecoderSafeHandle state.

    Declaration
    public static extern int opus_dred_decoder_init(OpusDREDDecoderSafeHandle dec)
    Parameters
    Type Name Description
    OpusDREDDecoderSafeHandle dec

    State to be initialized.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_dred_free(IntPtr)

    Frees an OpusDREDSafeHandle allocated by opus_dred_alloc(int*).

    Declaration
    public static extern void opus_dred_free(IntPtr dec)
    Parameters
    Type Name Description
    IntPtr dec

    State to be freed.

    opus_dred_get_size()

    Gets the size of an OpusDREDSafeHandle structure.

    Declaration
    public static extern int opus_dred_get_size()
    Returns
    Type Description
    int

    The size in bytes.

    opus_dred_parse(OpusDREDDecoderSafeHandle, OpusDREDSafeHandle, byte*, int, int, int, int*, int)

    Decode an Opus DRED packet.

    Declaration
    public static extern int opus_dred_parse(OpusDREDDecoderSafeHandle dred_dec, OpusDREDSafeHandle dred, byte* data, int len, int max_dred_samples, int sampling_rate, int* dred_end, int defer_processing)
    Parameters
    Type Name Description
    OpusDREDDecoderSafeHandle dred_dec

    DRED Decoder state.

    OpusDREDSafeHandle dred

    DRED state.

    byte* data

    Input payload.

    int len

    Number of bytes in payload.

    int max_dred_samples

    Maximum number of DRED samples that may be needed (if available in the packet).

    int sampling_rate

    Sampling rate used for max_dred_samples argument. Needs not match the actual sampling rate of the decoder.

    int* dred_end

    Number of non-encoded (silence) samples between the DRED timestamp and the last DRED sample.

    int defer_processing

    Flag (0 or 1). If set to one, the CPU-intensive part of the DRED decoding is deferred until opus_dred_process(OpusDREDDecoderSafeHandle, OpusDREDSafeHandle, OpusDREDSafeHandle) is called.

    Returns
    Type Description
    int

    Offset (positive) of the first decoded DRED samples, zero if no DRED is present, or OpusErrorCodes

    opus_dred_process(OpusDREDDecoderSafeHandle, OpusDREDSafeHandle, OpusDREDSafeHandle)

    Finish decoding an OpusDREDSafeHandle packet.

    Declaration
    public static extern int opus_dred_process(OpusDREDDecoderSafeHandle dred_dec, OpusDREDSafeHandle src, OpusDREDSafeHandle dst)
    Parameters
    Type Name Description
    OpusDREDDecoderSafeHandle dred_dec

    DRED Decoder state.

    OpusDREDSafeHandle src

    Source DRED state to start the processing from.

    OpusDREDSafeHandle dst

    Destination DRED state to store the updated state after processing.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_encode(OpusEncoderSafeHandle, short*, int, byte*, int)

    Encodes an Opus frame.

    Declaration
    public static extern int opus_encode(OpusEncoderSafeHandle st, short* pcm, int frame_size, byte* data, int max_data_bytes)
    Parameters
    Type Name Description
    OpusEncoderSafeHandle st

    Encoder state.

    short* pcm

    Input signal (interleaved if 2 channels). length is frame_sizechannelssizeof(short)

    int frame_size

    Number of samples per channel in the input signal. This must be an Opus frame size for the encoder's sampling rate. For example, at 48 kHz the permitted values are 120, 240, 480, 960, 1920, and 2880. Passing in a duration of less than 10 ms (480 samples at 48 kHz) will prevent the encoder from using the LPC or hybrid modes.

    byte* data

    Output payload. This must contain storage for at least max_data_bytes.

    int max_data_bytes

    Size of the allocated memory for the output payload. This may be used to impose an upper limit on the instant bitrate, but should not be used as the only bitrate control. Use OPUS_SET_BITRATE to control the bitrate.

    Returns
    Type Description
    int

    The length of the encoded packet (in bytes) on success or a negative error code (see OpusErrorCodes) on failure.

    opus_encode_float(OpusEncoderSafeHandle, float*, int, byte*, int)

    Encodes an Opus frame from floating point input.

    Declaration
    public static extern int opus_encode_float(OpusEncoderSafeHandle st, float* pcm, int frame_size, byte* data, int max_data_bytes)
    Parameters
    Type Name Description
    OpusEncoderSafeHandle st

    Encoder state.

    float* pcm

    Input in float format (interleaved if 2 channels), with a normal range of +/-1.0. Samples with a range beyond +/-1.0 are supported but will be clipped by decoders using the integer API and should only be used if it is known that the far end supports extended dynamic range. length is frame_sizechannelssizeof(float)

    int frame_size

    Number of samples per channel in the input signal. This must be an Opus frame size for the encoder's sampling rate. For example, at 48 kHz the permitted values are 120, 240, 480, 960, 1920, and 2880. Passing in a duration of less than 10 ms (480 samples at 48 kHz) will prevent the encoder from using the LPC or hybrid modes.

    byte* data

    Output payload. This must contain storage for at least max_data_bytes.

    int max_data_bytes

    Size of the allocated memory for the output payload. This may be used to impose an upper limit on the instant bitrate, but should not be used as the only bitrate control. Use OPUS_SET_BITRATE to control the bitrate.

    Returns
    Type Description
    int

    The length of the encoded packet (in bytes) on success or a negative error code (see OpusErrorCodes) on failure.

    opus_encoder_create(int, int, int, int*)

    Allocates and initializes an encoder state.

    Declaration
    public static extern OpusEncoderSafeHandle opus_encoder_create(int Fs, int channels, int application, int* error)
    Parameters
    Type Name Description
    int Fs

    Sampling rate of input signal (Hz) This must be one of 8000, 12000, 16000, 24000, or 48000.

    int channels

    Number of channels (1 or 2) in input signal.

    int application

    Coding mode (one of OPUS_APPLICATION_VOIP, OPUS_APPLICATION_AUDIO or OPUS_APPLICATION_RESTRICTED_LOWDELAY)

    int* error

    OPUS_OK Success or OpusErrorCodes.

    Returns
    Type Description
    OpusEncoderSafeHandle

    OpusEncoderSafeHandle

    opus_encoder_ctl(OpusEncoderSafeHandle, int)

    Perform a CTL function on an OpusEncoderSafeHandle.

    Declaration
    public static extern int opus_encoder_ctl(OpusEncoderSafeHandle st, int request)
    Parameters
    Type Name Description
    OpusEncoderSafeHandle st

    Encoder state.

    int request

    This and all remaining parameters should be replaced by one of the convenience macros in GenericCTL or EncoderCTL.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_encoder_ctl(OpusEncoderSafeHandle, int, int)

    Perform a CTL function on an OpusEncoderSafeHandle.

    Declaration
    public static extern int opus_encoder_ctl(OpusEncoderSafeHandle st, int request, int data)
    Parameters
    Type Name Description
    OpusEncoderSafeHandle st

    Encoder state.

    int request

    This and all remaining parameters should be replaced by one of the convenience macros in GenericCTL or EncoderCTL.

    int data

    The data to input.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_encoder_ctl(OpusEncoderSafeHandle, int, int, void*)

    Perform a CTL function on an Opus encoder.

    Declaration
    public static extern int opus_encoder_ctl(OpusEncoderSafeHandle st, int request, int data, void* data2)
    Parameters
    Type Name Description
    OpusEncoderSafeHandle st

    Encoder state.

    int request

    This and all remaining parameters should be replaced by one of the convenience macros in GenericCTL or EncoderCTL.

    int data

    The data to input.

    void* data2

    The second data to input/output.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_encoder_ctl(OpusEncoderSafeHandle, int, void*)

    Perform a CTL function on an OpusEncoderSafeHandle.

    Declaration
    public static extern int opus_encoder_ctl(OpusEncoderSafeHandle st, int request, void* data)
    Parameters
    Type Name Description
    OpusEncoderSafeHandle st

    Encoder state.

    int request

    This and all remaining parameters should be replaced by one of the convenience macros in GenericCTL or EncoderCTL.

    void* data

    The data to input/output.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_encoder_ctl(OpusEncoderSafeHandle, int, void*, int)

    Perform a CTL function on an Opus encoder.

    Declaration
    public static extern int opus_encoder_ctl(OpusEncoderSafeHandle st, int request, void* data, int data2)
    Parameters
    Type Name Description
    OpusEncoderSafeHandle st

    Encoder state.

    int request

    This and all remaining parameters should be replaced by one of the convenience macros in GenericCTL or EncoderCTL.

    void* data

    The data to input/output.

    int data2

    The second data to input.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_encoder_ctl(OpusEncoderSafeHandle, int, void*, void*)

    Perform a CTL function on an Opus encoder.

    Declaration
    public static extern int opus_encoder_ctl(OpusEncoderSafeHandle st, int request, void* data, void* data2)
    Parameters
    Type Name Description
    OpusEncoderSafeHandle st

    Encoder state.

    int request

    This and all remaining parameters should be replaced by one of the convenience macros in GenericCTL or EncoderCTL.

    void* data

    The data to input/output.

    void* data2

    The second data to input/output.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_encoder_destroy(IntPtr)

    Frees an OpusEncoderSafeHandle allocated by opus_encoder_create(int, int, int, int*).

    Declaration
    public static extern void opus_encoder_destroy(IntPtr st)
    Parameters
    Type Name Description
    IntPtr st

    State to be freed.

    opus_encoder_get_size(int)

    Gets the size of an OpusEncoderSafeHandle structure.

    Declaration
    public static extern int opus_encoder_get_size(int channels)
    Parameters
    Type Name Description
    int channels

    Number of channels. This must be 1 or 2.

    Returns
    Type Description
    int

    The size in bytes.

    opus_encoder_init(OpusEncoderSafeHandle, int, int, int)

    Initializes a previously allocated OpusEncoderSafeHandle state. The memory pointed to by st must be at least the size returned by opus_encoder_get_size(int).

    Declaration
    public static extern int opus_encoder_init(OpusEncoderSafeHandle st, int Fs, int channels, int application)
    Parameters
    Type Name Description
    OpusEncoderSafeHandle st

    Encoder state.

    int Fs

    Sampling rate of input signal (Hz) This must be one of 8000, 12000, 16000, 24000, or 48000.

    int channels

    Number of channels (1 or 2) in input signal.

    int application

    Coding mode (one of OPUS_APPLICATION_VOIP, OPUS_APPLICATION_AUDIO or OPUS_APPLICATION_RESTRICTED_LOWDELAY)

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_get_version_string()

    Gets the libopus version string.

    Declaration
    public static extern byte* opus_get_version_string()
    Returns
    Type Description
    byte*

    Version string

    opus_multistream_decode(OpusMSDecoderSafeHandle, byte*, int, short*, int, int)

    Decode a multistream Opus packet.

    Declaration
    public static extern int opus_multistream_decode(OpusMSDecoderSafeHandle st, byte* data, int len, short* pcm, int frame_size, int decode_fec)
    Parameters
    Type Name Description
    OpusMSDecoderSafeHandle st

    Multistream decoder state.

    byte* data

    Input payload. Use a NULL pointer to indicate packet loss.

    int len

    Number of bytes in payload.

    short* pcm

    Output signal, with interleaved samples. This must contain room for frame_size*channels samples.

    int frame_size

    The number of samples per channel of available space in pcm. If this is less than the maximum packet duration (120 ms; 5760 for 48kHz), this function will not be capable of decoding some packets. In the case of PLC (data==NULL) or FEC (decode_fec=1), then frame_size needs to be exactly the duration of audio that is missing, otherwise the decoder will not be in the optimal state to decode the next incoming packet. For the PLC and FEC cases, frame_size must be a multiple of 2.5 ms.

    int decode_fec

    Flag (0 or 1) to request that any in-band forward error correction data be decoded. If no such data is available, the frame is decoded as if it were lost.

    Returns
    Type Description
    int

    Number of samples decoded on success or a negative error code (see OpusErrorCodes) on failure.

    opus_multistream_decode_float(OpusMSDecoderSafeHandle, byte*, int, float*, int, int)

    Decode a multistream Opus packet with floating point output.

    Declaration
    public static extern int opus_multistream_decode_float(OpusMSDecoderSafeHandle st, byte* data, int len, float* pcm, int frame_size, int decode_fec)
    Parameters
    Type Name Description
    OpusMSDecoderSafeHandle st

    Multistream decoder state.

    byte* data

    Input payload. Use a NULL pointer to indicate packet loss.

    int len

    Number of bytes in payload.

    float* pcm

    Output signal, with interleaved samples. This must contain room for frame_size*channels samples.

    int frame_size

    The number of samples per channel of available space in pcm. If this is less than the maximum packet duration (120 ms; 5760 for 48kHz), this function will not be capable of decoding some packets. In the case of PLC (data==NULL) or FEC (decode_fec=1), then frame_size needs to be exactly the duration of audio that is missing, otherwise the decoder will not be in the optimal state to decode the next incoming packet. For the PLC and FEC cases, frame_size must be a multiple of 2.5 ms.

    int decode_fec

    Flag (0 or 1) to request that any in-band forward error correction data be decoded. If no such data is available, the frame is decoded as if it were lost.

    Returns
    Type Description
    int

    Number of samples decoded on success or a negative error code (see OpusErrorCodes) on failure.

    opus_multistream_decoder_create(int, int, int, int, byte*, int*)

    Allocates and initializes a OpusMSDecoderSafeHandle state.

    Declaration
    public static extern OpusMSDecoderSafeHandle opus_multistream_decoder_create(int Fs, int channels, int streams, int coupled_streams, byte* mapping, int* error)
    Parameters
    Type Name Description
    int Fs

    Sampling rate to decode at (in Hz). This must be one of 8000, 12000, 16000, 24000, or 48000.

    int channels

    Number of channels to output. This must be at most 255. It may be different from the number of coded channels (streams + coupled_streams).

    int streams

    The total number of streams coded in the input. This must be no more than 255.

    int coupled_streams

    Number of streams to decode as coupled (2 channel) streams. This must be no larger than the total number of streams. Additionally, The total number of coded channels (streams + coupled_streams) must be no more than 255.

    byte* mapping

    Mapping from coded channels to output channels, as described in Opus Multistream API.

    int* error

    Returns OPUS_OK on success, or an error code (see OpusErrorCodes) on failure.

    Returns
    Type Description
    OpusMSDecoderSafeHandle

    OpusMSDecoderSafeHandle

    opus_multistream_decoder_ctl(OpusMSDecoderSafeHandle, int)

    Perform a CTL function on a OpusMSEncoderSafeHandle.

    Declaration
    public static extern int opus_multistream_decoder_ctl(OpusMSDecoderSafeHandle st, int request)
    Parameters
    Type Name Description
    OpusMSDecoderSafeHandle st

    Multistream decoder state.

    int request

    This and all remaining parameters should be replaced by one of the convenience macros in GenericCTL, DecoderCTL, or MultistreamCTL specific encoder and decoder CTLs.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_multistream_decoder_ctl(OpusMSDecoderSafeHandle, int, int)

    Perform a CTL function on a OpusMSEncoderSafeHandle.

    Declaration
    public static extern int opus_multistream_decoder_ctl(OpusMSDecoderSafeHandle st, int request, int data)
    Parameters
    Type Name Description
    OpusMSDecoderSafeHandle st

    Multistream decoder state.

    int request

    This and all remaining parameters should be replaced by one of the convenience macros in GenericCTL, DecoderCTL, or MultistreamCTL specific encoder and decoder CTLs.

    int data

    The input data.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_multistream_decoder_ctl(OpusMSDecoderSafeHandle, int, void*)

    Perform a CTL function on a OpusMSEncoderSafeHandle.

    Declaration
    public static extern int opus_multistream_decoder_ctl(OpusMSDecoderSafeHandle st, int request, void* data)
    Parameters
    Type Name Description
    OpusMSDecoderSafeHandle st

    Multistream decoder state.

    int request

    This and all remaining parameters should be replaced by one of the convenience macros in GenericCTL, DecoderCTL, or MultistreamCTL specific encoder and decoder CTLs.

    void* data

    The input/output data.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_multistream_decoder_destroy(IntPtr)

    Frees an OpusMSDecoderSafeHandle allocated by opus_multistream_decoder_create(int, int, int, int, byte*, int*).

    Declaration
    public static extern void opus_multistream_decoder_destroy(IntPtr st)
    Parameters
    Type Name Description
    IntPtr st

    Multistream decoder state to be freed.

    opus_multistream_decoder_get_size(int, int)

    Gets the size of an OpusMSDecoderSafeHandle structure.

    Declaration
    public static extern int opus_multistream_decoder_get_size(int streams, int coupled_streams)
    Parameters
    Type Name Description
    int streams

    The total number of streams coded in the input. This must be no more than 255.

    int coupled_streams

    Number streams to decode as coupled (2 channel) streams. This must be no larger than the total number of streams. Additionally, The total number of coded channels (streams + coupled_streams) must be no more than 255.

    Returns
    Type Description
    int

    The size in bytes on success, or a negative error code (see OpusErrorCodes) on error.

    opus_multistream_decoder_init(OpusMSDecoderSafeHandle, int, int, int, int, byte*)

    Initialize a previously allocated OpusMSDecoderSafeHandle state object.

    Declaration
    public static extern int opus_multistream_decoder_init(OpusMSDecoderSafeHandle st, int Fs, int channels, int streams, int coupled_streams, byte* mapping)
    Parameters
    Type Name Description
    OpusMSDecoderSafeHandle st

    Multistream encoder state to initialize.

    int Fs

    Sampling rate to decode at (in Hz). This must be one of 8000, 12000, 16000, 24000, or 48000.

    int channels

    Number of channels to output. This must be at most 255. It may be different from the number of coded channels (streams + coupled_streams).

    int streams

    The total number of streams coded in the input. This must be no more than 255.

    int coupled_streams

    Number of streams to decode as coupled (2 channel) streams. This must be no larger than the total number of streams. Additionally, The total number of coded channels (streams + coupled_streams) must be no more than 255.

    byte* mapping

    Mapping from coded channels to output channels, as described in Opus Multistream API.

    Returns
    Type Description
    int

    OPUS_OK on success, or an error code (see OpusErrorCodes) on failure.

    opus_multistream_encode(OpusMSEncoderSafeHandle, short*, int, byte*, int)

    Encodes a multistream Opus frame.

    Declaration
    public static extern int opus_multistream_encode(OpusMSEncoderSafeHandle st, short* pcm, int frame_size, byte* data, int max_data_bytes)
    Parameters
    Type Name Description
    OpusMSEncoderSafeHandle st

    Multistream encoder state.

    short* pcm

    The input signal as interleaved samples. This must contain frame_size*channels samples.

    int frame_size

    Number of samples per channel in the input signal. This must be an Opus frame size for the encoder's sampling rate. For example, at 48 kHz the permitted values are 120, 240, 480, 960, 1920, and 2880. Passing in a duration of less than 10 ms (480 samples at 48 kHz) will prevent the encoder from using the LPC or hybrid modes.

    byte* data

    Output payload. This must contain storage for at least max_data_bytes.

    int max_data_bytes

    Size of the allocated memory for the output payload. This may be used to impose an upper limit on the instant bitrate, but should not be used as the only bitrate control. Use OPUS_SET_BITRATE to control the bitrate.

    Returns
    Type Description
    int

    The length of the encoded packet (in bytes) on success or a negative error code (see OpusErrorCodes) on failure.

    opus_multistream_encode_float(OpusMSEncoderSafeHandle, float*, int, byte*, int)

    Encodes a multistream Opus frame from floating point input.

    Declaration
    public static extern int opus_multistream_encode_float(OpusMSEncoderSafeHandle st, float* pcm, int frame_size, byte* data, int max_data_bytes)
    Parameters
    Type Name Description
    OpusMSEncoderSafeHandle st

    Multistream encoder state.

    float* pcm

    The input signal as interleaved samples with a normal range of +/-1.0. Samples with a range beyond +/-1.0 are supported but will be clipped by decoders using the integer API and should only be used if it is known that the far end supports extended dynamic range. This must contain frame_size*channels samples.

    int frame_size

    Number of samples per channel in the input signal. This must be an Opus frame size for the encoder's sampling rate. For example, at 48 kHz the permitted values are 120, 240, 480, 960, 1920, and 2880. Passing in a duration of less than 10 ms (480 samples at 48 kHz) will prevent the encoder from using the LPC or hybrid modes.

    byte* data

    Output payload. This must contain storage for at least max_data_bytes.

    int max_data_bytes

    Size of the allocated memory for the output payload. This may be used to impose an upper limit on the instant bitrate, but should not be used as the only bitrate control. Use OPUS_SET_BITRATE to control the bitrate.

    Returns
    Type Description
    int

    The length of the encoded packet (in bytes) on success or a negative error code (see OpusErrorCodes) on failure.

    opus_multistream_encoder_create(int, int, int, int, byte*, int, int*)

    Allocates and initializes a OpusMSEncoderSafeHandle state.

    Declaration
    public static extern OpusMSEncoderSafeHandle opus_multistream_encoder_create(int Fs, int channels, int streams, int coupled_streams, byte* mapping, int application, int* error)
    Parameters
    Type Name Description
    int Fs

    Sampling rate of the input signal (in Hz). This must be one of 8000, 12000, 16000, 24000, or 48000.

    int channels

    Number of channels in the input signal. This must be at most 255. It may be greater than the number of coded channels (streams + coupled_streams).

    int streams

    The total number of streams to encode from the input. This must be no more than the number of channels.

    int coupled_streams

    Number of coupled (2 channel) streams to encode. This must be no larger than the total number of streams. Additionally, The total number of encoded channels (streams + coupled_streams) must be no more than the number of input channels.

    byte* mapping

    Mapping from encoded channels to input channels, as described in Opus Multistream API. As an extra constraint, the multistream encoder does not allow encoding coupled streams for which one channel is unused since this is never a good idea.

    int application

    The target encoder application. This must be one of the following: OPUS_APPLICATION_VOIP, OPUS_APPLICATION_AUDIO or OPUS_APPLICATION_RESTRICTED_LOWDELAY.

    int* error

    Returns OPUS_OK on success, or an error code (see OpusErrorCodes) on failure.

    Returns
    Type Description
    OpusMSEncoderSafeHandle

    OpusMSEncoderSafeHandle

    opus_multistream_encoder_ctl(OpusMSEncoderSafeHandle, int)

    Perform a CTL function on a OpusMSEncoderSafeHandle.

    Declaration
    public static extern int opus_multistream_encoder_ctl(OpusMSEncoderSafeHandle st, int request)
    Parameters
    Type Name Description
    OpusMSEncoderSafeHandle st

    Multistream encoder state.

    int request

    This and all remaining parameters should be replaced by one of the convenience macros in GenericCTL, EncoderCTL, or MultistreamCTL specific encoder and decoder CTLs.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_multistream_encoder_ctl(OpusMSEncoderSafeHandle, int, int)

    Perform a CTL function on a OpusMSEncoderSafeHandle.

    Declaration
    public static extern int opus_multistream_encoder_ctl(OpusMSEncoderSafeHandle st, int request, int data)
    Parameters
    Type Name Description
    OpusMSEncoderSafeHandle st

    Multistream encoder state.

    int request

    This and all remaining parameters should be replaced by one of the convenience macros in GenericCTL, EncoderCTL, or MultistreamCTL specific encoder and decoder CTLs.

    int data

    The input data.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_multistream_encoder_ctl(OpusMSEncoderSafeHandle, int, int, void*)

    Perform a CTL function on a OpusMSEncoderSafeHandle.

    Declaration
    public static extern int opus_multistream_encoder_ctl(OpusMSEncoderSafeHandle st, int request, int data, void* data2)
    Parameters
    Type Name Description
    OpusMSEncoderSafeHandle st

    Multistream encoder state.

    int request

    This and all remaining parameters should be replaced by one of the convenience macros in GenericCTL, EncoderCTL, or MultistreamCTL specific encoder and decoder CTLs.

    int data

    The input data.

    void* data2

    The input/output data.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_multistream_encoder_ctl(OpusMSEncoderSafeHandle, int, void*)

    Perform a CTL function on a OpusMSEncoderSafeHandle.

    Declaration
    public static extern int opus_multistream_encoder_ctl(OpusMSEncoderSafeHandle st, int request, void* data)
    Parameters
    Type Name Description
    OpusMSEncoderSafeHandle st

    Multistream encoder state.

    int request

    This and all remaining parameters should be replaced by one of the convenience macros in GenericCTL, EncoderCTL, or MultistreamCTL specific encoder and decoder CTLs.

    void* data

    The input/output data.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_multistream_encoder_ctl(OpusMSEncoderSafeHandle, int, void*, int)

    Perform a CTL function on a OpusMSEncoderSafeHandle.

    Declaration
    public static extern int opus_multistream_encoder_ctl(OpusMSEncoderSafeHandle st, int request, void* data, int data2)
    Parameters
    Type Name Description
    OpusMSEncoderSafeHandle st

    Multistream encoder state.

    int request

    This and all remaining parameters should be replaced by one of the convenience macros in GenericCTL, EncoderCTL, or MultistreamCTL specific encoder and decoder CTLs.

    void* data

    The input/output data.

    int data2

    The input data.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_multistream_encoder_ctl(OpusMSEncoderSafeHandle, int, void*, void*)

    Perform a CTL function on a OpusMSEncoderSafeHandle.

    Declaration
    public static extern int opus_multistream_encoder_ctl(OpusMSEncoderSafeHandle st, int request, void* data, void* data2)
    Parameters
    Type Name Description
    OpusMSEncoderSafeHandle st

    Multistream encoder state.

    int request

    This and all remaining parameters should be replaced by one of the convenience macros in GenericCTL, EncoderCTL, or MultistreamCTL specific encoder and decoder CTLs.

    void* data

    The input/output data.

    void* data2

    The input/output data.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_multistream_encoder_destroy(IntPtr)

    Frees an OpusMSEncoderSafeHandle allocated by opus_multistream_encoder_create(int, int, int, int, byte*, int, int*).

    Declaration
    public static extern void opus_multistream_encoder_destroy(IntPtr st)
    Parameters
    Type Name Description
    IntPtr st

    Multistream encoder state to be freed.

    opus_multistream_encoder_get_size(int, int)

    Gets the size of an OpusMSEncoderSafeHandle structure.

    Declaration
    public static extern int opus_multistream_encoder_get_size(int streams, int coupled_streams)
    Parameters
    Type Name Description
    int streams

    The total number of streams to encode from the input. This must be no more than 255.

    int coupled_streams

    Number of coupled (2 channel) streams to encode. This must be no larger than the total number of streams. Additionally, The total number of encoded channels (streams + coupled_streams) must be no more than 255.

    Returns
    Type Description
    int

    The size in bytes on success, or a negative error code (see OpusErrorCodes) on error.

    opus_multistream_encoder_init(OpusMSEncoderSafeHandle, int, int, int, int, byte*, int)

    Initialize a previously allocated OpusMSEncoderSafeHandle state.

    Declaration
    public static extern int opus_multistream_encoder_init(OpusMSEncoderSafeHandle st, int Fs, int channels, int streams, int coupled_streams, byte* mapping, int application)
    Parameters
    Type Name Description
    OpusMSEncoderSafeHandle st

    Multistream encoder state to initialize.

    int Fs

    Sampling rate of the input signal (in Hz). This must be one of 8000, 12000, 16000, 24000, or 48000.

    int channels

    Number of channels in the input signal. This must be at most 255. It may be greater than the number of coded channels (streams + coupled_streams).

    int streams

    The total number of streams to encode from the input. This must be no more than the number of channels.

    int coupled_streams

    Number of coupled (2 channel) streams to encode. This must be no larger than the total number of streams. Additionally, The total number of encoded channels (streams + coupled_streams) must be no more than the number of input channels.

    byte* mapping

    Mapping from encoded channels to input channels, as described in Opus Multistream API. As an extra constraint, the multistream encoder does not allow encoding coupled streams for which one channel is unused since this is never a good idea.

    int application

    The target encoder application. This must be one of the following: OPUS_APPLICATION_VOIP, OPUS_APPLICATION_AUDIO or OPUS_APPLICATION_RESTRICTED_LOWDELAY.

    Returns
    Type Description
    int

    OPUS_OK on success, or an error code (see OpusErrorCodes) on failure.

    opus_multistream_packet_pad(byte*, int, int, int)

    Pads a given Opus multi-stream packet to a larger size (possibly changing the TOC sequence).

    Declaration
    public static extern int opus_multistream_packet_pad(byte* data, int len, int new_len, int nb_streams)
    Parameters
    Type Name Description
    byte* data

    The buffer containing the packet to pad.

    int len

    The size of the packet. This must be at least 1.

    int new_len

    The desired size of the packet after padding. This must be at least 1.

    int nb_streams

    The number of streams (not channels) in the packet. This must be at least as large as len.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_multistream_packet_unpad(byte*, int, int)

    Remove all padding from a given Opus multi-stream packet and rewrite the TOC sequence to minimize space usage.

    Declaration
    public static extern int opus_multistream_packet_unpad(byte* data, int len, int nb_streams)
    Parameters
    Type Name Description
    byte* data

    The buffer containing the packet to strip.

    int len

    The size of the packet. This must be at least 1.

    int nb_streams

    The number of streams (not channels) in the packet. This must be at least 1.

    Returns
    Type Description
    int

    The new size of the output packet on success, or an OpusErrorCodes on failure.

    opus_multistream_surround_encoder_create(int, int, int, int*, int*, byte*, int, int*)

    N.A.

    Declaration
    public static extern OpusMSEncoderSafeHandle opus_multistream_surround_encoder_create(int Fs, int channels, int mapping_family, int* streams, int* coupled_streams, byte* mapping, int application, int* error)
    Parameters
    Type Name Description
    int Fs
    int channels
    int mapping_family
    int* streams
    int* coupled_streams
    byte* mapping
    int application
    int* error
    Returns
    Type Description
    OpusMSEncoderSafeHandle

    opus_multistream_surround_encoder_get_size(int, int)

    N.A.

    Declaration
    public static extern int opus_multistream_surround_encoder_get_size(int channels, int mapping_family)
    Parameters
    Type Name Description
    int channels
    int mapping_family
    Returns
    Type Description
    int

    opus_multistream_surround_encoder_init(OpusMSEncoderSafeHandle, int, int, int, int*, int*, byte*, int)

    N.A.

    Declaration
    public static extern int opus_multistream_surround_encoder_init(OpusMSEncoderSafeHandle st, int Fs, int channels, int mapping_family, int* streams, int* coupled_streams, byte* mapping, int application)
    Parameters
    Type Name Description
    OpusMSEncoderSafeHandle st
    int Fs
    int channels
    int mapping_family
    int* streams
    int* coupled_streams
    byte* mapping
    int application
    Returns
    Type Description
    int

    opus_packet_get_bandwidth(byte*)

    Gets the bandwidth of an Opus packet.

    Declaration
    public static extern int opus_packet_get_bandwidth(byte* data)
    Parameters
    Type Name Description
    byte* data

    Opus packet.

    Returns
    Type Description
    int

    OpusPredefinedValues or OpusErrorCodes

    opus_packet_get_nb_channels(byte*)

    Gets the number of channels from an Opus packet.

    Declaration
    public static extern int opus_packet_get_nb_channels(byte* data)
    Parameters
    Type Name Description
    byte* data

    Opus packet.

    Returns
    Type Description
    int

    Number of channels or OpusErrorCodes.

    opus_packet_get_nb_frames(byte*, int)

    Gets the number of frames in an Opus packet.

    Declaration
    public static extern int opus_packet_get_nb_frames(byte* packet, int len)
    Parameters
    Type Name Description
    byte* packet

    Opus packet.

    int len

    Length of packet.

    Returns
    Type Description
    int

    Number of frames or OpusErrorCodes.

    opus_packet_get_nb_samples(byte*, int, int)

    Gets the number of samples of an Opus packet.

    Declaration
    public static extern int opus_packet_get_nb_samples(byte* packet, int len, int Fs)
    Parameters
    Type Name Description
    byte* packet

    Opus packet.

    int len

    Length of packet.

    int Fs

    Sampling rate in Hz. This must be a multiple of 400, or inaccurate results will be returned.

    Returns
    Type Description
    int

    Number of samples or OpusErrorCodes.

    opus_packet_get_samples_per_frame(byte*, int)

    Gets the number of samples per frame from an Opus packet.

    Declaration
    public static extern int opus_packet_get_samples_per_frame(byte* data, int Fs)
    Parameters
    Type Name Description
    byte* data

    Opus packet. This must contain at least one byte of data.

    int Fs

    Sampling rate in Hz. This must be a multiple of 400, or inaccurate results will be returned.

    Returns
    Type Description
    int

    Number of samples per frame.

    opus_packet_has_lbrr(byte*, int)

    Checks whether an Opus packet has LBRR.

    Declaration
    public static extern int opus_packet_has_lbrr(byte* packet, int len)
    Parameters
    Type Name Description
    byte* packet

    Opus packet.

    int len

    Length of packet.

    Returns
    Type Description
    int

    1 is LBRR is present, 0 otherwise or OpusErrorCodes

    opus_packet_pad(byte*, int, int)

    Pads a given Opus packet to a larger size (possibly changing the TOC sequence).

    Declaration
    public static extern int opus_packet_pad(byte* data, int len, int new_len)
    Parameters
    Type Name Description
    byte* data

    The buffer containing the packet to pad.

    int len

    The size of the packet. This must be at least 1.

    int new_len

    The desired size of the packet after padding. This must be at least as large as len.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_packet_parse(byte*, int, byte*, byte*[], short[], int*)

    Parse an opus packet into one or more frames.

    Declaration
    public static extern int opus_packet_parse(byte* data, int len, byte* out_toc, byte*[] frames, short[] size, int* payload_offset)
    Parameters
    Type Name Description
    byte* data

    Opus packet to be parsed.

    int len

    size of data.

    byte* out_toc

    TOC pointer.

    byte*[] frames

    encapsulated frames.

    short[] size

    sizes of the encapsulated frames.

    int* payload_offset

    returns the position of the payload within the packet (in bytes).

    Returns
    Type Description
    int

    number of frames.

    opus_packet_unpad(byte*, int)

    Remove all padding from a given Opus packet and rewrite the TOC sequence to minimize space usage.

    Declaration
    public static extern int opus_packet_unpad(byte* data, int len)
    Parameters
    Type Name Description
    byte* data

    The buffer containing the packet to strip.

    int len

    The size of the packet. This must be at least 1.

    Returns
    Type Description
    int

    The new size of the output packet on success, or an OpusErrorCodes on failure.

    opus_pcm_soft_clip(float*, int, int, float*)

    Applies soft-clipping to bring a float signal within the [-1,1] range.

    Declaration
    public static extern void opus_pcm_soft_clip(float* pcm, int frame_size, int channels, float* softclip_mem)
    Parameters
    Type Name Description
    float* pcm

    Input PCM and modified PCM.

    int frame_size

    Number of samples per channel to process.

    int channels

    Number of channels.

    float* softclip_mem

    State memory for the soft clipping process (one float per channel, initialized to zero).

    opus_repacketizer_cat(OpusRepacketizerSafeHandle, byte*, int)

    Add a packet to the current OpusRepacketizerSafeHandle state.

    Declaration
    public static extern int opus_repacketizer_cat(OpusRepacketizerSafeHandle rp, byte* data, int len)
    Parameters
    Type Name Description
    OpusRepacketizerSafeHandle rp

    The repacketizer state to which to add the packet.

    byte* data

    The packet data. The application must ensure this pointer remains valid until the next call to opus_repacketizer_init(OpusRepacketizerSafeHandle) or opus_repacketizer_destroy(IntPtr).

    int len

    The number of bytes in the packet data.

    Returns
    Type Description
    int

    OpusErrorCodes

    opus_repacketizer_create()

    Allocates memory and initializes the new OpusRepacketizerSafeHandle with opus_repacketizer_init(OpusRepacketizerSafeHandle).

    Declaration
    public static extern OpusRepacketizerSafeHandle opus_repacketizer_create()
    Returns
    Type Description
    OpusRepacketizerSafeHandle

    OpusRepacketizerSafeHandle

    opus_repacketizer_destroy(IntPtr)

    Frees an OpusRepacketizerSafeHandle allocated by opus_repacketizer_create().

    Declaration
    public static extern void opus_repacketizer_destroy(IntPtr rp)
    Parameters
    Type Name Description
    IntPtr rp

    State to be freed.

    opus_repacketizer_get_nb_frames(OpusRepacketizerSafeHandle)

    Return the total number of frames contained in packet data submitted to the OpusRepacketizerSafeHandle state so far via opus_repacketizer_cat(OpusRepacketizerSafeHandle, byte*, int) since the last call to opus_repacketizer_init(OpusRepacketizerSafeHandle) or opus_repacketizer_create().

    Declaration
    public static extern int opus_repacketizer_get_nb_frames(OpusRepacketizerSafeHandle rp)
    Parameters
    Type Name Description
    OpusRepacketizerSafeHandle rp

    The repacketizer state containing the frames.

    Returns
    Type Description
    int

    The total number of frames contained in the packet data submitted to the repacketizer state.

    opus_repacketizer_get_size()

    Gets the size of an OpusRepacketizerSafeHandle structure.

    Declaration
    public static extern int opus_repacketizer_get_size()
    Returns
    Type Description
    int

    The size in bytes.

    opus_repacketizer_init(OpusRepacketizerSafeHandle)

    (Re)initializes a previously allocated OpusRepacketizerSafeHandle state.

    Declaration
    public static extern OpusRepacketizerSafeHandle opus_repacketizer_init(OpusRepacketizerSafeHandle rp)
    Parameters
    Type Name Description
    OpusRepacketizerSafeHandle rp

    The OpusRepacketizerSafeHandle state to (re)initialize.

    Returns
    Type Description
    OpusRepacketizerSafeHandle

    OpusRepacketizerSafeHandle

    opus_repacketizer_out(OpusRepacketizerSafeHandle, byte*, int)

    Construct a new packet from data previously submitted to the OpusRepacketizerSafeHandle state via opus_repacketizer_cat(OpusRepacketizerSafeHandle, byte*, int).

    Declaration
    public static extern int opus_repacketizer_out(OpusRepacketizerSafeHandle rp, byte* data, int maxlen)
    Parameters
    Type Name Description
    OpusRepacketizerSafeHandle rp

    The repacketizer state from which to construct the new packet.

    byte* data

    The buffer in which to store the output packet.

    int maxlen

    The maximum number of bytes to store in the output buffer. In order to guarantee success, this should be at least 1277opus_repacketizer_get_nb_frames(rp). However, 1opus_repacketizer_get_nb_frames(rp) plus the size of all packet data submitted to the repacketizer since the last call to opus_repacketizer_init() or opus_repacketizer_create() is also sufficient, and possibly much smaller.

    Returns
    Type Description
    int

    The total size of the output packet on success, or an OpusErrorCodes on failure.

    opus_repacketizer_out_range(OpusRepacketizerSafeHandle, int, int, byte*, int)

    Construct a new packet from data previously submitted to the OpusRepacketizerSafeHandle state via opus_repacketizer_cat(OpusRepacketizerSafeHandle, byte*, int).

    Declaration
    public static extern int opus_repacketizer_out_range(OpusRepacketizerSafeHandle rp, int begin, int end, byte* data, int maxlen)
    Parameters
    Type Name Description
    OpusRepacketizerSafeHandle rp

    The repacketizer state from which to construct the new packet.

    int begin

    The index of the first frame in the current repacketizer state to include in the output.

    int end

    One past the index of the last frame in the current repacketizer state to include in the output.

    byte* data

    The buffer in which to store the output packet.

    int maxlen

    The maximum number of bytes to store in the output buffer. In order to guarantee success, this should be at least 1276 for a single frame, or for multiple frames, 1277*(end-begin). However, 1*(end-begin) plus the size of all packet data submitted to the repacketizer since the last call to opus_repacketizer_init(OpusRepacketizerSafeHandle) or opus_repacketizer_create() is also sufficient, and possibly much smaller.

    Returns
    Type Description
    int

    The total size of the output packet on success, or an OpusErrorCodes on failure.

    opus_strerror(int)

    Converts an opus error code into a human-readable string.

    Declaration
    public static extern byte* opus_strerror(int error)
    Parameters
    Type Name Description
    int error

    Error number.

    Returns
    Type Description
    byte*

    Error string.