Index: include/opus_defines.h |
diff --git a/include/opus_defines.h b/include/opus_defines.h |
index cdde061a567323fd5ebb75a6caf1e279a88f2409..3474e84c4342c3b8cf180863447724b839285d52 100644 |
--- a/include/opus_defines.h |
+++ b/include/opus_defines.h |
@@ -64,14 +64,14 @@ extern "C" { |
/**Export control for opus functions */ |
#ifndef OPUS_EXPORT |
-# if defined(__GNUC__) && defined(OPUS_BUILD) |
-# define OPUS_EXPORT __attribute__ ((visibility ("default"))) |
-# elif defined(WIN32) && !defined(__MINGW32__) |
+# if defined(WIN32) |
# ifdef OPUS_BUILD |
# 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 |
@@ -148,8 +148,9 @@ extern "C" { |
#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 |
/* Don't use 4045, it's already taken by OPUS_GET_GAIN_REQUEST */ |
@@ -157,6 +158,7 @@ extern "C" { |
#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 |
@@ -185,6 +187,15 @@ extern "C" { |
#define OPUS_BANDWIDTH_SUPERWIDEBAND 1104 /**<12 kHz bandpass @hideinitializer*/ |
#define OPUS_BANDWIDTH_FULLBAND 1105 /**<20 kHz bandpass @hideinitializer*/ |
+#define OPUS_FRAMESIZE_ARG 5000 /**< Select frame size from the argument (default) */ |
+#define OPUS_FRAMESIZE_2_5_MS 5001 /**< Use 2.5 ms frames */ |
+#define OPUS_FRAMESIZE_5_MS 5002 /**< Use 5 ms frames */ |
+#define OPUS_FRAMESIZE_10_MS 5003 /**< Use 10 ms frames */ |
+#define OPUS_FRAMESIZE_20_MS 5004 /**< Use 20 ms frames */ |
+#define OPUS_FRAMESIZE_40_MS 5005 /**< Use 40 ms frames */ |
+#define OPUS_FRAMESIZE_60_MS 5006 /**< Use 60 ms frames */ |
+#define OPUS_FRAMESIZE_VARIABLE 5010 /**< Optimize the frame size dynamically */ |
+ |
/**@}*/ |
@@ -525,6 +536,45 @@ extern "C" { |
* @param[out] x <tt>opus_int32 *</tt>: 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) |
+ |
+/** 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 <b>really</b> |
+ * know what you are doing. |
+ * @see OPUS_GET_EXPERT_VARIABLE_DURATION |
+ * @param[in] x <tt>opus_int32</tt>: Allowed values: |
+ * <dl> |
+ * <dt>OPUS_FRAMESIZE_ARG</dt><dd>Select frame size from the argument (default).</dd> |
+ * <dt>OPUS_FRAMESIZE_2_5_MS</dt><dd>Use 2.5 ms frames.</dd> |
+ * <dt>OPUS_FRAMESIZE_5_MS</dt><dd>Use 2.5 ms frames.</dd> |
+ * <dt>OPUS_FRAMESIZE_10_MS</dt><dd>Use 10 ms frames.</dd> |
+ * <dt>OPUS_FRAMESIZE_20_MS</dt><dd>Use 20 ms frames.</dd> |
+ * <dt>OPUS_FRAMESIZE_40_MS</dt><dd>Use 40 ms frames.</dd> |
+ * <dt>OPUS_FRAMESIZE_60_MS</dt><dd>Use 60 ms frames.</dd> |
+ * <dt>OPUS_FRAMESIZE_VARIABLE</dt><dd>Optimize the frame size dynamically.</dd> |
+ * </dl> |
+ * @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_VARIABLE_DURATION |
+ * @param[out] x <tt>opus_int32 *</tt>: Returns one of the following values: |
+ * <dl> |
+ * <dt>OPUS_FRAMESIZE_ARG</dt><dd>Select frame size from the argument (default).</dd> |
+ * <dt>OPUS_FRAMESIZE_2_5_MS</dt><dd>Use 2.5 ms frames.</dd> |
+ * <dt>OPUS_FRAMESIZE_5_MS</dt><dd>Use 2.5 ms frames.</dd> |
+ * <dt>OPUS_FRAMESIZE_10_MS</dt><dd>Use 10 ms frames.</dd> |
+ * <dt>OPUS_FRAMESIZE_20_MS</dt><dd>Use 20 ms frames.</dd> |
+ * <dt>OPUS_FRAMESIZE_40_MS</dt><dd>Use 40 ms frames.</dd> |
+ * <dt>OPUS_FRAMESIZE_60_MS</dt><dd>Use 60 ms frames.</dd> |
+ * <dt>OPUS_FRAMESIZE_VARIABLE</dt><dd>Optimize the frame size dynamically.</dd> |
+ * </dl> |
+ * @hideinitializer */ |
+#define OPUS_GET_EXPERT_FRAME_DURATION(x) OPUS_GET_EXPERT_FRAME_DURATION_REQUEST, __opus_check_int_ptr(x) |
+ |
/**@}*/ |
/** @defgroup opus_genericctls Generic CTLs |