ref: 75ff53c70e7e2b8781dadd21a84be3056e1cde69
parent: f329fa6f0f1e08506a210608bc6de34b5949ec6b
author: Gregory Maxwell <[email protected]>
date: Thu Sep 8 04:13:16 EDT 2011
Adds doxygen documentation for opus_defines.h.
--- a/doc/Doxyfile.in
+++ b/doc/Doxyfile.in
@@ -150,7 +150,7 @@
# comments will behave just like regular Qt-style comments
# (thus requiring an explicit @brief command for a brief description.)
-JAVADOC_AUTOBRIEF = NO
+JAVADOC_AUTOBRIEF = YES
# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
# interpret the first line (until the first dot) of a Qt-style
@@ -318,7 +318,7 @@
# Private class members and static file members will be hidden unless
# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
-EXTRACT_ALL = NO
+EXTRACT_ALL = YES
# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
# will be included in the documentation.
@@ -793,7 +793,7 @@
# of all compounds will be generated. Enable this if the project
# contains a lot of classes, structs, unions or interfaces.
-ALPHABETICAL_INDEX = YES
+ALPHABETICAL_INDEX = NO
# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
--- a/libcelt/opus_defines.h
+++ b/libcelt/opus_defines.h
@@ -39,149 +39,322 @@
extern "C" {
#endif
-#if defined(__GNUC__) && defined(OPUS_BUILD)
+/** \defgroup errorcodes Error codes
+ * @{
+ */
+/** No error @hideinitializer*/
+#define OPUS_OK 0
+/** One or more invalid/out of range arguments @hideinitializer*/
+#define OPUS_BAD_ARG -1
+/** The mode struct passed is invalid @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
+/**@}*/
-# define OPUS_EXPORT __attribute__ ((visibility ("default")))
+/** \cond OPUS_INTERNAL_DOC */
+/**Export control for opus functions */
+#if defined(__GNUC__) && defined(OPUS_BUILD)
+# define OPUS_EXPORT __attribute__ ((visibility ("default")))
#elif defined(WIN32)
-
# ifdef OPUS_BUILD
# define OPUS_EXPORT __declspec(dllexport)
# else
# define OPUS_EXPORT __declspec(dllimport)
# endif
-
#else
-
# define OPUS_EXPORT
-
#endif
+/** These are the actual Encoder CTL ID numbers.
+ * They should not be used directly by applications. */
+#define OPUS_SET_COMPLEXITY_REQUEST 4010
+#define OPUS_GET_COMPLEXITY_REQUEST 4011
+#define OPUS_SET_BITRATE_REQUEST 4002
+#define OPUS_GET_BITRATE_REQUEST 4003
+#define OPUS_SET_VBR_REQUEST 4006
+#define OPUS_GET_VBR_REQUEST 4007
+#define OPUS_SET_VBR_CONSTRAINT_REQUEST 4020
+#define OPUS_GET_VBR_CONSTRAINT_REQUEST 4021
+#define OPUS_SET_FORCE_MONO_REQUEST 4022
+#define OPUS_GET_FORCE_MONO_REQUEST 4023
+#define OPUS_SET_BANDWIDTH_REQUEST 4008
+#define OPUS_GET_BANDWIDTH_REQUEST 4009
+#define OPUS_SET_SIGNAL_REQUEST 4024
+#define OPUS_GET_SIGNAL_REQUEST 4025
+#define OPUS_SET_VOICE_RATIO_REQUEST 4018
+#define OPUS_GET_VOICE_RATIO_REQUEST 4019
+#define OPUS_SET_APPLICATION_REQUEST 4000
+#define OPUS_GET_APPLICATION_REQUEST 4001
+#define OPUS_GET_LOOKAHEAD_REQUEST 4027
+#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_GET_FINAL_RANGE_REQUEST 4031
+
+/* 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)))
+/** \endcond */
-/** \defgroup errorcodes Error codes
- * @{
- */
+/** \defgroup encoderctls Encoder related CTLs
+ * @see [opus_encoder_ctl]
+ * @{
+ */
+/** \cond DOXYGEN_EXCLUDE */
+/* Values for the varrious encoder CTLs */
+#define OPUS_BITRATE_AUTO -2 /**<Auto bitrate @hideinitializer*/
+#define OPUS_BITRATE_MAX -1 /**<Maximum bitrate @hideinitializer*/
+#define OPUS_APPLICATION_VOIP 2000
+#define OPUS_APPLICATION_AUDIO 2001
+#define OPUS_SIGNAL_AUTO 3000
+#define OPUS_SIGNAL_VOICE 3001
+#define OPUS_SIGNAL_MUSIC 3002
+#define OPUS_BANDWIDTH_AUTO 1100 /**<Automatic bandpass @hideinitializer*/
+#define OPUS_BANDWIDTH_NARROWBAND 1101 /**< 4kHz bandpass @hideinitializer*/
+#define OPUS_BANDWIDTH_MEDIUMBAND 1102 /**< 6kHz bandpass @hideinitializer*/
+#define OPUS_BANDWIDTH_WIDEBAND 1103 /**< 8kHz bandpass @hideinitializer*/
+#define OPUS_BANDWIDTH_SUPERWIDEBAND 1104 /**<12kHz bandpass @hideinitializer*/
+#define OPUS_BANDWIDTH_FULLBAND 1105 /**<24kHz bandpass @hideinitializer*/
+/** \endcond */
-/** No error */
-#define OPUS_OK 0
-/** An (or more) invalid argument (e.g. out of range) */
-#define OPUS_BAD_ARG -1
-/** The mode struct passed is invalid */
-#define OPUS_BUFFER_TOO_SMALL -2
-/** An internal error was detected */
-#define OPUS_INTERNAL_ERROR -3
-/** The data passed (e.g. compressed data to decoder) is corrupted */
-#define OPUS_INVALID_PACKET -4
-/** Invalid/unsupported request number */
-#define OPUS_UNIMPLEMENTED -5
-/** An encoder or decoder structure is invalid or already freed */
-#define OPUS_INVALID_STATE -6
-/** Memory allocation has failed */
-#define OPUS_ALLOC_FAIL -7
+/** Configures the encoder's computational complexity.
+ * The supported range is 0-10 inclusive with 10 representing the highest complexity.
+ * The default value is inconsistent between modes
+ * @todo Complexity is inconsistent between modes
+ * \param[in] x <tt>int</tt>: 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 <tt>int*</tt>: 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_BITRATE_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.
+ * \param[in] x <tt>opus_int32</tt>: bitrate in bits per second.
+ * @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 <tt>opus_int32*</tt>: bitrate in bits per second.
+ * @hideinitializer */
+#define OPUS_GET_BITRATE(x) OPUS_GET_BITRATE_REQUEST, __opus_check_int_ptr(x)
+/** Configures VBR in the encoder.
+ * The following values are currently supported:
+ * - 0 CBR (default)
+ * - 1 VBR
+ * The configured bitrate may not be met exactly because frames must
+ * be an integer number of bytes in length.
+ * @warning Only the MDCT mode of Opus can provide hard CBR behavior.
+ * \param[in] x <tt>int</tt>: 0 (default); 1
+ * @hideinitializer */
+#define OPUS_SET_VBR(x) OPUS_SET_VBR_REQUEST, __opus_check_int(x)
+/** Gets the encoder's VBR configuration, @see [OPUS_SET_VBR]
+ * \param[out] x <tt>int*</tt>: 0; 1
+ * @hideinitializer */
+#define OPUS_GET_VBR(x) OPUS_GET_VBR_REQUEST, __opus_check_int_ptr(x)
-#define OPUS_BITRATE_AUTO -2
-#define OPUS_BITRATE_MAX -1
+/** Configures constrained VBR in the encoder.
+ * The following values are currently supported:
+ * - 0 Unconstrained VBR
+ * - 1 Maximum one frame buffering delay assuming transport with a serialization speed of the nominal bitrate (default)
+ * This setting is irrelevant 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.
+ * \param[in] x <tt>int</tt>: 0; 1 (default)
+ * @hideinitializer */
+#define OPUS_SET_VBR_CONSTRAINT(x) OPUS_SET_VBR_CONSTRAINT_REQUEST, __opus_check_int(x)
+/** Gets the encoder's constrained VBR configuration @see [OPUS_SET_VBR_CONSTRAINT]
+ * \param[out] x <tt>int*</tt>: 0; 1
+ * @hideinitializer */
+#define OPUS_GET_VBR_CONSTRAINT(x) OPUS_GET_VBR_CONSTRAINT_REQUEST, __opus_check_int_ptr(x)
-#define OPUS_APPLICATION_VOIP 2000
-#define OPUS_APPLICATION_AUDIO 2001
+/** Configures mono forcing in the encoder.
+ * This is useful when the caller knows that the input signal is currently a mono
+ * source embedded in a stereo stream.
+ * \param[in] x <tt>int</tt>: 0 (default); 1 (forced mono)
+ * @hideinitializer */
+#define OPUS_SET_FORCE_MONO(x) OPUS_SET_FORCE_MONO_REQUEST, __opus_check_int(x)
+/** Gets the encoder's forced mono configuration, @see [OPUS_SET_FORCE_MONO]
+ * \param[out] x <tt>int*</tt>: 0; 1
+ * @hideinitializer */
+#define OPUS_GET_FORCE_MONO(x) OPUS_GET_FORCE_MONO_REQUEST, __opus_check_int_ptr(x)
-#define OPUS_SIGNAL_AUTO 3000
-#define OPUS_SIGNAL_VOICE 3001
-#define OPUS_SIGNAL_MUSIC 3002
+/** Configures the encoder's bandpass.
+ * The supported values are:
+ * - OPUS_BANDWIDTH_AUTO (default)
+ * - OPUS_BANDWIDTH_NARROWBAND 4kHz passband
+ * - OPUS_BANDWIDTH_MEDIUMBAND 6kHz passband
+ * - OPUS_BANDWIDTH_WIDEBAND 8kHz passband
+ * - OPUS_BANDWIDTH_SUPERWIDEBAND 12kHz passband
+ * - OPUS_BANDWIDTH_FULLBAND 24kHz passband
+ * \param[in] x <tt>int</tt>: Bandwidth value
+ * @hideinitializer */
+#define OPUS_SET_BANDWIDTH(x) OPUS_SET_BANDWIDTH_REQUEST, __opus_check_int(x)
+/** Gets the encoder's configured bandpass, @see [OPUS_SET_BANDWIDTH]
+ * \param[out] x <tt>int*</tt>: Bandwidth value
+ * @hideinitializer */
+#define OPUS_GET_BANDWIDTH(x) OPUS_GET_BANDWIDTH_REQUEST, __opus_check_int_ptr(x)
-#define OPUS_BANDWIDTH_AUTO 1100
-#define OPUS_BANDWIDTH_NARROWBAND 1101
-#define OPUS_BANDWIDTH_MEDIUMBAND 1102
-#define OPUS_BANDWIDTH_WIDEBAND 1103
-#define OPUS_BANDWIDTH_SUPERWIDEBAND 1104
-#define OPUS_BANDWIDTH_FULLBAND 1105
+/** Configures the type of signal being encoded.
+ * This is a hint which helps the encoder's mode selection.
+ * The supported values are:
+ * - OPUS_SIGNAL_AUTO (default)
+ * - OPUS_SIGNAL_VOICE
+ * - OPUS_SIGNAL_MUSIC
+ * \param[in] x <tt>int</tt>: Signal type
+ * @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 <tt>int*</tt>: Signal type
+ * @hideinitializer */
+#define OPUS_GET_SIGNAL(x) OPUS_GET_SIGNAL_REQUEST, __opus_check_int_ptr(x)
+/** Configures the encoder's expected percentage of voice
+ * opposed to music or other signals.
+ *
+ * @note This interface is currently more aspiration than actuality. It's
+ * ultimately expected to bias an automatic signal classifier, but it currently
+ * just shifts the static bitrate to mode mapping around a little bit.
+ *
+ * \param[in] x <tt>int</tt>: Voice percentage in the range 0-100, inclusive.
+ * @hideinitializer */
+#define OPUS_SET_VOICE_RATIO(x) OPUS_SET_VOICE_RATIO_REQUEST, __opus_check_int(x)
+/** Gets the encoder's configured voice ratio value, @see [OPUS_SET_VOICE_RATIO]
+ *
+ * \param[out] x <tt>int*</tt>: Voice percentage in the range 0-100, inclusive.
+ * @hideinitializer */
+#define OPUS_GET_VOICE_RATIO(x) OPUS_GET_VOICE_RATIO_REQUEST, __opus_check_int_ptr(x)
-/** OPUS_APPLICATION_VOIP or OPUS_APPLICATION_AUDIO */
-#define OPUS_SET_APPLICATION_REQUEST 4000
+/** Configures the encoder's intended application.
+ * The initial value is a mandatory argument to the encoder_create function.
+ * The supported values are:
+ * - OPUS_APPLICATION_VOIP Process signal for improved speech intelligibility
+ * - OPUS_APPLICATION_AUDIO Favor faithfulness to the original input
+ * \param[in] x <tt>int</tt>: Application value
+ * @hideinitializer */
#define OPUS_SET_APPLICATION(x) OPUS_SET_APPLICATION_REQUEST, __opus_check_int(x)
-#define OPUS_GET_APPLICATION_REQUEST 4001
+/** Gets the encoder's configured application, @see [OPUS_SET_APPLICATION]
+ *
+ * \param[out] x <tt>int*</tt>: Application value
+ * @hideinitializer */
#define OPUS_GET_APPLICATION(x) OPUS_GET_APPLICATION_REQUEST, __opus_check_int_ptr(x)
-/** Coding bit-rate in bit/second */
-#define OPUS_SET_BITRATE_REQUEST 4002
-#define OPUS_SET_BITRATE(x) OPUS_SET_BITRATE_REQUEST, __opus_check_int(x)
-#define OPUS_GET_BITRATE_REQUEST 4003
-#define OPUS_GET_BITRATE(x) OPUS_GET_BITRATE_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 <tt>int*</tt>: Number of lookahead samples
+ * @hideinitializer */
+#define OPUS_GET_LOOKAHEAD(x) OPUS_GET_LOOKAHEAD_REQUEST, __opus_check_int_ptr(x)
-/** 0 for CBR, 1 for VBR */
-#define OPUS_SET_VBR_REQUEST 4006
-#define OPUS_SET_VBR(x) OPUS_SET_VBR_REQUEST, __opus_check_int(x)
-#define OPUS_GET_VBR_REQUEST 4007
-#define OPUS_GET_VBR(x) OPUS_GET_VBR_REQUEST, __opus_check_int_ptr(x)
-
-#define OPUS_SET_BANDWIDTH_REQUEST 4008
-#define OPUS_SET_BANDWIDTH(x) OPUS_SET_BANDWIDTH_REQUEST, __opus_check_int(x)
-#define OPUS_GET_BANDWIDTH_REQUEST 4009
-#define OPUS_GET_BANDWIDTH(x) OPUS_GET_BANDWIDTH_REQUEST, __opus_check_int_ptr(x)
-
-#define OPUS_SET_COMPLEXITY_REQUEST 4010
-#define OPUS_SET_COMPLEXITY(x) OPUS_SET_COMPLEXITY_REQUEST, __opus_check_int(x)
-#define OPUS_GET_COMPLEXITY_REQUEST 4011
-#define OPUS_GET_COMPLEXITY(x) OPUS_GET_COMPLEXITY_REQUEST, __opus_check_int_ptr(x)
-
-#define OPUS_SET_INBAND_FEC_REQUEST 4012
+/** Configures the encoder's use of inband forward error correction.
+ * @note This is only applicable to the LPC layer
+ *
+ * \param[in] x <tt>int</tt>: FEC flag, 0 (disabled) is default
+ * @hideinitializer */
#define OPUS_SET_INBAND_FEC(x) OPUS_SET_INBAND_FEC_REQUEST, __opus_check_int(x)
-#define OPUS_GET_INBAND_FEC_REQUEST 4013
+/** Gets encoder's configured use of inband forward error correction, @see [OPUS_SET_INBAND_FEC]
+ *
+ * \param[out] x <tt>int*</tt>: FEC flag
+ * @hideinitializer */
#define OPUS_GET_INBAND_FEC(x) OPUS_GET_INBAND_FEC_REQUEST, __opus_check_int_ptr(x)
-#define OPUS_SET_PACKET_LOSS_PERC_REQUEST 4014
+/** Configures the encoder's expected packet loss percentage.
+ * Higher values with trigger progressively more loss resistant behavior in the encoder
+ * at the expense of quality at a given bitrate in the lossless case, but greater quality
+ * under loss.
+ *
+ * \param[in] x <tt>int</tt>: Loss percentage in the range 0-100, inclusive.
+ * @hideinitializer */
#define OPUS_SET_PACKET_LOSS_PERC(x) OPUS_SET_PACKET_LOSS_PERC_REQUEST, __opus_check_int(x)
-#define OPUS_GET_PACKET_LOSS_PERC_REQUEST 4015
+/** Gets the encoder's configured packet loss percentage, @see [OPUS_SET_PACKET_LOSS_PERC]
+ *
+ * \param[out] x <tt>int*</tt>: Loss percentage in the range 0-100, inclusive.
+ * @hideinitializer */
#define OPUS_GET_PACKET_LOSS_PERC(x) OPUS_GET_PACKET_LOSS_PERC_REQUEST, __opus_check_int_ptr(x)
-#define OPUS_SET_DTX_REQUEST 4016
+/** Configures the encoder's use of discontinuous transmission.
+ * @note This is only applicable to the LPC layer
+ *
+ * \param[in] x <tt>int</tt>: DTX flag, 0 (disabled) is default
+ * @hideinitializer */
#define OPUS_SET_DTX(x) OPUS_SET_DTX_REQUEST, __opus_check_int(x)
-#define OPUS_GET_DTX_REQUEST 4017
+/** Gets encoder's configured use of discontinuous transmission, @see [OPUS_SET_DTX]
+ *
+ * \param[out] x <tt>int*</tt>: DTX flag
+ * @hideinitializer */
#define OPUS_GET_DTX(x) OPUS_GET_DTX_REQUEST, __opus_check_int_ptr(x)
+/**@}*/
-#define OPUS_SET_VOICE_RATIO_REQUEST 4018
-#define OPUS_SET_VOICE_RATIO(x) OPUS_SET_VOICE_RATIO_REQUEST, __opus_check_int(x)
-#define OPUS_GET_VOICE_RATIO_REQUEST 4019
-#define OPUS_GET_VOICE_RATIO(x) OPUS_GET_VOICE_RATIO_REQUEST, __opus_check_int_ptr(x)
+/** \defgroup genericctls Generic CTLs
+ * @see [opus_encoder_ctl,opus_decoder_ctl]
+ * @{
+ */
-#define OPUS_SET_VBR_CONSTRAINT_REQUEST 4020
-#define OPUS_SET_VBR_CONSTRAINT(x) OPUS_SET_VBR_CONSTRAINT_REQUEST, __opus_check_int(x)
-#define OPUS_GET_VBR_CONSTRAINT_REQUEST 4021
-#define OPUS_GET_VBR_CONSTRAINT(x) OPUS_GET_VBR_CONSTRAINT_REQUEST, __opus_check_int_ptr(x)
-
-#define OPUS_SET_FORCE_MONO_REQUEST 4022
-#define OPUS_SET_FORCE_MONO(x) OPUS_SET_FORCE_MONO_REQUEST, __opus_check_int(x)
-#define OPUS_GET_FORCE_MONO_REQUEST 4023
-#define OPUS_GET_FORCE_MONO(x) OPUS_GET_FORCE_MONO_REQUEST, __opus_check_int_ptr(x)
-
-#define OPUS_SET_SIGNAL_REQUEST 4024
-#define OPUS_SET_SIGNAL(x) OPUS_SET_SIGNAL_REQUEST, __opus_check_int(x)
-#define OPUS_GET_SIGNAL_REQUEST 4025
-#define OPUS_GET_SIGNAL(x) OPUS_GET_SIGNAL_REQUEST, __opus_check_int_ptr(x)
-
-#define OPUS_GET_LOOKAHEAD_REQUEST 4027
-#define OPUS_GET_LOOKAHEAD(x) OPUS_GET_LOOKAHEAD_REQUEST, __opus_check_int_ptr(x)
-
+/** 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
-/** For testing purposes: the encoder and decoder state should
- always be identical after coding a payload */
-#define OPUS_GET_FINAL_RANGE_REQUEST 4031
+/** 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 <tt>opus_int32*</tt>: Entropy coder state
+ *
+ * @hideinitializer */
#define OPUS_GET_FINAL_RANGE(x) OPUS_GET_FINAL_RANGE_REQUEST, __opus_check_uint_ptr(x)
+/**@}*/
+/** \defgroup libinfo Opus library information functions
+ * @{
+ */
-
+/** Converts an opus error code into a human readable string.
+ *
+ * \param[in] error <tt>int</tt>: Error number
+ * \retval Error string
+ */
OPUS_EXPORT const char *opus_strerror(int error);
+/** Gets the libopus version string.
+ *
+ * \retval Version string
+ */
OPUS_EXPORT const char *opus_get_version_string(void);
-
+/**@}*/
#ifdef __cplusplus
}