From ed340b7744cb26c922d4dfeaac9f8c312e0d4a88 Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Thu, 23 Apr 2020 16:52:01 +0300 Subject: [PATCH] add opus 1.3.1 --- opus/include/opus/opus.h | 981 ++++++++++++ opus/include/opus/opus_defines.h | 799 ++++++++++ opus/include/opus/opus_multistream.h | 660 ++++++++ opus/include/opus/opus_projection.h | 568 +++++++ opus/include/opus/opus_types.h | 166 ++ opus/include/opus/opusfile.h | 2164 ++++++++++++++++++++++++++ opus/lib/libopus.a | Bin 0 -> 780728 bytes 7 files changed, 5338 insertions(+) create mode 100644 opus/include/opus/opus.h create mode 100644 opus/include/opus/opus_defines.h create mode 100644 opus/include/opus/opus_multistream.h create mode 100644 opus/include/opus/opus_projection.h create mode 100644 opus/include/opus/opus_types.h create mode 100644 opus/include/opus/opusfile.h create mode 100644 opus/lib/libopus.a diff --git a/opus/include/opus/opus.h b/opus/include/opus/opus.h new file mode 100644 index 00000000..d282f21d --- /dev/null +++ b/opus/include/opus/opus.h @@ -0,0 +1,981 @@ +/* Copyright (c) 2010-2011 Xiph.Org Foundation, Skype Limited + Written by Jean-Marc Valin and Koen Vos */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + * @file opus.h + * @brief Opus reference implementation API + */ + +#ifndef OPUS_H +#define OPUS_H + +#include "opus_types.h" +#include "opus_defines.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** + * @mainpage Opus + * + * The Opus codec is designed for interactive speech and audio transmission over the Internet. + * It is designed by the IETF Codec Working Group and incorporates technology from + * Skype's SILK codec and Xiph.Org's CELT codec. + * + * The Opus codec is designed to handle a wide range of interactive audio applications, + * including Voice over IP, videoconferencing, in-game chat, and even remote live music + * performances. It can scale from low bit-rate narrowband speech to very high quality + * stereo music. Its main features are: + + * @li Sampling rates from 8 to 48 kHz + * @li Bit-rates from 6 kb/s to 510 kb/s + * @li Support for both constant bit-rate (CBR) and variable bit-rate (VBR) + * @li Audio bandwidth from narrowband to full-band + * @li Support for speech and music + * @li Support for mono and stereo + * @li Support for multichannel (up to 255 channels) + * @li Frame sizes from 2.5 ms to 60 ms + * @li Good loss robustness and packet loss concealment (PLC) + * @li Floating point and fixed-point implementation + * + * Documentation sections: + * @li @ref opus_encoder + * @li @ref opus_decoder + * @li @ref opus_repacketizer + * @li @ref opus_multistream + * @li @ref opus_libinfo + * @li @ref opus_custom + */ + +/** @defgroup opus_encoder Opus Encoder + * @{ + * + * @brief This page describes the process and functions used to encode Opus. + * + * Since Opus is a stateful codec, the encoding process starts with creating an encoder + * state. This can be done with: + * + * @code + * int error; + * OpusEncoder *enc; + * enc = opus_encoder_create(Fs, channels, application, &error); + * @endcode + * + * From this point, @c enc can be used for encoding an audio stream. An encoder state + * @b must @b not be used for more than one stream at the same time. Similarly, the encoder + * state @b must @b not be re-initialized for each frame. + * + * While opus_encoder_create() allocates memory for the state, it's also possible + * to initialize pre-allocated memory: + * + * @code + * int size; + * int error; + * OpusEncoder *enc; + * size = opus_encoder_get_size(channels); + * enc = malloc(size); + * error = opus_encoder_init(enc, Fs, channels, application); + * @endcode + * + * where opus_encoder_get_size() returns the required size for the encoder state. Note that + * future versions of this code may change the size, so no assuptions should be made about it. + * + * The encoder state is always continuous in memory and only a shallow copy is sufficient + * to copy it (e.g. memcpy()) + * + * It is possible to change some of the encoder's settings using the opus_encoder_ctl() + * interface. All these settings already default to the recommended value, so they should + * only be changed when necessary. The most common settings one may want to change are: + * + * @code + * opus_encoder_ctl(enc, OPUS_SET_BITRATE(bitrate)); + * opus_encoder_ctl(enc, OPUS_SET_COMPLEXITY(complexity)); + * opus_encoder_ctl(enc, OPUS_SET_SIGNAL(signal_type)); + * @endcode + * + * where + * + * @arg bitrate is in bits per second (b/s) + * @arg complexity is a value from 1 to 10, where 1 is the lowest complexity and 10 is the highest + * @arg signal_type is either OPUS_AUTO (default), OPUS_SIGNAL_VOICE, or OPUS_SIGNAL_MUSIC + * + * See @ref opus_encoderctls and @ref opus_genericctls for a complete list of parameters that can be set or queried. Most parameters can be set or changed at any time during a stream. + * + * To encode a frame, opus_encode() or opus_encode_float() must be called with exactly one frame (2.5, 5, 10, 20, 40 or 60 ms) of audio data: + * @code + * len = opus_encode(enc, audio_frame, frame_size, packet, max_packet); + * @endcode + * + * where + * + * + * opus_encode() and opus_encode_float() return the number of bytes actually written to the packet. + * The return value can be negative, which indicates that an error has occurred. If the return value + * is 2 bytes or less, then the packet does not need to be transmitted (DTX). + * + * Once the encoder state if no longer needed, it can be destroyed with + * + * @code + * opus_encoder_destroy(enc); + * @endcode + * + * If the encoder was created with opus_encoder_init() rather than opus_encoder_create(), + * then no action is required aside from potentially freeing the memory that was manually + * allocated for it (calling free(enc) for the example above) + * + */ + +/** Opus encoder state. + * This contains the complete state of an Opus encoder. + * It is position independent and can be freely copied. + * @see opus_encoder_create,opus_encoder_init + */ +typedef struct OpusEncoder OpusEncoder; + +/** Gets the size of an OpusEncoder structure. + * @param[in] channels int: Number of channels. + * This must be 1 or 2. + * @returns The size in bytes. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_encoder_get_size(int channels); + +/** + */ + +/** Allocates and initializes an encoder state. + * There are three coding modes: + * + * @ref 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. + * + * @ref 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. + * + * @ref 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. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusEncoder *opus_encoder_create( + opus_int32 Fs, + int channels, + int application, + int *error +); + +/** Initializes a previously allocated encoder state + * The memory pointed to by st must be at least the size returned by opus_encoder_get_size(). + * This is intended for applications which use their own allocator instead of malloc. + * @see opus_encoder_create(),opus_encoder_get_size() + * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL. + * @param [in] st OpusEncoder*: Encoder state + * @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 (OPUS_APPLICATION_VOIP/OPUS_APPLICATION_AUDIO/OPUS_APPLICATION_RESTRICTED_LOWDELAY) + * @retval #OPUS_OK Success or @ref opus_errorcodes + */ +OPUS_EXPORT int opus_encoder_init( + OpusEncoder *st, + opus_int32 Fs, + int channels, + int application +) OPUS_ARG_NONNULL(1); + +/** Encodes an Opus frame. + * @param [in] st OpusEncoder*: Encoder state + * @param [in] pcm opus_int16*: Input signal (interleaved if 2 channels). length is frame_size*channels*sizeof(opus_int16) + * @param [in] frame_size int: 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. + * @param [out] data unsigned char*: Output payload. + * This must contain storage for at + * least \a max_data_bytes. + * @param [in] max_data_bytes opus_int32: 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 The length of the encoded packet (in bytes) on success or a + * negative error code (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_encode( + OpusEncoder *st, + const opus_int16 *pcm, + int frame_size, + unsigned char *data, + opus_int32 max_data_bytes +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4); + +/** Encodes an Opus frame from floating point input. + * @param [in] st OpusEncoder*: Encoder state + * @param [in] pcm float*: 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_size*channels*sizeof(float) + * @param [in] frame_size int: 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. + * @param [out] data unsigned char*: Output payload. + * This must contain storage for at + * least \a max_data_bytes. + * @param [in] max_data_bytes opus_int32: 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 The length of the encoded packet (in bytes) on success or a + * negative error code (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_encode_float( + OpusEncoder *st, + const float *pcm, + int frame_size, + unsigned char *data, + opus_int32 max_data_bytes +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4); + +/** Frees an OpusEncoder allocated by opus_encoder_create(). + * @param[in] st OpusEncoder*: State to be freed. + */ +OPUS_EXPORT void opus_encoder_destroy(OpusEncoder *st); + +/** Perform a CTL function on an Opus encoder. + * + * Generally the request and subsequent arguments are generated + * by a convenience macro. + * @param st OpusEncoder*: Encoder state. + * @param request This and all remaining parameters should be replaced by one + * of the convenience macros in @ref opus_genericctls or + * @ref opus_encoderctls. + * @see opus_genericctls + * @see opus_encoderctls + */ +OPUS_EXPORT int opus_encoder_ctl(OpusEncoder *st, int request, ...) OPUS_ARG_NONNULL(1); +/**@}*/ + +/** @defgroup opus_decoder Opus Decoder + * @{ + * + * @brief This page describes the process and functions used to decode Opus. + * + * The decoding process also starts with creating a decoder + * state. This can be done with: + * @code + * int error; + * OpusDecoder *dec; + * dec = opus_decoder_create(Fs, channels, &error); + * @endcode + * where + * @li Fs is the sampling rate and must be 8000, 12000, 16000, 24000, or 48000 + * @li channels is the number of channels (1 or 2) + * @li error will hold the error code in case of failure (or #OPUS_OK on success) + * @li the return value is a newly created decoder state to be used for decoding + * + * While opus_decoder_create() allocates memory for the state, it's also possible + * to initialize pre-allocated memory: + * @code + * int size; + * int error; + * OpusDecoder *dec; + * size = opus_decoder_get_size(channels); + * dec = malloc(size); + * error = opus_decoder_init(dec, Fs, channels); + * @endcode + * where opus_decoder_get_size() returns the required size for the decoder state. Note that + * future versions of this code may change the size, so no assuptions should be made about it. + * + * The decoder state is always continuous in memory and only a shallow copy is sufficient + * to copy it (e.g. memcpy()) + * + * To decode a frame, opus_decode() or opus_decode_float() must be called with a packet of compressed audio data: + * @code + * frame_size = opus_decode(dec, packet, len, decoded, max_size, 0); + * @endcode + * where + * + * @li packet is the byte array containing the compressed data + * @li len is the exact number of bytes contained in the packet + * @li decoded is the decoded audio data in opus_int16 (or float for opus_decode_float()) + * @li max_size is the max duration of the frame in samples (per channel) that can fit into the decoded_frame array + * + * opus_decode() and opus_decode_float() return the number of samples (per channel) decoded from the packet. + * If that value is negative, then an error has occurred. This can occur if the packet is corrupted or if the audio + * buffer is too small to hold the decoded audio. + * + * Opus is a stateful codec with overlapping blocks and as a result Opus + * packets are not coded independently of each other. Packets must be + * passed into the decoder serially and in the correct order for a correct + * decode. Lost packets can be replaced with loss concealment by calling + * the decoder with a null pointer and zero length for the missing packet. + * + * A single codec state may only be accessed from a single thread at + * a time and any required locking must be performed by the caller. Separate + * streams must be decoded with separate decoder states and can be decoded + * in parallel unless the library was compiled with NONTHREADSAFE_PSEUDOSTACK + * defined. + * + */ + +/** Opus decoder state. + * This contains the complete state of an Opus decoder. + * It is position independent and can be freely copied. + * @see opus_decoder_create,opus_decoder_init + */ +typedef struct OpusDecoder OpusDecoder; + +/** Gets the size of an OpusDecoder structure. + * @param [in] channels int: Number of channels. + * This must be 1 or 2. + * @returns The size in bytes. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_decoder_get_size(int channels); + +/** Allocates and initializes a decoder state. + * @param [in] Fs opus_int32: Sample rate to decode at (Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param [in] channels int: Number of channels (1 or 2) to decode + * @param [out] error int*: #OPUS_OK Success or @ref opus_errorcodes + * + * Internally Opus stores data at 48000 Hz, so that should be the default + * value for Fs. However, the decoder can efficiently decode to buffers + * at 8, 12, 16, and 24 kHz so if for some reason the caller cannot use + * data at the full sample rate, or knows the compressed data doesn't + * use the full frequency range, it can request decoding at a reduced + * rate. Likewise, the decoder is capable of filling in either mono or + * interleaved stereo pcm buffers, at the caller's request. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusDecoder *opus_decoder_create( + opus_int32 Fs, + int channels, + int *error +); + +/** Initializes a previously allocated decoder state. + * The state must be at least the size returned by opus_decoder_get_size(). + * This is intended for applications which use their own allocator instead of malloc. @see opus_decoder_create,opus_decoder_get_size + * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL. + * @param [in] st OpusDecoder*: Decoder state. + * @param [in] Fs opus_int32: Sampling rate to decode to (Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param [in] channels int: Number of channels (1 or 2) to decode + * @retval #OPUS_OK Success or @ref opus_errorcodes + */ +OPUS_EXPORT int opus_decoder_init( + OpusDecoder *st, + opus_int32 Fs, + int channels +) OPUS_ARG_NONNULL(1); + +/** Decode an Opus packet. + * @param [in] st OpusDecoder*: Decoder state + * @param [in] data char*: Input payload. Use a NULL pointer to indicate packet loss + * @param [in] len opus_int32: Number of bytes in payload* + * @param [out] pcm opus_int16*: Output signal (interleaved if 2 channels). length + * is frame_size*channels*sizeof(opus_int16) + * @param [in] frame_size Number of samples per channel of available space in \a 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. + * @param [in] decode_fec int: 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 Number of decoded samples or @ref opus_errorcodes + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_decode( + OpusDecoder *st, + const unsigned char *data, + opus_int32 len, + opus_int16 *pcm, + int frame_size, + int decode_fec +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + +/** Decode an Opus packet with floating point output. + * @param [in] st OpusDecoder*: Decoder state + * @param [in] data char*: Input payload. Use a NULL pointer to indicate packet loss + * @param [in] len opus_int32: Number of bytes in payload + * @param [out] pcm float*: Output signal (interleaved if 2 channels). length + * is frame_size*channels*sizeof(float) + * @param [in] frame_size Number of samples per channel of available space in \a 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. + * @param [in] decode_fec int: 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 Number of decoded samples or @ref opus_errorcodes + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_decode_float( + OpusDecoder *st, + const unsigned char *data, + opus_int32 len, + float *pcm, + int frame_size, + int decode_fec +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + +/** Perform a CTL function on an Opus decoder. + * + * Generally the request and subsequent arguments are generated + * by a convenience macro. + * @param st OpusDecoder*: Decoder state. + * @param request This and all remaining parameters should be replaced by one + * of the convenience macros in @ref opus_genericctls or + * @ref opus_decoderctls. + * @see opus_genericctls + * @see opus_decoderctls + */ +OPUS_EXPORT int opus_decoder_ctl(OpusDecoder *st, int request, ...) OPUS_ARG_NONNULL(1); + +/** Frees an OpusDecoder allocated by opus_decoder_create(). + * @param[in] st OpusDecoder*: State to be freed. + */ +OPUS_EXPORT void opus_decoder_destroy(OpusDecoder *st); + +/** Parse an opus packet into one or more frames. + * Opus_decode will perform this operation internally so most applications do + * not need to use this function. + * This function does not copy the frames, the returned pointers are pointers into + * the input packet. + * @param [in] data char*: Opus packet to be parsed + * @param [in] len opus_int32: size of data + * @param [out] out_toc char*: TOC pointer + * @param [out] frames char*[48] encapsulated frames + * @param [out] size opus_int16[48] sizes of the encapsulated frames + * @param [out] payload_offset int*: returns the position of the payload within the packet (in bytes) + * @returns number of frames + */ +OPUS_EXPORT int opus_packet_parse( + const unsigned char *data, + opus_int32 len, + unsigned char *out_toc, + const unsigned char *frames[48], + opus_int16 size[48], + int *payload_offset +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(5); + +/** Gets the bandwidth of an Opus packet. + * @param [in] data char*: Opus packet + * @retval OPUS_BANDWIDTH_NARROWBAND Narrowband (4kHz bandpass) + * @retval OPUS_BANDWIDTH_MEDIUMBAND Mediumband (6kHz bandpass) + * @retval OPUS_BANDWIDTH_WIDEBAND Wideband (8kHz bandpass) + * @retval OPUS_BANDWIDTH_SUPERWIDEBAND Superwideband (12kHz bandpass) + * @retval OPUS_BANDWIDTH_FULLBAND Fullband (20kHz bandpass) + * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_bandwidth(const unsigned char *data) OPUS_ARG_NONNULL(1); + +/** Gets the number of samples per frame from an Opus packet. + * @param [in] data char*: Opus packet. + * This must contain at least one byte of + * data. + * @param [in] Fs opus_int32: Sampling rate in Hz. + * This must be a multiple of 400, or + * inaccurate results will be returned. + * @returns Number of samples per frame. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_samples_per_frame(const unsigned char *data, opus_int32 Fs) OPUS_ARG_NONNULL(1); + +/** Gets the number of channels from an Opus packet. + * @param [in] data char*: Opus packet + * @returns Number of channels + * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_nb_channels(const unsigned char *data) OPUS_ARG_NONNULL(1); + +/** Gets the number of frames in an Opus packet. + * @param [in] packet char*: Opus packet + * @param [in] len opus_int32: Length of packet + * @returns Number of frames + * @retval OPUS_BAD_ARG Insufficient data was passed to the function + * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_nb_frames(const unsigned char packet[], opus_int32 len) OPUS_ARG_NONNULL(1); + +/** Gets the number of samples of an Opus packet. + * @param [in] packet char*: Opus packet + * @param [in] len opus_int32: Length of packet + * @param [in] Fs opus_int32: Sampling rate in Hz. + * This must be a multiple of 400, or + * inaccurate results will be returned. + * @returns Number of samples + * @retval OPUS_BAD_ARG Insufficient data was passed to the function + * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_packet_get_nb_samples(const unsigned char packet[], opus_int32 len, opus_int32 Fs) OPUS_ARG_NONNULL(1); + +/** Gets the number of samples of an Opus packet. + * @param [in] dec OpusDecoder*: Decoder state + * @param [in] packet char*: Opus packet + * @param [in] len opus_int32: Length of packet + * @returns Number of samples + * @retval OPUS_BAD_ARG Insufficient data was passed to the function + * @retval OPUS_INVALID_PACKET The compressed data passed is corrupted or of an unsupported type + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_decoder_get_nb_samples(const OpusDecoder *dec, const unsigned char packet[], opus_int32 len) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2); + +/** Applies soft-clipping to bring a float signal within the [-1,1] range. If + * the signal is already in that range, nothing is done. If there are values + * outside of [-1,1], then the signal is clipped as smoothly as possible to + * both fit in the range and avoid creating excessive distortion in the + * process. + * @param [in,out] pcm float*: Input PCM and modified PCM + * @param [in] frame_size int Number of samples per channel to process + * @param [in] channels int: Number of channels + * @param [in,out] softclip_mem float*: State memory for the soft clipping process (one float per channel, initialized to zero) + */ +OPUS_EXPORT void opus_pcm_soft_clip(float *pcm, int frame_size, int channels, float *softclip_mem); + + +/**@}*/ + +/** @defgroup opus_repacketizer Repacketizer + * @{ + * + * The repacketizer can be used to merge multiple Opus packets into a single + * packet or alternatively to split Opus packets that have previously been + * merged. Splitting valid Opus packets is always guaranteed to succeed, + * whereas merging valid packets only succeeds if all frames have the same + * mode, bandwidth, and frame size, and when the total duration of the merged + * packet is no more than 120 ms. The 120 ms limit comes from the + * specification and limits decoder memory requirements at a point where + * framing overhead becomes negligible. + * + * The repacketizer currently only operates on elementary Opus + * streams. It will not manipualte multistream packets successfully, except in + * the degenerate case where they consist of data from a single stream. + * + * The repacketizing process starts with creating a repacketizer state, either + * by calling opus_repacketizer_create() or by allocating the memory yourself, + * e.g., + * @code + * OpusRepacketizer *rp; + * rp = (OpusRepacketizer*)malloc(opus_repacketizer_get_size()); + * if (rp != NULL) + * opus_repacketizer_init(rp); + * @endcode + * + * Then the application should submit packets with opus_repacketizer_cat(), + * extract new packets with opus_repacketizer_out() or + * opus_repacketizer_out_range(), and then reset the state for the next set of + * input packets via opus_repacketizer_init(). + * + * For example, to split a sequence of packets into individual frames: + * @code + * unsigned char *data; + * int len; + * while (get_next_packet(&data, &len)) + * { + * unsigned char out[1276]; + * opus_int32 out_len; + * int nb_frames; + * int err; + * int i; + * err = opus_repacketizer_cat(rp, data, len); + * if (err != OPUS_OK) + * { + * release_packet(data); + * return err; + * } + * nb_frames = opus_repacketizer_get_nb_frames(rp); + * for (i = 0; i < nb_frames; i++) + * { + * out_len = opus_repacketizer_out_range(rp, i, i+1, out, sizeof(out)); + * if (out_len < 0) + * { + * release_packet(data); + * return (int)out_len; + * } + * output_next_packet(out, out_len); + * } + * opus_repacketizer_init(rp); + * release_packet(data); + * } + * @endcode + * + * Alternatively, to combine a sequence of frames into packets that each + * contain up to TARGET_DURATION_MS milliseconds of data: + * @code + * // The maximum number of packets with duration TARGET_DURATION_MS occurs + * // when the frame size is 2.5 ms, for a total of (TARGET_DURATION_MS*2/5) + * // packets. + * unsigned char *data[(TARGET_DURATION_MS*2/5)+1]; + * opus_int32 len[(TARGET_DURATION_MS*2/5)+1]; + * int nb_packets; + * unsigned char out[1277*(TARGET_DURATION_MS*2/2)]; + * opus_int32 out_len; + * int prev_toc; + * nb_packets = 0; + * while (get_next_packet(data+nb_packets, len+nb_packets)) + * { + * int nb_frames; + * int err; + * nb_frames = opus_packet_get_nb_frames(data[nb_packets], len[nb_packets]); + * if (nb_frames < 1) + * { + * release_packets(data, nb_packets+1); + * return nb_frames; + * } + * nb_frames += opus_repacketizer_get_nb_frames(rp); + * // If adding the next packet would exceed our target, or it has an + * // incompatible TOC sequence, output the packets we already have before + * // submitting it. + * // N.B., The nb_packets > 0 check ensures we've submitted at least one + * // packet since the last call to opus_repacketizer_init(). Otherwise a + * // single packet longer than TARGET_DURATION_MS would cause us to try to + * // output an (invalid) empty packet. It also ensures that prev_toc has + * // been set to a valid value. Additionally, len[nb_packets] > 0 is + * // guaranteed by the call to opus_packet_get_nb_frames() above, so the + * // reference to data[nb_packets][0] should be valid. + * if (nb_packets > 0 && ( + * ((prev_toc & 0xFC) != (data[nb_packets][0] & 0xFC)) || + * opus_packet_get_samples_per_frame(data[nb_packets], 48000)*nb_frames > + * TARGET_DURATION_MS*48)) + * { + * out_len = opus_repacketizer_out(rp, out, sizeof(out)); + * if (out_len < 0) + * { + * release_packets(data, nb_packets+1); + * return (int)out_len; + * } + * output_next_packet(out, out_len); + * opus_repacketizer_init(rp); + * release_packets(data, nb_packets); + * data[0] = data[nb_packets]; + * len[0] = len[nb_packets]; + * nb_packets = 0; + * } + * err = opus_repacketizer_cat(rp, data[nb_packets], len[nb_packets]); + * if (err != OPUS_OK) + * { + * release_packets(data, nb_packets+1); + * return err; + * } + * prev_toc = data[nb_packets][0]; + * nb_packets++; + * } + * // Output the final, partial packet. + * if (nb_packets > 0) + * { + * out_len = opus_repacketizer_out(rp, out, sizeof(out)); + * release_packets(data, nb_packets); + * if (out_len < 0) + * return (int)out_len; + * output_next_packet(out, out_len); + * } + * @endcode + * + * An alternate way of merging packets is to simply call opus_repacketizer_cat() + * unconditionally until it fails. At that point, the merged packet can be + * obtained with opus_repacketizer_out() and the input packet for which + * opus_repacketizer_cat() needs to be re-added to a newly reinitialized + * repacketizer state. + */ + +typedef struct OpusRepacketizer OpusRepacketizer; + +/** Gets the size of an OpusRepacketizer structure. + * @returns The size in bytes. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_repacketizer_get_size(void); + +/** (Re)initializes a previously allocated repacketizer state. + * The state must be at least the size returned by opus_repacketizer_get_size(). + * This can be used for applications which use their own allocator instead of + * malloc(). + * It must also be called to reset the queue of packets waiting to be + * repacketized, which is necessary if the maximum packet duration of 120 ms + * is reached or if you wish to submit packets with a different Opus + * configuration (coding mode, audio bandwidth, frame size, or channel count). + * Failure to do so will prevent a new packet from being added with + * opus_repacketizer_cat(). + * @see opus_repacketizer_create + * @see opus_repacketizer_get_size + * @see opus_repacketizer_cat + * @param rp OpusRepacketizer*: The repacketizer state to + * (re)initialize. + * @returns A pointer to the same repacketizer state that was passed in. + */ +OPUS_EXPORT OpusRepacketizer *opus_repacketizer_init(OpusRepacketizer *rp) OPUS_ARG_NONNULL(1); + +/** Allocates memory and initializes the new repacketizer with + * opus_repacketizer_init(). + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusRepacketizer *opus_repacketizer_create(void); + +/** Frees an OpusRepacketizer allocated by + * opus_repacketizer_create(). + * @param[in] rp OpusRepacketizer*: State to be freed. + */ +OPUS_EXPORT void opus_repacketizer_destroy(OpusRepacketizer *rp); + +/** Add a packet to the current repacketizer state. + * This packet must match the configuration of any packets already submitted + * for repacketization since the last call to opus_repacketizer_init(). + * This means that it must have the same coding mode, audio bandwidth, frame + * size, and channel count. + * This can be checked in advance by examining the top 6 bits of the first + * byte of the packet, and ensuring they match the top 6 bits of the first + * byte of any previously submitted packet. + * The total duration of audio in the repacketizer state also must not exceed + * 120 ms, the maximum duration of a single packet, after adding this packet. + * + * The contents of the current repacketizer state can be extracted into new + * packets using opus_repacketizer_out() or opus_repacketizer_out_range(). + * + * In order to add a packet with a different configuration or to add more + * audio beyond 120 ms, you must clear the repacketizer state by calling + * opus_repacketizer_init(). + * If a packet is too large to add to the current repacketizer state, no part + * of it is added, even if it contains multiple frames, some of which might + * fit. + * If you wish to be able to add parts of such packets, you should first use + * another repacketizer to split the packet into pieces and add them + * individually. + * @see opus_repacketizer_out_range + * @see opus_repacketizer_out + * @see opus_repacketizer_init + * @param rp OpusRepacketizer*: The repacketizer state to which to + * add the packet. + * @param[in] data const unsigned char*: The packet data. + * The application must ensure + * this pointer remains valid + * until the next call to + * opus_repacketizer_init() or + * opus_repacketizer_destroy(). + * @param len opus_int32: The number of bytes in the packet data. + * @returns An error code indicating whether or not the operation succeeded. + * @retval #OPUS_OK The packet's contents have been added to the repacketizer + * state. + * @retval #OPUS_INVALID_PACKET The packet did not have a valid TOC sequence, + * the packet's TOC sequence was not compatible + * with previously submitted packets (because + * the coding mode, audio bandwidth, frame size, + * or channel count did not match), or adding + * this packet would increase the total amount of + * audio stored in the repacketizer state to more + * than 120 ms. + */ +OPUS_EXPORT int opus_repacketizer_cat(OpusRepacketizer *rp, const unsigned char *data, opus_int32 len) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2); + + +/** Construct a new packet from data previously submitted to the repacketizer + * state via opus_repacketizer_cat(). + * @param rp OpusRepacketizer*: The repacketizer state from which to + * construct the new packet. + * @param begin int: The index of the first frame in the current + * repacketizer state to include in the output. + * @param end int: One past the index of the last frame in the + * current repacketizer state to include in the + * output. + * @param[out] data const unsigned char*: The buffer in which to + * store the output packet. + * @param maxlen opus_int32: 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() or + * opus_repacketizer_create() is also + * sufficient, and possibly much smaller. + * @returns The total size of the output packet on success, or an error code + * on failure. + * @retval #OPUS_BAD_ARG [begin,end) was an invalid range of + * frames (begin < 0, begin >= end, or end > + * opus_repacketizer_get_nb_frames()). + * @retval #OPUS_BUFFER_TOO_SMALL \a maxlen was insufficient to contain the + * complete output packet. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_repacketizer_out_range(OpusRepacketizer *rp, int begin, int end, unsigned char *data, opus_int32 maxlen) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + +/** Return the total number of frames contained in packet data submitted to + * the repacketizer state so far via opus_repacketizer_cat() since the last + * call to opus_repacketizer_init() or opus_repacketizer_create(). + * This defines the valid range of packets that can be extracted with + * opus_repacketizer_out_range() or opus_repacketizer_out(). + * @param rp OpusRepacketizer*: The repacketizer state containing the + * frames. + * @returns The total number of frames contained in the packet data submitted + * to the repacketizer state. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_repacketizer_get_nb_frames(OpusRepacketizer *rp) OPUS_ARG_NONNULL(1); + +/** Construct a new packet from data previously submitted to the repacketizer + * state via opus_repacketizer_cat(). + * This is a convenience routine that returns all the data submitted so far + * in a single packet. + * It is equivalent to calling + * @code + * opus_repacketizer_out_range(rp, 0, opus_repacketizer_get_nb_frames(rp), + * data, maxlen) + * @endcode + * @param rp OpusRepacketizer*: The repacketizer state from which to + * construct the new packet. + * @param[out] data const unsigned char*: The buffer in which to + * store the output packet. + * @param maxlen opus_int32: The maximum number of bytes to store in + * the output buffer. In order to guarantee + * success, this should be at least + * 1277*opus_repacketizer_get_nb_frames(rp). + * However, + * 1*opus_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 The total size of the output packet on success, or an error code + * on failure. + * @retval #OPUS_BUFFER_TOO_SMALL \a maxlen was insufficient to contain the + * complete output packet. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_repacketizer_out(OpusRepacketizer *rp, unsigned char *data, opus_int32 maxlen) OPUS_ARG_NONNULL(1); + +/** Pads a given Opus packet to a larger size (possibly changing the TOC sequence). + * @param[in,out] data const unsigned char*: The buffer containing the + * packet to pad. + * @param len opus_int32: The size of the packet. + * This must be at least 1. + * @param new_len opus_int32: The desired size of the packet after padding. + * This must be at least as large as len. + * @returns an error code + * @retval #OPUS_OK \a on success. + * @retval #OPUS_BAD_ARG \a len was less than 1 or new_len was less than len. + * @retval #OPUS_INVALID_PACKET \a data did not contain a valid Opus packet. + */ +OPUS_EXPORT int opus_packet_pad(unsigned char *data, opus_int32 len, opus_int32 new_len); + +/** Remove all padding from a given Opus packet and rewrite the TOC sequence to + * minimize space usage. + * @param[in,out] data const unsigned char*: The buffer containing the + * packet to strip. + * @param len opus_int32: The size of the packet. + * This must be at least 1. + * @returns The new size of the output packet on success, or an error code + * on failure. + * @retval #OPUS_BAD_ARG \a len was less than 1. + * @retval #OPUS_INVALID_PACKET \a data did not contain a valid Opus packet. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_packet_unpad(unsigned char *data, opus_int32 len); + +/** Pads a given Opus multi-stream packet to a larger size (possibly changing the TOC sequence). + * @param[in,out] data const unsigned char*: The buffer containing the + * packet to pad. + * @param len opus_int32: The size of the packet. + * This must be at least 1. + * @param new_len opus_int32: The desired size of the packet after padding. + * This must be at least 1. + * @param nb_streams opus_int32: The number of streams (not channels) in the packet. + * This must be at least as large as len. + * @returns an error code + * @retval #OPUS_OK \a on success. + * @retval #OPUS_BAD_ARG \a len was less than 1. + * @retval #OPUS_INVALID_PACKET \a data did not contain a valid Opus packet. + */ +OPUS_EXPORT int opus_multistream_packet_pad(unsigned char *data, opus_int32 len, opus_int32 new_len, int nb_streams); + +/** Remove all padding from a given Opus multi-stream packet and rewrite the TOC sequence to + * minimize space usage. + * @param[in,out] data const unsigned char*: The buffer containing the + * packet to strip. + * @param len opus_int32: The size of the packet. + * This must be at least 1. + * @param nb_streams opus_int32: The number of streams (not channels) in the packet. + * This must be at least 1. + * @returns The new size of the output packet on success, or an error code + * on failure. + * @retval #OPUS_BAD_ARG \a len was less than 1 or new_len was less than len. + * @retval #OPUS_INVALID_PACKET \a data did not contain a valid Opus packet. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_multistream_packet_unpad(unsigned char *data, opus_int32 len, int nb_streams); + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* OPUS_H */ diff --git a/opus/include/opus/opus_defines.h b/opus/include/opus/opus_defines.h new file mode 100644 index 00000000..d141418b --- /dev/null +++ b/opus/include/opus/opus_defines.h @@ -0,0 +1,799 @@ +/* Copyright (c) 2010-2011 Xiph.Org Foundation, Skype Limited + Written by Jean-Marc Valin and Koen Vos */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + * @file opus_defines.h + * @brief Opus reference implementation constants + */ + +#ifndef OPUS_DEFINES_H +#define OPUS_DEFINES_H + +#include "opus_types.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** @defgroup opus_errorcodes Error codes + * @{ + */ +/** No error @hideinitializer*/ +#define OPUS_OK 0 +/** One or more invalid/out of range arguments @hideinitializer*/ +#define OPUS_BAD_ARG -1 +/** Not enough bytes allocated in the buffer @hideinitializer*/ +#define OPUS_BUFFER_TOO_SMALL -2 +/** An internal error was detected @hideinitializer*/ +#define OPUS_INTERNAL_ERROR -3 +/** The compressed data passed is corrupted @hideinitializer*/ +#define OPUS_INVALID_PACKET -4 +/** Invalid/unsupported request number @hideinitializer*/ +#define OPUS_UNIMPLEMENTED -5 +/** An encoder or decoder structure is invalid or already freed @hideinitializer*/ +#define OPUS_INVALID_STATE -6 +/** Memory allocation has failed @hideinitializer*/ +#define OPUS_ALLOC_FAIL -7 +/**@}*/ + +/** @cond OPUS_INTERNAL_DOC */ +/**Export control for opus functions */ + +#ifndef OPUS_EXPORT +# if defined(WIN32) +# if defined(OPUS_BUILD) && defined(DLL_EXPORT) +# define OPUS_EXPORT __declspec(dllexport) +# else +# define OPUS_EXPORT +# endif +# elif defined(__GNUC__) && defined(OPUS_BUILD) +# define OPUS_EXPORT __attribute__ ((visibility ("default"))) +# else +# define OPUS_EXPORT +# endif +#endif + +# if !defined(OPUS_GNUC_PREREQ) +# if defined(__GNUC__)&&defined(__GNUC_MINOR__) +# define OPUS_GNUC_PREREQ(_maj,_min) \ + ((__GNUC__<<16)+__GNUC_MINOR__>=((_maj)<<16)+(_min)) +# else +# define OPUS_GNUC_PREREQ(_maj,_min) 0 +# endif +# endif + +#if (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L) ) +# if OPUS_GNUC_PREREQ(3,0) +# define OPUS_RESTRICT __restrict__ +# elif (defined(_MSC_VER) && _MSC_VER >= 1400) +# define OPUS_RESTRICT __restrict +# else +# define OPUS_RESTRICT +# endif +#else +# define OPUS_RESTRICT restrict +#endif + +#if (!defined(__STDC_VERSION__) || (__STDC_VERSION__ < 199901L) ) +# if OPUS_GNUC_PREREQ(2,7) +# define OPUS_INLINE __inline__ +# elif (defined(_MSC_VER)) +# define OPUS_INLINE __inline +# else +# define OPUS_INLINE +# endif +#else +# define OPUS_INLINE inline +#endif + +/**Warning attributes for opus functions + * NONNULL is not used in OPUS_BUILD to avoid the compiler optimizing out + * some paranoid null checks. */ +#if defined(__GNUC__) && OPUS_GNUC_PREREQ(3, 4) +# define OPUS_WARN_UNUSED_RESULT __attribute__ ((__warn_unused_result__)) +#else +# define OPUS_WARN_UNUSED_RESULT +#endif +#if !defined(OPUS_BUILD) && defined(__GNUC__) && OPUS_GNUC_PREREQ(3, 4) +# define OPUS_ARG_NONNULL(_x) __attribute__ ((__nonnull__(_x))) +#else +# define OPUS_ARG_NONNULL(_x) +#endif + +/** These are the actual Encoder CTL ID numbers. + * They should not be used directly by applications. + * In general, SETs should be even and GETs should be odd.*/ +#define OPUS_SET_APPLICATION_REQUEST 4000 +#define OPUS_GET_APPLICATION_REQUEST 4001 +#define OPUS_SET_BITRATE_REQUEST 4002 +#define OPUS_GET_BITRATE_REQUEST 4003 +#define OPUS_SET_MAX_BANDWIDTH_REQUEST 4004 +#define OPUS_GET_MAX_BANDWIDTH_REQUEST 4005 +#define OPUS_SET_VBR_REQUEST 4006 +#define OPUS_GET_VBR_REQUEST 4007 +#define OPUS_SET_BANDWIDTH_REQUEST 4008 +#define OPUS_GET_BANDWIDTH_REQUEST 4009 +#define OPUS_SET_COMPLEXITY_REQUEST 4010 +#define OPUS_GET_COMPLEXITY_REQUEST 4011 +#define OPUS_SET_INBAND_FEC_REQUEST 4012 +#define OPUS_GET_INBAND_FEC_REQUEST 4013 +#define OPUS_SET_PACKET_LOSS_PERC_REQUEST 4014 +#define OPUS_GET_PACKET_LOSS_PERC_REQUEST 4015 +#define OPUS_SET_DTX_REQUEST 4016 +#define OPUS_GET_DTX_REQUEST 4017 +#define OPUS_SET_VBR_CONSTRAINT_REQUEST 4020 +#define OPUS_GET_VBR_CONSTRAINT_REQUEST 4021 +#define OPUS_SET_FORCE_CHANNELS_REQUEST 4022 +#define OPUS_GET_FORCE_CHANNELS_REQUEST 4023 +#define OPUS_SET_SIGNAL_REQUEST 4024 +#define OPUS_GET_SIGNAL_REQUEST 4025 +#define OPUS_GET_LOOKAHEAD_REQUEST 4027 +/* #define OPUS_RESET_STATE 4028 */ +#define OPUS_GET_SAMPLE_RATE_REQUEST 4029 +#define OPUS_GET_FINAL_RANGE_REQUEST 4031 +#define OPUS_GET_PITCH_REQUEST 4033 +#define OPUS_SET_GAIN_REQUEST 4034 +#define OPUS_GET_GAIN_REQUEST 4045 /* Should have been 4035 */ +#define OPUS_SET_LSB_DEPTH_REQUEST 4036 +#define OPUS_GET_LSB_DEPTH_REQUEST 4037 +#define OPUS_GET_LAST_PACKET_DURATION_REQUEST 4039 +#define OPUS_SET_EXPERT_FRAME_DURATION_REQUEST 4040 +#define OPUS_GET_EXPERT_FRAME_DURATION_REQUEST 4041 +#define OPUS_SET_PREDICTION_DISABLED_REQUEST 4042 +#define OPUS_GET_PREDICTION_DISABLED_REQUEST 4043 +/* Don't use 4045, it's already taken by OPUS_GET_GAIN_REQUEST */ +#define OPUS_SET_PHASE_INVERSION_DISABLED_REQUEST 4046 +#define OPUS_GET_PHASE_INVERSION_DISABLED_REQUEST 4047 +#define OPUS_GET_IN_DTX_REQUEST 4049 + +/** Defines for the presence of extended APIs. */ +#define OPUS_HAVE_OPUS_PROJECTION_H + +/* Macros to trigger compilation errors when the wrong types are provided to a CTL */ +#define __opus_check_int(x) (((void)((x) == (opus_int32)0)), (opus_int32)(x)) +#define __opus_check_int_ptr(ptr) ((ptr) + ((ptr) - (opus_int32*)(ptr))) +#define __opus_check_uint_ptr(ptr) ((ptr) + ((ptr) - (opus_uint32*)(ptr))) +#define __opus_check_val16_ptr(ptr) ((ptr) + ((ptr) - (opus_val16*)(ptr))) +/** @endcond */ + +/** @defgroup opus_ctlvalues Pre-defined values for CTL interface + * @see opus_genericctls, opus_encoderctls + * @{ + */ +/* Values for the various encoder CTLs */ +#define OPUS_AUTO -1000 /**opus_int32: Allowed values: 0-10, inclusive. + * + * @hideinitializer */ +#define OPUS_SET_COMPLEXITY(x) OPUS_SET_COMPLEXITY_REQUEST, __opus_check_int(x) +/** Gets the encoder's complexity configuration. + * @see OPUS_SET_COMPLEXITY + * @param[out] x opus_int32 *: Returns a value in the range 0-10, + * inclusive. + * @hideinitializer */ +#define OPUS_GET_COMPLEXITY(x) OPUS_GET_COMPLEXITY_REQUEST, __opus_check_int_ptr(x) + +/** Configures the bitrate in the encoder. + * Rates from 500 to 512000 bits per second are meaningful, as well as the + * special values #OPUS_AUTO and #OPUS_BITRATE_MAX. + * The value #OPUS_BITRATE_MAX can be used to cause the codec to use as much + * rate as it can, which is useful for controlling the rate by adjusting the + * output buffer size. + * @see OPUS_GET_BITRATE + * @param[in] x opus_int32: Bitrate in bits per second. The default + * is determined based on the number of + * channels and the input sampling rate. + * @hideinitializer */ +#define OPUS_SET_BITRATE(x) OPUS_SET_BITRATE_REQUEST, __opus_check_int(x) +/** Gets the encoder's bitrate configuration. + * @see OPUS_SET_BITRATE + * @param[out] x opus_int32 *: Returns the bitrate in bits per second. + * The default is determined based on the + * number of channels and the input + * sampling rate. + * @hideinitializer */ +#define OPUS_GET_BITRATE(x) OPUS_GET_BITRATE_REQUEST, __opus_check_int_ptr(x) + +/** Enables or disables variable bitrate (VBR) in the encoder. + * The configured bitrate may not be met exactly because frames must + * be an integer number of bytes in length. + * @see OPUS_GET_VBR + * @see OPUS_SET_VBR_CONSTRAINT + * @param[in] x opus_int32: Allowed values: + *
+ *
0
Hard CBR. For LPC/hybrid modes at very low bit-rate, this can + * cause noticeable quality degradation.
+ *
1
VBR (default). The exact type of VBR is controlled by + * #OPUS_SET_VBR_CONSTRAINT.
+ *
+ * @hideinitializer */ +#define OPUS_SET_VBR(x) OPUS_SET_VBR_REQUEST, __opus_check_int(x) +/** Determine if variable bitrate (VBR) is enabled in the encoder. + * @see OPUS_SET_VBR + * @see OPUS_GET_VBR_CONSTRAINT + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
0
Hard CBR.
+ *
1
VBR (default). The exact type of VBR may be retrieved via + * #OPUS_GET_VBR_CONSTRAINT.
+ *
+ * @hideinitializer */ +#define OPUS_GET_VBR(x) OPUS_GET_VBR_REQUEST, __opus_check_int_ptr(x) + +/** Enables or disables constrained VBR in the encoder. + * This setting is ignored when the encoder is in CBR mode. + * @warning Only the MDCT mode of Opus currently heeds the constraint. + * Speech mode ignores it completely, hybrid mode may fail to obey it + * if the LPC layer uses more bitrate than the constraint would have + * permitted. + * @see OPUS_GET_VBR_CONSTRAINT + * @see OPUS_SET_VBR + * @param[in] x opus_int32: Allowed values: + *
+ *
0
Unconstrained VBR.
+ *
1
Constrained VBR (default). This creates a maximum of one + * frame of buffering delay assuming a transport with a + * serialization speed of the nominal bitrate.
+ *
+ * @hideinitializer */ +#define OPUS_SET_VBR_CONSTRAINT(x) OPUS_SET_VBR_CONSTRAINT_REQUEST, __opus_check_int(x) +/** Determine if constrained VBR is enabled in the encoder. + * @see OPUS_SET_VBR_CONSTRAINT + * @see OPUS_GET_VBR + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
0
Unconstrained VBR.
+ *
1
Constrained VBR (default).
+ *
+ * @hideinitializer */ +#define OPUS_GET_VBR_CONSTRAINT(x) OPUS_GET_VBR_CONSTRAINT_REQUEST, __opus_check_int_ptr(x) + +/** Configures mono/stereo forcing in the encoder. + * This can force the encoder to produce packets encoded as either mono or + * stereo, regardless of the format of the input audio. This is useful when + * the caller knows that the input signal is currently a mono source embedded + * in a stereo stream. + * @see OPUS_GET_FORCE_CHANNELS + * @param[in] x opus_int32: Allowed values: + *
+ *
#OPUS_AUTO
Not forced (default)
+ *
1
Forced mono
+ *
2
Forced stereo
+ *
+ * @hideinitializer */ +#define OPUS_SET_FORCE_CHANNELS(x) OPUS_SET_FORCE_CHANNELS_REQUEST, __opus_check_int(x) +/** Gets the encoder's forced channel configuration. + * @see OPUS_SET_FORCE_CHANNELS + * @param[out] x opus_int32 *: + *
+ *
#OPUS_AUTO
Not forced (default)
+ *
1
Forced mono
+ *
2
Forced stereo
+ *
+ * @hideinitializer */ +#define OPUS_GET_FORCE_CHANNELS(x) OPUS_GET_FORCE_CHANNELS_REQUEST, __opus_check_int_ptr(x) + +/** Configures the maximum bandpass that the encoder will select automatically. + * Applications should normally use this instead of #OPUS_SET_BANDWIDTH + * (leaving that set to the default, #OPUS_AUTO). This allows the + * application to set an upper bound based on the type of input it is + * providing, but still gives the encoder the freedom to reduce the bandpass + * when the bitrate becomes too low, for better overall quality. + * @see OPUS_GET_MAX_BANDWIDTH + * @param[in] x opus_int32: Allowed values: + *
+ *
OPUS_BANDWIDTH_NARROWBAND
4 kHz passband
+ *
OPUS_BANDWIDTH_MEDIUMBAND
6 kHz passband
+ *
OPUS_BANDWIDTH_WIDEBAND
8 kHz passband
+ *
OPUS_BANDWIDTH_SUPERWIDEBAND
12 kHz passband
+ *
OPUS_BANDWIDTH_FULLBAND
20 kHz passband (default)
+ *
+ * @hideinitializer */ +#define OPUS_SET_MAX_BANDWIDTH(x) OPUS_SET_MAX_BANDWIDTH_REQUEST, __opus_check_int(x) + +/** Gets the encoder's configured maximum allowed bandpass. + * @see OPUS_SET_MAX_BANDWIDTH + * @param[out] x opus_int32 *: Allowed values: + *
+ *
#OPUS_BANDWIDTH_NARROWBAND
4 kHz passband
+ *
#OPUS_BANDWIDTH_MEDIUMBAND
6 kHz passband
+ *
#OPUS_BANDWIDTH_WIDEBAND
8 kHz passband
+ *
#OPUS_BANDWIDTH_SUPERWIDEBAND
12 kHz passband
+ *
#OPUS_BANDWIDTH_FULLBAND
20 kHz passband (default)
+ *
+ * @hideinitializer */ +#define OPUS_GET_MAX_BANDWIDTH(x) OPUS_GET_MAX_BANDWIDTH_REQUEST, __opus_check_int_ptr(x) + +/** Sets the encoder's bandpass to a specific value. + * This prevents the encoder from automatically selecting the bandpass based + * on the available bitrate. If an application knows the bandpass of the input + * audio it is providing, it should normally use #OPUS_SET_MAX_BANDWIDTH + * instead, which still gives the encoder the freedom to reduce the bandpass + * when the bitrate becomes too low, for better overall quality. + * @see OPUS_GET_BANDWIDTH + * @param[in] x opus_int32: Allowed values: + *
+ *
#OPUS_AUTO
(default)
+ *
#OPUS_BANDWIDTH_NARROWBAND
4 kHz passband
+ *
#OPUS_BANDWIDTH_MEDIUMBAND
6 kHz passband
+ *
#OPUS_BANDWIDTH_WIDEBAND
8 kHz passband
+ *
#OPUS_BANDWIDTH_SUPERWIDEBAND
12 kHz passband
+ *
#OPUS_BANDWIDTH_FULLBAND
20 kHz passband
+ *
+ * @hideinitializer */ +#define OPUS_SET_BANDWIDTH(x) OPUS_SET_BANDWIDTH_REQUEST, __opus_check_int(x) + +/** Configures the type of signal being encoded. + * This is a hint which helps the encoder's mode selection. + * @see OPUS_GET_SIGNAL + * @param[in] x opus_int32: Allowed values: + *
+ *
#OPUS_AUTO
(default)
+ *
#OPUS_SIGNAL_VOICE
Bias thresholds towards choosing LPC or Hybrid modes.
+ *
#OPUS_SIGNAL_MUSIC
Bias thresholds towards choosing MDCT modes.
+ *
+ * @hideinitializer */ +#define OPUS_SET_SIGNAL(x) OPUS_SET_SIGNAL_REQUEST, __opus_check_int(x) +/** Gets the encoder's configured signal type. + * @see OPUS_SET_SIGNAL + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
#OPUS_AUTO
(default)
+ *
#OPUS_SIGNAL_VOICE
Bias thresholds towards choosing LPC or Hybrid modes.
+ *
#OPUS_SIGNAL_MUSIC
Bias thresholds towards choosing MDCT modes.
+ *
+ * @hideinitializer */ +#define OPUS_GET_SIGNAL(x) OPUS_GET_SIGNAL_REQUEST, __opus_check_int_ptr(x) + + +/** Configures the encoder's intended application. + * The initial value is a mandatory argument to the encoder_create function. + * @see OPUS_GET_APPLICATION + * @param[in] x opus_int32: Returns one of the following values: + *
+ *
#OPUS_APPLICATION_VOIP
+ *
Process signal for improved speech intelligibility.
+ *
#OPUS_APPLICATION_AUDIO
+ *
Favor faithfulness to the original input.
+ *
#OPUS_APPLICATION_RESTRICTED_LOWDELAY
+ *
Configure the minimum possible coding delay by disabling certain modes + * of operation.
+ *
+ * @hideinitializer */ +#define OPUS_SET_APPLICATION(x) OPUS_SET_APPLICATION_REQUEST, __opus_check_int(x) +/** Gets the encoder's configured application. + * @see OPUS_SET_APPLICATION + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
#OPUS_APPLICATION_VOIP
+ *
Process signal for improved speech intelligibility.
+ *
#OPUS_APPLICATION_AUDIO
+ *
Favor faithfulness to the original input.
+ *
#OPUS_APPLICATION_RESTRICTED_LOWDELAY
+ *
Configure the minimum possible coding delay by disabling certain modes + * of operation.
+ *
+ * @hideinitializer */ +#define OPUS_GET_APPLICATION(x) OPUS_GET_APPLICATION_REQUEST, __opus_check_int_ptr(x) + +/** Gets the total samples of delay added by the entire codec. + * This can be queried by the encoder and then the provided number of samples can be + * skipped on from the start of the decoder's output to provide time aligned input + * and output. From the perspective of a decoding application the real data begins this many + * samples late. + * + * The decoder contribution to this delay is identical for all decoders, but the + * encoder portion of the delay may vary from implementation to implementation, + * version to version, or even depend on the encoder's initial configuration. + * Applications needing delay compensation should call this CTL rather than + * hard-coding a value. + * @param[out] x opus_int32 *: Number of lookahead samples + * @hideinitializer */ +#define OPUS_GET_LOOKAHEAD(x) OPUS_GET_LOOKAHEAD_REQUEST, __opus_check_int_ptr(x) + +/** Configures the encoder's use of inband forward error correction (FEC). + * @note This is only applicable to the LPC layer + * @see OPUS_GET_INBAND_FEC + * @param[in] x opus_int32: Allowed values: + *
+ *
0
Disable inband FEC (default).
+ *
1
Enable inband FEC.
+ *
+ * @hideinitializer */ +#define OPUS_SET_INBAND_FEC(x) OPUS_SET_INBAND_FEC_REQUEST, __opus_check_int(x) +/** Gets encoder's configured use of inband forward error correction. + * @see OPUS_SET_INBAND_FEC + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
0
Inband FEC disabled (default).
+ *
1
Inband FEC enabled.
+ *
+ * @hideinitializer */ +#define OPUS_GET_INBAND_FEC(x) OPUS_GET_INBAND_FEC_REQUEST, __opus_check_int_ptr(x) + +/** Configures the encoder's expected packet loss percentage. + * Higher values trigger progressively more loss resistant behavior in the encoder + * at the expense of quality at a given bitrate in the absence of packet loss, but + * greater quality under loss. + * @see OPUS_GET_PACKET_LOSS_PERC + * @param[in] x opus_int32: Loss percentage in the range 0-100, inclusive (default: 0). + * @hideinitializer */ +#define OPUS_SET_PACKET_LOSS_PERC(x) OPUS_SET_PACKET_LOSS_PERC_REQUEST, __opus_check_int(x) +/** Gets the encoder's configured packet loss percentage. + * @see OPUS_SET_PACKET_LOSS_PERC + * @param[out] x opus_int32 *: Returns the configured loss percentage + * in the range 0-100, inclusive (default: 0). + * @hideinitializer */ +#define OPUS_GET_PACKET_LOSS_PERC(x) OPUS_GET_PACKET_LOSS_PERC_REQUEST, __opus_check_int_ptr(x) + +/** Configures the encoder's use of discontinuous transmission (DTX). + * @note This is only applicable to the LPC layer + * @see OPUS_GET_DTX + * @param[in] x opus_int32: Allowed values: + *
+ *
0
Disable DTX (default).
+ *
1
Enabled DTX.
+ *
+ * @hideinitializer */ +#define OPUS_SET_DTX(x) OPUS_SET_DTX_REQUEST, __opus_check_int(x) +/** Gets encoder's configured use of discontinuous transmission. + * @see OPUS_SET_DTX + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
0
DTX disabled (default).
+ *
1
DTX enabled.
+ *
+ * @hideinitializer */ +#define OPUS_GET_DTX(x) OPUS_GET_DTX_REQUEST, __opus_check_int_ptr(x) +/** Configures the depth of signal being encoded. + * + * This is a hint which helps the encoder identify silence and near-silence. + * It represents the number of significant bits of linear intensity below + * which the signal contains ignorable quantization or other noise. + * + * For example, OPUS_SET_LSB_DEPTH(14) would be an appropriate setting + * for G.711 u-law input. OPUS_SET_LSB_DEPTH(16) would be appropriate + * for 16-bit linear pcm input with opus_encode_float(). + * + * When using opus_encode() instead of opus_encode_float(), or when libopus + * is compiled for fixed-point, the encoder uses the minimum of the value + * set here and the value 16. + * + * @see OPUS_GET_LSB_DEPTH + * @param[in] x opus_int32: Input precision in bits, between 8 and 24 + * (default: 24). + * @hideinitializer */ +#define OPUS_SET_LSB_DEPTH(x) OPUS_SET_LSB_DEPTH_REQUEST, __opus_check_int(x) +/** Gets the encoder's configured signal depth. + * @see OPUS_SET_LSB_DEPTH + * @param[out] x opus_int32 *: Input precision in bits, between 8 and + * 24 (default: 24). + * @hideinitializer */ +#define OPUS_GET_LSB_DEPTH(x) OPUS_GET_LSB_DEPTH_REQUEST, __opus_check_int_ptr(x) + +/** Configures the encoder's use of variable duration frames. + * When variable duration is enabled, the encoder is free to use a shorter frame + * size than the one requested in the opus_encode*() call. + * It is then the user's responsibility + * to verify how much audio was encoded by checking the ToC byte of the encoded + * packet. The part of the audio that was not encoded needs to be resent to the + * encoder for the next call. Do not use this option unless you really + * know what you are doing. + * @see OPUS_GET_EXPERT_FRAME_DURATION + * @param[in] x opus_int32: Allowed values: + *
+ *
OPUS_FRAMESIZE_ARG
Select frame size from the argument (default).
+ *
OPUS_FRAMESIZE_2_5_MS
Use 2.5 ms frames.
+ *
OPUS_FRAMESIZE_5_MS
Use 5 ms frames.
+ *
OPUS_FRAMESIZE_10_MS
Use 10 ms frames.
+ *
OPUS_FRAMESIZE_20_MS
Use 20 ms frames.
+ *
OPUS_FRAMESIZE_40_MS
Use 40 ms frames.
+ *
OPUS_FRAMESIZE_60_MS
Use 60 ms frames.
+ *
OPUS_FRAMESIZE_80_MS
Use 80 ms frames.
+ *
OPUS_FRAMESIZE_100_MS
Use 100 ms frames.
+ *
OPUS_FRAMESIZE_120_MS
Use 120 ms frames.
+ *
+ * @hideinitializer */ +#define OPUS_SET_EXPERT_FRAME_DURATION(x) OPUS_SET_EXPERT_FRAME_DURATION_REQUEST, __opus_check_int(x) +/** Gets the encoder's configured use of variable duration frames. + * @see OPUS_SET_EXPERT_FRAME_DURATION + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
OPUS_FRAMESIZE_ARG
Select frame size from the argument (default).
+ *
OPUS_FRAMESIZE_2_5_MS
Use 2.5 ms frames.
+ *
OPUS_FRAMESIZE_5_MS
Use 5 ms frames.
+ *
OPUS_FRAMESIZE_10_MS
Use 10 ms frames.
+ *
OPUS_FRAMESIZE_20_MS
Use 20 ms frames.
+ *
OPUS_FRAMESIZE_40_MS
Use 40 ms frames.
+ *
OPUS_FRAMESIZE_60_MS
Use 60 ms frames.
+ *
OPUS_FRAMESIZE_80_MS
Use 80 ms frames.
+ *
OPUS_FRAMESIZE_100_MS
Use 100 ms frames.
+ *
OPUS_FRAMESIZE_120_MS
Use 120 ms frames.
+ *
+ * @hideinitializer */ +#define OPUS_GET_EXPERT_FRAME_DURATION(x) OPUS_GET_EXPERT_FRAME_DURATION_REQUEST, __opus_check_int_ptr(x) + +/** If set to 1, disables almost all use of prediction, making frames almost + * completely independent. This reduces quality. + * @see OPUS_GET_PREDICTION_DISABLED + * @param[in] x opus_int32: Allowed values: + *
+ *
0
Enable prediction (default).
+ *
1
Disable prediction.
+ *
+ * @hideinitializer */ +#define OPUS_SET_PREDICTION_DISABLED(x) OPUS_SET_PREDICTION_DISABLED_REQUEST, __opus_check_int(x) +/** Gets the encoder's configured prediction status. + * @see OPUS_SET_PREDICTION_DISABLED + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
0
Prediction enabled (default).
+ *
1
Prediction disabled.
+ *
+ * @hideinitializer */ +#define OPUS_GET_PREDICTION_DISABLED(x) OPUS_GET_PREDICTION_DISABLED_REQUEST, __opus_check_int_ptr(x) + +/**@}*/ + +/** @defgroup opus_genericctls Generic CTLs + * + * These macros are used with the \c opus_decoder_ctl and + * \c opus_encoder_ctl calls to generate a particular + * request. + * + * When called on an \c OpusDecoder they apply to that + * particular decoder instance. When called on an + * \c OpusEncoder they apply to the corresponding setting + * on that encoder instance, if present. + * + * Some usage examples: + * + * @code + * int ret; + * opus_int32 pitch; + * ret = opus_decoder_ctl(dec_ctx, OPUS_GET_PITCH(&pitch)); + * if (ret == OPUS_OK) return ret; + * + * opus_encoder_ctl(enc_ctx, OPUS_RESET_STATE); + * opus_decoder_ctl(dec_ctx, OPUS_RESET_STATE); + * + * opus_int32 enc_bw, dec_bw; + * opus_encoder_ctl(enc_ctx, OPUS_GET_BANDWIDTH(&enc_bw)); + * opus_decoder_ctl(dec_ctx, OPUS_GET_BANDWIDTH(&dec_bw)); + * if (enc_bw != dec_bw) { + * printf("packet bandwidth mismatch!\n"); + * } + * @endcode + * + * @see opus_encoder, opus_decoder_ctl, opus_encoder_ctl, opus_decoderctls, opus_encoderctls + * @{ + */ + +/** Resets the codec state to be equivalent to a freshly initialized state. + * This should be called when switching streams in order to prevent + * the back to back decoding from giving different results from + * one at a time decoding. + * @hideinitializer */ +#define OPUS_RESET_STATE 4028 + +/** Gets the final state of the codec's entropy coder. + * This is used for testing purposes, + * The encoder and decoder state should be identical after coding a payload + * (assuming no data corruption or software bugs) + * + * @param[out] x opus_uint32 *: Entropy coder state + * + * @hideinitializer */ +#define OPUS_GET_FINAL_RANGE(x) OPUS_GET_FINAL_RANGE_REQUEST, __opus_check_uint_ptr(x) + +/** Gets the encoder's configured bandpass or the decoder's last bandpass. + * @see OPUS_SET_BANDWIDTH + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
#OPUS_AUTO
(default)
+ *
#OPUS_BANDWIDTH_NARROWBAND
4 kHz passband
+ *
#OPUS_BANDWIDTH_MEDIUMBAND
6 kHz passband
+ *
#OPUS_BANDWIDTH_WIDEBAND
8 kHz passband
+ *
#OPUS_BANDWIDTH_SUPERWIDEBAND
12 kHz passband
+ *
#OPUS_BANDWIDTH_FULLBAND
20 kHz passband
+ *
+ * @hideinitializer */ +#define OPUS_GET_BANDWIDTH(x) OPUS_GET_BANDWIDTH_REQUEST, __opus_check_int_ptr(x) + +/** Gets the sampling rate the encoder or decoder was initialized with. + * This simply returns the Fs value passed to opus_encoder_init() + * or opus_decoder_init(). + * @param[out] x opus_int32 *: Sampling rate of encoder or decoder. + * @hideinitializer + */ +#define OPUS_GET_SAMPLE_RATE(x) OPUS_GET_SAMPLE_RATE_REQUEST, __opus_check_int_ptr(x) + +/** If set to 1, disables the use of phase inversion for intensity stereo, + * improving the quality of mono downmixes, but slightly reducing normal + * stereo quality. Disabling phase inversion in the decoder does not comply + * with RFC 6716, although it does not cause any interoperability issue and + * is expected to become part of the Opus standard once RFC 6716 is updated + * by draft-ietf-codec-opus-update. + * @see OPUS_GET_PHASE_INVERSION_DISABLED + * @param[in] x opus_int32: Allowed values: + *
+ *
0
Enable phase inversion (default).
+ *
1
Disable phase inversion.
+ *
+ * @hideinitializer */ +#define OPUS_SET_PHASE_INVERSION_DISABLED(x) OPUS_SET_PHASE_INVERSION_DISABLED_REQUEST, __opus_check_int(x) +/** Gets the encoder's configured phase inversion status. + * @see OPUS_SET_PHASE_INVERSION_DISABLED + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
0
Stereo phase inversion enabled (default).
+ *
1
Stereo phase inversion disabled.
+ *
+ * @hideinitializer */ +#define OPUS_GET_PHASE_INVERSION_DISABLED(x) OPUS_GET_PHASE_INVERSION_DISABLED_REQUEST, __opus_check_int_ptr(x) +/** Gets the DTX state of the encoder. + * Returns whether the last encoded frame was either a comfort noise update + * during DTX or not encoded because of DTX. + * @param[out] x opus_int32 *: Returns one of the following values: + *
+ *
0
The encoder is not in DTX.
+ *
1
The encoder is in DTX.
+ *
+ * @hideinitializer */ +#define OPUS_GET_IN_DTX(x) OPUS_GET_IN_DTX_REQUEST, __opus_check_int_ptr(x) + +/**@}*/ + +/** @defgroup opus_decoderctls Decoder related CTLs + * @see opus_genericctls, opus_encoderctls, opus_decoder + * @{ + */ + +/** Configures decoder gain adjustment. + * Scales the decoded output by a factor specified in Q8 dB units. + * This has a maximum range of -32768 to 32767 inclusive, and returns + * OPUS_BAD_ARG otherwise. The default is zero indicating no adjustment. + * This setting survives decoder reset. + * + * gain = pow(10, x/(20.0*256)) + * + * @param[in] x opus_int32: Amount to scale PCM signal by in Q8 dB units. + * @hideinitializer */ +#define OPUS_SET_GAIN(x) OPUS_SET_GAIN_REQUEST, __opus_check_int(x) +/** Gets the decoder's configured gain adjustment. @see OPUS_SET_GAIN + * + * @param[out] x opus_int32 *: Amount to scale PCM signal by in Q8 dB units. + * @hideinitializer */ +#define OPUS_GET_GAIN(x) OPUS_GET_GAIN_REQUEST, __opus_check_int_ptr(x) + +/** Gets the duration (in samples) of the last packet successfully decoded or concealed. + * @param[out] x opus_int32 *: Number of samples (at current sampling rate). + * @hideinitializer */ +#define OPUS_GET_LAST_PACKET_DURATION(x) OPUS_GET_LAST_PACKET_DURATION_REQUEST, __opus_check_int_ptr(x) + +/** Gets the pitch of the last decoded frame, if available. + * This can be used for any post-processing algorithm requiring the use of pitch, + * e.g. time stretching/shortening. If the last frame was not voiced, or if the + * pitch was not coded in the frame, then zero is returned. + * + * This CTL is only implemented for decoder instances. + * + * @param[out] x opus_int32 *: pitch period at 48 kHz (or 0 if not available) + * + * @hideinitializer */ +#define OPUS_GET_PITCH(x) OPUS_GET_PITCH_REQUEST, __opus_check_int_ptr(x) + +/**@}*/ + +/** @defgroup opus_libinfo Opus library information functions + * @{ + */ + +/** Converts an opus error code into a human readable string. + * + * @param[in] error int: Error number + * @returns Error string + */ +OPUS_EXPORT const char *opus_strerror(int error); + +/** Gets the libopus version string. + * + * Applications may look for the substring "-fixed" in the version string to + * determine whether they have a fixed-point or floating-point build at + * runtime. + * + * @returns Version string + */ +OPUS_EXPORT const char *opus_get_version_string(void); +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* OPUS_DEFINES_H */ diff --git a/opus/include/opus/opus_multistream.h b/opus/include/opus/opus_multistream.h new file mode 100644 index 00000000..babcee69 --- /dev/null +++ b/opus/include/opus/opus_multistream.h @@ -0,0 +1,660 @@ +/* Copyright (c) 2011 Xiph.Org Foundation + Written by Jean-Marc Valin */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + * @file opus_multistream.h + * @brief Opus reference implementation multistream API + */ + +#ifndef OPUS_MULTISTREAM_H +#define OPUS_MULTISTREAM_H + +#include "opus.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** @cond OPUS_INTERNAL_DOC */ + +/** Macros to trigger compilation errors when the wrong types are provided to a + * CTL. */ +/**@{*/ +#define __opus_check_encstate_ptr(ptr) ((ptr) + ((ptr) - (OpusEncoder**)(ptr))) +#define __opus_check_decstate_ptr(ptr) ((ptr) + ((ptr) - (OpusDecoder**)(ptr))) +/**@}*/ + +/** These are the actual encoder and decoder CTL ID numbers. + * They should not be used directly by applications. + * In general, SETs should be even and GETs should be odd.*/ +/**@{*/ +#define OPUS_MULTISTREAM_GET_ENCODER_STATE_REQUEST 5120 +#define OPUS_MULTISTREAM_GET_DECODER_STATE_REQUEST 5122 +/**@}*/ + +/** @endcond */ + +/** @defgroup opus_multistream_ctls Multistream specific encoder and decoder CTLs + * + * These are convenience macros that are specific to the + * opus_multistream_encoder_ctl() and opus_multistream_decoder_ctl() + * interface. + * The CTLs from @ref opus_genericctls, @ref opus_encoderctls, and + * @ref opus_decoderctls may be applied to a multistream encoder or decoder as + * well. + * In addition, you may retrieve the encoder or decoder state for an specific + * stream via #OPUS_MULTISTREAM_GET_ENCODER_STATE or + * #OPUS_MULTISTREAM_GET_DECODER_STATE and apply CTLs to it individually. + */ +/**@{*/ + +/** Gets the encoder state for an individual stream of a multistream encoder. + * @param[in] x opus_int32: The index of the stream whose encoder you + * wish to retrieve. + * This must be non-negative and less than + * the streams parameter used + * to initialize the encoder. + * @param[out] y OpusEncoder**: Returns a pointer to the given + * encoder state. + * @retval OPUS_BAD_ARG The index of the requested stream was out of range. + * @hideinitializer + */ +#define OPUS_MULTISTREAM_GET_ENCODER_STATE(x,y) OPUS_MULTISTREAM_GET_ENCODER_STATE_REQUEST, __opus_check_int(x), __opus_check_encstate_ptr(y) + +/** Gets the decoder state for an individual stream of a multistream decoder. + * @param[in] x opus_int32: The index of the stream whose decoder you + * wish to retrieve. + * This must be non-negative and less than + * the streams parameter used + * to initialize the decoder. + * @param[out] y OpusDecoder**: Returns a pointer to the given + * decoder state. + * @retval OPUS_BAD_ARG The index of the requested stream was out of range. + * @hideinitializer + */ +#define OPUS_MULTISTREAM_GET_DECODER_STATE(x,y) OPUS_MULTISTREAM_GET_DECODER_STATE_REQUEST, __opus_check_int(x), __opus_check_decstate_ptr(y) + +/**@}*/ + +/** @defgroup opus_multistream Opus Multistream API + * @{ + * + * The multistream API allows individual Opus streams to be combined into a + * single packet, enabling support for up to 255 channels. Unlike an + * elementary Opus stream, the encoder and decoder must negotiate the channel + * configuration before the decoder can successfully interpret the data in the + * packets produced by the encoder. Some basic information, such as packet + * duration, can be computed without any special negotiation. + * + * The format for multistream Opus packets is defined in + * RFC 7845 + * and is based on the self-delimited Opus framing described in Appendix B of + * RFC 6716. + * Normal Opus packets are just a degenerate case of multistream Opus packets, + * and can be encoded or decoded with the multistream API by setting + * streams to 1 when initializing the encoder or + * decoder. + * + * Multistream Opus streams can contain up to 255 elementary Opus streams. + * These may be either "uncoupled" or "coupled", indicating that the decoder + * is configured to decode them to either 1 or 2 channels, respectively. + * The streams are ordered so that all coupled streams appear at the + * beginning. + * + * A mapping table defines which decoded channel i + * should be used for each input/output (I/O) channel j. This table is + * typically provided as an unsigned char array. + * Let i = mapping[j] be the index for I/O channel j. + * If i < 2*coupled_streams, then I/O channel j is + * encoded as the left channel of stream (i/2) if i + * is even, or as the right channel of stream (i/2) if + * i is odd. Otherwise, I/O channel j is encoded as + * mono in stream (i - coupled_streams), unless it has the special + * value 255, in which case it is omitted from the encoding entirely (the + * decoder will reproduce it as silence). Each value i must either + * be the special value 255 or be less than streams + coupled_streams. + * + * The output channels specified by the encoder + * should use the + * Vorbis + * channel ordering. A decoder may wish to apply an additional permutation + * to the mapping the encoder used to achieve a different output channel + * order (e.g. for outputing in WAV order). + * + * Each multistream packet contains an Opus packet for each stream, and all of + * the Opus packets in a single multistream packet must have the same + * duration. Therefore the duration of a multistream packet can be extracted + * from the TOC sequence of the first stream, which is located at the + * beginning of the packet, just like an elementary Opus stream: + * + * @code + * int nb_samples; + * int nb_frames; + * nb_frames = opus_packet_get_nb_frames(data, len); + * if (nb_frames < 1) + * return nb_frames; + * nb_samples = opus_packet_get_samples_per_frame(data, 48000) * nb_frames; + * @endcode + * + * The general encoding and decoding process proceeds exactly the same as in + * the normal @ref opus_encoder and @ref opus_decoder APIs. + * See their documentation for an overview of how to use the corresponding + * multistream functions. + */ + +/** Opus multistream encoder state. + * This contains the complete state of a multistream Opus encoder. + * It is position independent and can be freely copied. + * @see opus_multistream_encoder_create + * @see opus_multistream_encoder_init + */ +typedef struct OpusMSEncoder OpusMSEncoder; + +/** Opus multistream decoder state. + * This contains the complete state of a multistream Opus decoder. + * It is position independent and can be freely copied. + * @see opus_multistream_decoder_create + * @see opus_multistream_decoder_init + */ +typedef struct OpusMSDecoder OpusMSDecoder; + +/**\name Multistream encoder functions */ +/**@{*/ + +/** Gets the size of an OpusMSEncoder structure. + * @param streams int: The total number of streams to encode from the + * input. + * This must be no more than 255. + * @param coupled_streams int: 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 The size in bytes on success, or a negative error code + * (see @ref opus_errorcodes) on error. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_multistream_encoder_get_size( + int streams, + int coupled_streams +); + +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_multistream_surround_encoder_get_size( + int channels, + int mapping_family +); + + +/** Allocates and initializes a multistream encoder state. + * Call opus_multistream_encoder_destroy() to release + * this object when finished. + * @param Fs opus_int32: Sampling rate of the input signal (in Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param channels int: 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). + * @param streams int: The total number of streams to encode from the + * input. + * This must be no more than the number of channels. + * @param coupled_streams int: 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. + * @param[in] mapping const unsigned char[channels]: Mapping from + * encoded channels to input channels, as described in + * @ref opus_multistream. 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. + * @param application int: The target encoder application. + * This must be one of the following: + *
+ *
#OPUS_APPLICATION_VOIP
+ *
Process signal for improved speech intelligibility.
+ *
#OPUS_APPLICATION_AUDIO
+ *
Favor faithfulness to the original input.
+ *
#OPUS_APPLICATION_RESTRICTED_LOWDELAY
+ *
Configure the minimum possible coding delay by disabling certain modes + * of operation.
+ *
+ * @param[out] error int *: Returns #OPUS_OK on success, or an error + * code (see @ref opus_errorcodes) on + * failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusMSEncoder *opus_multistream_encoder_create( + opus_int32 Fs, + int channels, + int streams, + int coupled_streams, + const unsigned char *mapping, + int application, + int *error +) OPUS_ARG_NONNULL(5); + +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusMSEncoder *opus_multistream_surround_encoder_create( + opus_int32 Fs, + int channels, + int mapping_family, + int *streams, + int *coupled_streams, + unsigned char *mapping, + int application, + int *error +) OPUS_ARG_NONNULL(4) OPUS_ARG_NONNULL(5) OPUS_ARG_NONNULL(6); + +/** Initialize a previously allocated multistream encoder state. + * The memory pointed to by \a st must be at least the size returned by + * opus_multistream_encoder_get_size(). + * This is intended for applications which use their own allocator instead of + * malloc. + * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL. + * @see opus_multistream_encoder_create + * @see opus_multistream_encoder_get_size + * @param st OpusMSEncoder*: Multistream encoder state to initialize. + * @param Fs opus_int32: Sampling rate of the input signal (in Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param channels int: 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). + * @param streams int: The total number of streams to encode from the + * input. + * This must be no more than the number of channels. + * @param coupled_streams int: 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. + * @param[in] mapping const unsigned char[channels]: Mapping from + * encoded channels to input channels, as described in + * @ref opus_multistream. 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. + * @param application int: The target encoder application. + * This must be one of the following: + *
+ *
#OPUS_APPLICATION_VOIP
+ *
Process signal for improved speech intelligibility.
+ *
#OPUS_APPLICATION_AUDIO
+ *
Favor faithfulness to the original input.
+ *
#OPUS_APPLICATION_RESTRICTED_LOWDELAY
+ *
Configure the minimum possible coding delay by disabling certain modes + * of operation.
+ *
+ * @returns #OPUS_OK on success, or an error code (see @ref opus_errorcodes) + * on failure. + */ +OPUS_EXPORT int opus_multistream_encoder_init( + OpusMSEncoder *st, + opus_int32 Fs, + int channels, + int streams, + int coupled_streams, + const unsigned char *mapping, + int application +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(6); + +OPUS_EXPORT int opus_multistream_surround_encoder_init( + OpusMSEncoder *st, + opus_int32 Fs, + int channels, + int mapping_family, + int *streams, + int *coupled_streams, + unsigned char *mapping, + int application +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(5) OPUS_ARG_NONNULL(6) OPUS_ARG_NONNULL(7); + +/** Encodes a multistream Opus frame. + * @param st OpusMSEncoder*: Multistream encoder state. + * @param[in] pcm const opus_int16*: The input signal as interleaved + * samples. + * This must contain + * frame_size*channels + * samples. + * @param frame_size int: 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. + * @param[out] data unsigned char*: Output payload. + * This must contain storage for at + * least \a max_data_bytes. + * @param [in] max_data_bytes opus_int32: 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 The length of the encoded packet (in bytes) on success or a + * negative error code (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_multistream_encode( + OpusMSEncoder *st, + const opus_int16 *pcm, + int frame_size, + unsigned char *data, + opus_int32 max_data_bytes +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4); + +/** Encodes a multistream Opus frame from floating point input. + * @param st OpusMSEncoder*: Multistream encoder state. + * @param[in] pcm const float*: 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. + * @param frame_size int: 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. + * @param[out] data unsigned char*: Output payload. + * This must contain storage for at + * least \a max_data_bytes. + * @param [in] max_data_bytes opus_int32: 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 The length of the encoded packet (in bytes) on success or a + * negative error code (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_multistream_encode_float( + OpusMSEncoder *st, + const float *pcm, + int frame_size, + unsigned char *data, + opus_int32 max_data_bytes +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4); + +/** Frees an OpusMSEncoder allocated by + * opus_multistream_encoder_create(). + * @param st OpusMSEncoder*: Multistream encoder state to be freed. + */ +OPUS_EXPORT void opus_multistream_encoder_destroy(OpusMSEncoder *st); + +/** Perform a CTL function on a multistream Opus encoder. + * + * Generally the request and subsequent arguments are generated by a + * convenience macro. + * @param st OpusMSEncoder*: Multistream encoder state. + * @param request This and all remaining parameters should be replaced by one + * of the convenience macros in @ref opus_genericctls, + * @ref opus_encoderctls, or @ref opus_multistream_ctls. + * @see opus_genericctls + * @see opus_encoderctls + * @see opus_multistream_ctls + */ +OPUS_EXPORT int opus_multistream_encoder_ctl(OpusMSEncoder *st, int request, ...) OPUS_ARG_NONNULL(1); + +/**@}*/ + +/**\name Multistream decoder functions */ +/**@{*/ + +/** Gets the size of an OpusMSDecoder structure. + * @param streams int: The total number of streams coded in the + * input. + * This must be no more than 255. + * @param coupled_streams int: 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 The size in bytes on success, or a negative error code + * (see @ref opus_errorcodes) on error. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_multistream_decoder_get_size( + int streams, + int coupled_streams +); + +/** Allocates and initializes a multistream decoder state. + * Call opus_multistream_decoder_destroy() to release + * this object when finished. + * @param Fs opus_int32: Sampling rate to decode at (in Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param channels int: Number of channels to output. + * This must be at most 255. + * It may be different from the number of coded + * channels (streams + + * coupled_streams). + * @param streams int: The total number of streams coded in the + * input. + * This must be no more than 255. + * @param coupled_streams int: 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. + * @param[in] mapping const unsigned char[channels]: Mapping from + * coded channels to output channels, as described in + * @ref opus_multistream. + * @param[out] error int *: Returns #OPUS_OK on success, or an error + * code (see @ref opus_errorcodes) on + * failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusMSDecoder *opus_multistream_decoder_create( + opus_int32 Fs, + int channels, + int streams, + int coupled_streams, + const unsigned char *mapping, + int *error +) OPUS_ARG_NONNULL(5); + +/** Intialize a previously allocated decoder state object. + * The memory pointed to by \a st must be at least the size returned by + * opus_multistream_encoder_get_size(). + * This is intended for applications which use their own allocator instead of + * malloc. + * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL. + * @see opus_multistream_decoder_create + * @see opus_multistream_deocder_get_size + * @param st OpusMSEncoder*: Multistream encoder state to initialize. + * @param Fs opus_int32: Sampling rate to decode at (in Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param channels int: Number of channels to output. + * This must be at most 255. + * It may be different from the number of coded + * channels (streams + + * coupled_streams). + * @param streams int: The total number of streams coded in the + * input. + * This must be no more than 255. + * @param coupled_streams int: 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. + * @param[in] mapping const unsigned char[channels]: Mapping from + * coded channels to output channels, as described in + * @ref opus_multistream. + * @returns #OPUS_OK on success, or an error code (see @ref opus_errorcodes) + * on failure. + */ +OPUS_EXPORT int opus_multistream_decoder_init( + OpusMSDecoder *st, + opus_int32 Fs, + int channels, + int streams, + int coupled_streams, + const unsigned char *mapping +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(6); + +/** Decode a multistream Opus packet. + * @param st OpusMSDecoder*: Multistream decoder state. + * @param[in] data const unsigned char*: Input payload. + * Use a NULL + * pointer to indicate packet + * loss. + * @param len opus_int32: Number of bytes in payload. + * @param[out] pcm opus_int16*: Output signal, with interleaved + * samples. + * This must contain room for + * frame_size*channels + * samples. + * @param frame_size int: The number of samples per channel of + * available space in \a 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. + * @param decode_fec int: 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 Number of samples decoded on success or a negative error code + * (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_multistream_decode( + OpusMSDecoder *st, + const unsigned char *data, + opus_int32 len, + opus_int16 *pcm, + int frame_size, + int decode_fec +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + +/** Decode a multistream Opus packet with floating point output. + * @param st OpusMSDecoder*: Multistream decoder state. + * @param[in] data const unsigned char*: Input payload. + * Use a NULL + * pointer to indicate packet + * loss. + * @param len opus_int32: Number of bytes in payload. + * @param[out] pcm opus_int16*: Output signal, with interleaved + * samples. + * This must contain room for + * frame_size*channels + * samples. + * @param frame_size int: The number of samples per channel of + * available space in \a 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. + * @param decode_fec int: 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 Number of samples decoded on success or a negative error code + * (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_multistream_decode_float( + OpusMSDecoder *st, + const unsigned char *data, + opus_int32 len, + float *pcm, + int frame_size, + int decode_fec +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + +/** Perform a CTL function on a multistream Opus decoder. + * + * Generally the request and subsequent arguments are generated by a + * convenience macro. + * @param st OpusMSDecoder*: Multistream decoder state. + * @param request This and all remaining parameters should be replaced by one + * of the convenience macros in @ref opus_genericctls, + * @ref opus_decoderctls, or @ref opus_multistream_ctls. + * @see opus_genericctls + * @see opus_decoderctls + * @see opus_multistream_ctls + */ +OPUS_EXPORT int opus_multistream_decoder_ctl(OpusMSDecoder *st, int request, ...) OPUS_ARG_NONNULL(1); + +/** Frees an OpusMSDecoder allocated by + * opus_multistream_decoder_create(). + * @param st OpusMSDecoder: Multistream decoder state to be freed. + */ +OPUS_EXPORT void opus_multistream_decoder_destroy(OpusMSDecoder *st); + +/**@}*/ + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* OPUS_MULTISTREAM_H */ diff --git a/opus/include/opus/opus_projection.h b/opus/include/opus/opus_projection.h new file mode 100644 index 00000000..9dabf4e8 --- /dev/null +++ b/opus/include/opus/opus_projection.h @@ -0,0 +1,568 @@ +/* Copyright (c) 2017 Google Inc. + Written by Andrew Allen */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ + +/** + * @file opus_projection.h + * @brief Opus projection reference API + */ + +#ifndef OPUS_PROJECTION_H +#define OPUS_PROJECTION_H + +#include "opus_multistream.h" + +#ifdef __cplusplus +extern "C" { +#endif + +/** @cond OPUS_INTERNAL_DOC */ + +/** These are the actual encoder and decoder CTL ID numbers. + * They should not be used directly by applications.c + * In general, SETs should be even and GETs should be odd.*/ +/**@{*/ +#define OPUS_PROJECTION_GET_DEMIXING_MATRIX_GAIN_REQUEST 6001 +#define OPUS_PROJECTION_GET_DEMIXING_MATRIX_SIZE_REQUEST 6003 +#define OPUS_PROJECTION_GET_DEMIXING_MATRIX_REQUEST 6005 +/**@}*/ + + +/** @endcond */ + +/** @defgroup opus_projection_ctls Projection specific encoder and decoder CTLs + * + * These are convenience macros that are specific to the + * opus_projection_encoder_ctl() and opus_projection_decoder_ctl() + * interface. + * The CTLs from @ref opus_genericctls, @ref opus_encoderctls, + * @ref opus_decoderctls, and @ref opus_multistream_ctls may be applied to a + * projection encoder or decoder as well. + */ +/**@{*/ + +/** Gets the gain (in dB. S7.8-format) of the demixing matrix from the encoder. + * @param[out] x opus_int32 *: Returns the gain (in dB. S7.8-format) + * of the demixing matrix. + * @hideinitializer + */ +#define OPUS_PROJECTION_GET_DEMIXING_MATRIX_GAIN(x) OPUS_PROJECTION_GET_DEMIXING_MATRIX_GAIN_REQUEST, __opus_check_int_ptr(x) + + +/** Gets the size in bytes of the demixing matrix from the encoder. + * @param[out] x opus_int32 *: Returns the size in bytes of the + * demixing matrix. + * @hideinitializer + */ +#define OPUS_PROJECTION_GET_DEMIXING_MATRIX_SIZE(x) OPUS_PROJECTION_GET_DEMIXING_MATRIX_SIZE_REQUEST, __opus_check_int_ptr(x) + + +/** Copies the demixing matrix to the supplied pointer location. + * @param[out] x unsigned char *: Returns the demixing matrix to the + * supplied pointer location. + * @param y opus_int32: The size in bytes of the reserved memory at the + * pointer location. + * @hideinitializer + */ +#define OPUS_PROJECTION_GET_DEMIXING_MATRIX(x,y) OPUS_PROJECTION_GET_DEMIXING_MATRIX_REQUEST, x, __opus_check_int(y) + + +/**@}*/ + +/** Opus projection encoder state. + * This contains the complete state of a projection Opus encoder. + * It is position independent and can be freely copied. + * @see opus_projection_ambisonics_encoder_create + */ +typedef struct OpusProjectionEncoder OpusProjectionEncoder; + + +/** Opus projection decoder state. + * This contains the complete state of a projection Opus decoder. + * It is position independent and can be freely copied. + * @see opus_projection_decoder_create + * @see opus_projection_decoder_init + */ +typedef struct OpusProjectionDecoder OpusProjectionDecoder; + + +/**\name Projection encoder functions */ +/**@{*/ + +/** Gets the size of an OpusProjectionEncoder structure. + * @param channels int: The total number of input channels to encode. + * This must be no more than 255. + * @param mapping_family int: The mapping family to use for selecting + * the appropriate projection. + * @returns The size in bytes on success, or a negative error code + * (see @ref opus_errorcodes) on error. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_projection_ambisonics_encoder_get_size( + int channels, + int mapping_family +); + + +/** Allocates and initializes a projection encoder state. + * Call opus_projection_encoder_destroy() to release + * this object when finished. + * @param Fs opus_int32: Sampling rate of the input signal (in Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param channels int: 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). + * @param mapping_family int: The mapping family to use for selecting + * the appropriate projection. + * @param[out] streams int *: The total number of streams that will + * be encoded from the input. + * @param[out] coupled_streams int *: Number of coupled (2 channel) + * streams that will be encoded from the input. + * @param application int: The target encoder application. + * This must be one of the following: + *
+ *
#OPUS_APPLICATION_VOIP
+ *
Process signal for improved speech intelligibility.
+ *
#OPUS_APPLICATION_AUDIO
+ *
Favor faithfulness to the original input.
+ *
#OPUS_APPLICATION_RESTRICTED_LOWDELAY
+ *
Configure the minimum possible coding delay by disabling certain modes + * of operation.
+ *
+ * @param[out] error int *: Returns #OPUS_OK on success, or an error + * code (see @ref opus_errorcodes) on + * failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusProjectionEncoder *opus_projection_ambisonics_encoder_create( + opus_int32 Fs, + int channels, + int mapping_family, + int *streams, + int *coupled_streams, + int application, + int *error +) OPUS_ARG_NONNULL(4) OPUS_ARG_NONNULL(5); + + +/** Initialize a previously allocated projection encoder state. + * The memory pointed to by \a st must be at least the size returned by + * opus_projection_ambisonics_encoder_get_size(). + * This is intended for applications which use their own allocator instead of + * malloc. + * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL. + * @see opus_projection_ambisonics_encoder_create + * @see opus_projection_ambisonics_encoder_get_size + * @param st OpusProjectionEncoder*: Projection encoder state to initialize. + * @param Fs opus_int32: Sampling rate of the input signal (in Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param channels int: 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). + * @param streams int: The total number of streams to encode from the + * input. + * This must be no more than the number of channels. + * @param coupled_streams int: 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. + * @param application int: The target encoder application. + * This must be one of the following: + *
+ *
#OPUS_APPLICATION_VOIP
+ *
Process signal for improved speech intelligibility.
+ *
#OPUS_APPLICATION_AUDIO
+ *
Favor faithfulness to the original input.
+ *
#OPUS_APPLICATION_RESTRICTED_LOWDELAY
+ *
Configure the minimum possible coding delay by disabling certain modes + * of operation.
+ *
+ * @returns #OPUS_OK on success, or an error code (see @ref opus_errorcodes) + * on failure. + */ +OPUS_EXPORT int opus_projection_ambisonics_encoder_init( + OpusProjectionEncoder *st, + opus_int32 Fs, + int channels, + int mapping_family, + int *streams, + int *coupled_streams, + int application +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(5) OPUS_ARG_NONNULL(6); + + +/** Encodes a projection Opus frame. + * @param st OpusProjectionEncoder*: Projection encoder state. + * @param[in] pcm const opus_int16*: The input signal as interleaved + * samples. + * This must contain + * frame_size*channels + * samples. + * @param frame_size int: 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. + * @param[out] data unsigned char*: Output payload. + * This must contain storage for at + * least \a max_data_bytes. + * @param [in] max_data_bytes opus_int32: 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 The length of the encoded packet (in bytes) on success or a + * negative error code (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_projection_encode( + OpusProjectionEncoder *st, + const opus_int16 *pcm, + int frame_size, + unsigned char *data, + opus_int32 max_data_bytes +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4); + + +/** Encodes a projection Opus frame from floating point input. + * @param st OpusProjectionEncoder*: Projection encoder state. + * @param[in] pcm const float*: 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. + * @param frame_size int: 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. + * @param[out] data unsigned char*: Output payload. + * This must contain storage for at + * least \a max_data_bytes. + * @param [in] max_data_bytes opus_int32: 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 The length of the encoded packet (in bytes) on success or a + * negative error code (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_projection_encode_float( + OpusProjectionEncoder *st, + const float *pcm, + int frame_size, + unsigned char *data, + opus_int32 max_data_bytes +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(2) OPUS_ARG_NONNULL(4); + + +/** Frees an OpusProjectionEncoder allocated by + * opus_projection_ambisonics_encoder_create(). + * @param st OpusProjectionEncoder*: Projection encoder state to be freed. + */ +OPUS_EXPORT void opus_projection_encoder_destroy(OpusProjectionEncoder *st); + + +/** Perform a CTL function on a projection Opus encoder. + * + * Generally the request and subsequent arguments are generated by a + * convenience macro. + * @param st OpusProjectionEncoder*: Projection encoder state. + * @param request This and all remaining parameters should be replaced by one + * of the convenience macros in @ref opus_genericctls, + * @ref opus_encoderctls, @ref opus_multistream_ctls, or + * @ref opus_projection_ctls + * @see opus_genericctls + * @see opus_encoderctls + * @see opus_multistream_ctls + * @see opus_projection_ctls + */ +OPUS_EXPORT int opus_projection_encoder_ctl(OpusProjectionEncoder *st, int request, ...) OPUS_ARG_NONNULL(1); + + +/**@}*/ + +/**\name Projection decoder functions */ +/**@{*/ + +/** Gets the size of an OpusProjectionDecoder structure. + * @param channels int: The total number of output channels. + * This must be no more than 255. + * @param streams int: The total number of streams coded in the + * input. + * This must be no more than 255. + * @param coupled_streams int: 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 The size in bytes on success, or a negative error code + * (see @ref opus_errorcodes) on error. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT opus_int32 opus_projection_decoder_get_size( + int channels, + int streams, + int coupled_streams +); + + +/** Allocates and initializes a projection decoder state. + * Call opus_projection_decoder_destroy() to release + * this object when finished. + * @param Fs opus_int32: Sampling rate to decode at (in Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param channels int: Number of channels to output. + * This must be at most 255. + * It may be different from the number of coded + * channels (streams + + * coupled_streams). + * @param streams int: The total number of streams coded in the + * input. + * This must be no more than 255. + * @param coupled_streams int: 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. + * @param[in] demixing_matrix const unsigned char[demixing_matrix_size]: Demixing matrix + * that mapping from coded channels to output channels, + * as described in @ref opus_projection and + * @ref opus_projection_ctls. + * @param demixing_matrix_size opus_int32: The size in bytes of the + * demixing matrix, as + * described in @ref + * opus_projection_ctls. + * @param[out] error int *: Returns #OPUS_OK on success, or an error + * code (see @ref opus_errorcodes) on + * failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT OpusProjectionDecoder *opus_projection_decoder_create( + opus_int32 Fs, + int channels, + int streams, + int coupled_streams, + unsigned char *demixing_matrix, + opus_int32 demixing_matrix_size, + int *error +) OPUS_ARG_NONNULL(5); + + +/** Intialize a previously allocated projection decoder state object. + * The memory pointed to by \a st must be at least the size returned by + * opus_projection_decoder_get_size(). + * This is intended for applications which use their own allocator instead of + * malloc. + * To reset a previously initialized state, use the #OPUS_RESET_STATE CTL. + * @see opus_projection_decoder_create + * @see opus_projection_deocder_get_size + * @param st OpusProjectionDecoder*: Projection encoder state to initialize. + * @param Fs opus_int32: Sampling rate to decode at (in Hz). + * This must be one of 8000, 12000, 16000, + * 24000, or 48000. + * @param channels int: Number of channels to output. + * This must be at most 255. + * It may be different from the number of coded + * channels (streams + + * coupled_streams). + * @param streams int: The total number of streams coded in the + * input. + * This must be no more than 255. + * @param coupled_streams int: 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. + * @param[in] demixing_matrix const unsigned char[demixing_matrix_size]: Demixing matrix + * that mapping from coded channels to output channels, + * as described in @ref opus_projection and + * @ref opus_projection_ctls. + * @param demixing_matrix_size opus_int32: The size in bytes of the + * demixing matrix, as + * described in @ref + * opus_projection_ctls. + * @returns #OPUS_OK on success, or an error code (see @ref opus_errorcodes) + * on failure. + */ +OPUS_EXPORT int opus_projection_decoder_init( + OpusProjectionDecoder *st, + opus_int32 Fs, + int channels, + int streams, + int coupled_streams, + unsigned char *demixing_matrix, + opus_int32 demixing_matrix_size +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(6); + + +/** Decode a projection Opus packet. + * @param st OpusProjectionDecoder*: Projection decoder state. + * @param[in] data const unsigned char*: Input payload. + * Use a NULL + * pointer to indicate packet + * loss. + * @param len opus_int32: Number of bytes in payload. + * @param[out] pcm opus_int16*: Output signal, with interleaved + * samples. + * This must contain room for + * frame_size*channels + * samples. + * @param frame_size int: The number of samples per channel of + * available space in \a 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. + * @param decode_fec int: 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 Number of samples decoded on success or a negative error code + * (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_projection_decode( + OpusProjectionDecoder *st, + const unsigned char *data, + opus_int32 len, + opus_int16 *pcm, + int frame_size, + int decode_fec +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + + +/** Decode a projection Opus packet with floating point output. + * @param st OpusProjectionDecoder*: Projection decoder state. + * @param[in] data const unsigned char*: Input payload. + * Use a NULL + * pointer to indicate packet + * loss. + * @param len opus_int32: Number of bytes in payload. + * @param[out] pcm opus_int16*: Output signal, with interleaved + * samples. + * This must contain room for + * frame_size*channels + * samples. + * @param frame_size int: The number of samples per channel of + * available space in \a 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. + * @param decode_fec int: 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 Number of samples decoded on success or a negative error code + * (see @ref opus_errorcodes) on failure. + */ +OPUS_EXPORT OPUS_WARN_UNUSED_RESULT int opus_projection_decode_float( + OpusProjectionDecoder *st, + const unsigned char *data, + opus_int32 len, + float *pcm, + int frame_size, + int decode_fec +) OPUS_ARG_NONNULL(1) OPUS_ARG_NONNULL(4); + + +/** Perform a CTL function on a projection Opus decoder. + * + * Generally the request and subsequent arguments are generated by a + * convenience macro. + * @param st OpusProjectionDecoder*: Projection decoder state. + * @param request This and all remaining parameters should be replaced by one + * of the convenience macros in @ref opus_genericctls, + * @ref opus_decoderctls, @ref opus_multistream_ctls, or + * @ref opus_projection_ctls. + * @see opus_genericctls + * @see opus_decoderctls + * @see opus_multistream_ctls + * @see opus_projection_ctls + */ +OPUS_EXPORT int opus_projection_decoder_ctl(OpusProjectionDecoder *st, int request, ...) OPUS_ARG_NONNULL(1); + + +/** Frees an OpusProjectionDecoder allocated by + * opus_projection_decoder_create(). + * @param st OpusProjectionDecoder: Projection decoder state to be freed. + */ +OPUS_EXPORT void opus_projection_decoder_destroy(OpusProjectionDecoder *st); + + +/**@}*/ + +/**@}*/ + +#ifdef __cplusplus +} +#endif + +#endif /* OPUS_PROJECTION_H */ diff --git a/opus/include/opus/opus_types.h b/opus/include/opus/opus_types.h new file mode 100644 index 00000000..7cf67558 --- /dev/null +++ b/opus/include/opus/opus_types.h @@ -0,0 +1,166 @@ +/* (C) COPYRIGHT 1994-2002 Xiph.Org Foundation */ +/* Modified by Jean-Marc Valin */ +/* + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + + - Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + + - Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER + OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, + EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, + PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR + PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF + LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING + NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS + SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +*/ +/* opus_types.h based on ogg_types.h from libogg */ + +/** + @file opus_types.h + @brief Opus reference implementation types +*/ +#ifndef OPUS_TYPES_H +#define OPUS_TYPES_H + +#define opus_int int /* used for counters etc; at least 16 bits */ +#define opus_int64 long long +#define opus_int8 signed char + +#define opus_uint unsigned int /* used for counters etc; at least 16 bits */ +#define opus_uint64 unsigned long long +#define opus_uint8 unsigned char + +/* Use the real stdint.h if it's there (taken from Paul Hsieh's pstdint.h) */ +#if (defined(__STDC__) && __STDC__ && defined(__STDC_VERSION__) && __STDC_VERSION__ >= 199901L) || (defined(__GNUC__) && (defined(_STDINT_H) || defined(_STDINT_H_)) || defined (HAVE_STDINT_H)) +#include +# undef opus_int64 +# undef opus_int8 +# undef opus_uint64 +# undef opus_uint8 + typedef int8_t opus_int8; + typedef uint8_t opus_uint8; + typedef int16_t opus_int16; + typedef uint16_t opus_uint16; + typedef int32_t opus_int32; + typedef uint32_t opus_uint32; + typedef int64_t opus_int64; + typedef uint64_t opus_uint64; +#elif defined(_WIN32) + +# if defined(__CYGWIN__) +# include <_G_config.h> + typedef _G_int32_t opus_int32; + typedef _G_uint32_t opus_uint32; + typedef _G_int16 opus_int16; + typedef _G_uint16 opus_uint16; +# elif defined(__MINGW32__) + typedef short opus_int16; + typedef unsigned short opus_uint16; + typedef int opus_int32; + typedef unsigned int opus_uint32; +# elif defined(__MWERKS__) + typedef int opus_int32; + typedef unsigned int opus_uint32; + typedef short opus_int16; + typedef unsigned short opus_uint16; +# else + /* MSVC/Borland */ + typedef __int32 opus_int32; + typedef unsigned __int32 opus_uint32; + typedef __int16 opus_int16; + typedef unsigned __int16 opus_uint16; +# endif + +#elif defined(__MACOS__) + +# include + typedef SInt16 opus_int16; + typedef UInt16 opus_uint16; + typedef SInt32 opus_int32; + typedef UInt32 opus_uint32; + +#elif (defined(__APPLE__) && defined(__MACH__)) /* MacOS X Framework build */ + +# include + typedef int16_t opus_int16; + typedef u_int16_t opus_uint16; + typedef int32_t opus_int32; + typedef u_int32_t opus_uint32; + +#elif defined(__BEOS__) + + /* Be */ +# include + typedef int16 opus_int16; + typedef u_int16 opus_uint16; + typedef int32_t opus_int32; + typedef u_int32_t opus_uint32; + +#elif defined (__EMX__) + + /* OS/2 GCC */ + typedef short opus_int16; + typedef unsigned short opus_uint16; + typedef int opus_int32; + typedef unsigned int opus_uint32; + +#elif defined (DJGPP) + + /* DJGPP */ + typedef short opus_int16; + typedef unsigned short opus_uint16; + typedef int opus_int32; + typedef unsigned int opus_uint32; + +#elif defined(R5900) + + /* PS2 EE */ + typedef int opus_int32; + typedef unsigned opus_uint32; + typedef short opus_int16; + typedef unsigned short opus_uint16; + +#elif defined(__SYMBIAN32__) + + /* Symbian GCC */ + typedef signed short opus_int16; + typedef unsigned short opus_uint16; + typedef signed int opus_int32; + typedef unsigned int opus_uint32; + +#elif defined(CONFIG_TI_C54X) || defined (CONFIG_TI_C55X) + + typedef short opus_int16; + typedef unsigned short opus_uint16; + typedef long opus_int32; + typedef unsigned long opus_uint32; + +#elif defined(CONFIG_TI_C6X) + + typedef short opus_int16; + typedef unsigned short opus_uint16; + typedef int opus_int32; + typedef unsigned int opus_uint32; + +#else + + /* Give up, take a reasonable guess */ + typedef short opus_int16; + typedef unsigned short opus_uint16; + typedef int opus_int32; + typedef unsigned int opus_uint32; + +#endif + +#endif /* OPUS_TYPES_H */ diff --git a/opus/include/opus/opusfile.h b/opus/include/opus/opusfile.h new file mode 100644 index 00000000..e3a3dc83 --- /dev/null +++ b/opus/include/opus/opusfile.h @@ -0,0 +1,2164 @@ +/******************************************************************** + * * + * THIS FILE IS PART OF THE libopusfile SOFTWARE CODEC SOURCE CODE. * + * USE, DISTRIBUTION AND REPRODUCTION OF THIS LIBRARY SOURCE IS * + * GOVERNED BY A BSD-STYLE SOURCE LICENSE INCLUDED WITH THIS SOURCE * + * IN 'COPYING'. PLEASE READ THESE TERMS BEFORE DISTRIBUTING. * + * * + * THE libopusfile SOURCE CODE IS (C) COPYRIGHT 1994-2012 * + * by the Xiph.Org Foundation and contributors http://www.xiph.org/ * + * * + ******************************************************************** + + function: stdio-based convenience library for opening/seeking/decoding + last mod: $Id: vorbisfile.h 17182 2010-04-29 03:48:32Z xiphmont $ + + ********************************************************************/ +#if !defined(_opusfile_h) +# define _opusfile_h (1) + +/**\mainpage + \section Introduction + + This is the documentation for the libopusfile C API. + + The libopusfile package provides a convenient high-level API for + decoding and basic manipulation of all Ogg Opus audio streams. + libopusfile is implemented as a layer on top of Xiph.Org's + reference + libogg + and + libopus + libraries. + + libopusfile provides several sets of built-in routines for + file/stream access, and may also use custom stream I/O routines provided by + the embedded environment. + There are built-in I/O routines provided for ANSI-compliant + stdio (FILE *), memory buffers, and URLs + (including URLs, plus optionally and URLs). + + \section Organization + + The main API is divided into several sections: + - \ref stream_open_close + - \ref stream_info + - \ref stream_decoding + - \ref stream_seeking + + Several additional sections are not tied to the main API. + - \ref stream_callbacks + - \ref header_info + - \ref error_codes + + \section Overview + + The libopusfile API always decodes files to 48 kHz. + The original sample rate is not preserved by the lossy compression, though + it is stored in the header to allow you to resample to it after decoding + (the libopusfile API does not currently provide a resampler, + but the + the + Speex resampler is a good choice if you need one). + In general, if you are playing back the audio, you should leave it at + 48 kHz, provided your audio hardware supports it. + When decoding to a file, it may be worth resampling back to the original + sample rate, so as not to surprise users who might not expect the sample + rate to change after encoding to Opus and decoding. + + Opus files can contain anywhere from 1 to 255 channels of audio. + The channel mappings for up to 8 channels are the same as the + Vorbis + mappings. + A special stereo API can convert everything to 2 channels, making it simple + to support multichannel files in an application which only has stereo + output. + Although the libopusfile ABI provides support for the theoretical + maximum number of channels, the current implementation does not support + files with more than 8 channels, as they do not have well-defined channel + mappings. + + Like all Ogg files, Opus files may be "chained". + That is, multiple Opus files may be combined into a single, longer file just + by concatenating the original files. + This is commonly done in internet radio streaming, as it allows the title + and artist to be updated each time the song changes, since each link in the + chain includes its own set of metadata. + + libopusfile fully supports chained files. + It will decode the first Opus stream found in each link of a chained file + (ignoring any other streams that might be concurrently multiplexed with it, + such as a video stream). + + The channel count can also change between links. + If your application is not prepared to deal with this, it can use the stereo + API to ensure the audio from all links will always get decoded into a + common format. + Since libopusfile always decodes to 48 kHz, you do not have to + worry about the sample rate changing between links (as was possible with + Vorbis). + This makes application support for chained files with libopusfile + very easy.*/ + +# if defined(__cplusplus) +extern "C" { +# endif + +# include +# include +# include +# include + +/**@cond PRIVATE*/ + +/*Enable special features for gcc and gcc-compatible compilers.*/ +# if !defined(OP_GNUC_PREREQ) +# if defined(__GNUC__)&&defined(__GNUC_MINOR__) +# define OP_GNUC_PREREQ(_maj,_min) \ + ((__GNUC__<<16)+__GNUC_MINOR__>=((_maj)<<16)+(_min)) +# else +# define OP_GNUC_PREREQ(_maj,_min) 0 +# endif +# endif + +# if OP_GNUC_PREREQ(4,0) +# pragma GCC visibility push(default) +# endif + +typedef struct OpusHead OpusHead; +typedef struct OpusTags OpusTags; +typedef struct OpusPictureTag OpusPictureTag; +typedef struct OpusServerInfo OpusServerInfo; +typedef struct OpusFileCallbacks OpusFileCallbacks; +typedef struct OggOpusFile OggOpusFile; + +/*Warning attributes for libopusfile functions.*/ +# if OP_GNUC_PREREQ(3,4) +# define OP_WARN_UNUSED_RESULT __attribute__((__warn_unused_result__)) +# else +# define OP_WARN_UNUSED_RESULT +# endif +# if OP_GNUC_PREREQ(3,4) +# define OP_ARG_NONNULL(_x) __attribute__((__nonnull__(_x))) +# else +# define OP_ARG_NONNULL(_x) +# endif + +/**@endcond*/ + +/**\defgroup error_codes Error Codes*/ +/*@{*/ +/**\name List of possible error codes + Many of the functions in this library return a negative error code when a + function fails. + This list provides a brief explanation of the common errors. + See each individual function for more details on what a specific error code + means in that context.*/ +/*@{*/ + +/**A request did not succeed.*/ +#define OP_FALSE (-1) +/*Currently not used externally.*/ +#define OP_EOF (-2) +/**There was a hole in the page sequence numbers (e.g., a page was corrupt or + missing).*/ +#define OP_HOLE (-3) +/**An underlying read, seek, or tell operation failed when it should have + succeeded.*/ +#define OP_EREAD (-128) +/**A NULL pointer was passed where one was unexpected, or an + internal memory allocation failed, or an internal library error was + encountered.*/ +#define OP_EFAULT (-129) +/**The stream used a feature that is not implemented, such as an unsupported + channel family.*/ +#define OP_EIMPL (-130) +/**One or more parameters to a function were invalid.*/ +#define OP_EINVAL (-131) +/**A purported Ogg Opus stream did not begin with an Ogg page, a purported + header packet did not start with one of the required strings, "OpusHead" or + "OpusTags", or a link in a chained file was encountered that did not + contain any logical Opus streams.*/ +#define OP_ENOTFORMAT (-132) +/**A required header packet was not properly formatted, contained illegal + values, or was missing altogether.*/ +#define OP_EBADHEADER (-133) +/**The ID header contained an unrecognized version number.*/ +#define OP_EVERSION (-134) +/*Currently not used at all.*/ +#define OP_ENOTAUDIO (-135) +/**An audio packet failed to decode properly. + This is usually caused by a multistream Ogg packet where the durations of + the individual Opus packets contained in it are not all the same.*/ +#define OP_EBADPACKET (-136) +/**We failed to find data we had seen before, or the bitstream structure was + sufficiently malformed that seeking to the target destination was + impossible.*/ +#define OP_EBADLINK (-137) +/**An operation that requires seeking was requested on an unseekable stream.*/ +#define OP_ENOSEEK (-138) +/**The first or last granule position of a link failed basic validity checks.*/ +#define OP_EBADTIMESTAMP (-139) + +/*@}*/ +/*@}*/ + +/**\defgroup header_info Header Information*/ +/*@{*/ + +/**The maximum number of channels in an Ogg Opus stream.*/ +#define OPUS_CHANNEL_COUNT_MAX (255) + +/**Ogg Opus bitstream information. + This contains the basic playback parameters for a stream, and corresponds to + the initial ID header packet of an Ogg Opus stream.*/ +struct OpusHead{ + /**The Ogg Opus format version, in the range 0...255. + The top 4 bits represent a "major" version, and the bottom four bits + represent backwards-compatible "minor" revisions. + The current specification describes version 1. + This library will recognize versions up through 15 as backwards compatible + with the current specification. + An earlier draft of the specification described a version 0, but the only + difference between version 1 and version 0 is that version 0 did + not specify the semantics for handling the version field.*/ + int version; + /**The number of channels, in the range 1...255.*/ + int channel_count; + /**The number of samples that should be discarded from the beginning of the + stream.*/ + unsigned pre_skip; + /**The sampling rate of the original input. + All Opus audio is coded at 48 kHz, and should also be decoded at 48 kHz + for playback (unless the target hardware does not support this sampling + rate). + However, this field may be used to resample the audio back to the original + sampling rate, for example, when saving the output to a file.*/ + opus_uint32 input_sample_rate; + /**The gain to apply to the decoded output, in dB, as a Q8 value in the range + -32768...32767. + The libopusfile API will automatically apply this gain to the + decoded output before returning it, scaling it by + pow(10,output_gain/(20.0*256)). + You can adjust this behavior with op_set_gain_offset().*/ + int output_gain; + /**The channel mapping family, in the range 0...255. + Channel mapping family 0 covers mono or stereo in a single stream. + Channel mapping family 1 covers 1 to 8 channels in one or more streams, + using the Vorbis speaker assignments. + Channel mapping family 255 covers 1 to 255 channels in one or more + streams, but without any defined speaker assignment.*/ + int mapping_family; + /**The number of Opus streams in each Ogg packet, in the range 1...255.*/ + int stream_count; + /**The number of coupled Opus streams in each Ogg packet, in the range + 0...127. + This must satisfy 0 <= coupled_count <= stream_count and + coupled_count + stream_count <= 255. + The coupled streams appear first, before all uncoupled streams, in an Ogg + Opus packet.*/ + int coupled_count; + /**The mapping from coded stream channels to output channels. + Let index=mapping[k] be the value for channel k. + If index<2*coupled_count, then it refers to the left channel + from stream (index/2) if even, and the right channel from + stream (index/2) if odd. + Otherwise, it refers to the output of the uncoupled stream + (index-coupled_count).*/ + unsigned char mapping[OPUS_CHANNEL_COUNT_MAX]; +}; + +/**The metadata from an Ogg Opus stream. + + This structure holds the in-stream metadata corresponding to the 'comment' + header packet of an Ogg Opus stream. + The comment header is meant to be used much like someone jotting a quick + note on the label of a CD. + It should be a short, to the point text note that can be more than a couple + words, but not more than a short paragraph. + + The metadata is stored as a series of (tag, value) pairs, in length-encoded + string vectors, using the same format as Vorbis (without the final "framing + bit"), Theora, and Speex, except for the packet header. + The first occurrence of the '=' character delimits the tag and value. + A particular tag may occur more than once, and order is significant. + The character set encoding for the strings is always UTF-8, but the tag + names are limited to ASCII, and treated as case-insensitive. + See the Vorbis + comment header specification for details. + + In filling in this structure, libopusfile will null-terminate the + #user_comments strings for safety. + However, the bitstream format itself treats them as 8-bit clean vectors, + possibly containing NUL characters, so the #comment_lengths array should be + treated as their authoritative length. + + This structure is binary and source-compatible with a + vorbis_comment, and pointers to it may be freely cast to + vorbis_comment pointers, and vice versa. + It is provided as a separate type to avoid introducing a compile-time + dependency on the libvorbis headers.*/ +struct OpusTags{ + /**The array of comment string vectors.*/ + char **user_comments; + /**An array of the corresponding length of each vector, in bytes.*/ + int *comment_lengths; + /**The total number of comment streams.*/ + int comments; + /**The null-terminated vendor string. + This identifies the software used to encode the stream.*/ + char *vendor; +}; + +/**\name Picture tag image formats*/ +/*@{*/ + +/**The MIME type was not recognized, or the image data did not match the + declared MIME type.*/ +#define OP_PIC_FORMAT_UNKNOWN (-1) +/**The MIME type indicates the image data is really a URL.*/ +#define OP_PIC_FORMAT_URL (0) +/**The image is a JPEG.*/ +#define OP_PIC_FORMAT_JPEG (1) +/**The image is a PNG.*/ +#define OP_PIC_FORMAT_PNG (2) +/**The image is a GIF.*/ +#define OP_PIC_FORMAT_GIF (3) + +/*@}*/ + +/**The contents of a METADATA_BLOCK_PICTURE tag.*/ +struct OpusPictureTag{ + /**The picture type according to the ID3v2 APIC frame: +
    +
  1. Other
  2. +
  3. 32x32 pixels 'file icon' (PNG only)
  4. +
  5. Other file icon
  6. +
  7. Cover (front)
  8. +
  9. Cover (back)
  10. +
  11. Leaflet page
  12. +
  13. Media (e.g. label side of CD)
  14. +
  15. Lead artist/lead performer/soloist
  16. +
  17. Artist/performer
  18. +
  19. Conductor
  20. +
  21. Band/Orchestra
  22. +
  23. Composer
  24. +
  25. Lyricist/text writer
  26. +
  27. Recording Location
  28. +
  29. During recording
  30. +
  31. During performance
  32. +
  33. Movie/video screen capture
  34. +
  35. A bright colored fish
  36. +
  37. Illustration
  38. +
  39. Band/artist logotype
  40. +
  41. Publisher/Studio logotype
  42. +
+ Others are reserved and should not be used. + There may only be one each of picture type 1 and 2 in a file.*/ + opus_int32 type; + /**The MIME type of the picture, in printable ASCII characters 0x20-0x7E. + The MIME type may also be "-->" to signify that the data part + is a URL pointing to the picture instead of the picture data itself. + In this case, a terminating NUL is appended to the URL string in #data, + but #data_length is set to the length of the string excluding that + terminating NUL.*/ + char *mime_type; + /**The description of the picture, in UTF-8.*/ + char *description; + /**The width of the picture in pixels.*/ + opus_uint32 width; + /**The height of the picture in pixels.*/ + opus_uint32 height; + /**The color depth of the picture in bits-per-pixel (not + bits-per-channel).*/ + opus_uint32 depth; + /**For indexed-color pictures (e.g., GIF), the number of colors used, or 0 + for non-indexed pictures.*/ + opus_uint32 colors; + /**The length of the picture data in bytes.*/ + opus_uint32 data_length; + /**The binary picture data.*/ + unsigned char *data; + /**The format of the picture data, if known. + One of +
    +
  • #OP_PIC_FORMAT_UNKNOWN,
  • +
  • #OP_PIC_FORMAT_URL,
  • +
  • #OP_PIC_FORMAT_JPEG,
  • +
  • #OP_PIC_FORMAT_PNG, or
  • +
  • #OP_PIC_FORMAT_GIF.
  • +
*/ + int format; +}; + +/**\name Functions for manipulating header data + + These functions manipulate the #OpusHead and #OpusTags structures, + which describe the audio parameters and tag-value metadata, respectively. + These can be used to query the headers returned by libopusfile, or + to parse Opus headers from sources other than an Ogg Opus stream, provided + they use the same format.*/ +/*@{*/ + +/**Parses the contents of the ID header packet of an Ogg Opus stream. + \param[out] _head Returns the contents of the parsed packet. + The contents of this structure are untouched on error. + This may be NULL to merely test the header + for validity. + \param[in] _data The contents of the ID header packet. + \param _len The number of bytes of data in the ID header packet. + \return 0 on success or a negative value on error. + \retval #OP_ENOTFORMAT If the data does not start with the "OpusHead" + string. + \retval #OP_EVERSION If the version field signaled a version this library + does not know how to parse. + \retval #OP_EIMPL If the channel mapping family was 255, which general + purpose players should not attempt to play. + \retval #OP_EBADHEADER If the contents of the packet otherwise violate the + Ogg Opus specification: +
    +
  • Insufficient data,
  • +
  • Too much data for the known minor versions,
  • +
  • An unrecognized channel mapping family,
  • +
  • Zero channels or too many channels,
  • +
  • Zero coded streams,
  • +
  • Too many coupled streams, or
  • +
  • An invalid channel mapping index.
  • +
*/ +OP_WARN_UNUSED_RESULT int opus_head_parse(OpusHead *_head, + const unsigned char *_data,size_t _len) OP_ARG_NONNULL(2); + +/**Converts a granule position to a sample offset for a given Ogg Opus stream. + The sample offset is simply _gp-_head->pre_skip. + Granule position values smaller than OpusHead#pre_skip correspond to audio + that should never be played, and thus have no associated sample offset. + This function returns -1 for such values. + This function also correctly handles extremely large granule positions, + which may have wrapped around to a negative number when stored in a signed + ogg_int64_t value. + \param _head The #OpusHead information from the ID header of the stream. + \param _gp The granule position to convert. + \return The sample offset associated with the given granule position + (counting at a 48 kHz sampling rate), or the special value -1 on + error (i.e., the granule position was smaller than the pre-skip + amount).*/ +ogg_int64_t opus_granule_sample(const OpusHead *_head,ogg_int64_t _gp) + OP_ARG_NONNULL(1); + +/**Parses the contents of the 'comment' header packet of an Ogg Opus stream. + \param[out] _tags An uninitialized #OpusTags structure. + This returns the contents of the parsed packet. + The contents of this structure are untouched on error. + This may be NULL to merely test the header + for validity. + \param[in] _data The contents of the 'comment' header packet. + \param _len The number of bytes of data in the 'info' header packet. + \retval 0 Success. + \retval #OP_ENOTFORMAT If the data does not start with the "OpusTags" + string. + \retval #OP_EBADHEADER If the contents of the packet otherwise violate the + Ogg Opus specification. + \retval #OP_EFAULT If there wasn't enough memory to store the tags.*/ +OP_WARN_UNUSED_RESULT int opus_tags_parse(OpusTags *_tags, + const unsigned char *_data,size_t _len) OP_ARG_NONNULL(2); + +/**Performs a deep copy of an #OpusTags structure. + \param _dst The #OpusTags structure to copy into. + If this function fails, the contents of this structure remain + untouched. + \param _src The #OpusTags structure to copy from. + \retval 0 Success. + \retval #OP_EFAULT If there wasn't enough memory to copy the tags.*/ +int opus_tags_copy(OpusTags *_dst,const OpusTags *_src) OP_ARG_NONNULL(1); + +/**Initializes an #OpusTags structure. + This should be called on a freshly allocated #OpusTags structure before + attempting to use it. + \param _tags The #OpusTags structure to initialize.*/ +void opus_tags_init(OpusTags *_tags) OP_ARG_NONNULL(1); + +/**Add a (tag, value) pair to an initialized #OpusTags structure. + \note Neither opus_tags_add() nor opus_tags_add_comment() support values + containing embedded NULs, although the bitstream format does support them. + To add such tags, you will need to manipulate the #OpusTags structure + directly. + \param _tags The #OpusTags structure to add the (tag, value) pair to. + \param _tag A NUL-terminated, case-insensitive, ASCII string containing + the tag to add (without an '=' character). + \param _value A NUL-terminated UTF-8 containing the corresponding value. + \return 0 on success, or a negative value on failure. + \retval #OP_EFAULT An internal memory allocation failed.*/ +int opus_tags_add(OpusTags *_tags,const char *_tag,const char *_value) + OP_ARG_NONNULL(1) OP_ARG_NONNULL(2) OP_ARG_NONNULL(3); + +/**Add a comment to an initialized #OpusTags structure. + \note Neither opus_tags_add_comment() nor opus_tags_add() support comments + containing embedded NULs, although the bitstream format does support them. + To add such tags, you will need to manipulate the #OpusTags structure + directly. + \param _tags The #OpusTags structure to add the comment to. + \param _comment A NUL-terminated UTF-8 string containing the comment in + "TAG=value" form. + \return 0 on success, or a negative value on failure. + \retval #OP_EFAULT An internal memory allocation failed.*/ +int opus_tags_add_comment(OpusTags *_tags,const char *_comment) + OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/**Replace the binary suffix data at the end of the packet (if any). + \param _tags An initialized #OpusTags structure. + \param _data A buffer of binary data to append after the encoded user + comments. + The least significant bit of the first byte of this data must + be set (to ensure the data is preserved by other editors). + \param _len The number of bytes of binary data to append. + This may be zero to remove any existing binary suffix data. + \return 0 on success, or a negative value on error. + \retval #OP_EINVAL \a _len was negative, or \a _len was positive but + \a _data was NULL or the least significant + bit of the first byte was not set. + \retval #OP_EFAULT An internal memory allocation failed.*/ +int opus_tags_set_binary_suffix(OpusTags *_tags, + const unsigned char *_data,int _len) OP_ARG_NONNULL(1); + +/**Look up a comment value by its tag. + \param _tags An initialized #OpusTags structure. + \param _tag The tag to look up. + \param _count The instance of the tag. + The same tag can appear multiple times, each with a distinct + value, so an index is required to retrieve them all. + The order in which these values appear is significant and + should be preserved. + Use opus_tags_query_count() to get the legal range for the + \a _count parameter. + \return A pointer to the queried tag's value. + This points directly to data in the #OpusTags structure. + It should not be modified or freed by the application, and + modifications to the structure may invalidate the pointer. + \retval NULL If no matching tag is found.*/ +const char *opus_tags_query(const OpusTags *_tags,const char *_tag,int _count) + OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/**Look up the number of instances of a tag. + Call this first when querying for a specific tag and then iterate over the + number of instances with separate calls to opus_tags_query() to retrieve + all the values for that tag in order. + \param _tags An initialized #OpusTags structure. + \param _tag The tag to look up. + \return The number of instances of this particular tag.*/ +int opus_tags_query_count(const OpusTags *_tags,const char *_tag) + OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/**Retrieve the binary suffix data at the end of the packet (if any). + \param _tags An initialized #OpusTags structure. + \param[out] _len Returns the number of bytes of binary suffix data returned. + \return A pointer to the binary suffix data, or NULL if none + was present.*/ +const unsigned char *opus_tags_get_binary_suffix(const OpusTags *_tags, + int *_len) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/**Get the album gain from an R128_ALBUM_GAIN tag, if one was specified. + This searches for the first R128_ALBUM_GAIN tag with a valid signed, + 16-bit decimal integer value and returns the value. + This routine is exposed merely for convenience for applications which wish + to do something special with the album gain (i.e., display it). + If you simply wish to apply the album gain instead of the header gain, you + can use op_set_gain_offset() with an #OP_ALBUM_GAIN type and no offset. + \param _tags An initialized #OpusTags structure. + \param[out] _gain_q8 The album gain, in 1/256ths of a dB. + This will lie in the range [-32768,32767], and should + be applied in addition to the header gain. + On error, no value is returned, and the previous + contents remain unchanged. + \return 0 on success, or a negative value on error. + \retval #OP_FALSE There was no album gain available in the given tags.*/ +int opus_tags_get_album_gain(const OpusTags *_tags,int *_gain_q8) + OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/**Get the track gain from an R128_TRACK_GAIN tag, if one was specified. + This searches for the first R128_TRACK_GAIN tag with a valid signed, + 16-bit decimal integer value and returns the value. + This routine is exposed merely for convenience for applications which wish + to do something special with the track gain (i.e., display it). + If you simply wish to apply the track gain instead of the header gain, you + can use op_set_gain_offset() with an #OP_TRACK_GAIN type and no offset. + \param _tags An initialized #OpusTags structure. + \param[out] _gain_q8 The track gain, in 1/256ths of a dB. + This will lie in the range [-32768,32767], and should + be applied in addition to the header gain. + On error, no value is returned, and the previous + contents remain unchanged. + \return 0 on success, or a negative value on error. + \retval #OP_FALSE There was no track gain available in the given tags.*/ +int opus_tags_get_track_gain(const OpusTags *_tags,int *_gain_q8) + OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/**Clears the #OpusTags structure. + This should be called on an #OpusTags structure after it is no longer + needed. + It will free all memory used by the structure members. + \param _tags The #OpusTags structure to clear.*/ +void opus_tags_clear(OpusTags *_tags) OP_ARG_NONNULL(1); + +/**Check if \a _comment is an instance of a \a _tag_name tag. + \see opus_tagncompare + \param _tag_name A NUL-terminated, case-insensitive, ASCII string containing + the name of the tag to check for (without the terminating + '=' character). + \param _comment The comment string to check. + \return An integer less than, equal to, or greater than zero if \a _comment + is found respectively, to be less than, to match, or be greater + than a "tag=value" string whose tag matches \a _tag_name.*/ +int opus_tagcompare(const char *_tag_name,const char *_comment); + +/**Check if \a _comment is an instance of a \a _tag_name tag. + This version is slightly more efficient than opus_tagcompare() if the length + of the tag name is already known (e.g., because it is a constant). + \see opus_tagcompare + \param _tag_name A case-insensitive ASCII string containing the name of the + tag to check for (without the terminating '=' character). + \param _tag_len The number of characters in the tag name. + This must be non-negative. + \param _comment The comment string to check. + \return An integer less than, equal to, or greater than zero if \a _comment + is found respectively, to be less than, to match, or be greater + than a "tag=value" string whose tag matches the first \a _tag_len + characters of \a _tag_name.*/ +int opus_tagncompare(const char *_tag_name,int _tag_len,const char *_comment); + +/**Parse a single METADATA_BLOCK_PICTURE tag. + This decodes the BASE64-encoded content of the tag and returns a structure + with the MIME type, description, image parameters (if known), and the + compressed image data. + If the MIME type indicates the presence of an image format we recognize + (JPEG, PNG, or GIF) and the actual image data contains the magic signature + associated with that format, then the OpusPictureTag::format field will be + set to the corresponding format. + This is provided as a convenience to avoid requiring applications to parse + the MIME type and/or do their own format detection for the commonly used + formats. + In this case, we also attempt to extract the image parameters directly from + the image data (overriding any that were present in the tag, which the + specification says applications are not meant to rely on). + The application must still provide its own support for actually decoding the + image data and, if applicable, retrieving that data from URLs. + \param[out] _pic Returns the parsed picture data. + No sanitation is done on the type, MIME type, or + description fields, so these might return invalid values. + The contents of this structure are left unmodified on + failure. + \param _tag The METADATA_BLOCK_PICTURE tag contents. + The leading "METADATA_BLOCK_PICTURE=" portion is optional, + to allow the function to be used on either directly on the + values in OpusTags::user_comments or on the return value + of opus_tags_query(). + \return 0 on success or a negative value on error. + \retval #OP_ENOTFORMAT The METADATA_BLOCK_PICTURE contents were not valid. + \retval #OP_EFAULT There was not enough memory to store the picture tag + contents.*/ +OP_WARN_UNUSED_RESULT int opus_picture_tag_parse(OpusPictureTag *_pic, + const char *_tag) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/**Initializes an #OpusPictureTag structure. + This should be called on a freshly allocated #OpusPictureTag structure + before attempting to use it. + \param _pic The #OpusPictureTag structure to initialize.*/ +void opus_picture_tag_init(OpusPictureTag *_pic) OP_ARG_NONNULL(1); + +/**Clears the #OpusPictureTag structure. + This should be called on an #OpusPictureTag structure after it is no longer + needed. + It will free all memory used by the structure members. + \param _pic The #OpusPictureTag structure to clear.*/ +void opus_picture_tag_clear(OpusPictureTag *_pic) OP_ARG_NONNULL(1); + +/*@}*/ + +/*@}*/ + +/**\defgroup url_options URL Reading Options*/ +/*@{*/ +/**\name URL reading options + Options for op_url_stream_create() and associated functions. + These allow you to provide proxy configuration parameters, skip SSL + certificate checks, etc. + Options are processed in order, and if the same option is passed multiple + times, only the value specified by the last occurrence has an effect + (unless otherwise specified). + They may be expanded in the future.*/ +/*@{*/ + +/**@cond PRIVATE*/ + +/*These are the raw numbers used to define the request codes. + They should not be used directly.*/ +#define OP_SSL_SKIP_CERTIFICATE_CHECK_REQUEST (6464) +#define OP_HTTP_PROXY_HOST_REQUEST (6528) +#define OP_HTTP_PROXY_PORT_REQUEST (6592) +#define OP_HTTP_PROXY_USER_REQUEST (6656) +#define OP_HTTP_PROXY_PASS_REQUEST (6720) +#define OP_GET_SERVER_INFO_REQUEST (6784) + +#define OP_URL_OPT(_request) ((_request)+(char *)0) + +/*These macros trigger compilation errors or warnings if the wrong types are + provided to one of the URL options.*/ +#define OP_CHECK_INT(_x) ((void)((_x)==(opus_int32)0),(opus_int32)(_x)) +#define OP_CHECK_CONST_CHAR_PTR(_x) ((_x)+((_x)-(const char *)(_x))) +#define OP_CHECK_SERVER_INFO_PTR(_x) ((_x)+((_x)-(OpusServerInfo *)(_x))) + +/**@endcond*/ + +/**HTTP/Shoutcast/Icecast server information associated with a URL.*/ +struct OpusServerInfo{ + /**The name of the server (icy-name/ice-name). + This is NULL if there was no icy-name or + ice-name header.*/ + char *name; + /**A short description of the server (icy-description/ice-description). + This is NULL if there was no icy-description or + ice-description header.*/ + char *description; + /**The genre the server falls under (icy-genre/ice-genre). + This is NULL if there was no icy-genre or + ice-genre header.*/ + char *genre; + /**The homepage for the server (icy-url/ice-url). + This is NULL if there was no icy-url or + ice-url header.*/ + char *url; + /**The software used by the origin server (Server). + This is NULL if there was no Server header.*/ + char *server; + /**The media type of the entity sent to the recepient (Content-Type). + This is NULL if there was no Content-Type + header.*/ + char *content_type; + /**The nominal stream bitrate in kbps (icy-br/ice-bitrate). + This is -1 if there was no icy-br or + ice-bitrate header.*/ + opus_int32 bitrate_kbps; + /**Flag indicating whether the server is public (1) or not + (0) (icy-pub/ice-public). + This is -1 if there was no icy-pub or + ice-public header.*/ + int is_public; + /**Flag indicating whether the server is using HTTPS instead of HTTP. + This is 0 unless HTTPS is being used. + This may not match the protocol used in the original URL if there were + redirections.*/ + int is_ssl; +}; + +/**Initializes an #OpusServerInfo structure. + All fields are set as if the corresponding header was not available. + \param _info The #OpusServerInfo structure to initialize. + \note If you use this function, you must link against libopusurl.*/ +void opus_server_info_init(OpusServerInfo *_info) OP_ARG_NONNULL(1); + +/**Clears the #OpusServerInfo structure. + This should be called on an #OpusServerInfo structure after it is no longer + needed. + It will free all memory used by the structure members. + \param _info The #OpusServerInfo structure to clear. + \note If you use this function, you must link against libopusurl.*/ +void opus_server_info_clear(OpusServerInfo *_info) OP_ARG_NONNULL(1); + +/**Skip the certificate check when connecting via TLS/SSL (https). + \param _b opus_int32: Whether or not to skip the certificate + check. + The check will be skipped if \a _b is non-zero, and will not be + skipped if \a _b is zero. + \hideinitializer*/ +#define OP_SSL_SKIP_CERTIFICATE_CHECK(_b) \ + OP_URL_OPT(OP_SSL_SKIP_CERTIFICATE_CHECK_REQUEST),OP_CHECK_INT(_b) + +/**Proxy connections through the given host. + If no port is specified via #OP_HTTP_PROXY_PORT, the port number defaults + to 8080 (http-alt). + All proxy parameters are ignored for non-http and non-https URLs. + \param _host const char *: The proxy server hostname. + This may be NULL to disable the use of a proxy + server. + \hideinitializer*/ +#define OP_HTTP_PROXY_HOST(_host) \ + OP_URL_OPT(OP_HTTP_PROXY_HOST_REQUEST),OP_CHECK_CONST_CHAR_PTR(_host) + +/**Use the given port when proxying connections. + This option only has an effect if #OP_HTTP_PROXY_HOST is specified with a + non-NULL \a _host. + If this option is not provided, the proxy port number defaults to 8080 + (http-alt). + All proxy parameters are ignored for non-http and non-https URLs. + \param _port opus_int32: The proxy server port. + This must be in the range 0...65535 (inclusive), or the + URL function this is passed to will fail. + \hideinitializer*/ +#define OP_HTTP_PROXY_PORT(_port) \ + OP_URL_OPT(OP_HTTP_PROXY_PORT_REQUEST),OP_CHECK_INT(_port) + +/**Use the given user name for authentication when proxying connections. + All proxy parameters are ignored for non-http and non-https URLs. + \param _user const char *: The proxy server user name. + This may be NULL to disable proxy + authentication. + A non-NULL value only has an effect + if #OP_HTTP_PROXY_HOST and #OP_HTTP_PROXY_PASS + are also specified with non-NULL + arguments. + \hideinitializer*/ +#define OP_HTTP_PROXY_USER(_user) \ + OP_URL_OPT(OP_HTTP_PROXY_USER_REQUEST),OP_CHECK_CONST_CHAR_PTR(_user) + +/**Use the given password for authentication when proxying connections. + All proxy parameters are ignored for non-http and non-https URLs. + \param _pass const char *: The proxy server password. + This may be NULL to disable proxy + authentication. + A non-NULL value only has an effect + if #OP_HTTP_PROXY_HOST and #OP_HTTP_PROXY_USER + are also specified with non-NULL + arguments. + \hideinitializer*/ +#define OP_HTTP_PROXY_PASS(_pass) \ + OP_URL_OPT(OP_HTTP_PROXY_PASS_REQUEST),OP_CHECK_CONST_CHAR_PTR(_pass) + +/**Parse information about the streaming server (if any) and return it. + Very little validation is done. + In particular, OpusServerInfo::url may not be a valid URL, + OpusServerInfo::bitrate_kbps may not really be in kbps, and + OpusServerInfo::content_type may not be a valid MIME type. + The character set of the string fields is not specified anywhere, and should + not be assumed to be valid UTF-8. + \param _info OpusServerInfo *: Returns information about the server. + If there is any error opening the stream, the + contents of this structure remain + unmodified. + On success, fills in the structure with the + server information that was available, if + any. + After a successful return, the contents of + this structure should be freed by calling + opus_server_info_clear(). + \hideinitializer*/ +#define OP_GET_SERVER_INFO(_info) \ + OP_URL_OPT(OP_GET_SERVER_INFO_REQUEST),OP_CHECK_SERVER_INFO_PTR(_info) + +/*@}*/ +/*@}*/ + +/**\defgroup stream_callbacks Abstract Stream Reading Interface*/ +/*@{*/ +/**\name Functions for reading from streams + These functions define the interface used to read from and seek in a stream + of data. + A stream does not need to implement seeking, but the decoder will not be + able to seek if it does not do so. + These functions also include some convenience routines for working with + standard FILE pointers, complete streams stored in a single + block of memory, or URLs.*/ +/*@{*/ + +/**Reads up to \a _nbytes bytes of data from \a _stream. + \param _stream The stream to read from. + \param[out] _ptr The buffer to store the data in. + \param _nbytes The maximum number of bytes to read. + This function may return fewer, though it will not + return zero unless it reaches end-of-file. + \return The number of bytes successfully read, or a negative value on + error.*/ +typedef int (*op_read_func)(void *_stream,unsigned char *_ptr,int _nbytes); + +/**Sets the position indicator for \a _stream. + The new position, measured in bytes, is obtained by adding \a _offset + bytes to the position specified by \a _whence. + If \a _whence is set to SEEK_SET, SEEK_CUR, or + SEEK_END, the offset is relative to the start of the stream, + the current position indicator, or end-of-file, respectively. + \retval 0 Success. + \retval -1 Seeking is not supported or an error occurred. + errno need not be set.*/ +typedef int (*op_seek_func)(void *_stream,opus_int64 _offset,int _whence); + +/**Obtains the current value of the position indicator for \a _stream. + \return The current position indicator.*/ +typedef opus_int64 (*op_tell_func)(void *_stream); + +/**Closes the underlying stream. + \retval 0 Success. + \retval EOF An error occurred. + errno need not be set.*/ +typedef int (*op_close_func)(void *_stream); + +/**The callbacks used to access non-FILE stream resources. + The function prototypes are basically the same as for the stdio functions + fread(), fseek(), ftell(), and + fclose(). + The differences are that the FILE * arguments have been + replaced with a void *, which is to be used as a pointer to + whatever internal data these functions might need, that #seek and #tell + take and return 64-bit offsets, and that #seek must return -1 if + the stream is unseekable.*/ +struct OpusFileCallbacks{ + /**Used to read data from the stream. + This must not be NULL.*/ + op_read_func read; + /**Used to seek in the stream. + This may be NULL if seeking is not implemented.*/ + op_seek_func seek; + /**Used to return the current read position in the stream. + This may be NULL if seeking is not implemented.*/ + op_tell_func tell; + /**Used to close the stream when the decoder is freed. + This may be NULL to leave the stream open.*/ + op_close_func close; +}; + +/**Opens a stream with fopen() and fills in a set of callbacks + that can be used to access it. + This is useful to avoid writing your own portable 64-bit seeking wrappers, + and also avoids cross-module linking issues on Windows, where a + FILE * must be accessed by routines defined in the same module + that opened it. + \param[out] _cb The callbacks to use for this file. + If there is an error opening the file, nothing will be + filled in here. + \param _path The path to the file to open. + On Windows, this string must be UTF-8 (to allow access to + files whose names cannot be represented in the current + MBCS code page). + All other systems use the native character encoding. + \param _mode The mode to open the file in. + \return A stream handle to use with the callbacks, or NULL on + error.*/ +OP_WARN_UNUSED_RESULT void *op_fopen(OpusFileCallbacks *_cb, + const char *_path,const char *_mode) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2) + OP_ARG_NONNULL(3); + +/**Opens a stream with fdopen() and fills in a set of callbacks + that can be used to access it. + This is useful to avoid writing your own portable 64-bit seeking wrappers, + and also avoids cross-module linking issues on Windows, where a + FILE * must be accessed by routines defined in the same module + that opened it. + \param[out] _cb The callbacks to use for this file. + If there is an error opening the file, nothing will be + filled in here. + \param _fd The file descriptor to open. + \param _mode The mode to open the file in. + \return A stream handle to use with the callbacks, or NULL on + error.*/ +OP_WARN_UNUSED_RESULT void *op_fdopen(OpusFileCallbacks *_cb, + int _fd,const char *_mode) OP_ARG_NONNULL(1) OP_ARG_NONNULL(3); + +/**Opens a stream with freopen() and fills in a set of callbacks + that can be used to access it. + This is useful to avoid writing your own portable 64-bit seeking wrappers, + and also avoids cross-module linking issues on Windows, where a + FILE * must be accessed by routines defined in the same module + that opened it. + \param[out] _cb The callbacks to use for this file. + If there is an error opening the file, nothing will be + filled in here. + \param _path The path to the file to open. + On Windows, this string must be UTF-8 (to allow access + to files whose names cannot be represented in the + current MBCS code page). + All other systems use the native character encoding. + \param _mode The mode to open the file in. + \param _stream A stream previously returned by op_fopen(), op_fdopen(), + or op_freopen(). + \return A stream handle to use with the callbacks, or NULL on + error.*/ +OP_WARN_UNUSED_RESULT void *op_freopen(OpusFileCallbacks *_cb, + const char *_path,const char *_mode,void *_stream) OP_ARG_NONNULL(1) + OP_ARG_NONNULL(2) OP_ARG_NONNULL(3) OP_ARG_NONNULL(4); + +/**Creates a stream that reads from the given block of memory. + This block of memory must contain the complete stream to decode. + This is useful for caching small streams (e.g., sound effects) in RAM. + \param[out] _cb The callbacks to use for this stream. + If there is an error creating the stream, nothing will be + filled in here. + \param _data The block of memory to read from. + \param _size The size of the block of memory. + \return A stream handle to use with the callbacks, or NULL on + error.*/ +OP_WARN_UNUSED_RESULT void *op_mem_stream_create(OpusFileCallbacks *_cb, + const unsigned char *_data,size_t _size) OP_ARG_NONNULL(1); + +/**Creates a stream that reads from the given URL. + This function behaves identically to op_url_stream_create(), except that it + takes a va_list instead of a variable number of arguments. + It does not call the va_end macro, and because it invokes the + va_arg macro, the value of \a _ap is undefined after the call. + \note If you use this function, you must link against libopusurl. + \param[out] _cb The callbacks to use for this stream. + If there is an error creating the stream, nothing will + be filled in here. + \param _url The URL to read from. + Currently only the , , and + schemes are supported. + Both and may be disabled at compile + time, in which case opening such URLs will always fail. + Currently this only supports URIs. + IRIs should be converted to UTF-8 and URL-escaped, with + internationalized domain names encoded in punycode, + before passing them to this function. + \param[in,out] _ap A list of the \ref url_options "optional flags" to use. + This is a variable-length list of options terminated + with NULL. + \return A stream handle to use with the callbacks, or NULL on + error.*/ +OP_WARN_UNUSED_RESULT void *op_url_stream_vcreate(OpusFileCallbacks *_cb, + const char *_url,va_list _ap) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/**Creates a stream that reads from the given URL. + \note If you use this function, you must link against libopusurl. + \param[out] _cb The callbacks to use for this stream. + If there is an error creating the stream, nothing will be + filled in here. + \param _url The URL to read from. + Currently only the , , and schemes + are supported. + Both and may be disabled at compile time, + in which case opening such URLs will always fail. + Currently this only supports URIs. + IRIs should be converted to UTF-8 and URL-escaped, with + internationalized domain names encoded in punycode, before + passing them to this function. + \param ... The \ref url_options "optional flags" to use. + This is a variable-length list of options terminated with + NULL. + \return A stream handle to use with the callbacks, or NULL on + error.*/ +OP_WARN_UNUSED_RESULT void *op_url_stream_create(OpusFileCallbacks *_cb, + const char *_url,...) OP_ARG_NONNULL(1) OP_ARG_NONNULL(2); + +/*@}*/ +/*@}*/ + +/**\defgroup stream_open_close Opening and Closing*/ +/*@{*/ +/**\name Functions for opening and closing streams + + These functions allow you to test a stream to see if it is Opus, open it, + and close it. + Several flavors are provided for each of the built-in stream types, plus a + more general version which takes a set of application-provided callbacks.*/ +/*@{*/ + +/**Test to see if this is an Opus stream. + For good results, you will need at least 57 bytes (for a pure Opus-only + stream). + Something like 512 bytes will give more reliable results for multiplexed + streams. + This function is meant to be a quick-rejection filter. + Its purpose is not to guarantee that a stream is a valid Opus stream, but to + ensure that it looks enough like Opus that it isn't going to be recognized + as some other format (except possibly an Opus stream that is also + multiplexed with other codecs, such as video). + \param[out] _head The parsed ID header contents. + You may pass NULL if you do not need + this information. + If the function fails, the contents of this structure + remain untouched. + \param _initial_data An initial buffer of data from the start of the + stream. + \param _initial_bytes The number of bytes in \a _initial_data. + \return 0 if the data appears to be Opus, or a negative value on error. + \retval #OP_FALSE There was not enough data to tell if this was an Opus + stream or not. + \retval #OP_EFAULT An internal memory allocation failed. + \retval #OP_EIMPL The stream used a feature that is not implemented, + such as an unsupported channel family. + \retval #OP_ENOTFORMAT If the data did not contain a recognizable ID + header for an Opus stream. + \retval #OP_EVERSION If the version field signaled a version this library + does not know how to parse. + \retval #OP_EBADHEADER The ID header was not properly formatted or contained + illegal values.*/ +int op_test(OpusHead *_head, + const unsigned char *_initial_data,size_t _initial_bytes); + +/**Open a stream from the given file path. + \param _path The path to the file to open. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in NULL if you don't want the + failure code. + The failure code will be #OP_EFAULT if the file could not + be opened, or one of the other failure codes from + op_open_callbacks() otherwise. + \return A freshly opened \c OggOpusFile, or NULL on error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_open_file(const char *_path,int *_error) + OP_ARG_NONNULL(1); + +/**Open a stream from a memory buffer. + \param _data The memory buffer to open. + \param _size The number of bytes in the buffer. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in NULL if you don't want the + failure code. + See op_open_callbacks() for a full list of failure codes. + \return A freshly opened \c OggOpusFile, or NULL on error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_open_memory(const unsigned char *_data, + size_t _size,int *_error); + +/**Open a stream from a URL. + This function behaves identically to op_open_url(), except that it + takes a va_list instead of a variable number of arguments. + It does not call the va_end macro, and because it invokes the + va_arg macro, the value of \a _ap is undefined after the call. + \note If you use this function, you must link against libopusurl. + \param _url The URL to open. + Currently only the , , and + schemes are supported. + Both and may be disabled at compile + time, in which case opening such URLs will always + fail. + Currently this only supports URIs. + IRIs should be converted to UTF-8 and URL-escaped, + with internationalized domain names encoded in + punycode, before passing them to this function. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in NULL if you don't want + the failure code. + See op_open_callbacks() for a full list of failure + codes. + \param[in,out] _ap A list of the \ref url_options "optional flags" to + use. + This is a variable-length list of options terminated + with NULL. + \return A freshly opened \c OggOpusFile, or NULL on error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_vopen_url(const char *_url, + int *_error,va_list _ap) OP_ARG_NONNULL(1); + +/**Open a stream from a URL. + \note If you use this function, you must link against libopusurl. + \param _url The URL to open. + Currently only the , , and schemes + are supported. + Both and may be disabled at compile + time, in which case opening such URLs will always fail. + Currently this only supports URIs. + IRIs should be converted to UTF-8 and URL-escaped, with + internationalized domain names encoded in punycode, + before passing them to this function. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in NULL if you don't want the + failure code. + See op_open_callbacks() for a full list of failure codes. + \param ... The \ref url_options "optional flags" to use. + This is a variable-length list of options terminated with + NULL. + \return A freshly opened \c OggOpusFile, or NULL on error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_open_url(const char *_url, + int *_error,...) OP_ARG_NONNULL(1); + +/**Open a stream using the given set of callbacks to access it. + \param _stream The stream to read from (e.g., a FILE *). + This value will be passed verbatim as the first + argument to all of the callbacks. + \param _cb The callbacks with which to access the stream. + read() must + be implemented. + seek() and + tell() may + be NULL, or may always return -1 to + indicate a stream is unseekable, but if + seek() is + implemented and succeeds on a particular stream, then + tell() must + also. + close() may + be NULL, but if it is not, it will be + called when the \c OggOpusFile is destroyed by + op_free(). + It will not be called if op_open_callbacks() fails + with an error. + \param _initial_data An initial buffer of data from the start of the + stream. + Applications can read some number of bytes from the + start of the stream to help identify this as an Opus + stream, and then provide them here to allow the + stream to be opened, even if it is unseekable. + \param _initial_bytes The number of bytes in \a _initial_data. + If the stream is seekable, its current position (as + reported by + tell() + at the start of this function) must be equal to + \a _initial_bytes. + Otherwise, seeking to absolute positions will + generate inconsistent results. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in NULL if you don't want + the failure code. + The failure code will be one of +
+
#OP_EREAD
+
An underlying read, seek, or tell operation + failed when it should have succeeded, or we failed + to find data in the stream we had seen before.
+
#OP_EFAULT
+
There was a memory allocation failure, or an + internal library error.
+
#OP_EIMPL
+
The stream used a feature that is not + implemented, such as an unsupported channel + family.
+
#OP_EINVAL
+
seek() + was implemented and succeeded on this source, but + tell() + did not, or the starting position indicator was + not equal to \a _initial_bytes.
+
#OP_ENOTFORMAT
+
The stream contained a link that did not have + any logical Opus streams in it.
+
#OP_EBADHEADER
+
A required header packet was not properly + formatted, contained illegal values, or was missing + altogether.
+
#OP_EVERSION
+
An ID header contained an unrecognized version + number.
+
#OP_EBADLINK
+
We failed to find data we had seen before after + seeking.
+
#OP_EBADTIMESTAMP
+
The first or last timestamp in a link failed + basic validity checks.
+
+ \return A freshly opened \c OggOpusFile, or NULL on error. + libopusfile does not take ownership of the stream + if the call fails. + The calling application is responsible for closing the stream if + this call returns an error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_open_callbacks(void *_stream, + const OpusFileCallbacks *_cb,const unsigned char *_initial_data, + size_t _initial_bytes,int *_error) OP_ARG_NONNULL(2); + +/**Partially open a stream from the given file path. + \see op_test_callbacks + \param _path The path to the file to open. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in NULL if you don't want the + failure code. + The failure code will be #OP_EFAULT if the file could not + be opened, or one of the other failure codes from + op_open_callbacks() otherwise. + \return A partially opened \c OggOpusFile, or NULL on error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_test_file(const char *_path,int *_error) + OP_ARG_NONNULL(1); + +/**Partially open a stream from a memory buffer. + \see op_test_callbacks + \param _data The memory buffer to open. + \param _size The number of bytes in the buffer. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in NULL if you don't want the + failure code. + See op_open_callbacks() for a full list of failure codes. + \return A partially opened \c OggOpusFile, or NULL on error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_test_memory(const unsigned char *_data, + size_t _size,int *_error); + +/**Partially open a stream from a URL. + This function behaves identically to op_test_url(), except that it + takes a va_list instead of a variable number of arguments. + It does not call the va_end macro, and because it invokes the + va_arg macro, the value of \a _ap is undefined after the call. + \note If you use this function, you must link against libopusurl. + \see op_test_url + \see op_test_callbacks + \param _url The URL to open. + Currently only the , , and + schemes are supported. + Both and may be disabled at compile + time, in which case opening such URLs will always + fail. + Currently this only supports URIs. + IRIs should be converted to UTF-8 and URL-escaped, + with internationalized domain names encoded in + punycode, before passing them to this function. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in NULL if you don't want + the failure code. + See op_open_callbacks() for a full list of failure + codes. + \param[in,out] _ap A list of the \ref url_options "optional flags" to + use. + This is a variable-length list of options terminated + with NULL. + \return A partially opened \c OggOpusFile, or NULL on error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_vtest_url(const char *_url, + int *_error,va_list _ap) OP_ARG_NONNULL(1); + +/**Partially open a stream from a URL. + \note If you use this function, you must link against libopusurl. + \see op_test_callbacks + \param _url The URL to open. + Currently only the , , and + schemes are supported. + Both and may be disabled at compile + time, in which case opening such URLs will always fail. + Currently this only supports URIs. + IRIs should be converted to UTF-8 and URL-escaped, with + internationalized domain names encoded in punycode, + before passing them to this function. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in NULL if you don't want the + failure code. + See op_open_callbacks() for a full list of failure + codes. + \param ... The \ref url_options "optional flags" to use. + This is a variable-length list of options terminated + with NULL. + \return A partially opened \c OggOpusFile, or NULL on error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_test_url(const char *_url, + int *_error,...) OP_ARG_NONNULL(1); + +/**Partially open a stream using the given set of callbacks to access it. + This tests for Opusness and loads the headers for the first link. + It does not seek (although it tests for seekability). + You can query a partially open stream for the few pieces of basic + information returned by op_serialno(), op_channel_count(), op_head(), and + op_tags() (but only for the first link). + You may also determine if it is seekable via a call to op_seekable(). + You cannot read audio from the stream, seek, get the size or duration, + get information from links other than the first one, or even get the total + number of links until you finish opening the stream with op_test_open(). + If you do not need to do any of these things, you can dispose of it with + op_free() instead. + + This function is provided mostly to simplify porting existing code that used + libvorbisfile. + For new code, you are likely better off using op_test() instead, which + is less resource-intensive, requires less data to succeed, and imposes a + hard limit on the amount of data it examines (important for unseekable + streams, where all such data must be buffered until you are sure of the + stream type). + \param _stream The stream to read from (e.g., a FILE *). + This value will be passed verbatim as the first + argument to all of the callbacks. + \param _cb The callbacks with which to access the stream. + read() must + be implemented. + seek() and + tell() may + be NULL, or may always return -1 to + indicate a stream is unseekable, but if + seek() is + implemented and succeeds on a particular stream, then + tell() must + also. + close() may + be NULL, but if it is not, it will be + called when the \c OggOpusFile is destroyed by + op_free(). + It will not be called if op_open_callbacks() fails + with an error. + \param _initial_data An initial buffer of data from the start of the + stream. + Applications can read some number of bytes from the + start of the stream to help identify this as an Opus + stream, and then provide them here to allow the + stream to be tested more thoroughly, even if it is + unseekable. + \param _initial_bytes The number of bytes in \a _initial_data. + If the stream is seekable, its current position (as + reported by + tell() + at the start of this function) must be equal to + \a _initial_bytes. + Otherwise, seeking to absolute positions will + generate inconsistent results. + \param[out] _error Returns 0 on success, or a failure code on error. + You may pass in NULL if you don't want + the failure code. + See op_open_callbacks() for a full list of failure + codes. + \return A partially opened \c OggOpusFile, or NULL on error. + libopusfile does not take ownership of the stream + if the call fails. + The calling application is responsible for closing the stream if + this call returns an error.*/ +OP_WARN_UNUSED_RESULT OggOpusFile *op_test_callbacks(void *_stream, + const OpusFileCallbacks *_cb,const unsigned char *_initial_data, + size_t _initial_bytes,int *_error) OP_ARG_NONNULL(2); + +/**Finish opening a stream partially opened with op_test_callbacks() or one of + the associated convenience functions. + If this function fails, you are still responsible for freeing the + \c OggOpusFile with op_free(). + \param _of The \c OggOpusFile to finish opening. + \return 0 on success, or a negative value on error. + \retval #OP_EREAD An underlying read, seek, or tell operation failed + when it should have succeeded. + \retval #OP_EFAULT There was a memory allocation failure, or an + internal library error. + \retval #OP_EIMPL The stream used a feature that is not implemented, + such as an unsupported channel family. + \retval #OP_EINVAL The stream was not partially opened with + op_test_callbacks() or one of the associated + convenience functions. + \retval #OP_ENOTFORMAT The stream contained a link that did not have any + logical Opus streams in it. + \retval #OP_EBADHEADER A required header packet was not properly + formatted, contained illegal values, or was + missing altogether. + \retval #OP_EVERSION An ID header contained an unrecognized version + number. + \retval #OP_EBADLINK We failed to find data we had seen before after + seeking. + \retval #OP_EBADTIMESTAMP The first or last timestamp in a link failed basic + validity checks.*/ +int op_test_open(OggOpusFile *_of) OP_ARG_NONNULL(1); + +/**Release all memory used by an \c OggOpusFile. + \param _of The \c OggOpusFile to free.*/ +void op_free(OggOpusFile *_of); + +/*@}*/ +/*@}*/ + +/**\defgroup stream_info Stream Information*/ +/*@{*/ +/**\name Functions for obtaining information about streams + + These functions allow you to get basic information about a stream, including + seekability, the number of links (for chained streams), plus the size, + duration, bitrate, header parameters, and meta information for each link + (or, where available, the stream as a whole). + Some of these (size, duration) are only available for seekable streams. + You can also query the current stream position, link, and playback time, + and instantaneous bitrate during playback. + + Some of these functions may be used successfully on the partially open + streams returned by op_test_callbacks() or one of the associated + convenience functions. + Their documention will indicate so explicitly.*/ +/*@{*/ + +/**Returns whether or not the stream being read is seekable. + This is true if +
    +
  1. The seek() and + tell() callbacks are both + non-NULL,
  2. +
  3. The seek() callback was + successfully executed at least once, and
  4. +
  5. The tell() callback was + successfully able to report the position indicator afterwards.
  6. +
+ This function may be called on partially-opened streams. + \param _of The \c OggOpusFile whose seekable status is to be returned. + \return A non-zero value if seekable, and 0 if unseekable.*/ +int op_seekable(const OggOpusFile *_of) OP_ARG_NONNULL(1); + +/**Returns the number of links in this chained stream. + This function may be called on partially-opened streams, but it will always + return 1. + The actual number of links is not known until the stream is fully opened. + \param _of The \c OggOpusFile from which to retrieve the link count. + \return For fully-open seekable streams, this returns the total number of + links in the whole stream, which will be at least 1. + For partially-open or unseekable streams, this always returns 1.*/ +int op_link_count(const OggOpusFile *_of) OP_ARG_NONNULL(1); + +/**Get the serial number of the given link in a (possibly-chained) Ogg Opus + stream. + This function may be called on partially-opened streams, but it will always + return the serial number of the Opus stream in the first link. + \param _of The \c OggOpusFile from which to retrieve the serial number. + \param _li The index of the link whose serial number should be retrieved. + Use a negative number to get the serial number of the current + link. + \return The serial number of the given link. + If \a _li is greater than the total number of links, this returns + the serial number of the last link. + If the stream is not seekable, this always returns the serial number + of the current link.*/ +opus_uint32 op_serialno(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1); + +/**Get the channel count of the given link in a (possibly-chained) Ogg Opus + stream. + This is equivalent to op_head(_of,_li)->channel_count, but + is provided for convenience. + This function may be called on partially-opened streams, but it will always + return the channel count of the Opus stream in the first link. + \param _of The \c OggOpusFile from which to retrieve the channel count. + \param _li The index of the link whose channel count should be retrieved. + Use a negative number to get the channel count of the current + link. + \return The channel count of the given link. + If \a _li is greater than the total number of links, this returns + the channel count of the last link. + If the stream is not seekable, this always returns the channel count + of the current link.*/ +int op_channel_count(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1); + +/**Get the total (compressed) size of the stream, or of an individual link in + a (possibly-chained) Ogg Opus stream, including all headers and Ogg muxing + overhead. + \warning If the Opus stream (or link) is concurrently multiplexed with other + logical streams (e.g., video), this returns the size of the entire stream + (or link), not just the number of bytes in the first logical Opus stream. + Returning the latter would require scanning the entire file. + \param _of The \c OggOpusFile from which to retrieve the compressed size. + \param _li The index of the link whose compressed size should be computed. + Use a negative number to get the compressed size of the entire + stream. + \return The compressed size of the entire stream if \a _li is negative, the + compressed size of link \a _li if it is non-negative, or a negative + value on error. + The compressed size of the entire stream may be smaller than that + of the underlying stream if trailing garbage was detected in the + file. + \retval #OP_EINVAL The stream is not seekable (so we can't know the length), + \a _li wasn't less than the total number of links in + the stream, or the stream was only partially open.*/ +opus_int64 op_raw_total(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1); + +/**Get the total PCM length (number of samples at 48 kHz) of the stream, or of + an individual link in a (possibly-chained) Ogg Opus stream. + Users looking for op_time_total() should use op_pcm_total() + instead. + Because timestamps in Opus are fixed at 48 kHz, there is no need for a + separate function to convert this to seconds (and leaving it out avoids + introducing floating point to the API, for those that wish to avoid it). + \param _of The \c OggOpusFile from which to retrieve the PCM offset. + \param _li The index of the link whose PCM length should be computed. + Use a negative number to get the PCM length of the entire stream. + \return The PCM length of the entire stream if \a _li is negative, the PCM + length of link \a _li if it is non-negative, or a negative value on + error. + \retval #OP_EINVAL The stream is not seekable (so we can't know the length), + \a _li wasn't less than the total number of links in + the stream, or the stream was only partially open.*/ +ogg_int64_t op_pcm_total(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1); + +/**Get the ID header information for the given link in a (possibly chained) Ogg + Opus stream. + This function may be called on partially-opened streams, but it will always + return the ID header information of the Opus stream in the first link. + \param _of The \c OggOpusFile from which to retrieve the ID header + information. + \param _li The index of the link whose ID header information should be + retrieved. + Use a negative number to get the ID header information of the + current link. + For an unseekable stream, \a _li is ignored, and the ID header + information for the current link is always returned, if + available. + \return The contents of the ID header for the given link.*/ +const OpusHead *op_head(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1); + +/**Get the comment header information for the given link in a (possibly + chained) Ogg Opus stream. + This function may be called on partially-opened streams, but it will always + return the tags from the Opus stream in the first link. + \param _of The \c OggOpusFile from which to retrieve the comment header + information. + \param _li The index of the link whose comment header information should be + retrieved. + Use a negative number to get the comment header information of + the current link. + For an unseekable stream, \a _li is ignored, and the comment + header information for the current link is always returned, if + available. + \return The contents of the comment header for the given link, or + NULL if this is an unseekable stream that encountered + an invalid link.*/ +const OpusTags *op_tags(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1); + +/**Retrieve the index of the current link. + This is the link that produced the data most recently read by + op_read_float() or its associated functions, or, after a seek, the link + that the seek target landed in. + Reading more data may advance the link index (even on the first read after a + seek). + \param _of The \c OggOpusFile from which to retrieve the current link index. + \return The index of the current link on success, or a negative value on + failure. + For seekable streams, this is a number between 0 (inclusive) and the + value returned by op_link_count() (exclusive). + For unseekable streams, this value starts at 0 and increments by one + each time a new link is encountered (even though op_link_count() + always returns 1). + \retval #OP_EINVAL The stream was only partially open.*/ +int op_current_link(const OggOpusFile *_of) OP_ARG_NONNULL(1); + +/**Computes the bitrate of the stream, or of an individual link in a + (possibly-chained) Ogg Opus stream. + The stream must be seekable to compute the bitrate. + For unseekable streams, use op_bitrate_instant() to get periodic estimates. + \warning If the Opus stream (or link) is concurrently multiplexed with other + logical streams (e.g., video), this uses the size of the entire stream (or + link) to compute the bitrate, not just the number of bytes in the first + logical Opus stream. + Returning the latter requires scanning the entire file, but this may be done + by decoding the whole file and calling op_bitrate_instant() once at the + end. + Install a trivial decoding callback with op_set_decode_callback() if you + wish to skip actual decoding during this process. + \param _of The \c OggOpusFile from which to retrieve the bitrate. + \param _li The index of the link whose bitrate should be computed. + Use a negative number to get the bitrate of the whole stream. + \return The bitrate on success, or a negative value on error. + \retval #OP_EINVAL The stream was only partially open, the stream was not + seekable, or \a _li was larger than the number of + links.*/ +opus_int32 op_bitrate(const OggOpusFile *_of,int _li) OP_ARG_NONNULL(1); + +/**Compute the instantaneous bitrate, measured as the ratio of bits to playable + samples decoded since a) the last call to op_bitrate_instant(), b) the last + seek, or c) the start of playback, whichever was most recent. + This will spike somewhat after a seek or at the start/end of a chain + boundary, as pre-skip, pre-roll, and end-trimming causes samples to be + decoded but not played. + \param _of The \c OggOpusFile from which to retrieve the bitrate. + \return The bitrate, in bits per second, or a negative value on error. + \retval #OP_FALSE No data has been decoded since any of the events + described above. + \retval #OP_EINVAL The stream was only partially open.*/ +opus_int32 op_bitrate_instant(OggOpusFile *_of) OP_ARG_NONNULL(1); + +/**Obtain the current value of the position indicator for \a _of. + \param _of The \c OggOpusFile from which to retrieve the position indicator. + \return The byte position that is currently being read from. + \retval #OP_EINVAL The stream was only partially open.*/ +opus_int64 op_raw_tell(const OggOpusFile *_of) OP_ARG_NONNULL(1); + +/**Obtain the PCM offset of the next sample to be read. + If the stream is not properly timestamped, this might not increment by the + proper amount between reads, or even return monotonically increasing + values. + \param _of The \c OggOpusFile from which to retrieve the PCM offset. + \return The PCM offset of the next sample to be read. + \retval #OP_EINVAL The stream was only partially open.*/ +ogg_int64_t op_pcm_tell(const OggOpusFile *_of) OP_ARG_NONNULL(1); + +/*@}*/ +/*@}*/ + +/**\defgroup stream_seeking Seeking*/ +/*@{*/ +/**\name Functions for seeking in Opus streams + + These functions let you seek in Opus streams, if the underlying stream + support it. + Seeking is implemented for all built-in stream I/O routines, though some + individual streams may not be seekable (pipes, live HTTP streams, or HTTP + streams from a server that does not support Range requests). + + op_raw_seek() is the fastest: it is guaranteed to perform at most one + physical seek, but, since the target is a byte position, makes no guarantee + how close to a given time it will come. + op_pcm_seek() provides sample-accurate seeking. + The number of physical seeks it requires is still quite small (often 1 or + 2, even in highly variable bitrate streams). + + Seeking in Opus requires decoding some pre-roll amount before playback to + allow the internal state to converge (as if recovering from packet loss). + This is handled internally by libopusfile, but means there is + little extra overhead for decoding up to the exact position requested + (since it must decode some amount of audio anyway). + It also means that decoding after seeking may not return exactly the same + values as would be obtained by decoding the stream straight through. + However, such differences are expected to be smaller than the loss + introduced by Opus's lossy compression.*/ +/*@{*/ + +/**Seek to a byte offset relative to the compressed data. + This also scans packets to update the PCM cursor. + It will cross a logical bitstream boundary, but only if it can't get any + packets out of the tail of the link to which it seeks. + \param _of The \c OggOpusFile in which to seek. + \param _byte_offset The byte position to seek to. + This must be between 0 and #op_raw_total(\a _of,\c -1) + (inclusive). + \return 0 on success, or a negative error code on failure. + \retval #OP_EREAD The underlying seek operation failed. + \retval #OP_EINVAL The stream was only partially open, or the target was + outside the valid range for the stream. + \retval #OP_ENOSEEK This stream is not seekable. + \retval #OP_EBADLINK Failed to initialize a decoder for a stream for an + unknown reason.*/ +int op_raw_seek(OggOpusFile *_of,opus_int64 _byte_offset) OP_ARG_NONNULL(1); + +/**Seek to the specified PCM offset, such that decoding will begin at exactly + the requested position. + \param _of The \c OggOpusFile in which to seek. + \param _pcm_offset The PCM offset to seek to. + This is in samples at 48 kHz relative to the start of the + stream. + \return 0 on success, or a negative value on error. + \retval #OP_EREAD An underlying read or seek operation failed. + \retval #OP_EINVAL The stream was only partially open, or the target was + outside the valid range for the stream. + \retval #OP_ENOSEEK This stream is not seekable. + \retval #OP_EBADLINK We failed to find data we had seen before, or the + bitstream structure was sufficiently malformed that + seeking to the target destination was impossible.*/ +int op_pcm_seek(OggOpusFile *_of,ogg_int64_t _pcm_offset) OP_ARG_NONNULL(1); + +/*@}*/ +/*@}*/ + +/**\defgroup stream_decoding Decoding*/ +/*@{*/ +/**\name Functions for decoding audio data + + These functions retrieve actual decoded audio data from the stream. + The general functions, op_read() and op_read_float() return 16-bit or + floating-point output, both using native endian ordering. + The number of channels returned can change from link to link in a chained + stream. + There are special functions, op_read_stereo() and op_read_float_stereo(), + which always output two channels, to simplify applications which do not + wish to handle multichannel audio. + These downmix multichannel files to two channels, so they can always return + samples in the same format for every link in a chained file. + + If the rest of your audio processing chain can handle floating point, the + floating-point routines should be preferred, as they prevent clipping and + other issues which might be avoided entirely if, e.g., you scale down the + volume at some other stage. + However, if you intend to consume 16-bit samples directly, the conversion in + libopusfile provides noise-shaping dithering and, if compiled + against libopus 1.1 or later, soft-clipping prevention. + + libopusfile can also be configured at compile time to use the + fixed-point libopus API. + If so, libopusfile's floating-point API may also be disabled. + In that configuration, nothing in libopusfile will use any + floating-point operations, to simplify support on devices without an + adequate FPU. + + \warning HTTPS streams may be be vulnerable to truncation attacks if you do + not check the error return code from op_read_float() or its associated + functions. + If the remote peer does not close the connection gracefully (with a TLS + "close notify" message), these functions will return #OP_EREAD instead of 0 + when they reach the end of the file. + If you are reading from an URL (particularly if seeking is not + supported), you should make sure to check for this error and warn the user + appropriately.*/ +/*@{*/ + +/**Indicates that the decoding callback should produce signed 16-bit + native-endian output samples.*/ +#define OP_DEC_FORMAT_SHORT (7008) +/**Indicates that the decoding callback should produce 32-bit native-endian + float samples.*/ +#define OP_DEC_FORMAT_FLOAT (7040) + +/**Indicates that the decoding callback did not decode anything, and that + libopusfile should decode normally instead.*/ +#define OP_DEC_USE_DEFAULT (6720) + +/**Called to decode an Opus packet. + This should invoke the functional equivalent of opus_multistream_decode() or + opus_multistream_decode_float(), except that it returns 0 on success + instead of the number of decoded samples (which is known a priori). + \param _ctx The application-provided callback context. + \param _decoder The decoder to use to decode the packet. + \param[out] _pcm The buffer to decode into. + This will always have enough room for \a _nchannels of + \a _nsamples samples, which should be placed into this + buffer interleaved. + \param _op The packet to decode. + This will always have its granule position set to a valid + value. + \param _nsamples The number of samples expected from the packet. + \param _nchannels The number of channels expected from the packet. + \param _format The desired sample output format. + This is either #OP_DEC_FORMAT_SHORT or + #OP_DEC_FORMAT_FLOAT. + \param _li The index of the link from which this packet was decoded. + \return A non-negative value on success, or a negative value on error. + Any error codes should be the same as those returned by + opus_multistream_decode() or opus_multistream_decode_float(). + Success codes are as follows: + \retval 0 Decoding was successful. + The application has filled the buffer with + exactly \a _nsamples*\a + _nchannels samples in the requested + format. + \retval #OP_DEC_USE_DEFAULT No decoding was done. + libopusfile should do the decoding + by itself instead.*/ +typedef int (*op_decode_cb_func)(void *_ctx,OpusMSDecoder *_decoder,void *_pcm, + const ogg_packet *_op,int _nsamples,int _nchannels,int _format,int _li); + +/**Sets the packet decode callback function. + If set, this is called once for each packet that needs to be decoded. + This can be used by advanced applications to do additional processing on the + compressed or uncompressed data. + For example, an application might save the final entropy coder state for + debugging and testing purposes, or it might apply additional filters + before the downmixing, dithering, or soft-clipping performed by + libopusfile, so long as these filters do not introduce any + latency. + + A call to this function is no guarantee that the audio will eventually be + delivered to the application. + libopusfile may discard some or all of the decoded audio data + (i.e., at the beginning or end of a link, or after a seek), however the + callback is still required to provide all of it. + \param _of The \c OggOpusFile on which to set the decode callback. + \param _decode_cb The callback function to call. + This may be NULL to disable calling the + callback. + \param _ctx The application-provided context pointer to pass to the + callback on each call.*/ +void op_set_decode_callback(OggOpusFile *_of, + op_decode_cb_func _decode_cb,void *_ctx) OP_ARG_NONNULL(1); + +/**Gain offset type that indicates that the provided offset is relative to the + header gain. + This is the default.*/ +#define OP_HEADER_GAIN (0) + +/**Gain offset type that indicates that the provided offset is relative to the + R128_ALBUM_GAIN value (if any), in addition to the header gain.*/ +#define OP_ALBUM_GAIN (3007) + +/**Gain offset type that indicates that the provided offset is relative to the + R128_TRACK_GAIN value (if any), in addition to the header gain.*/ +#define OP_TRACK_GAIN (3008) + +/**Gain offset type that indicates that the provided offset should be used as + the gain directly, without applying any the header or track gains.*/ +#define OP_ABSOLUTE_GAIN (3009) + +/**Sets the gain to be used for decoded output. + By default, the gain in the header is applied with no additional offset. + The total gain (including header gain and/or track gain, if applicable, and + this offset), will be clamped to [-32768,32767]/256 dB. + This is more than enough to saturate or underflow 16-bit PCM. + \note The new gain will not be applied to any already buffered, decoded + output. + This means you cannot change it sample-by-sample, as at best it will be + updated packet-by-packet. + It is meant for setting a target volume level, rather than applying smooth + fades, etc. + \param _of The \c OggOpusFile on which to set the gain offset. + \param _gain_type One of #OP_HEADER_GAIN, #OP_ALBUM_GAIN, + #OP_TRACK_GAIN, or #OP_ABSOLUTE_GAIN. + \param _gain_offset_q8 The gain offset to apply, in 1/256ths of a dB. + \return 0 on success or a negative value on error. + \retval #OP_EINVAL The \a _gain_type was unrecognized.*/ +int op_set_gain_offset(OggOpusFile *_of, + int _gain_type,opus_int32 _gain_offset_q8) OP_ARG_NONNULL(1); + +/**Sets whether or not dithering is enabled for 16-bit decoding. + By default, when libopusfile is compiled to use floating-point + internally, calling op_read() or op_read_stereo() will first decode to + float, and then convert to fixed-point using noise-shaping dithering. + This flag can be used to disable that dithering. + When the application uses op_read_float() or op_read_float_stereo(), or when + the library has been compiled to decode directly to fixed point, this flag + has no effect. + \param _of The \c OggOpusFile on which to enable or disable dithering. + \param _enabled A non-zero value to enable dithering, or 0 to disable it.*/ +void op_set_dither_enabled(OggOpusFile *_of,int _enabled) OP_ARG_NONNULL(1); + +/**Reads more samples from the stream. + \note Although \a _buf_size must indicate the total number of values that + can be stored in \a _pcm, the return value is the number of samples + per channel. + This is done because +
    +
  1. The channel count cannot be known a priori (reading more samples might + advance us into the next link, with a different channel count), so + \a _buf_size cannot also be in units of samples per channel,
  2. +
  3. Returning the samples per channel matches the libopus API + as closely as we're able,
  4. +
  5. Returning the total number of values instead of samples per channel + would mean the caller would need a division to compute the samples per + channel, and might worry about the possibility of getting back samples + for some channels and not others, and
  6. +
  7. This approach is relatively fool-proof: if an application passes too + small a value to \a _buf_size, they will simply get fewer samples back, + and if they assume the return value is the total number of values, then + they will simply read too few (rather than reading too many and going + off the end of the buffer).
  8. +
+ \param _of The \c OggOpusFile from which to read. + \param[out] _pcm A buffer in which to store the output PCM samples, as + signed native-endian 16-bit values at 48 kHz + with a nominal range of [-32768,32767). + Multiple channels are interleaved using the + Vorbis + channel ordering. + This must have room for at least \a _buf_size values. + \param _buf_size The number of values that can be stored in \a _pcm. + It is recommended that this be large enough for at + least 120 ms of data at 48 kHz per channel (5760 + values per channel). + Smaller buffers will simply return less data, possibly + consuming more memory to buffer the data internally. + libopusfile may return less data than + requested. + If so, there is no guarantee that the remaining data + in \a _pcm will be unmodified. + \param[out] _li The index of the link this data was decoded from. + You may pass NULL if you do not need this + information. + If this function fails (returning a negative value), + this parameter is left unset. + \return The number of samples read per channel on success, or a negative + value on failure. + The channel count can be retrieved on success by calling + op_head(_of,*_li). + The number of samples returned may be 0 if the buffer was too small + to store even a single sample for all channels, or if end-of-file + was reached. + The list of possible failure codes follows. + Most of them can only be returned by unseekable, chained streams + that encounter a new link. + \retval #OP_HOLE There was a hole in the data, and some samples + may have been skipped. + Call this function again to continue decoding + past the hole. + \retval #OP_EREAD An underlying read operation failed. + This may signal a truncation attack from an + source. + \retval #OP_EFAULT An internal memory allocation failed. + \retval #OP_EIMPL An unseekable stream encountered a new link that + used a feature that is not implemented, such as + an unsupported channel family. + \retval #OP_EINVAL The stream was only partially open. + \retval #OP_ENOTFORMAT An unseekable stream encountered a new link that + did not have any logical Opus streams in it. + \retval #OP_EBADHEADER An unseekable stream encountered a new link with a + required header packet that was not properly + formatted, contained illegal values, or was + missing altogether. + \retval #OP_EVERSION An unseekable stream encountered a new link with + an ID header that contained an unrecognized + version number. + \retval #OP_EBADPACKET Failed to properly decode the next packet. + \retval #OP_EBADLINK We failed to find data we had seen before. + \retval #OP_EBADTIMESTAMP An unseekable stream encountered a new link with + a starting timestamp that failed basic validity + checks.*/ +OP_WARN_UNUSED_RESULT int op_read(OggOpusFile *_of, + opus_int16 *_pcm,int _buf_size,int *_li) OP_ARG_NONNULL(1); + +/**Reads more samples from the stream. + \note Although \a _buf_size must indicate the total number of values that + can be stored in \a _pcm, the return value is the number of samples + per channel. +
    +
  1. The channel count cannot be known a priori (reading more samples might + advance us into the next link, with a different channel count), so + \a _buf_size cannot also be in units of samples per channel,
  2. +
  3. Returning the samples per channel matches the libopus API + as closely as we're able,
  4. +
  5. Returning the total number of values instead of samples per channel + would mean the caller would need a division to compute the samples per + channel, and might worry about the possibility of getting back samples + for some channels and not others, and
  6. +
  7. This approach is relatively fool-proof: if an application passes too + small a value to \a _buf_size, they will simply get fewer samples back, + and if they assume the return value is the total number of values, then + they will simply read too few (rather than reading too many and going + off the end of the buffer).
  8. +
+ \param _of The \c OggOpusFile from which to read. + \param[out] _pcm A buffer in which to store the output PCM samples as + signed floats at 48 kHz with a nominal range of + [-1.0,1.0]. + Multiple channels are interleaved using the + Vorbis + channel ordering. + This must have room for at least \a _buf_size floats. + \param _buf_size The number of floats that can be stored in \a _pcm. + It is recommended that this be large enough for at + least 120 ms of data at 48 kHz per channel (5760 + samples per channel). + Smaller buffers will simply return less data, possibly + consuming more memory to buffer the data internally. + If less than \a _buf_size values are returned, + libopusfile makes no guarantee that the + remaining data in \a _pcm will be unmodified. + \param[out] _li The index of the link this data was decoded from. + You may pass NULL if you do not need this + information. + If this function fails (returning a negative value), + this parameter is left unset. + \return The number of samples read per channel on success, or a negative + value on failure. + The channel count can be retrieved on success by calling + op_head(_of,*_li). + The number of samples returned may be 0 if the buffer was too small + to store even a single sample for all channels, or if end-of-file + was reached. + The list of possible failure codes follows. + Most of them can only be returned by unseekable, chained streams + that encounter a new link. + \retval #OP_HOLE There was a hole in the data, and some samples + may have been skipped. + Call this function again to continue decoding + past the hole. + \retval #OP_EREAD An underlying read operation failed. + This may signal a truncation attack from an + source. + \retval #OP_EFAULT An internal memory allocation failed. + \retval #OP_EIMPL An unseekable stream encountered a new link that + used a feature that is not implemented, such as + an unsupported channel family. + \retval #OP_EINVAL The stream was only partially open. + \retval #OP_ENOTFORMAT An unseekable stream encountered a new link that + did not have any logical Opus streams in it. + \retval #OP_EBADHEADER An unseekable stream encountered a new link with a + required header packet that was not properly + formatted, contained illegal values, or was + missing altogether. + \retval #OP_EVERSION An unseekable stream encountered a new link with + an ID header that contained an unrecognized + version number. + \retval #OP_EBADPACKET Failed to properly decode the next packet. + \retval #OP_EBADLINK We failed to find data we had seen before. + \retval #OP_EBADTIMESTAMP An unseekable stream encountered a new link with + a starting timestamp that failed basic validity + checks.*/ +OP_WARN_UNUSED_RESULT int op_read_float(OggOpusFile *_of, + float *_pcm,int _buf_size,int *_li) OP_ARG_NONNULL(1); + +/**Reads more samples from the stream and downmixes to stereo, if necessary. + This function is intended for simple players that want a uniform output + format, even if the channel count changes between links in a chained + stream. + \note \a _buf_size indicates the total number of values that can be stored + in \a _pcm, while the return value is the number of samples per + channel, even though the channel count is known, for consistency with + op_read(). + \param _of The \c OggOpusFile from which to read. + \param[out] _pcm A buffer in which to store the output PCM samples, as + signed native-endian 16-bit values at 48 kHz + with a nominal range of [-32768,32767). + The left and right channels are interleaved in the + buffer. + This must have room for at least \a _buf_size values. + \param _buf_size The number of values that can be stored in \a _pcm. + It is recommended that this be large enough for at + least 120 ms of data at 48 kHz per channel (11520 + values total). + Smaller buffers will simply return less data, possibly + consuming more memory to buffer the data internally. + If less than \a _buf_size values are returned, + libopusfile makes no guarantee that the + remaining data in \a _pcm will be unmodified. + \return The number of samples read per channel on success, or a negative + value on failure. + The number of samples returned may be 0 if the buffer was too small + to store even a single sample for both channels, or if end-of-file + was reached. + The list of possible failure codes follows. + Most of them can only be returned by unseekable, chained streams + that encounter a new link. + \retval #OP_HOLE There was a hole in the data, and some samples + may have been skipped. + Call this function again to continue decoding + past the hole. + \retval #OP_EREAD An underlying read operation failed. + This may signal a truncation attack from an + source. + \retval #OP_EFAULT An internal memory allocation failed. + \retval #OP_EIMPL An unseekable stream encountered a new link that + used a feature that is not implemented, such as + an unsupported channel family. + \retval #OP_EINVAL The stream was only partially open. + \retval #OP_ENOTFORMAT An unseekable stream encountered a new link that + did not have any logical Opus streams in it. + \retval #OP_EBADHEADER An unseekable stream encountered a new link with a + required header packet that was not properly + formatted, contained illegal values, or was + missing altogether. + \retval #OP_EVERSION An unseekable stream encountered a new link with + an ID header that contained an unrecognized + version number. + \retval #OP_EBADPACKET Failed to properly decode the next packet. + \retval #OP_EBADLINK We failed to find data we had seen before. + \retval #OP_EBADTIMESTAMP An unseekable stream encountered a new link with + a starting timestamp that failed basic validity + checks.*/ +OP_WARN_UNUSED_RESULT int op_read_stereo(OggOpusFile *_of, + opus_int16 *_pcm,int _buf_size) OP_ARG_NONNULL(1); + +/**Reads more samples from the stream and downmixes to stereo, if necessary. + This function is intended for simple players that want a uniform output + format, even if the channel count changes between links in a chained + stream. + \note \a _buf_size indicates the total number of values that can be stored + in \a _pcm, while the return value is the number of samples per + channel, even though the channel count is known, for consistency with + op_read_float(). + \param _of The \c OggOpusFile from which to read. + \param[out] _pcm A buffer in which to store the output PCM samples, as + signed floats at 48 kHz with a nominal range of + [-1.0,1.0]. + The left and right channels are interleaved in the + buffer. + This must have room for at least \a _buf_size values. + \param _buf_size The number of values that can be stored in \a _pcm. + It is recommended that this be large enough for at + least 120 ms of data at 48 kHz per channel (11520 + values total). + Smaller buffers will simply return less data, possibly + consuming more memory to buffer the data internally. + If less than \a _buf_size values are returned, + libopusfile makes no guarantee that the + remaining data in \a _pcm will be unmodified. + \return The number of samples read per channel on success, or a negative + value on failure. + The number of samples returned may be 0 if the buffer was too small + to store even a single sample for both channels, or if end-of-file + was reached. + The list of possible failure codes follows. + Most of them can only be returned by unseekable, chained streams + that encounter a new link. + \retval #OP_HOLE There was a hole in the data, and some samples + may have been skipped. + Call this function again to continue decoding + past the hole. + \retval #OP_EREAD An underlying read operation failed. + This may signal a truncation attack from an + source. + \retval #OP_EFAULT An internal memory allocation failed. + \retval #OP_EIMPL An unseekable stream encountered a new link that + used a feature that is not implemented, such as + an unsupported channel family. + \retval #OP_EINVAL The stream was only partially open. + \retval #OP_ENOTFORMAT An unseekable stream encountered a new link that + that did not have any logical Opus streams in it. + \retval #OP_EBADHEADER An unseekable stream encountered a new link with a + required header packet that was not properly + formatted, contained illegal values, or was + missing altogether. + \retval #OP_EVERSION An unseekable stream encountered a new link with + an ID header that contained an unrecognized + version number. + \retval #OP_EBADPACKET Failed to properly decode the next packet. + \retval #OP_EBADLINK We failed to find data we had seen before. + \retval #OP_EBADTIMESTAMP An unseekable stream encountered a new link with + a starting timestamp that failed basic validity + checks.*/ +OP_WARN_UNUSED_RESULT int op_read_float_stereo(OggOpusFile *_of, + float *_pcm,int _buf_size) OP_ARG_NONNULL(1); + +/*@}*/ +/*@}*/ + +# if OP_GNUC_PREREQ(4,0) +# pragma GCC visibility pop +# endif + +# if defined(__cplusplus) +} +# endif + +#endif diff --git a/opus/lib/libopus.a b/opus/lib/libopus.a new file mode 100644 index 0000000000000000000000000000000000000000..b79a16e94fcc8b2caf8a6e50bc0154c8769f49b7 GIT binary patch literal 780728 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

;d^iY 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�v*yz^z%vjfT_NgkqCsoqkmCP!M#^`ujsOEpSqG2sr=VmLVZ`5(UB?mr3ax2V$S+U*5{ETrS+ z-l#GYxzs0y^xD~_B@cI4RZUH5W23ZSY~cOdKE*Hk6E;)kig6lz!kx* z7~?=Ug%2p(lH4fV${=Fq@!;7ai5$np8v1k4uaqbe88mTMfu7G1T$wtU>X?p~>iPqh zMp_wyZUb1OPXG zX?zcs!>VUzk#1XLNew_^WWWj2u~DQ)m#+mD(Lp6*%z_32&dW=sx?-43S^yye?0AzB zTS(VFjzozTXCwKjW^r0MoqXNDYNW$iG^qm{uTVUe4v;a84~i7?S6K_K(DeE+5_1)z zY+{&+k+bN@3`lX;QBl%A3B^3?`j*Z11)ViC8xu2qQDZY8WRfh+m!Fvx9DV3%>8G#1 z5p=I7x05DR*P0~kQQmN;V&;A)Fqa!>t(0uvL$5!rPrzlAD9L?p7Q0HIKRt~S*_i>W z0=pr~w$~?uuXe$r_PUN4Vl1$D=;_xW@9S@bmW6{y&2>1f@Hj=nZyR|)(!SHUvh%F6 z4q?ga)MMKvD(4;#x~GBAI{USf4p>QVxnqiu`R=$PsM5LR@*V_lYMZ_&ci)Zbws^_q zscleRbP)lAysjNCi2Xb5v?t4y*W~qpUfnIle#oGskdoIH2i?jX+Ao*T3(&e!Kz1pX z2eeV~bP;9PO6eL-B1DIsbLbEAxoOlRlNyjP((Apw zjRaxmA*U)GvaXwL_u$5`n1~~mtMiBn8(1#WdQkMwtoyN(IT%(E*g5Qy4KE~PGo@u) zJCv-sdblavDWnvb4tG6C*T-xBlJK_cT~NP9h3<90MsT^)^BMcCpt5`u8H_jW4XgUR z-kQU1Mai13Dfsm48vbjWg3YsMH3j$2u5)a|K7FgP>e?Cz56&9iVZv@n?oFiO`@AsD z4a|n;(2=SMDE&m;1m*Nu2+opEGm$Duw;duFvvyTf232MmC>kykCAVbX-&beZx-*j` z7Y`=p1RJB|`XGio=OE%;7h#i_FmU8M(%EsN8TDrSj J%P*dnwT8@!1V@ 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

^R$JM1|8>{Z#s=ZDl4z2d$-HIpeE9ZL?k&aXe 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 L>lRjy zbsOOf!8~OkwIKag-WKHjmHHAf4+k-n~&BDsD zCM41mkW}}=QD?uNd8x_~R>=>*4`-wBaed{zbW3IuaDKtF{*v6urEKqpe2{&RXUMkR z9oq_vvb_^`$hL)*V_QhD?SLe@TRd@q$~bpxoBP;oaJ{G41Y3a!b)Ed9LfrweAiJGs z$erFDcM6Mgw+(m5orRU-PDrFDAfY};x}E)c9uEf~Il`*?D`sI_JjKTeb-MnIVOb!lMYCP-Qu9LUmz6WTf~KlP)vcXKt%X+ zHbjcJTL7^jdk)W#JH0#Z6c**K26xDvg_Yw@NTeqq5q6PoN57tKUivQBac;B0XEt@6 z+YIh?SvT4Qmz=dFlIuoq&z)P!_iX61Y~dO5t#`+_!lHav;STw>uyTA03BDbWRJSVm z&VGSVs{PF4TyJ?hs0u-(e=5&t!;V2I$R7Jmfi=B5))W?HZJdyhH47`pnvh7(0kO8x zu_h3*c2>xmzi#L*iEuPod)GWeQR&@@N?}n^t-u|M%EHQtN=S&x0TpDOI0%(@x|xnC0kDD;Q(y~+ zg8bvE67H^r7<7wP2XGQ#Ox73y+7B?$t zxf9_hla`MgO&W8fCzfzn2PNq63^~-h<4|Ey4j14KIkd2H90~~z9gzGMDEZEQfv_QL z5EqhPvQemnAiP8=YjdH*mM71UHN8956c%M|Htvu$3oFN(kVsEJ!qZLR@V>C$r;t}T z$9b0HRQW}W0-n$}pKuZLX9|sWd(}{7>z8N9t==8C3X5_Z!yR&KVdc0L65KiqqlK3-`q_r~9lDyWGX&11OFg(LVH z-Q+pw0&rD=fi)Lg8?l2=3RxTq# zf;|V65nTbIKM)A}gVV$X!tXSrx_@T{kQj1iKixH1wv7zK`MKM&U-5pb_l167%+8Ux z`(@UOFifwc_=Puj^wsHh2NtofaolU@Jnw$u1e4#IlrgX%_T3%`Gg8p`L~C<8Wu6v<^VgTc<@< zMyA?d;`TWqy8E=AJ19!gBHIQZY>bO{{}oK{uE-P?EwYWc!y>b=az!R2*l<8aHY%BR z_6vkX)?)ebT0R^C#)^f9215a>e0k+dIyEq<@-ct(AH&&$sLZNkK*o&apRgV4YKQoUT(he)dV6%2Riq;`owzEU65Aj^Z;MMLFy} z3MgZtPgNM{h(8|4*}lbzz47cma;|Y@HvEF2O4^RI4zr3XVZ9Co_i|wjc z*mn;cxb)U1J`3*9<#G!T_=n#;(D**$i^c%|b@(k(_@CeROx=ph|AHE5^alz1Ae}8u z*xW|%lW+UN`|&q?{1-ZWeE3;CK7RbOA#}c@m;LhMmw$Kpxj(-w_A+$=se{;+2AmfH8-vSHQgnoBRONqx8>(VV>Q@{cTOsJZ?2nwGXr zo0@N2xqj8Ht*f@I5yFR;HeKC(dHt0QA6wFJO|qG1Lax~6O)c-;u(54(^Xm02(Asov z%M>YXZe6#wS;?K-x_-;*P3u>#yL#m<8`rJ=$jU9o!NQ9cELh-#J?W`DO6K~P{PeGU zN>=)pbzJ=`&+^y*Qc7I^GOrrGSA8TF)4!B*N-p|eaf|y`xo*7I{V)9%arlq^zUCa7 z_7(jGyz49nCxwsu@YT$v_)Q95p+zablna>@zGsFD=lp_xlfs8zC4Ah6-#i8V6;+P# z$|=H!SsCkh`xN0z*%#688JEr^{%W*0#&44YlfrlT@Hb6Ce-A5n{jR67Bu zeB6aoT=?uM!s}ML@QqW1@43;1|B!O7i0MXd@o$G_ zIs9}hgx{p_U9ILH(|9uT4V9C^m#%f;Z>JC9Hz|B0^;^H6x{yiXD>k_BYo>@l@JSc` zRR<=;-{=eWlT*YW-{K<9n<9Qqn+wQI5nlZ%7w~mbURmL#eOGz;SAW5UzukdJ@fY~;z=cc-ANZdxBHg`ylfq{?|5(KzeI!<~wYsAEloPA8 zl{^Q34p7Bn*SV3#_b=RbepB@wC%pfSzS$aH186%v-dT#HUm3i0c<=IfzP~ApM>iK6 zTkg{J{Z3gtE!3-<9iH!h%Hkacuj)16og(RYJl`LcrFQ{%$rUbL-!GNLTL#{al@8DM zPi67Cz#F^K;rV{5EZ#$+*XrW@3$u5okLcSfj9gKM^F8i{laov+Iiyk z8QJM~Ro>0$?CQfgw4rL<&Exkzhdqg|>W$j!T#x7bwX%4(gSW@y`Tnge-h<%ne8i>e z`?<1s2f*9$4TtCZyRvvk!5iswcby-_kErcWQS6Yh$rXN9f0?mZyFIDEDRFJ;%Y?3ZU?R@PG@y2Y3mu zvp(8z}*BC{$k*K;BWs7gB-x;fbu`t!^EA={q@f|IHMyL zBRjQwZsP%8w{4BZ-pT9Dz_;-?19&Fx#~J6u-wvSgHUWjV9Qbzd20!Ka`6y8MH9+D0 z5#y`)+ytb!YCr1TKW1DOy#b)`-UJlh37Z{!nGR6yJAexRtarBn84GF?-hHNrRURH> zzMyyqJp3w9>HH~BbUv}sh5sG%4&ki_%75efSnRFj12?qyToqs3uEaBY%6kgxWu~;3i?*_gP`0bmVJpX2uEh=lD zz0u+Q5eIVuBdpz6?qz|lpqS3)0 ze#psTgmG2=C(+o%_s^0J_ItS9!%uqnRu6ynL5DX4RK5Bu?+!d{@o+tjJr3PB0adOy z(%2UQuLa^h^(qfapz`;TdYA4SfN#eAB`T5V zejX^g_j-6}vBUe2hi~?9><^uPw}-cSc)f=&U+lt%7uiNf?VkXZ&pUzi1E>D6cV7=w z`cF`33UBamg2ENQp9ac*Gf?$^25=_ue_Y611sDS&s@m;T0z_217O3*rKw%S9yM{=T z-`B|8n}GdPMwQcjz&8SS&W*)Rp?%#6d;{=S;K{&N;7P#o_qhJ`&wwX_uYHs%{AYRi z;#to94<3F8D1J`^3jeEghJr`wB-KtY0ID3Xe5>ns-wZqh_pfK8W)Aqjfr|fk9)1@n zdA%7(6|4RB>8>B$1{B`S-u)i$p6TJlX|dSl;4cT(08arb-#<~|!^-stUGYBxoQBt1 zfa;(ANx~)k+dzfy@$i3msM{~{ulMk8C@^daw zbWZ^$dHn{$`~dJvFs*bR07@>J6$)MpTmbAQkfv3;97q$X{Vl}#)&84@-v!d-Y6pPx zfqw;5y1x|?>3tcf^zZcUTY-B01dsOuo6Q-krSCU7WZ&Y|z#pV$sL%yR;YV=5!(AS3 z^KgZSbspAu81rxx{w=c%tno1B;VAjy zb;f{)yFA?H;R+AyJgo5$VDTy$_hums@u{`WfCBja3i-$#?oVm1DtEXa^>)fz?r?vH zW?}Adzvf}&qwsKlX4JMqN?*(A=}joG~efmV3av|Ixcgz59>6JN89~ z|Acqfc=vz$^uqm{=RmXk-01LE2%rCOf96A;pKw1$^-SU6{>#@qy>P$fv)&!44-*CU=gFZamA9;(0aIfgJR^nf%Bd?$7Y*=zYP0W4CyG=ZeL8eE7Kc_!r_UPWYPve$+it65e0p{sR0* z@lS%UsQaTO^!}KHqT$~wq4%p2{Q8pc871lME}{415`6lwqVz5)34dpayS{{euEc#? z3I6v=!ewA8nm_fEQTLye#GhZ1-;b2U*Zxy9epdjut=q72%X#*?WdmO+TDRQRyb^fZ=GM(%w1RI5ZCbr?Wy{*tTU!5U^(OD%vU=T? z@HqNb$zUvs&F%)sFt;C zS?7IP+BR?5a7(`Q3jsy-WJBAQ=1nWt-@LlHm2Y2`aHEWyoeGYM} zGTpRt%Swl)+PZnorq=aqg?!8ETUs{WCT#Db&O}_dZ1~h_=L~DVF9G|U=Q(zjr+MY3 zmNj8kTi2gQc4N(JHa54kZP{?sO`eUg0^dw3s(2+*D0rL1J_weVZ1dHn*v;!#ZfX4# z6x#S4*^I0=@%^uP%ZBi^P|sF>vaR(~NNY=JaxI%yo2N;rbv-S*dE=%HtD5=1nJ>gu z8`k5<=UxSF3Ei||Q}deJZrs$m>Rgxb${W{(^l#dT8V z!{Ms+O)FOs@8*@Q>nSh2(ow8xy}6a5Qx!sZ_(co&=C+laR=qNJK3Ui1n>Vfm{pQu{ zky8uJZRNUkf>sm#yXTq;UsPnxx3+FsLucnbZ&|r@<&B#cUKDHoK;wt&uQ_kYmDk{4 zy~XdH3*UR*qME{Q;f0I-;Jif_F1QHK3l}UT;JgJ2UASPuMHgHEyl|06UvaW=VqF!T z?&_7doVx*{{`b9?|MhoFODgEzZ9HIDi0#q9P{TjJ-{XH#bf7Tb!egf*@*DOzp&Oc7 z*J+wljz`6Fu>g|5e7e<==T}w%W6@WlMA0`deGq zuWD{?Y>0+yKCIt1domA$n0Q&kJc3vKJce^LH?Lmf`tHzO%-^WT?sLI0oe&K3CNI_} zYkZJ_IXqe7u}EgM%umr-qQ<&?`a{4*+*;Qx^Kzi3i(AXx0Z*uV1c~|4$q7)u83!^#8(kfmUSfl$Td}`EN&W$Z+};* zZ^z3muv*1Oic9yWnxiXPN6<3@f+Iz7~>GLB!=Sg#AuEk z1|p4_RxWf-jXEO^A)o9AgnS-0KAkGmi(d>49UPV|4>l0IQWXqmNEPMboW6a)l6I&| zSej&yRk)#;R9mXm1Ha(2D;4!Z{}O z40}9MdW!HmAESGU@UR~VrU;+q=}-B+ma}vEdHyDScTl@*;J@4Bc|ObHtpjh|<9U9| z;@u10wHz($1cadnb4E=L-7w#q%lZ$JwUe$~Dc4&C9nBdFhN9e36&armOA zzIV7O7W;<0CXG8RIaY64x$XjoUpkJ3bZT61Y%867G#k+|LnzJ7p57uCp_E>?=c~%o z+X=lW4e=WNF)lL5x30h0dzRAM;ptuN!*@Y1`it@^e~q*2H*d+Kl+qjb^!A4ssaGDm zUTxg&yTTFL<}*12J-v3{;Ll?eixd7{dE8#4!A$YJppsV=%kQ<0+iRA&!;IIipo&f} z9=F-*)ti9Womp4R`%%=7vgYPv2zk93(0zrBmVU6hQGL#3F z0fGmvHAn9?fH5VLX|FLDnDq;1=)s%9aOPzC24Hlt*_81ng5|+2I4F2yGJ8bXJh=E~ z?=odEXl7(AjnG1lPCYNKpBvAr25@{@?o4t)rl(J_vW&C5O!NETC#QE8hn%4>{4BAs6dyg#p8@Gs!Z+G zBq0i>(A0}a30Z(%a-E2%z(&R>FHX#kXZuc~{H|fHYULdCtX2`~%K)Y_Surq; zqwbl0;|ZgKcm&Uypr~7K%r%(8;q>iz$Is0gxT6Ld1bR;gOa*@YPI|#uPQ%B-Ul$j0 z#v13eCJOguE8L)e+!)8GMvvZH#mG40OD#QC7e1x~@Rj#KE9>lr27`~OejDzf*`dNk zmF$AO#b!Jzo;{D@Dlg2X1h-}ttWJm%{oF#M1e|8n3e}5I!jhRQlBlgk4Cc)I(cJm{ zefXoBz3Fmg>3XL4xm{@`6u;wbWst~Z`Y;mBS#J{dWl&I*Fi=%dNQJ)6rBK@6 z-4f=_)femUR5Nncwd)Tygj`K!y2DN z1Z65d3x=@akq*_;T{xVwKDb5{*7KPzLaE@tpnANC`W9hf+G}QE;`Oqi2xVFL7neCz zYe@l{L*Fki1+AIX8t&!8eZG-aZ+{hO_&P9mUwm$1Ji01M!po;XvdbyMo3f!8$>&3Q z`FPMNm&r>cXIS@l1oc)J(}u`3qX5tN!y44W9s=X*d+@aW!VjtyFC|-;)X;;3)0lj` z#+GNpX-tca#d2W`Por?E;@Q-^;U)VfnA8j?@y3d$8TW@(SIrcad+QxCkEa>C^ky~4 zP1y<)x{H4uHdWEd_fmJ_$O|E?onhspd?b|kxkF{TW&+gZ>?grVU9)0^fofbr%BO;; zrERISKIve#YRD$G%U)#KaVHS>sW$4wtQ6GRRwmV*=1M3U3 zO-ysV$aTRNquR8xGhSLxw;QPz=C%3hbsJ(R({>Yhi+{y}e--uA)9Y)e7?8gj z)}hiO`3wOCULtesw-+~TRAxNrib)J)8q<5M3*VP#rN_B@L|fiWz57Zd}m z^Hx{M%+bGA6?{*TZ|=Q#5OZ3*YZgx4rpLQZc5gG{X%;;$Vw9S8Qyk%{0%5ym;e2iP z%DswaEcY}ID4!TlvrqBgqgO~<6RKG5CP%s|p8nW>mvligvkTce!%``JM5JGGQMD#| zwU~v6eYe1lIQ2x9g=X3ZT3Lz^lzPYci$ReM{OFe5@o%p$Y=%xR&#Epy0R zv#p+f277A|Iuid}+!F!|^Fz7MIOp`^?6$_|(r;XsBEt3D(w(VWvHPrpeKCFx-y*mN zTrCrF*U1#i*(sdM%s|hW{Pm^eaMD>~=BjYzop`3kur*1y%sp~kv+fiMk!BGlbAH!a zY-a(9H6!AfY^Q_y_X1}-8f(#Le&&cGJtP)+CgOLyiihRs>?!zqV=cKGc{ej_#(9t! ze^N!|9Y>zj!o>|5siPUbxg^FgzwJFRjXlJtmWm+?YQBPx@Bs!x)js%;1&_+6ri`J( z@`5PK_T2=#b%TkCD&z9lw8R8m`N9`oYMa15+C&sN|J{fDMQVt(&#|EGu$ed40c4uO z7!xkdIWf|ttPCc`dB$?*@^JRniUWmX8&CeLR!;X;To>b-)?w&rOOVJ_@w=&bE{*Lv zU!^Zi&cNNipH%wdbk^-;P!8i>(O^u^@w_0E)NUJKQiq{Gi@$DWn^M71tIJ@j4@Um zCd<^eQMQDz>tSEbFj30aJ@uFLDZ2L0rSa!6EfY_lgqJMKSa}*t@i#=vN7wx6F=d$2 zRYDQL7T(VQ#orRsqSQWNG~9PO%AGH8a4<1npYE`EeuyDXwV1aP;zb`0+1FwpPL|+p zHwmr{yT@yFs2E0}+c;|7$So)mvkQ0D>B-SpaB|@*V`=rw+d->i<b{2pK#nMQ7P&Ii^R?$nU3^Va}!z%O$B`80n^h-Kb94Epyga zoxSl?=Jy+e+xYiUq{K<%Zz((DM~RbSQFKAWwI zH$lvXpl#Je5FzKP!6jugY@5m>=$@r|rBQO5E}=<<*kEEmkx7Kn*?l^Gmm@Yz{o8-% ztSX`FwVRK~U}=_`*q_stB!oS=1t{^{x#Yq)ORL+T8gGWf^9@Ues;LFznLkVh&taLu z+mrPz@oUP(ns(D|u|2z=wKZi=PTVEB=Y6KyZeVMi~$%#EH zxC%SmfzI{;Dyu&6XA+DdM{+ua7fP!`;*OiWNKqiJDav^a-%wjlru{%zp4gomPF6gR z#taPFg@W89d4Zm%SzlR>B~dgw0rnkLR_)`9KlkdXPvZVwrPMz3sw}zE(+9eI>9MV+ zA(9o3ZPGsL7gwGXwu-O@W{!owZdjW*ymbjhQWlx^W%an@4007cx-hA8dob+W9;BVF z$WJ#SdNCMZmqL%PERPY$T-~; z15J&IATg4kVGa-CW3j3kj&kqk-Ma7eT<2SasbYh^Fb&jIRQQqMnDo8mZY6y;GQ0$; z^&sgd97Tq5 z-JM%brrFaLTAGIHx-Xb1wM1(6Lpg0&lG_>1gaug|!CW01VAi=vgt@bMgxz9VBLYl0 z?!?NV1QO|Uj2+E7U5iqR`@1ViFl-(plG5`axbgQ9p_=)!5t{q3RkuhFL01R*StK%; z7yuQr14=wIQ;E-?iD{FpI%VfQoSC`rrxhBOl-0I@?#hJ(SWX9Wy0cnD#9@oVIe7}z znI`DBjbz@(b9nyy^abR_A~Lo-avi)YaSgF0a{;S9ceycDa~p?#K%&Z>#lvOY`>Jp9 z=EM*1>S(Era&U$b)D;O&?7GSFSGD_EviyK-UKcjH^E1GuHu!akQaFFFBX)Jrev~Og z&~$`jN3E7{VNMpH?#`a(7WPqU)Gvh|s zj0BIsht_Qp8U30|5zA?Kg>1U{6%`J9>Z&9(3GP4(AYo$NTW=H22b!RPp<8VnlF&Me1X^M#_F z%3RcF`mFjF{a8B{z10SKssI=b;K>Kzi67Y~q@#f3V0su}Yz?M|!q-fXqIW)~agBCN za-?S@UA4kSfFc)ri4a>Pis`2`>1*+FF|yeU@YlQ{(<|R3-@t<2QH#=JfSJ;~Unlqd z?gaPA<5$Vx@1KxGHs()WUtcntJx4_NSf+Tv_mcD2?>tTfeY5?IBFM-d5m1N+Mj={F znP{jp`{!vs+L`pF7Hw%ETBcv(;+vH+l=+&bnVBACB1kua<;psJ1|FULdghH%&Bmc$ z?h0nJULc%)lv(>+MUWjJG8U&m;%l5mpEx<5R;O9Oon}}et_o^#TJhppZ5j-wl>{47 z$8-P8Oe14VRA|l_{FL3eJ`j`HS%#YI{ONcy_<3?3(mu);<2{7goD$*J@$PdmE^l?y z-hD(Qe9kL^ec8$&cq&_Y4=GGRcXuH|=c86@NMI43@$?<8^0*@CRYiod>WVg{0es?< z6vE8Y&zqEStL`@P-5F4y`Mg#T+Juk~(Sn`}L?ieSpFp>gL_?-m9u3&-tden0T4lqW z*|O;ADj;jhWVUzQQnH$y=~1#i!~2Pf9#%Z)5~Q}lv(wQRt~}!DFOUlA0Kr_F75=of z#^`L+%i;=#eQ^fqbL1SlFO${FOTWqVD*WQ7<5``{aTGB4gac)KIdifb=Y$xq2A)sjc1SsD=Dj3v0+z%Vf=& zKE-)vdi5gyMFneCdS;bAsT7H)3cp;h$;)wW&2a5KF0EeAc_moEc+e9AhAH;S5u}g( zP(k-)`t|Y>wJa^<`ilpOb2CBcE9K^>$P{v8&h)tR%=GF-xe*mqJ<2;R&e3FVOsKLH z=15*(Vdppox~rRJOf z!%Vjd3;m-ISZi(kyv0^Y;@SC@uV^1QcHY{7OME8d4_9P*6>Hwpfx%2#E+5)DQ>xu$ z+s{7SI|iSS9o5IAOV{(2`x8r|DBiWdKSjKyk$C!YT9Tf27s{sh;Yd8~YkO%qW@O+i zWQH&|zeUq@v@j{Ciz4x4O!G16*v$*qr2mABquN?NNFSz_gj5$=R4en&K6ScmKSbFm zC0D44jtwmkjGx?2eby)*x<`s@r<~E+d58j0u3o90o_!)B$@Y)`V@V|pvO9>K>4}Qs zDn#KnL|o_GtH8%JjQSpWi`9TB0ykP_-xN%W~xarmrB z#u}M9(59FIWQTCdO7sKH|BN}j%CG+T_cZ~g2X%?`Tl9`W3Ypc3C7BKq^bA;vFUSftG3Ba1{(^`XwO8u}8e4`NE7%}(6P}V;nFiLu^i~q$g|BXU}!*O1WD4^HO*M^N+y(_x05)Eb56 z0?j~_wi9uX?!wn)o%4CZc#ri4Qxw`7Flf_L6q-V(EVMoo;os|?whCBNFVp=a$N?|!Sp)PSKd1N_2y4Ku1$+AWF^1Ja+PmHT5?(&(@XT!qlh?Z4Vs)( z&3*H84VgK&J}M-$X_XLlSq&!1^lRQTQC;fATA&vWWU?A?=4aJ7gKW3rxH^-$qH?|s z5zIi{JX8xxtMI z49UA3=-Vf~!SpKL)uM8rQ?t$XivLWHFrvM9kiH$C&VD^v#_GJYTaYk@M2TE(L<+q> z2T?OU6GY1NS}pBWEkz>g=zVY9kojanSCGD+%+eX| z00h0;E$7*8KzH_YJlz&&NYE|YeC4Q%-}`i3cdxMSOzXMu*G|p1&fB^XD$^tCtVxV| zcAFf*K6)UflL)X{Z%I*93eqN2DA;NzSSL$5H06=49$Q+P!-Y&sTeGyMW3n**4xr{b z66+9#R`KUYopZ%p=WV#Ix$7~?A_X|e?=UDy*gGrcD2W<<9-*6zOQf;1M+ zKT~5lEqF8SqkeW;6y&Me{^il!{nk0!-s{BLnOl=B&)Q}@b|UOEVf6dp|6Td<>^J21 zE7>obuDmBR3~KBJ1?&$8ZKFZcp~1vK7myeWzZMNR$z@YVlP%-yNDVBh7-wsZk4J4o zOM;=)yaAoyTEe;SMo!}gFO}}4P#SL1o}V<@ZuDrT=};zh)QIPp_rlC1|G~tFxM9y+ zWoiX~qhV5KT2dn&mvrm%cwBaOi0(Wyv$}(($4w1>pF)Gg<8JDZcpM_cYZ?hE?+ITs zmG?|b91Ic%NyDnaNbWAGK_+pq%!lK?@Y_lsHG-Wp<30X{LWOttDEYqP<(pXeOagQ9 z{%bN@!`hZ?;7cfZWxq2uo@qLwJwE#BL&>b|s|8IX><_W$$8Lj7vDsXx;#j-B6mU3? zod#g6G4MP2juAe_cFEiAN3%VwB>B>-@7H|UAw}Db*7st(h6fY251vUJSj@-pEXP13 zz2Qvi07~HxPm_?I*W_#mz7x)uvd2q@nGy#~P6u-R$SJye7-=6XBKcqVLL&J7YY{=y zBoVNKe$X8~*Fddp7L$ZB8j-|u|7p%XcNNN_uz&n|X!U99K=GdmyeTFx@bPopmYvG$9E#k<5u)K_cnc-M(64x_$*X}%w*EcSiS ze5aStm3FUq*Dq%j<7&q=-u1SU)U=$AcYUh__pi-Y+MJ?1$kcDVOU8(zzF#)qZt@99;=JUnZ@e_JA*@0jmTm}p1kD-%`muFsX=%I;IV ztG5JK>JQ^xpDE#28yE4eL_1m19UqFyw$3>ZYW+!;;!hdBI?JSW@@8 zlDb!Q$x7;uLP>4Qr11Z5mee*^QlkYCbhhuOFR*%}1*khv)_s13j*i@GWp{5*%G7gj zbiC#(bssr%Ca*(L?NwfFm{wR+RJ(D9qO!1Zq7o9K5|9D1tt2{_R<$vq*jrvM_vGc0 z-Uvn}E4=@%boz}HM>l$u_LL&>J+xAke2lT&GF&-rIKxCA$d`)}v2xK% z?j9Z#35Q^^##T^~Yk-$%DQz@?tm7F9MDMPY6c!c83f!SUEUcVBgoHo@R7$EE8GEXN z2HpDpozwn6l!!otciAtab^K&7%&lE8#5AS{)HV`4mG zJb|r1jCbm^lz7c=q26H4%^&UL&>!7XvgM@mNBQVz$4Rb^^v6`#4!vP*#nh+&2Gfn= ziXSFo#b((3W$}U$2C8%&{+X-`{qJ>x{UT+iD_^aND>bW1ddaE&_+wW4f6F^3(pc$w zpF?=y!@@VRt7ONq&0=dj&7_UoU7}Ly*st|bndP-R&#ZGPvbWHM6|epnWaIOC$B7r8 z_mxotUm7;>z<`0CJqEJ73|QZQP6D-74ybGcu&r-xliNkOf?liLLH`Qjcddf0_*{z> zpJzgj&-JA2Hf?;ar*Bp~<8ytY52&k*&-I+F-WH$hdAnste6HuVZC8A*=f8aql}jv9 zkc)^(YxJBgFjtRfaIU$`);FgfYUIkc4>!7%WQx;koXlrqQLJl+hMh!ZhGq2rCBe&$ z*$1kLkqWM_Zp<#P23FM%US7F?9M%t>pcOVpLWeTT_w%hv&4zDPQU=hYcdMz%EC(a~ zTu$>qs@|KeHedWQ$6&yUr$r@W@06knsbEX5upZY|sGaxH&XYerW=FpA=hbTnACDe$ z^~3%D6nU?)OXrZUGA8UG-(zIWvDrBRBkt(mF~VcHjjsvo3Zd$Av9iR;z*iu6rcn9! zi;=_;n+F`pT?Gq8r}4|*Zz*gCaZ-@xJK;2zO_;_qW?+el=wXnHjU^#fDQH@hO9o0qy3fl5NZNAoI8jBqI({0KWtKd zJNvYob)22|f%s+6#Kjs`|f*`6=&?F-(1?qN%*)- zg(JqiZ;*J%ZBZ&z4uT1Ph@}II4t??|pT`G_^Y~yU@!;BlcqX-5Wj?@F&=Vpjg>> zI}7o4W)eHW%_Q!(dUH_vpEwj+V|0fwG@MBtgrWVqYNdU~Vaac=aqJmo6ExGbe_GQ} z{NZQCzt0G}&K%UM;z;G*WH6q*FZmKH%F!}4Q_7z6HI?4sqsBjUs65(iZW~4Q%E5iV ztEzbM;^825Zy|>}a&I;^*^mY&b#UKrs>B_eojX`nu&XVLp)GBPgHyhqyWcQb!SN-+ zU1sR24-+DlX-%UdzP&)a+poM2P1ALtZk98d)b?VU@Am{oGEJo4G`#QSs*30J;WR9Q zF3%u_JH_CzXRs@i=z@{3AzCH!H7RV8Kc-(c%a)gsM%~&se4Oc|Y)+2u!!5?^_+Rw9 zKc2t(gQvc9*<^c+>u+@WAvd3mCelxuqE%U5blQJS?P}iGVno+wUiVoG)FVGisOTrR z`S}3VQhPnYdC0B*Sj7oU)13}0b5}YKHf~(F+)U@?HbisJh-rpz?iqwvYM(N8*%<>p z?|bt5bKdtt?5mf4{mk<({n`(DFZs$Pe{jhaFMeb3Jy$ML%YV(kMy4%g?cZrS!|!ig zHhk`!pFL-~cc0Bk;nk{-{J!MCr0@YBe%2J><39ZUDbnAezKP#{2PV;9VdHx&cKsCL z13vt(O}MVe9IAV6)LNO}2d4-h&?v(152oPH6p9h99T$F+_^Z(+DSlIh*ZJ^(jfbJ>kkFUOy>=&LxG*zwLU({(pv>yjkg=;+j&{M?cnY9cHVq@FN?PqywEP2Z}(;K4vD|-x_tQdT^6sB zfnfAC;K_dBh{yB&!6bUBH#&?R`<_cz{et~M`IWJY*ad#gKRWya9z9>ryj${q2)rSW z=lhFE=?m{5cq>L7J>PGX#XAPxP7ciI=lhSccynkw;~vlVBW3X#!At(s(d&4He8_&` zp4WgU`-QWA=IHtUrEI$U!CNry@Jt1r(hlVvvD0@1yrEw?Jm23G@I1egpX?V7cs$?l zl*N-xn62KPpYMOl;>mttoww)b`=LpAUuS$f#WktmUr~$i%+(pWaU$0X_zN z2ljvd8pwH++N5{C{c;z6wBCh(5qKft+kn%6t35mm$dFZgyw2=T)&3GF_b{*ucs(;Z z;a}$A6MVW6o%?|D|BQ#9zr^`}8Yur29`0Q1{C~yjQSqJ!D*O=-KY*v)=K?uLT>B0W zf5$lT4)XN?kZO7A2Z5|~YG(pzLT~#qLFQC%@G*Eb#c=tOzJj{5k@b3Y|-%}p0^Zr+PILpK16qfK_ z^zb>L@c|V5_W%(|?NuC(WC33Ld%#7&=O|pVR$B)YUtgc^;1AAr>8}8STKgF?Eq=Z{ z*VT)=fJCXi8i+`1PXa3Z`>d=)=Px|$^03jv_j>r!yB*$>9=^xJ7vJURJm=wB509K> z_RDI&2Yeg!e@mv6-(Pt6E+DMeRsfa$vt(ZIPd&U6DE{6HJPCLPunPDHm5wNvegvrc zeKGJ1;Qyv!vR0}65|BQ-b|H{HwRR?uqOAQkObGuWAXCHI8-T*U8pz7J_OBqq3bb}J zk*5Ru-)eLDw{7sSg-EbadpS_)&jFHjZ6#3ry#x`te+(3#4*|vh-9Y7QC6Hq-wZG^6 zXL|qVPIvwf041Lt9&QCH{#8Kn^ETj#!2dYS*=1Y;r0LYYaH`{H4^aF+JImP#y8|eG zR|CcG`9PAa{dXFH=-msfq-cKoW*7eFK&AI-4?p4Ia-jHH>Y=y4_BPpFqpH=m1J&-9 zd3dzirTasm(!C+>;0J)>XO4HDL*t_9)SduT{FhI$^iO>eDEEaximvts3atY87NGp! z;N8O%p4^`TD*WFm1i_1d^6#e*1Q&bw6vC7HFM(%)_f>>N)vkR4VNjK8-wLE_sQovD zqH^p63jfoL_z6)_556aFoav-@{!VZu4-3hjkv-co_3= z6h3*KG2r1Y54U-^!oxZbYdi#4ygP|(cEBia{bbKqZd2F{*on|&r)=XD3XR1+;lsmq z<>QJ^c&O)kx(^T6jl&^6^SZ@I&D&?C^7U9WK6bPez3KF`IUP57Dkh3mpa z9zR^Cex3A$AFhj1L=%3vj^fqA!*x+F^+@>PI)2cHhwEz9XNA}K{Em41aNYiMj~}k1 z{|sEE7yj0|dKx-ox0Se0D{+_F)jFB7jgX5qm*A`YMZ>i&in@PY68>)`;qyw|cf)Bk zel7Bhx=$;?mz|Ml_~H`&QYG%WCGJ@z`Ma+qoGtJo`l>6@^eRijca`w_g%WyuOY*n5 zgr4j|M(N*Qf`7Dx{^v^QzqKTsv8RZhx4Tnj2d-dqEN>|xG@KM#Ovnd>9;KFZ!ri=P z3`k*c0p0zm#&?!}S~i%)Co{BwDKV@;ZP+B+Us2;_My|->RK#Lg$V|kmTrQ>v-rTln z(*_KGp9IrpQV&5j9gbnVDCyPv$L3G;iD>8)G4Vp|Lh^^JpVh zoo?BlUr}nLUmRFdpl*5#Z+p^ENb7%88G{= zSqCYyd-h6(&WxoZ8)jy@tSI+lA!4troCsb4C0{V1FiUWqciy0xr93%_R|}^Uygjo? z1ST;MVwSah=BmlLt6Fcmsd>vJvu2ZsJMLrU43m{JFxG-Kx?5IZ4GRluw_?7m8Jl8M z_VXGsk0*;~pWL+Nd>i4hBlf!Nx-499{vtChR#V2V3ueu*>9^_J4Rpf(SI(Z8<|wfm zhrlu=HWD2GoOk{i&U-d04!_XNblL2QF`U`&wc2(0D2omKM312?wxb4(9rAdcc3rOZ zbXX49Z;17nXVKgYQ$@d5v%|8=)64o;2cZ}JMQO|b)$FEBczSg{;u_YE;%VY6vmY)J zMI>L$@ChvA-c04%j8+dF%wtutaf-^H90TExrSJ7bBYHLLxz ztkZtT>;8GYq5o&~WJ>SFm{{Rj4rd_#KcFXbsm_5o8)^O;OCw*oJG@OduT%+@V_t>e z=;FlTP=%lr3sQI-p&ktn|0NE4rAng(6@tgKubAs3=XMCr=?v7zT{H!vGjPAK@O-fr84v15V{%ctz#_#C4p+q}n;bxiU2*Z}2SlMpA{u_>-n^gi{BG zW@p-(`rIv!f#@xegE|!FN(jA9B`oPU%u>e_`h&P=RHTz{$dng(oqT-RK9<`7Zl?X9 zOEQxh$X}QnDBSSbCE0+7Y@|KN9l0$@B*N0JItSCz~Kz-hrFQ-$B3xQExP{lNUqcRV5L4C|fw-4ntIyF$u zq+rwJ&b2crDZ2UtyK^R;be-)7@nXkFTn*)qNO_HP&M&XP300i&GebRO{#@06O^=q& z)lIlWYrG1y>ZDWXnauotGFZ;B#ddBewG9VN2a+7c;fPruXUp~uChjE~%qrB*NHzpL zIuh6rJdgyq+TXsH3ku+M>XKS^qaK<(=u6k>59Xf@B+;pmCQ-J93_ij`ZJVv z$j?ru?9FRBYU-Xs9Z_l<)q2D?;9fhr7i4v2&$TN%G;BxsOv&cXXlvdRZOspvBCoWD zd!(s0Wgc0!8SyZAxwGC1%3aBj-r0UH-3fcmzHyFlJss72?uL38PrX|t-f8)G8;OV9 z(e&MxCXxow2hcNi6&|Kh~nxM|{pPtKY|)B9f_ zS^r^=!NhKe!R~I!%#QDC*-QF6sWuyl$}uK!V|OhmUHYdzo~LsN%~=7qKNRuGq!j?U zo%!x-rxQ#K(M^PRdl9-jk(?h z#lsv|`&Rw7pXs>Tx70qk*IdIvO%*yfOckgb zOAX^eTJxTwC872K4BCbhwH(EwUV)I@iEyixUV3!*r;`)z(i1^HHKR=1?o5w7yo_|( zUB@B2mLU#A+XvEsq@P)s=}{m#-HTiI{?Sz8&YlKY9W3QadcA3aNdz1)eZYC0G3Pk? z1koR2kpoN0+tPYXY^<1q4KK!I$39I~#T2(&aRp3RDgB~SiVkuO9s*|0O+?|sRtHH#B zkf13%Xib6X#9ExH`%EVuG^4H^&dhB3G6JOKH?fd{V_IMZ$Q_J}i0lN_WP(ClL6s7J zsu6_&(i4NjYkM&+KsN>+%-unV`oU;>Ch2b7{FmNjJ_(2y>B}CsYyXu*h^OU^YAfEk z_CN88=X%SJKmY%^ZJjUwzxdpC$B_Z68MYYBs}8V{BIw;h#oz?Jo>}!_gLcgYeA=RV z8og!gZL#(B@$8#vMxFhNm!BAP(Ke3fbhu{WKz%UKm`!m7-4e)H0**i?t7OpL!8E?- zDO7jFA9;bZ>31i&GOuJBvrXNNDCVp3&0SqnXTP2dXf}vgrx_%=a(@PTm_l23rbnFn zSZc)K<)JQZ({rvKuf^80gj(Dk!&h0TBDl*vYD^ispcM{F=FrJc%Z9X#Dc>$TYL+IL z+#%|RO9kHSXlJA?y2}#R5-q$ep?8ki50HBPvP6lVXNeKJDNdVxME?NOHV&Fg2SJ;3 z5YP*m4gxx$#;g@DBbsdKsi)Ib`)c4Mr2{2;Lru>|;jTSe<{9b68t7+8ZImP?aE~zI zl`8wIq33l?Fz;QA-HGgCrKN$<&Iun5br4u_&=>tb)V&LQRMoWyJTVEzN1RE8mR8hJ zQG+lTUJ8cHB+Asml1i1>!~y{W2o)jap=gOFCgaUGjK*8i(pK8oYQ+{S_JTzVnow$j zQX7;iT3Vx*YR1xQM5<`H^8Np7uQPMz%mnb>+u!$n2QusIz1CiP?X{n0ul>N%SFRsE zn9b#`@6U_mEI~kN(ssw6f+l3Qs)MEVk!BCNYhGs#zG0Gqx#UNhNb8u7N#-1dYmuPJ zQSCT4-yC3oV^*cphI-#{AS#P26;CI5Z$2|KRsQb+BrD_UkoeI zDpR5KPAC*xG;mISyGdc=_DVFW_WV0uU0w~Ij)Y&zXwr4b9wtQ>dZdG;M;_@AXOH7x z2U9KCrG`yhZEf!ff7wBg%_?Noe#iN3894i?+>1lUKx7R|mx zm?>BjEr)-wC(~YTv?+SgK%X8Ml-SE{L!r8_p$cLZ`;#h2+ab*6w9V`gUM~&Qdb30L zYWe1nZ)NNqPDpqMBvu_an?20`I|-Zn-@C_;DpRl$dza-h1s;}Q&qObD9*GUXua${> zHU(Ff3GzX}rs80|J2uU{8)5PF z#Y$?sslrxDj#7YB`At$Rn#@hjtX?`=!0y|Nq=`)Kk?w=Ek=TCxTFK|T$qM4^$?t*N zO1|JSC7(n{J^^>%)*|tpVHt%nLGos0NQ}#7Owp79N;F0~c>J#lsBFkaEsDx$vEO>6 z4IpEb5fWd_HgYpdlH6n3t9wj)L18|%(}qnPSy{s-zGK+Lz9=zl()o0c43)6$D>3Po zx-Zd#V}bJbKq-KOb_>LXS~v=*0zU=(@dOXMM|QaHMw>5pchNt1NOte=NFmz&jSpUg z0Jna5@?+|au;qsxfe$7E->6gvMKz2|?*1~d_LAWmew?H8mHAV~vxQXnDG2W6+g|su zV7t2zf5Ujw7ygC?`v7q+4xvg9 zzd=4ET&^~xUsxEr#P3wBv*e@8qSE58Rs1gvSsLEUNi;lIGs!0nkAajtS+`%~%39&c z@|=2NUJIy(!gmP%*6m{(a^#4Xue9~vq??4lqQ4qCEoT|&7J_cP(rJ0iNXG$z=N-dO z%UwpgEub4LZQPL~T0Sz;?IXYAprh3(Pw7}5<;k%Aek|y`|7GMmTD;RiH(2S8ww}KU zbQ|6?{Ir~AOvifAjo0=3b5y*<{s46|KX!wzUg@;lX5@DmbcMR^pXFB`E4{%+49-kB z7>YKaUgixv<({i3h zcRK1p9-6U#puT{7&>s|TR@kI)rNTJ|`mO?mP1@%L#9*=H_n19Lp8M8u79CIw3xGc} z>pp!^h3BJUk?urO!F>BU(uA9r7}9^Py021r7b2nmfC5AJUuYLl|9o#Mdzvo27s_Y}SgNcs(cUch_A>GIvA z@Op*ifDBiv&;wf~vf9G)D z1xh=8pTk}0pg+%n&#;it8nVuryL8!-#kbj3P4>I|)e3Tq<*!_QsOw*41?gyvcU1t3 zLqE${GoVw}q>^)gi&9P46m;$Enwzl5kShbRXjGPerYsM|noW%n%jFg>xDo3;Wn^!O zk$DAXI#%PUoxNn~TwRm-FIjP!BAjErqkV0oC82}Fc=x~L@%ZpZSrVywu$JGdHgR6U z+%DaRgwcj_*2(r2*w)&`OzRfemb<+8!-KxY)oibT;+y>0Y{msH_5*w@H@Zdk z*X#r3Io@@Pe>LL);m5Fh(AkbAhqQHzHK@H<(=6P%PHhvOh{C72@QyvdbgiEY5BtQOPJRxCCNH{*j!+DX-eJB9-`}p+iCR`g&PM8kD zHP?2#1=bSu3MP3AVISsf`!HuqSrUt*#9^(D!~86)QTUS?jFj`N6X!)`wkvb(!m;LU z48Gs+UR)VqGm<3@Vt7$QGRuL(Dpsj!;NA|{O?*py5 zWLTKO42P8&y^|Z-^MJrYw%+oZ$vKm8S4DYN7oC$EI@n&|Br#yF0p_i&@~mC3$bJN~ z8LVBqEF&$AVB}#^jrEMUrV?_p0K>e&8^&2hl44>xrrs?s^QA01&?y%wh+#Ci-8!3n zJ4#Tdv)Pk&C@sIy(wxk8s>c1bFuhGN-!|pZ&*89jObFI>N0#r5RA4<`c{>byTVVd% zEGvvwq3%IYoTc97jo&s*uY^X<&oqKAG1u9y4OBeTK{%dsr$(n z8#}Th<$XFe%5f8mU^}W=Ph;IiT>J7>W#fJ}52UcFf|_eQaqN;MH6}`r#B1=0f{@)Q zr7#4ma>F*rj`{P7p60wb2f^TrBmR#h_=Zkk0e3&^K~W7)OL*t;UYMiB$YZ}#Vr<;O zJ4AcZB4yz;QAkyCKRfk=tX+*ARilGGd z$il7zRE5+)`4Mf%>N9h5>uIQ4D7wYLE$$c(GwKYsL3~E3nexBNTU}9vn=+UwxG96n z@?w{n2yjqw`9b%y14Bmkq6r7ArsE+}%k2vyGs1~w;-KDI{1A%U>%yHf2dE9ya>ERu~ovf)n4 zs_62K4KLOk@f^s~=A!sFC1tFMD5M4M$G0Jk**JkT2+1U$QtAQCug4i_x-5uJOM%3> zWjLc*9cP!!6V_I%_E$%OZH;wp(0Zehy50R`D64TtX>$lCn6+UYA})V?hBXX#0R|sP z=0?69y^mK+9q(XL-+aF4#n@Y~2M#M}ut(${!$;VO@>A$QhL1$Sa|S=S+y@ zJ^V9gMvV&qw2Rgn>aPWiB?-4 zQf;qeNl~Pb-$E%mJHQ%csICXfUx#+{U?@7a8}ASf@9t-FriMCtkbxCF=)l%ZL4~+F zn$tC9*tXDumncyPms&@*X^rM3F%<_Vp~`#>rK4wZ%}b^Qwk72bL}#*eqLm)Wc3I_K zv4!-g9E}{Dnc|R|C$9L5mM&1(aAID@vr&UBR+N#vS~kmTYK@_xRvkd^f9@IRbq$X;1lO0Lo`fWahP<*aAycW z>54CN65Q+Ha4iU=oP}arVahsU5^T!IsFzUKaRD9}PpJ|9Q?feo#`q>j-Y*~4F(vB{ zSPN?iV&dKLCPp-^#%C=>D$ja-O3hm0rVRVb2eicg0J?q+MvL6TuorbM{*O5!nku(FLcT_j57Xj3ByTyc(J?GZ#Jno#-* z(Vd9Nt%twz9p+V*0Q(}*CUP|U6tE7+Sv)Yl+Ik29BbyH5w{a_f69t3Gk%G|)4$w_r zB1fZ}7%19Gaz#L2Ot7YoDrl6vc3IcI(JK-r&p2o6sIOCvzQ_yuvN5ytMbR^Gyq8~v zrlb^0F!#OuD8n9wM>&{?je8#8X|8jWz=qPqjg_<#sdF4F*=bp-na{LTLtDwJpICL5 zxNqk(t;;kkE)!n_O`_P#r9#odu8T8upOR!+e5ezv{h|pw09ey~$-2(rvVy>@gLJO^ z#Bs!k!Ytg3{Q{cGxcqYy5Sf>MK8>iL*8kB;&uRqypRUXFLuzZ4s4m>3uCir8sCF9t zuGpLoN-IP8?p(2HZ-K4)(VnS(G_&AtYT|EeJ$@Uv@;y;YR>Q$3&JiFMc#s^Gp%wrq z%i|XcKr6da-=gwX9404sY@=i`aX5JzzbT7rw?)Ep=qK@Et*&Wo8J~RJ(w>LP*9Nx~ z^HDp>B3-(4mqJ8EX6#GAdngwBF+pObZtEI2Ww9<~t;D-lv-x<%>RbFKDlQ$7Fr$qZ zND?;*ci|9?8SY6bu%z~=EM9~*MtvAb{U!l+X7*0*SUhiM8IyQ%Zznim z^9O#7kH%q*iX_5ln5hSb2}xiiRe~{^<7#2bWpYf`!Z4%am!Sc{z7V_`twcpPDXp_v zGdv9>Rte-gOQ5|;Nnhx(WbQJr-&^Fp-~umSCzf~@&Rrx+G*TuJYgnY@;b%J@WJ~I! zb7L}(m_%`wGf4xAv;`%VFQmRjenc;KQ7mA`@z?; zuH#v5(vcQkr!mvc;T(!EL-5!BH`6F-`AD-9jm$jCU;PEPh(9GSYE9#nitW{b~8i zNGI*D(rG!%NXPXQ-MU_(3~7=lgPwPT?vT=Hxy#6pHe}C1BOl9O3P0QVja*NW_o1QF za+r}H*HaXIWazX!W~AeKiam!6otDcqx;LOO{P%6b4+d!^Cj+7=`<_IDgy6oVfV86* z0iufd?f{Z>GXNQGjJhuX#Qc}<(bEk5FHv7ew+fJSH>i6uAnf$M03i4e8n5tFK(O#V zjYwb*@%;dh@y)~!`CJZ2K3`DxUQ`s)-vdbcs{kRQuM72@;R1jRcRnELUPb#rct0Td z)B+O!ex38@SB!=!!AtdR31ITc+1JgYRkb2pIyybd_MSvL6`py6(J_`^e zzFo*{u1DAi2roHb4JHiVJh&-mnG^<`4+w}P_wtEJZ3^oZ&Qe&a(5nzY!g1XLrzq>`frs;6bhnGk<@ymI-Bx?g^Ui2Dx7x=);+<}* zJ>(dRZma#}R4Cn6d;1meqq|4>(*hv$>V{L?ZR)O5x7DAVqx6dA*>ysXvLFxJR`Rp@ z2i~Jhx7DA#1U%OXSp5&bLGVBE9K@U5{kQ|qLA@Pc;&5}_mK}dC^ksM7;NU;ULI1P^ zuXa-V=puP=m6(51P_Tz*3SqOZr;yjow#ZX0<8nOI@tn7mE&*8DPa(=+2~Q70EB=z% zi*D@SRxU^A%$vPzHcmj2V}@>Ce9PSGn)x?nN^R20t!Mt&4i!pGzWpd4n+9}YKy~fh zCFYF(OtB<{R;00N+s*tpF2~6`idF8*7uC+TyzB=04CsXBjzTZYGMxV-_VCYiuFv@K z;}Z68$)MULi@!OyhG$+`M~GRbaj7er?Bg3)(7l3|aV^gt?C%+`_VI3|vD|3e#Xg>` z0gu-{J`IgEAM(oq%tPZmnI7r(aU2nbOW2VU{6C&SwZ>7jhMX$ML7rGj+HD#oVrrZHeZ*2|M*n5aK`>oPwaq?lOm* z*l8{knuFLhsx;eW^OMdN8P%}FKbwaiab^d1W(T{nc@fyzb%y;-AP z`e^wf_v2g`VV~YH^q3y6Me)gCV&2M4Igw4=pb}}_!{69${NnV3E&;K20PIwv3ld{Y z>Vk`&SXO{xAf|VE;gE#$1k&hMGKp>?6U;j^7$zG?KP49CHX_L)(U~JO*ONAGWjH9g z7?m2+UldLPV5Vj>-Z6cTUsM5B*eO=EjqLyb&<&g&&x) zAVy)bmup|M`NAA1&U4>ajy$%mr;Ujx7E#=Hsoj^7-~g`s&V^@2UP2JU+KXi5QX_tf z0G;875F9Uvg>S`j6|Os0nD7bJ#E58a%I^a(R5IsA-#D+suvdjCu^7ovBi0c_w-Q99 z21lg^J0+YH#qlN;9&QJhQWgofF@*fWav|^hO>Zc}55U`+#^XDt@z{7+9?REerrc~G~9I_wBaY=)ts*8VM`-xLC~GaIykIiO3jac*ROfRS_^Zpi9)l( z%Fl-V^^DMF&_y3Q2{z|YA_UC3I0l00z!3)G4~@VeUfva{*lwNkWtf{DeAG(_jB^gg zfioKaAm}zsiEKk?TpwA!Zc=0iJU8=z8cd*bq=yw@>tvqaI!z)JnKX2;VcD>~9u(HT zMU-F3Z#8JM)7QiQkm1~Z?m^VOxI`N)55X8skufB}83GU}@+t_pQj5mZ=ds>wQgj9m zUl=l!Ic#YMinXs-{8#A5rX2``n>aJ+g~q}Zy`VZHpVIY`u=yp&uR+Ok82tbB`mxt% zs}xHS)B8Fb_Rm5;*u?8t+4kZ(R<>!ljsZIbg<(z+ z0Ip*#6wvAgh-?}nj;$U5cT+7CgzH#K=@=&WyW=`m!z$)N+l=d24gXedHOF?TFRG-jJsThfz9#lyE0NOu#b!|lGy#kZ6_^=ORv5JL}^yEJ}W zh{U?UClcej0&C+r-_6Ez;_MsGX;Y7T!5q30T&9iZBm&+5es`@y8@LWFE{BZq-7=I4 zZsxcEzf&=`2yV`vnuog}Lp2>(yMxwo`MSt}IJe2A2-*w2k=Q=`T7vT32uhq?&^>Tl zf(kB^pd^Bz22jv82-;=|I@}1_&XCby8?J*sStY{an9XL5%;xN`}O(JMnAD%6B6xaduhT;kINITqapb1X%^dc*+jtt+(QfZ3a5hx)Hxte0(?Y z5oeEY9o$xYg3A;ii4Y$FPY<9O9LlM;l*2hxlwWOW&Cv?D?GoqqG;1#ENq@3RKo=V{ zNdb5nrJys|f?t3K2ym5Xad4G8_V41g#(1qM4mP`E3*mtF+oLESzFFKZ8NPV=t1&d9wM7FefEP9Ouo-1Z?g{F|ywRF6b)z}HDSDR1uMC)4c9;s`= zsxw&%xhCF>G@42id_cS&h~GdjPI+Lq06MS3xhUo`b}sCdO0*GORh+XIban>!A^;ZN zq4&yXGHeT%!w*4~*07H67}l{lO$_VoACT7g%&UEQW8EPfb4!*Db%*{Fz*@R%K7Om< zV|DS7;C`&z!Z+!D`4T@gJlKnqnHuZ%p;_Q3JKj#P<~U4fHWtWREZf&n3ePp^i)5u7 z*6P($13=4%_e9_^zw&B+HmHx}YX&?&r1+d`Kw9{E#ZSka5S}!AkFl@vPMeH)FDH%g zOf(=Z{4B*^*$;k$;x*>9@Eh_>KA} zZyD+M0qs&dY(nE1?6tHL?@>A}e;N7FPHfqKk48s3ahLMb@|cky?Zi{n{;TCGBOUF; zYm`pQXGXfAsN>#$m~wD5ezX(MSGuFw?P({TrF2?uGsepS#X8+jujMz5?n9Js+BY8q z#N4y55%6=chfW8)2<`=#YZwCfDCQo~MEM>7L{;%E1|;1i)E_hC zldwg5E+G1ol9_-Qi223Z=FR1VnAnASukm+0xNcm%cBjBC_$au=|gDHC7 zDS*fWAGd6r4?5oKbOGQlK>Gh0@Eo`|0Gd|9uzYhkV~h zq8R>Fzzc!z1}p^pwfe6GJP+>g0uBYNQ~w%3m=H>)1EP$VlmX(u&x0R4zWb5aOwV2< z60bhmfh9iy>3=gI{`+XJ9S(Q_Amuqh;d5X@d7cGidcOmB9^fj#a{y-nGJf{FOy9+T zczn>c@Mol8_5b=l`Ntpx$7)u;oDI3?w)){N#ar!qG2|!S>SxbYw-@Dx&$~)LOWiL+ z-@+f|jZdq(t$uJB{D`;uHNO=f$~~WNf}ZwltKa${R7aaJdj`(;dsh$2g z2mVJ6{2LB_Z#w8-a>zFq%&HVe7|tu?{MHJIPixY^0hedGaccta?o?G z-!AWk4!p;a9?SfkX3b5mBA~e(hH`k^ykG@yL%Ml3b`Y;{$u@b1mzaj_hHGPCm%E7^ z7hu^8$SGU)lXqe1y-pfmwXm&ScpJ?6N4+)65zMx>!4{?M3MWfM8)2pt7_@aim;F!y z8(U{el*}Pgrj+!R-vL@;m3;+rj1U?~PsiL!UNkoo zMTUf>o@8K4i=`Ji)WE)O!CVOCNYk>#vlAr*H(8l0xvZ>PdNky`qan%Gl(CFV`$3Uq zKd9v559cz53`N30oI!h{ciZ}rbduEL6Kwj;5TA7;l!#_K2Ei7}%2XW1;%7iRqlnrN5hX1C8jG}H1N?|PPBV%*B78|^u|1XnZ0(HK{K=JhNalux^M z8ub`(Q5K$)a~k={aL>H(_gL#$YB^xT6GFemrxfY7(ndGX^9ikIC|(d%+C5NS3@-Vt z)s4aB7Vsk5siebW>5Pyvs%nWk?nmtboDVX4|FG8*TUevZ59vfbrhTx21k-aE{bOG3 zFgeFB#ZR=(wv3}!R!F4KaCYliW=SvpT-m|>*_<#sY*s&D)(0lKNyc9IFJJ$FNo~%j z!%WZx5S29%*)e)WV%x=szwXClG6!GtaR?K75m^>t7CRJ|d)!SZSg`(b#R4DMBohsr z&wxGCZ^18Bf*osX@ER45 zs0gAWa8vZ%q)Ea9n>2b$YBmY-ZA?GD;(l_h=cM-|Vtth==?BN~( zYuWg@hqbl~h_QWxNxTgJ9VJ_1*wb48U{7xr&{_`=*|bs|TWbN_O|zj%*wYybfsO53 zS;-X(u%{dTa#lC&=_b+{^)ROQNT9hb?m`vp<~Dbsin@G*yKt)!o)=C@?*Q{>2>lVd z9~Fy+cXVDVow)#D6NN-4Ttr-~u1D7umPc{>NbnH)8On`Ul*$-Wf-11PGuX`%F(uaO zMW`u}uX}LbkOwfY^U9neU^-9a*bF6Gn>HBjqRV$D+8@|WQIBz+NXQ)d6N-M06+blL z6KvpQB4ueCwpvoOhV9Ip3|)i0d`VqJ8FQQ?PAScEy8+;o`qZoQTm#ea8x;Sf8JDKv zYju!1s=x4xSNlX-_&&vRz7tOxo|C_PIHtvuhW8!=U#j@le!}-C{`>vl>oNb#=RpI~ z;xFQ08c%=WyA|Kxe$E#Cj=|%p(rG?tq@x{cmY%2lAkrjH2KyQ9SiMSjG=8*W%~Ctj(e`c9j&+F3 zUGZo+N|Wy)lrxO@eBTDdmx=FdfM}yiN&#Uv@Qnfl8{fV>76Z~=bp;^lUqHPg{bPXmf9Ch_L;5*@q#p%HJ4gW_K2?3~ z5RURaf**XB`mO^+)8IP`5MPqMKbm&JcaOqZfK10_fK11UfUtx3-T-s*=Q+fvJHADL zjJF67UzolQWD4o$nB4J|0e%twu(=4n4aE3ApkCoDg{2C;3SA0&5Du>c+7-4btXDWo zVW~o|LI4TZg21#()YAjcx%i{oYFBSn{05V5*9N46cq*085_NmkJsW<+TkRV6)zNLW zQ+1%HU7}R!tME>@)y`d`c&lChp5m=`3{Ii9+O5AUp0e=Sfj{!I`i?vW0B#DO2};8*OxyB+v<9QgEkf9nj`#PPl|S2#Drynosx zzZEq7m|xqhTFTToH^=FTzm6How7K#ANo^DMws%iU& zksQaQw&8TVliDZa>F+$>ON%m}=X=S7vB2<|b#khj%rtMN{fcd^z(ej zDJExS51%qK*;fLA z&nzr!#MDMt2$QTh#k8TWZ~uQISPCUa6wh)JTqZm)PllOs^IE6T$WpoY`t7_spTbn2*7#*S;w=9h0#vdQzkl3&}Mp zJ8{vubx%46hS;ESCBW06M8csc%os(oaO$AEl;vPqsCmPjv^Cv@@8Qni9t47RaqFYR z$7$^gm>f(7;Xu(n^P+N~Xt%sa2Eu!fERWq2@50E}OcQB-mg@8s=E|H?Z07dSL&aai zJ}(w}nOQ48gdJYiS!zGT*a+#k6X59^Kp{zWh`JO02#Pa!J?_|d@NO=r3~uiXb{SMx zF;>6Eu7U%C;!7XL8RE##imvR6y`h@tc{u6^?u#(N1mj5smdRG^%*Ii_HP7R2ubk!& z+?B!YyhLj|rY$9nUGbkIjkr=P_bya(5Ct*G$Hnt|kTW~w>e7N7tRdbh)H~y|6Bit{qu<-NRH^>8 z_x6oPEcmN00_?@aeIJEfmQc<09&!ht@msR^)}`Kyyfup#5)ip~UgF-qQI`xG zCI`SdMx8aT^wZ-OEUM*6CuE0{KVc$5Ot z&8HN9?RPxPS63-usk|kAj@+4e#mkX9IZol9^ZCU^!_O)k`|Jy4z7K{DKg-qr#$QQc zeBu9+_?B9}kN&ny#;0F=60|P!PTFT*Acy=v!8bws$2Wzd9e45l7KLP};Y;6VU!b&h z->)a89hknGXlB0QdVCMRW}JM~FTe-cN34)OWN$K!Rm?mK)A%MKMZkHE-uJNZozkSFB zpBxy1VMW(|L-XueULW7yE^&EXu8UuP3Dx$m;|5>^`22SIlMg;;e9xMxHSgOcyUsWM z1M>em?vmn>G8Jj!y8PXXUuRsu8_u{cDP~;zUgJAMc)aI~zfXpdTiD*L4)bksxm(cSS zo}`|e&VBM7#>;eF{x0=%@#~OR^wYKflHz@@rRs-iFGDH9_-moxWxH{P*kuzM~c&FmGpVdFu+SRo~)jbIo$O_|E4$T{mCK z-wW=4eUZz>cRtl8Ri9M$_Xj^Tt_MGSR;uA6Cz^l1>f=AY6TkhviI^DWpK%$8{PZH- zUeQUtyelFVtnj9~Ef@Xm^bHS~HzkjaFb?e~VOU7LA&mCB+@Q%xM ztQa>H5WiUmUR975sj4G34)GyA?I-`{y$BmB9N6{+$^o+_^zVJJ8 zGkmNVKY5!n9ofb|`VIIZrL&$pUv3!j#3{GF=W;!9il?JtM4#W~x*GK*;<@_Zoi7`z zlV3aewLd)1_fg|qt`CuR^X78>;d$e7xn3AF?%f?1UV+wl$Au%`9QW=^XyY#3<8p27 zymZeCm^r~+NF!g|_2RB?9}Z`Sv%h_quF)e$kF?w`?jj9CzA$LVg)Y|>;~9F~yDryD zXYIIfYbUuGJ||1AF>Xtm4=OCXf7SQccI@Nzhx_zMQ?!zD-kLE*0I@%?>^gdY4kBoFJyJV@_Yc-$J_72*x1ijBtuF?6A|SU) ze;)95z-*WVmnuA%BYX!f0wmpBK+>rc?SPu;_=sRoUXgotxnf$ybw>}_&kU|x~+DHjVaw$J93MMw;9@Bep1Wjb`e1XSFelIXu%i+3Z=zB1NQX`O+IP?Pqa10^4^Pq-{a4 zZ!kzh+V>WuA(Pt*(oo4A1!<_{W`Z*9j`a7; z|GL3=&^Yq3+-!cVKl&f9U9G&F)Mzij57pka0$)aK^Wdl_u%7DbqubS{Dj)Wld}d9R zcHcPgtKufy34R!(@^RY1W_{K84>rJ6`?XXal-2$u_{r_2>HO-IpGO0=fS;YmX?A9K zKbD=YMfr_I|H`M$!O!?6e~)FS>zZb0y{f-G$Y<)TdzS3$CNiZ|9LrAETfrch#Z!KV zDpU1`?rFZEFuy|qL^mfHs~{tz?g!77eao)i8(c1~gJQRatd)mNIRB_eHusip@p{~k zHLt36s$K>ZBNFUN#=ul&vnH9tq7r5`_u1AtCZ6OPWu9ol1(Uh#(P%M)g$I9xI5cip z_tP6Mf&Z{=xF}I)@P%vYIbPi&2F65`hFo}WV;`(eJvfq;%%aVMVF-jx%{T_a!MEY+ zjZ;OjR6a)Sh&5{t7MjYbEjS(xC;9|e^ZGTe5&G!U=yF`v))MLaK2D7J2+LT@`?4E` zkhlDjY2#+P^W3Y3i#Uv&9*yz5h`c1_;Z=)Em!bS-Q zam3m~6w?qj2%$^M!7@VA7f->#X@CvSZA5I?L$DvK%m;+BK1C*C32(3u7lsmpYuEPU zvd{s%EOc0BsN=|h(1IfrAk@%VN)V~5H%GYDTSclz&fR2|#-D*mP)-k~-%E2i?cU8F zEdSlf+JYMpS*g{6g|ln3-7y|p-hZl7Rb-B#It3v(y}z5e5Xv>lL2-f5p{y?V$kH75 z-JC!X8blvni5!cc3!jVuEK!9F4uz2VXylb9W!=$=owzzNg4;o9Tb%067^Zlt*DV)O z2~o%!iLIbWoF2_c4?dArlIU?rQLKJ0^G1UYNlrhMG_gE|<<4ArAKY)Z3O?kH{RFH< zs~Jm1Cau;QVS1vWlr&(oMaNsvYj<(TnTBP@P6J7za*h;gpGkvd9l8c6Xgl}ekmOW3 z3d%(lJ3nyGgr(9`vHJt}^ltaa=iPU6t{6U4_eJHz!-`oT*I32bqm#uA%7THqfQ{7} z-a=?4$NS;b!$|phG$3yGy(OZd^^NVhks!R*qavH?w7#(yZOVGwKqxhF9S%TC z;MNIlT^wO0=KWU+%YbWI&iA)B1!=Riy(F70&5`8rrig zWoXm0o+$-}jiw&Me;o@8D+l$PV}2oY;UXcQF_qJw!olj$JdGsapCVlm+vL373K(kT8woCmA_P zWF<=7OsXAMwk9I}FxXGTm6oUlvO^=0ryCjZER9%U{yO1O0LCNB+md;Dzwr*!WSU?A zRTPL1B_{?j|3;y#3_>*pQZj5@zM@i_ZLjgC@E#0W{+R=Pano_U{dc1EvGY?YG)$4qz{=G2pv)yRzfKtRwp3w zO<`b;qs+2_u((-P8J-TneD5T>Aq?^Y8Er9;xI$!LRoRcO5JK54W3>k2VCao#VNQ0( zzKfBb$V0ye_(ndwEH$;kW=)CSe=7Q3Tpru_i8~UWgs9vx4icF&(PqKLvm&ulD-oNy z4kr>8Hxm(+*Jz9(vA!twA^kX($k_f;^qH>$WV3m+R8k%sCJ(?}z=_zLz z3dV+_AVv~KqcHymhHB8g8V#r~3hr?izK&1;Xo{x)7W6Zayy-JG!xOGbHe6DRKnkyJ z;MkJ}5qLTaUKOIMEN2Pi4{C{3g9p>a4yy;a(jg)1lz5aqY+J;NG8txKQx!+<$xT(V z@3HLbW!Ld8*=C@?VLVRCEy8xc!sra|r0DX&lcIIpX4Qky{hkmmScsJ4oZny<7Rqgp zmhWtQGYi`Wca{x@5IGE*f-4ygzfB&h`;Q7(V#lfBK7^lwdo{`|@I0upl zjaM8(itu=cz&*noJg7*x`<;%cI@%lSwqUJcr%1``hanD*AdUvTkZMCRsx1(99fWOj z$2h15-ooJ~XN_?SUUBLrByY#&Mx?_Ntr#3#UWj3I5f2ImiK}qfXO!}~G5rG`mBcbCH`$rqLGnc+mHnXgndqd^>&dR^S zizWXGvF#NZH)C*gh6kl0_lp4@emoArT;A4eM<=DdSP4QfHqIeF5CyHk{ z4^SKM9K3dh_q}Ac`V-lMcfxK!W!w1lQ0T;^TdOggW}y02pNHv81X2$YK~zX69@^q| zWIfGK_6g6sV{A7z(}BZ#!95NJX~dBjQ8>(3#PH<4QNmW@B8~-Q%z8+~icy4UgEZ;w zSx<8eJ7JqfKu08;*M9^=MTLObbB7~>gP9_jV~>CiTyEQc1VrK9Tl_MDGaV81B_n8j ziYdSu|I`d=-^T(OD&NqE8XH#R)&GXdF9c0A%tB&a-4PL2R7woWwkbMsKj<_I7#2=< z_d96d;+{ALKtV6j|FxP@TuFQ#0O@yTZ zqu~?q@o0HAbnteYXe&j=hE@`mJ=J}J%M~2nO!7$+a6JFkL%6CPHK9*HxK}`|2f(_= zn873Az3_>f&RjSNBf}>WBQh!^*e%QYgFc+U6&|#oIMjhrPl{fdhgU|&E3N?|oA%HV zd1Xp;E#r-}?iTm!q3Bu)5Q%l;Hxzjdm2xNE$|CJJiGc_-Jz>&H>k}pyHb7CK!keD< zZghhVqrnS3AX^2hcA^bbLAK;c36p-A-p~1v$SaM{WksIgE7thx*9!7<78Ifx*|?cle4M4!M*7Jlj082AXRy zd^hzMHz~74g3rQ=@)#BIV^I_n-@#4S=H_-w5n9Ep_Fk0Hu&tE!4&X4eaFbNOhUZLW zG~G%=r=jdLl$}C3?9))krzeCKd`R_U{;FO2iB8nKb`)P+B7nA@Z<3ujafG!_i=nBs zlZHzj4|1Rp-Xo>X)+U%{prOOW+#%c(9Tl4auw)>upJfdlEI_D;ls`E99%&DvYo*rC z@Nn2;;i9+ap+DO!LOu_P_{M_}BGZTFO+t5%D@Ilh9gH%)!IECphfI@NqA`~>wA*^C zNfGJ48n?3CV#M?-YQ^feOyNHv659e~<5vEndh%ldC%w?CeNIGPlKEvSl$BE(rM_(< zZK&gIO#B=`P8kv_i%2pB=h}b-n;Qm9$?6PA7Ga{$%A!)rgu^Q$o7PF{nMHh)EQ(L( zXd~9@`V-=aZDPeh>oy+R6f`PWm?-y11LVLL_dU5_8Rtg{(n@(c@d_Ugc$vz}{yVku z@RJ;ib7XyS}NYxHI&+N!dk&&fnT-T0G!!|~9AKlzY;Bk0rO zSGf}Lfx1|uMxxyEC@e@5`oVd zjpL$rrjdRST9VbG;S9XK-Cdaf2*jA@{!_;R_x0@w`3ss_>yaL+%8*tmEKu0Lzls(! zupr!)B9bTf)v?mz=bvuipcf20v(v!yPZW4jFXGUkqh2!>v z6r%qZME`q2^vd-rdV%%g(J)mC3lwJdN4**>S-Ht{Jf0E1LXmz<)$p*1zH&cu?#~cw zZ8O9&-;w(ICaC|@UHBTtsCyy%o`hfp544uP%JfvVl8KO1;sbQ%3(TD)*{aqS?6;@t zSsEaYDSRqUK@P<6NWlQg6uMLtnL87KP|hyqJaieRnxpO2Y95WT`)rJ7ao1CCvZF?f zO<_tEm0Au0spy_ncFzuax1a6 zl3*zco|rJ@TqQ##s}n1o>uy!4D51`+?Jj$LsSr6MKOjTUEr8|k8t$FG^EsR5-?VU`QH?p zDwHf4Q$T=K5@SLII@ZX-SVKPm2TGkU2zyuoOs9ZgrTB6!2%oArm%*{CZrsc-7JN}G z!f$7|7G8M4b#;9EoI7?69F%rMk*V^9fMCm@I1P({3$(4w zJQfu~XYumu-11t)fuSjrIyqU*OKuN7 zZ1qb9^Ave#zCsIjgjkO;Rgq|uhBQNjwMO>JR-@~g=&CE%YAYzvT_{O3=<8oP;Qku^ zu78Qi)^XJv zavQ1uxvmPcnrWp0o#B>Hf)}%5$5uj4vj#{s^D>!aYGNAGgzlP-)}9|gvwarw#}dT~ zZCd#t|Z{$(GJYS0H`uCHsTmbyMkGGrL1!R zlk;?DT$AUHt+r*eX)(<#T!yC7!`sVQMkAq&^-lm0?RPLT6`Dtz(hq z3tTR=BKbXlP~o8cn9T-U%cP(sY&ATjt#}?%?SNDmm&|<4J#tTSCBPLD7>hxepO|GQ z$J~1j$NV1{j;+curX0bk5+BJ{I%mQhSkOua%xs1Ef03|QP$1G^L4lD<;qm%chB?Tl z4h;l<;ZqsYt_XutPmH`R{aWp4)vD$e^l;Lcp-xjXxmTI=#FU42BrF>RvH4U03Lyza z$TWsc!jQ6%mSlv9npiL?+>&s3;9v=`J|hUt$G}PMRTM{u^Sz&IY(L3-=uL_tgePV~ zm^ljb?#VrHo`{wI1Jl2^dcZBg09GK{Wbx_D5qgzG=^ojg$YS|~q11DjLQHXpDt@di zuLMgwE97OBE=e)0tdLAEInd4cQ~LY>g8bk!hfYGGD6 zzi{3?C|b@v)rcBnM-JjxH_qy#ri|NYsvdr3EX|oZqv_M#F)q~vX>Pfub`w6qRg~la zI=V?l4F81@!*jz2HXsQYxKIhEU`#{d(m@61!_kdPfYb2u)$?0pHIKxmGJv{jSa^ zn>{3>pHA6OI7EMua}s((G$xsxssUk)gp`vop$f=HhR!Ul!8q4s6G!7Fn_TWy%QTyQ zhG>}7(*P4ep}bIR5XfE8oO^U&Iy~ndWRsRvlTA~ZP1ZNEQ{hA=#~ z*~Cy(MP;UJGDHT+$YTV%ff^rcx{p0TZ$jmB>`H#%k7$32b3R-kMa68U z1FNkl7-narU%kLE&%a%mSH+Z(^ryX`0nvzd6DBGl@o6$kT2E;yn_X~3NrMPwN8+@V$R3nF4ccoNdw84lr>@-=Sd8^%S$ zL8c?9i9%7Dpx_&3yjqMHGQ*WCpII43PNapF6W>=Mi;~f#jIj*mbU8sNJl+ITSf#Ks zOi@@o2(f4lzcOFOmv{}*izNYgEtW|@cN4dQFzcB_z!*bGqrk={i6{t{G7p)j^t9rj zC*1}bMM*}ONF-v$7UwMwNp6+0fP_MJ1L+*vEeGwWc2MV@f%#3q{4W^TN^0~-_{`>T zi)GImei=@h8NDD&U$+9=G@DE z(DiZ;T3R&pW|_%e5yKNUuu5TpKow!9kQ9WwL=?6);Gzu-$_00%D&<&EXuVAK#*x+$ z@V0-&%N$pscoJow?k%qW3Y-J^(j8p7L<}af$5MwM%rEuuc2mizf zPp7uAWT8(!V^vhErT*fv!-z^UrDUw8gwPouzAhP`C2lI3Qwt)EwZuK4)*{A(HahLY z7ZWOmUqP5O}478)2E3TXN;XDpVd zGM;198PYIXh56S>561i!UFKNfvpUlQX@=8$MQthg4P@Z!!E#NMk`i)nIdBO(QVZPhB|6ZUN=!X0#EsR^jzmFBec0}V=R`h}HFgY~JJyd$JPE;1HHujzn zk(YQ#2uO`J%9kV@pL5@5W+8|%*67A9F;-XbF>Q)qu*Bc+K}f4rG?U;bxbI6>GFLWJ z$q@r}@}Gu)g7D#PB-zaLAHu7Sca2$$9#ErvPwt0AnlWHi??N*H7-Mi0dzjV3q;TKO zuMHq_zi4#BfhL^IhTaVB4E-iA;*KpKdEP75KEMzj1W3{atNeMW=ub!v*n~QnUWHR5!o_R0P(dagJwEqJj<8(weZUz_VY=x zJ(=uF_Pnn2?0 z39QBEtaGq6%+ThpLFj%rcmFltzim`0-tffTjX#(@# zG;q+L4LtKTz(n!#JS6qUN}E|P)G=5N2d;dmWuko9Rqa)LV%3w!pd7(Gj$pe{rC9>l z?CDaZjy$2MTBWQjUvsjqYHHacv2rbzRm&fctMQzb;G_(-912*Z3YditNe)5|CCfhM z*OoyTwmHov7EesjR!mixHzm;803Mg$}C?fpv8!nfg>{;Gm%fp6NC4{2>PV z1{=7kTl!6dfhkGi|oj0L7+F-*bQ zJUeY=C=Y(IQ;nZBFg3$IGcff4B?I74)JhOjqFEoxEkrjMiaeJ}vT22C%*-21a8X)N5KJA#cJ>mJyj3U@#6e5(+6OJyqX3U7Qb0*}~Z) zTR73_Ve7$opX6NHcxipocH!g z*lsxqcWasteQ_r*8h8^58h&};|e&hBV%3ob@LKm(4N-PZ~eM zg`r)g`TkScc*h`u=VH%WQ!4MU2p?O^}!ACKR~2}0x|KAOy;ePxVy9*TU{&6Su7NC zeS8ec07%)|FskJwU`$Q}1Lp95{U~k6>;LwGGU+T>p@N zh6Lr@O+55ta5!wmv_NV8Cs_VTrG1x4P(9sLz9kzA&B;~kY_KI1*)GLMewYR8slk2N z$=n7MJ@B3j5ut7T$2|`d`28zqM!3WHMq<8+D-@gChl-Wh9mC-wP89qN3-$o^0QLbw6kogj?qfNB zi$`YRLKU=6y^->L(cr$s9#$~=dONw|Duy0t300}57@o0vOg`uG?jA&#uhXN0n&3vs z?8Uxz+@T}i5uPC}R5LQkGXp!?S%{_&rq52M5kCcJpvBwcLGmkDczLvrrvgFXG`Irb z2HHTh1Wv!?ckMJ<~N`se(@Y8R+Bm+~Fw_UhD-4wW8 zRup*>1=7Joe+tSWx~H7tA&sW<=7~Y@f|JMs<0P{k31(R50;CC4z#d=dt4yHn41}L5 zJ?N>Xq6a>_5vE7l+@AP1WgzPbZlCd6Nca1lQ~bZ*xf6qd`hd&jEnBv0+vR-!_=G{- z_?rrn(&C?w4;*>>Pa}aZ#mS~+@GHw-I0&a;d-2{^w(%$TPr&;XAT2%l)$=BTXUWfg zIH?$?+>tf_H+XySUVr&pXGKfS>WGz;%<%`t-ZdexY4KV9fxo;mQ2t6D{+j)7_dbZf za{@2^{MUi3Z;lSU(eqFL$hZEvweY4zUwyQ?rV>0#>&|S!I2Iyf2@)E4=hd(D@rbJ{P?%@1}5-zW49nIpeO3r!0 z2f18fdD6sR z&O3ABM<Y`Cp!;(t}YHgQ7V zyAx|J`tOP3PRuLu>?|nx{k}6wW>3AKG;>X>~ck8j*xa!%zxO4gnEX~~0kW%~~d$n$sp@KpbwOAGvCKOE!_ z{^m>mf|j%W)0PeOzi{I)|Cn!%^vAwE#(&KZ$NPV`qr^XCz!m&pGV&cD`w zO?{<5&o$FOZB>o`z|aN$^PgYjANuWO{`HsMj=ZV&{~~^u|KmMjfB5&!{;8c&|E15} z>;GuS{r>-WX|?}?p6~hH2Y%pRnD-<9knNiCq{t zFmza;@ac;JYsyCivfl6omMpqB@cciE0w3Q!I`DV**uW#-9T&(sfjzY=(} zbxPpfzm*4W^IsjfFE%wW{I#zI&OGPZz|y(X0{K6y2>k7>>jH<*s0>{EwW`3EiI(_Wh%xZ=|pfy%S117DdqD{y$)?7%k{+z<%gRuh;Qo)c(WH8*g_ee)pyje)2C zZGPaxl?wt7-2BbJJykaac9kv+Tz%fnft;*Gf%jiq6!_q=#epGpwSmc3ek-u@)Fpw9 zJC_9d{%vW%<6jmy{k>&@PkyjG@E>Kj1OoqgOCWaVt%1irzantQx)p(}akmA=Zn-Tm z*nfLq?bEjhwvGCB;MSjhJMbI#%D|6rSs6HC&&t5TF?E5t_tXU@{i!bS9~ayaxNqSd zfxoT4Bkt^k4E*lxI|DBqyfbj|f8PoH z)dw(!kfW8kBmq;Qyen4DvBdYV%ZtB4{1xF(8WBJ?h_moli@#?4wc)QFe|`8f4@dg{ z^S|!%H~POf;W7V75C7Qz$={>?->;wRKlJED{;@?bm0bURKL57jeJlK)0qz;lJOkQi z5at<#edgcpdBT52<9GeD&YSGtetE0}e_QeX4E%_bKfcqCIMR@oVHlQiGfu|EILMoP z84u&79F&W4Qbx)~nJ5cos4IEI|5Eg1{_$P@_)b6Kj)f;r#?AQ1k8x5S#>coQ6Xjui zl!fwA9?C#jnGU9lX=NIjHl~Z|WV-psclr@W8qzWh!;%-{VBD00@iHFrW}K9TGEy$e z!FVYHWuwfW|J$b0vu>JMdfr2C1)lod&cHWTeyeoz(vwS<&3Z7<{EvGBr~mLDwtfb8 zQJ6xLWtAQamg>u71Jm#=ihmKaTX@p&vsj?PQ}egw-9vWl}`1Uk#05UdNvt;)T=z!z1~wAbMMW$FPrgh!QYBs8#?M&o(y#R zfSC23p`)Ht=&owaxfg!q$1{?f4;VVtcSiYmuYeb8m-(pPGt%*1f$>VG`cI?lM*d)E zKB!A!yTZq=GX4)MT&u8EAul>)xKk8nEBq%ifc_sS{F}mNg|`BFa9;mpKzxFhoB@~z z_thbD5BPf+(b3%qNIq97yc*?{^j<)Q|L>r2-vbD{s&5hCVBmS2Andh19vz68nvzM1 z-;6>+ej607Q`n|(jlvd%w*z7#q$CJ?H3S*_l9aiX4_yyE{#^+Xe zqQWESHRzwC@Xr{L(>+yTNMWhM@d^tS?!yR`^c8>uAlF27e;1>0x?jdAzOp63U5)kNa2%(2G8A2 z4FC3p2L1(*a_vy}YK5!Rze(L+yTH)Db-sZs6}~pqxR)yYlEV0T#{bKJK!!hbmVx)3X<(_s@d|%A z#Q5K%aJ<46Fv&sqxq##|Lt%wNF7~5;P+t&kT7GW<6bUaQcj@Si6e z{EU+f9IG%FjU>axPc-mZh3gdFpzvaaJpYgM);%zPLuS&wTj9?YE>t*2;k!^e=^jy7 z0|)i^BP5dPx)Ts8@u9f8AhHi>b|H&>R3iQl=z*KCU16KTdWEwTmMZir1dwpw0OY+Y z);MMY-s!f+EqHaE23f6h_s>+kHEuyM6?$u&vQp`%UV|4rSCby$+tl3zKXFeJv}-Nh zps~g=i{L&RZfo3yW5a5p&I0~~HwwRQVN^{opQ%~^b_3m2c?jQcw0 zR^PZ}xyxLUVlHG^wix$hELe71GK9I4CEb6?+@*7uxvJ9;uIeSr7bSv&;D*_Y<}7tp zFI_gLdfwdG%a$*hTYbZV+3>;5EQ^-_v0&j%)!;V!=GujGmsCT%MWd_d*V ztDe22X1=R>;o=)1#_XkVFPpt+^t_~A=FDBRbgoN;xp~0~Bxg=SMEHWive`E*1i^x( z)pHiyxM11rg-plXMK$oV3wh)6*-PfQswL`q^B@-@oqgNfC8HINQdlIyj4E>JJtw2g zy(M0GMvWVP>FDv}iY_hkddC%wg5PModA*~GiY^&D*6STRp-9|b@2rz=URayB;w01k zCR5RtxV)w)p?P=hL0ReV8ISgrPc6gXvD|3hI6h+YZ!-cMv zj(P&?N!%ZT@d+R2eI(ZXMHoKFv)i=W>XJSv@y?fH-XEfJ4MpcA5Bd+v*WYuj`$IM( zJfAlC#XJWZYqH*h##?o!8Z`vRx<91S^lz>n<=3VB)X6?zzV%Kx6o2d!TqmI;!^6nX zRm-5ANo_%c)dYxeiTgvCUjC65-ImA;@R=UHKcv)V0W+6%!2ZjFV8t5H8x46PGB1y} zfsyjv(em9m<+n3cQPcWe~iF$>>ID_RY1s()r+UTL#jx((kRdU58x8RRna zelY%9e3zL6Y#FFFFIoY{-7wwmoC0HRFL^tnz~GS9lH8x8S5GpPi{Vo^b59jTXJ8ifr?T$=kE6O8-PzuI z(-!Tnw7Zh5YT2?}HF7sD6yp#ZLMWyL{s4Id)A5Mp@dCd;C-5GS{BaC^ArKM=Vh2;* zWXVNVv1CcMR&{&teRsCKJFAr=T$2CYZ_k`L_nzC%Ei-%0nVHdI)TsMS5QV*6cpdKA z_hZ1Qu%uvv0h!kW}W;%8!*tTF|H}V1+d6a z#Iv^4AGp9v+EbigVb^PrMmkYS%euFLT@Z`;d^Q(g!k*cfvnC!NX(X7w1aZ*$Jl_qcJBG~QZb+l#bS!1 z227%0T+}z%H(&R)gFR;6#4T0A5z=hKR}_PYT6 zAH^f#t^GZKxbTJ#9Dz_VKTvSC;th<2v%ek0lnN?tCHt|&`Mb&PB0G@8|9m3^jCZrS zv8h>%FHYD^`%hv?*NOp~%X?Vq`-;s1Z`{Nhuyx;ltkJVe|N0EvxeQpge`dfsTg-5) z)~^Pw2ZATnf}I(7SYd4kBA#vOY)x~Kw`l%nU~%25@Xg;7&Ay^E_q~VJ0bSm-I}Fx# zQ~R5P#pOM(mY>~3NPhyg03l&X*MtPze|Hy)1TP+%>wW+CdS4vlId`b*a|0*1FEL?l zf_fOCBnf1VvCtoC`s zG&}IK{sG{lJ#*5&^;m7)U;J7Qwkp0?5_eun;hT@!zZm($Izvs(<* z=6^9zKuRl4_Mt1Qn|wEa!7xoukaKiU?5x3BHk3m>%E zP9JIe?9Hw=-NlhM>C3h@>3gxZ9y%UYyh?*_JIIB5pOV0xekJ^&QVZ|M*T4<$G{UB_ z#qjRYWpL=tHh3ht20mQ55teYaz=jjI!=E*7ho5}%2k@n5cEZ13b07R``~C2i`yPa! z{^Vi!k&BPO2hKkRKXd3OaB}C9a7W}nVB^zI!Hl7&;aM=;mEO9;UC9eg-uPb!M?{|gTMa$Yw)p)ufgQ_YcNl_7nZKs3*Y|8UU=k} zd*R%ny|DlIUbuU7FZ_jfFC4@n@UMgjykC#NYg-ZcuNx59x&whZ4+Gog(+K>?O9*`G zmk11us<8BZ1YY_90(X6kz#sh$fw^BGaQqtte&G}XKiiGKWjzS|(|!cLZwP_OqX_)W z7y|!t0)Zc!MqrT%fq!8^-~k%~JAmzUz=gp7+k?Oxd2nS;7`H`+#NyS z(@_Ne4%k=UjU(`n69`pm@tev%K~B5&*@j612h)Dq=cUa^2E}20Styf)G{mIdSVGT z0J&rJVJ?Q?r+f(i`&}lOHVM_7YZ?FhIrh z#QZOM-~^-R=4(5k=OyEw zxsJyE7|%}!D!qrE{`nJ+Kk(4ce)jA$FJh{{$DexUiAS!{*J~v)_2A==KK0ZC5AEK) z=c(^&)@Idzb2&=-x>ETi<=l;mINY3mZB~I+)UE+N+P~4SwJcjaU%yuTJn=Op8|dTB z^laEGcW`O|AYgj7rQZ`oG5Xpe1neMK7%K71(bzP{01Qbn{CD+iCH8CO&CvjN%scrxa;G@mTXzs`^M%j|M`f>KL%)zAZWI*&#VCWNTCwepCz%r(WK`F9H12c~(rbWKQ3 zZPdD;1cnC(|rFt)eg{BD$uGUiFqdbfVB`RSTJ? z|3c!%q}3dXz!Bt;^OKgO`t@;~*-rFG&@U>x)srq(ykN-j(k#XbKb;)Fu?VPJzzDJm zN2>eQTYGU?jWe&W)P@`I(NHSIbR{oll4=Hp8A$wfVu{Ylze2Iwds#H`26AOu5*|e< zrw*&D{mC>lOu>_<848??4M9XEzfv5?u?rM-Dv~4S{ON+zUgpSaJa#8BNfF5`^rVj= zr;`HgEIyb?C!-uCln5m%wQ0{NuUsrDh~w&1nv@`w`;@*JW)>w!>6sG+DNW$&R0-sc zEh9BmSE*!)h3hP@piboYT(dZvgoHG`2{(d6qYS6XqjJUL*{pCzETlQ*8HH6z7NLP9 z#9@gjV%Cnih+;Z}qBTYPgHpxh6exP4vWbr`)YGe^6D(?oTE?JQ;}oG~VuT&AC0DN! z_f3Sf4Z?ACH;PUf1Gc4))-!BwYq#(+zDXX0sv*Jvr&1xVZ0WW#Q7@g~!#g2V#mGU4 ze)8VmzKnDr;P+D|($q19opvC*I>51b`qAgY*H(Xy=)bya=cjipy8MoVefOttODhjN zd~j%_;qJ3X>wRN1;^HOuCx|SVti!W&Hu-YwO~OUNXOm|x%=pwuOpk*C@H6U_H|qp za&b?rgg%t6x^fLf4aGC&Tn0xb zEKe6gq$ro3k1(=?_}oer7t$1^-5iW+>QW4i^mdM*JntecBx#kA_>fU_bt2X}xg-T? zdALQY6_i*DQ5|U_B|<4E)Z;?=c?r1zO$aMT!-HBbDSh-Lb3^WE?_pP?M1jpPwyxS3t2FYx*ljg5V5mkkexb08FVbSxR z`T>T|7iM`sw3^&ke+)@daBf)OP#eB-$g+~)Yp16)t*iGW*zp9ow zG^)Z0Hd;ngu3SY)<6M+&!~!?X3i}miS4byimD4Q@Mnb$&QJ*t(WqwaH*?UEtjP6QY z=Wp!nu>V?gYDGgX_Ln44@SCaImpLZBNRY{2mVFr43_~oh(Z@w|@vL1>9m^Z}0taOE zWFr^jM{&9O`ajRG+^_XR1JBxK7$T#!voI4#G!RLHaLM>D;shtgBUx8fS8M~Pm( zsV$a@omZK7WLKG#mi5<@c@dJGn;k2gB5|0_@-oTj@uYt!MP#BZzhz3ME95L!BMG0Z z*FH+T&2g{#xHUw0oD$Uev;zLSymCpIFO7JLjg%P+XPXRkywaV zNyVk}G%62mF?lbMcAw4k(ap>Z+W||naxfD@8w-A`23n@e;qb#ju*Gr*L zIk^&zyI2Kzm9QzEjVc)CfXXV)`$DAhm@RjINW!<0dnXmS+~wTV#avCIF)vw={?>kX zC&fjT1vyNWWg=?qAqItf$dWeU~idKDYRH zycbL|9wez(c3z0wCW=OBC(``{>3CgO&K4wXaS~xBj~AnEB7xuZ|Q{SHf~Qu1*-`ej>*)qs)$GN3@B2 zMm4qYJK>Z_S~fhOJwIefv~Fyq7a;ub2`&rwmG!p%K%6rAx#>GwVf+L-#`J`$2(`wUOFj3#U?^{a8tWm+RyS=Yx9wxEU;sg`~- zN#~(rE*FhiBJ^rElamXxda@QM7nC<=+Nb;!rMQe1I)B{I{cU8y{W1o6KE9z}K(iPb zlb5|71HF;x<~7v}vFV%&cmA@(6iqlBS*|{Ui>1@Tx`N3bBBB8{iD*?&(ww+&WQx0^ z;+#dim%8qbpy-5-#DNzgpZuVf!ljW%E?im0aL27H9XQGY7hU3{rVWB%B~d>9v3#lm z&vlhiyd)moW1$7R9U9T{fynv^A?42OY1G~lYXl>;^0A{?CQYnMWp(&m7~CQV&?`b` zfNsax>~VS^pAE^_CU7Wf@aaB8*oNnFzIT@{I+p;Kq&0{dm+6g<2}vn7hj4k zT(b4=^!l-Le193++?QdhcDV5rJl#~4k3mUXB2MF^^7sOsoiPZ~X;~Hzfx!@&WwlA7 zsk*CQE7ps(hsX){AjcTU;c7&Fk!0MBk{g#2H{(7~UXDzOJYp`3$<45M(J(aQkTKPA z)=4>@O6PNh!Qiq^5?i1Oj1Gs0PTntERYYp5bEYappl#e_zDTA!)rY%RXMP=1E^yQDvJ3kxUDXeiWeNOL*!nsCLay6tU5LL(I(~3)fb3-M zsxy*mAj#yUZHPb|vs{=SFGPDX%?oR?S&gTlso+;%WkP74&#S6qtUfzJzfVN#ic{C? zq!y9P4%wt@Qsi$dq;<>x;a|o(3o&yAgP4&iV?vwm0GDn)OBDB!w*67cSvEk>wiJl$ za#lC#!5bvhs1uRQg|*8>lDz$E*NYl+A|rbjCI4$|dB%RE}-eu&Na42_?5q(3+z~ zFVuoJ-hLDm^bliC-QnneYJy8Q9?6p9fyVwaTGM-wNSLFCvQnO^J8(&wU~ZH#azqH1 zHt_W`dLDHKFM7q~sAbO-lDZH%*tJf~V|=MO(w6*kt9C49h<{r>-ZuDmZnA&zD&BwD z6RF+{B1x!U%cp0k94pB`N$n#GCiTH4I_|E94c12)b)z{cgTPKQ*dwfl+=X>@@WW*` zH%FalLGwwJ`(8Y5Td~ZeUvRgaq_i--QI+1iJdp_JGYsa}wh1xbd0T(%qWX+zk!G=@ z)!|rX%Jz4Qj2{oI|De5%EaQ%tg3XMX^>{kbAmn!A+p9<% zO?CI+{RxdCZVyy-p=cW;r9a7(SJ__)pr`Nd6bj-RDR1fRl<<-R$)6u;UQ}5j*BRo} zsRbi=H*Rez8EuZ(iMUjxJgMZ+CUmLh;UzWkRNPTj&vpdu>-AL+ufZ*N<$(XQJ*K5} z=BIb`ErlQGqG_W?L%QM088)w%BuZ1@r5yP&C(&_6ak9Vm@^{s->Qj@rN?ji@IKU9G zXR^|(N-;&j)K!i9SD(FFq-k{y5USh9C8;oT!dCqWZPV$~7{rJ}9>dnVo!+(av(HD>FlpAJtxtR5KQ> z5uXWl6K!&#(c-oCsSMKEtY5TN_(CEZ0ewX5~ z&F$=1ddJjmbdnN1K5Q*(_wt|xr=UA!CJ~22CMP%uNiYB51t(*ZH^YdYx?P*A@luVF z+Z4;38KUPhhj`%|4aCQ{e0$KFd*`PcBiqYX4UuRAK4*??WannYO#eg(FXGC~Tk6bQ z*&1Hb;}MUF<@n_h`qx)mo!y%X<>#HSY{($9tfU4D0bi{zYeU{wZfLhx88e?6`ek)N z34TzVOx?5a%2|kBukFif^iAJD0?}z=rc3VRq2!VAVWJF4^1-!EgU@gro_%M6=T?11 zxqQCkBq!9t#0zOdhFXFlG=X|-p>rN`h7mhukavyx^|`84wTmTcKI>_*qLBC;jyL{u z_MW+a^0W9ipQ<{3(fxzz=R3NQj$jA!lVpdc9wFVmqvLSLNK;=&0}^~~&)B|?Uq4a! z^AYuvH>d_NeX9EVMc$Occ#3{+*QH`{n994PZpCc^=Rgn7ZU-2c2G~si13f3Z8epKG zWUB!N{A^$w!19#5B5~}80L?Dx&cP`TGyh_=8Y4j10RW@hOA6eo68(0G#_Gq?vG+w` zVIu&HzO$rn1@81k`oR*t7tkt@cTSJ`e2G3%N-z3JgY=;iJ?CQzTvvDRdG>)99)05R mpF9T~Z)ZJFucH@UM>kzZH