summaryrefslogtreecommitdiff
path: root/apps/codecs/libspeex/speex
diff options
context:
space:
mode:
authorThom Johansen <thomj@rockbox.org>2007-11-14 02:15:56 +0000
committerThom Johansen <thomj@rockbox.org>2007-11-14 02:15:56 +0000
commit85b325fdb991a0602a2f16a55fc1df2c303aded1 (patch)
tree6eba0129ce3cc84831b37e2ed64c473d053317ac /apps/codecs/libspeex/speex
parent91f618f1ba1e507a9aa1cf7ee87eaf0370272b17 (diff)
downloadrockbox-85b325fdb991a0602a2f16a55fc1df2c303aded1.tar.gz
rockbox-85b325fdb991a0602a2f16a55fc1df2c303aded1.zip
Sync Speex to SVN. Disable stereo compatibility hack since we don't needed it and it produced warnings. Remove unneeded math.h
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@15613 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/codecs/libspeex/speex')
-rw-r--r--apps/codecs/libspeex/speex/speex_jitter.h68
-rw-r--r--apps/codecs/libspeex/speex/speex_preprocess.h4
-rw-r--r--apps/codecs/libspeex/speex/speex_stereo.h2
3 files changed, 33 insertions, 41 deletions
diff --git a/apps/codecs/libspeex/speex/speex_jitter.h b/apps/codecs/libspeex/speex/speex_jitter.h
index 3f3a43c240..7c948d474e 100644
--- a/apps/codecs/libspeex/speex/speex_jitter.h
+++ b/apps/codecs/libspeex/speex/speex_jitter.h
@@ -41,8 +41,7 @@
41 * @{ 41 * @{
42 */ 42 */
43 43
44#include "speex.h" 44#include "speex_types.h"
45#include "speex_bits.h"
46 45
47#ifdef __cplusplus 46#ifdef __cplusplus
48extern "C" { 47extern "C" {
@@ -63,6 +62,7 @@ struct _JitterBufferPacket {
63 spx_uint32_t len; /**< Length of the packet in bytes */ 62 spx_uint32_t len; /**< Length of the packet in bytes */
64 spx_uint32_t timestamp; /**< Timestamp for the packet */ 63 spx_uint32_t timestamp; /**< Timestamp for the packet */
65 spx_uint32_t span; /**< Time covered by the packet (same units as timestamp) */ 64 spx_uint32_t span; /**< Time covered by the packet (same units as timestamp) */
65 spx_uint32_t user_data; /**< Put whatever data you like here (it's ignored by the jitter buffer) */
66}; 66};
67 67
68/** Packet has been retrieved */ 68/** Packet has been retrieved */
@@ -82,11 +82,21 @@ struct _JitterBufferPacket {
82/** Get minimum amount of extra buffering required (margin) */ 82/** Get minimum amount of extra buffering required (margin) */
83#define JITTER_BUFFER_GET_MARGIN 1 83#define JITTER_BUFFER_GET_MARGIN 1
84/* JITTER_BUFFER_SET_AVAILABLE_COUNT wouldn't make sense */ 84/* JITTER_BUFFER_SET_AVAILABLE_COUNT wouldn't make sense */
85
85/** Get the amount of available packets currently buffered */ 86/** Get the amount of available packets currently buffered */
86#define JITTER_BUFFER_GET_AVAILABLE_COUNT 3 87#define JITTER_BUFFER_GET_AVAILABLE_COUNT 3
87/** Included because of an early misspelling (will remove in next release) */ 88/** Included because of an early misspelling (will remove in next release) */
88#define JITTER_BUFFER_GET_AVALIABLE_COUNT 3 89#define JITTER_BUFFER_GET_AVALIABLE_COUNT 3
89 90
91/** */
92#define JITTER_BUFFER_SET_DESTROY_CALLBACK 4
93/** */
94#define JITTER_BUFFER_GET_DESTROY_CALLBACK 5
95
96/** */
97#define JITTER_BUFFER_SET_DELAY_STEP 6
98/** */
99#define JITTER_BUFFER_GET_DELAY_STEP 7
90 100
91 101
92#define JITTER_BUFFER_ADJUST_INTERPOLATE -1 102#define JITTER_BUFFER_ADJUST_INTERPOLATE -1
@@ -123,9 +133,18 @@ void jitter_buffer_put(JitterBuffer *jitter, const JitterBufferPacket *packet);
123 * 133 *
124 * @param jitter Jitter buffer state 134 * @param jitter Jitter buffer state
125 * @param packet Returned packet 135 * @param packet Returned packet
136 * @param desired_span Number of samples (or units) we wish to get from the buffer (no guarantee)
126 * @param current_timestamp Timestamp for the returned packet 137 * @param current_timestamp Timestamp for the returned packet
127*/ 138*/
128int jitter_buffer_get(JitterBuffer *jitter, JitterBufferPacket *packet, spx_int32_t *start_offset); 139int jitter_buffer_get(JitterBuffer *jitter, JitterBufferPacket *packet, spx_int32_t desired_span, spx_int32_t *start_offset);
140
141/** Used right after jitter_buffer_get() to obtain another packet that would have the same timestamp.
142 * This is mainly useful for media where a single "frame" can be split into several packets.
143 *
144 * @param jitter Jitter buffer state
145 * @param packet Returned packet
146 */
147int jitter_buffer_get_another(JitterBuffer *jitter, JitterBufferPacket *packet);
129 148
130/** Get pointer timestamp of jitter buffer 149/** Get pointer timestamp of jitter buffer
131 * 150 *
@@ -139,6 +158,12 @@ int jitter_buffer_get_pointer_timestamp(JitterBuffer *jitter);
139*/ 158*/
140void jitter_buffer_tick(JitterBuffer *jitter); 159void jitter_buffer_tick(JitterBuffer *jitter);
141 160
161/** Telling the jitter buffer about the remaining data in the application buffer
162 * @param jitter Jitter buffer state
163 * @param rem Amount of data buffered by the application (timestamp units)
164 */
165void jitter_buffer_remaining_span(JitterBuffer *jitter, spx_uint32_t rem);
166
142/** Used like the ioctl function to control the jitter buffer parameters 167/** Used like the ioctl function to control the jitter buffer parameters
143 * 168 *
144 * @param jitter Jitter buffer state 169 * @param jitter Jitter buffer state
@@ -152,45 +177,8 @@ int jitter_buffer_update_delay(JitterBuffer *jitter, JitterBufferPacket *packet,
152 177
153/* @} */ 178/* @} */
154 179
155/** @defgroup SpeexJitter SpeexJitter: Adaptive jitter buffer specifically for Speex
156 * This is the jitter buffer that reorders UDP/RTP packets and adjusts the buffer size
157 * to maintain good quality and low latency. This is a simplified version that works only
158 * with Speex, but is much easier to use.
159 * @{
160*/
161
162/** Speex jitter-buffer state. Never use it directly! */
163typedef struct SpeexJitter {
164 SpeexBits current_packet; /**< Current Speex packet */
165 int valid_bits; /**< True if Speex bits are valid */
166 JitterBuffer *packets; /**< Generic jitter buffer state */
167 void *dec; /**< Pointer to Speex decoder */
168 spx_int32_t frame_size; /**< Frame size of Speex decoder */
169} SpeexJitter;
170
171/** Initialise jitter buffer
172 *
173 * @param jitter State of the Speex jitter buffer
174 * @param decoder Speex decoder to call
175 * @param sampling_rate Sampling rate used by the decoder
176*/
177void speex_jitter_init(SpeexJitter *jitter, void *decoder, int sampling_rate);
178
179/** Destroy jitter buffer */
180void speex_jitter_destroy(SpeexJitter *jitter);
181
182/** Put one packet into the jitter buffer */
183void speex_jitter_put(SpeexJitter *jitter, char *packet, int len, int timestamp);
184
185/** Get one packet from the jitter buffer */
186void speex_jitter_get(SpeexJitter *jitter, spx_int16_t *out, int *start_offset);
187
188/** Get pointer timestamp of jitter buffer */
189int speex_jitter_get_pointer_timestamp(SpeexJitter *jitter);
190
191#ifdef __cplusplus 180#ifdef __cplusplus
192} 181}
193#endif 182#endif
194 183
195/* @} */
196#endif 184#endif
diff --git a/apps/codecs/libspeex/speex/speex_preprocess.h b/apps/codecs/libspeex/speex/speex_preprocess.h
index 863b83fe14..273efaff79 100644
--- a/apps/codecs/libspeex/speex/speex_preprocess.h
+++ b/apps/codecs/libspeex/speex/speex_preprocess.h
@@ -178,6 +178,10 @@ int speex_preprocess_ctl(SpeexPreprocessState *st, int request, void *ptr);
178/** Get maximal gain in dB (int32) */ 178/** Get maximal gain in dB (int32) */
179#define SPEEX_PREPROCESS_GET_AGC_MAX_GAIN 31 179#define SPEEX_PREPROCESS_GET_AGC_MAX_GAIN 31
180 180
181/* Can't set loudness */
182/** Get loudness */
183#define SPEEX_PREPROCESS_GET_AGC_LOUDNESS 33
184
181#ifdef __cplusplus 185#ifdef __cplusplus
182} 186}
183#endif 187#endif
diff --git a/apps/codecs/libspeex/speex/speex_stereo.h b/apps/codecs/libspeex/speex/speex_stereo.h
index b817a5535e..67e2a8d4e0 100644
--- a/apps/codecs/libspeex/speex/speex_stereo.h
+++ b/apps/codecs/libspeex/speex/speex_stereo.h
@@ -60,7 +60,7 @@ typedef struct SpeexStereoState {
60#define SPEEX_STEREO_STATE_INIT {1,.5,1,1,0,0} 60#define SPEEX_STEREO_STATE_INIT {1,.5,1,1,0,0}
61 61
62/** Initialise/create a stereo stereo state */ 62/** Initialise/create a stereo stereo state */
63SpeexStereoState *speex_stereo_state_init(); 63SpeexStereoState *speex_stereo_state_init(void);
64 64
65/** Reset/re-initialise an already allocated stereo state */ 65/** Reset/re-initialise an already allocated stereo state */
66void speex_stereo_state_reset(SpeexStereoState *stereo); 66void speex_stereo_state_reset(SpeexStereoState *stereo);