From 85b325fdb991a0602a2f16a55fc1df2c303aded1 Mon Sep 17 00:00:00 2001 From: Thom Johansen Date: Wed, 14 Nov 2007 02:15:56 +0000 Subject: 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 --- apps/codecs/libspeex/speex/speex_jitter.h | 68 +++++++++++---------------- apps/codecs/libspeex/speex/speex_preprocess.h | 4 ++ apps/codecs/libspeex/speex/speex_stereo.h | 2 +- 3 files changed, 33 insertions(+), 41 deletions(-) (limited to 'apps/codecs/libspeex/speex') 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 @@ * @{ */ -#include "speex.h" -#include "speex_bits.h" +#include "speex_types.h" #ifdef __cplusplus extern "C" { @@ -63,6 +62,7 @@ struct _JitterBufferPacket { spx_uint32_t len; /**< Length of the packet in bytes */ spx_uint32_t timestamp; /**< Timestamp for the packet */ spx_uint32_t span; /**< Time covered by the packet (same units as timestamp) */ + spx_uint32_t user_data; /**< Put whatever data you like here (it's ignored by the jitter buffer) */ }; /** Packet has been retrieved */ @@ -82,11 +82,21 @@ struct _JitterBufferPacket { /** Get minimum amount of extra buffering required (margin) */ #define JITTER_BUFFER_GET_MARGIN 1 /* JITTER_BUFFER_SET_AVAILABLE_COUNT wouldn't make sense */ + /** Get the amount of available packets currently buffered */ #define JITTER_BUFFER_GET_AVAILABLE_COUNT 3 /** Included because of an early misspelling (will remove in next release) */ #define JITTER_BUFFER_GET_AVALIABLE_COUNT 3 +/** */ +#define JITTER_BUFFER_SET_DESTROY_CALLBACK 4 +/** */ +#define JITTER_BUFFER_GET_DESTROY_CALLBACK 5 + +/** */ +#define JITTER_BUFFER_SET_DELAY_STEP 6 +/** */ +#define JITTER_BUFFER_GET_DELAY_STEP 7 #define JITTER_BUFFER_ADJUST_INTERPOLATE -1 @@ -123,9 +133,18 @@ void jitter_buffer_put(JitterBuffer *jitter, const JitterBufferPacket *packet); * * @param jitter Jitter buffer state * @param packet Returned packet + * @param desired_span Number of samples (or units) we wish to get from the buffer (no guarantee) * @param current_timestamp Timestamp for the returned packet */ -int jitter_buffer_get(JitterBuffer *jitter, JitterBufferPacket *packet, spx_int32_t *start_offset); +int jitter_buffer_get(JitterBuffer *jitter, JitterBufferPacket *packet, spx_int32_t desired_span, spx_int32_t *start_offset); + +/** Used right after jitter_buffer_get() to obtain another packet that would have the same timestamp. + * This is mainly useful for media where a single "frame" can be split into several packets. + * + * @param jitter Jitter buffer state + * @param packet Returned packet + */ +int jitter_buffer_get_another(JitterBuffer *jitter, JitterBufferPacket *packet); /** Get pointer timestamp of jitter buffer * @@ -139,6 +158,12 @@ int jitter_buffer_get_pointer_timestamp(JitterBuffer *jitter); */ void jitter_buffer_tick(JitterBuffer *jitter); +/** Telling the jitter buffer about the remaining data in the application buffer + * @param jitter Jitter buffer state + * @param rem Amount of data buffered by the application (timestamp units) + */ +void jitter_buffer_remaining_span(JitterBuffer *jitter, spx_uint32_t rem); + /** Used like the ioctl function to control the jitter buffer parameters * * @param jitter Jitter buffer state @@ -152,45 +177,8 @@ int jitter_buffer_update_delay(JitterBuffer *jitter, JitterBufferPacket *packet, /* @} */ -/** @defgroup SpeexJitter SpeexJitter: Adaptive jitter buffer specifically for Speex - * This is the jitter buffer that reorders UDP/RTP packets and adjusts the buffer size - * to maintain good quality and low latency. This is a simplified version that works only - * with Speex, but is much easier to use. - * @{ -*/ - -/** Speex jitter-buffer state. Never use it directly! */ -typedef struct SpeexJitter { - SpeexBits current_packet; /**< Current Speex packet */ - int valid_bits; /**< True if Speex bits are valid */ - JitterBuffer *packets; /**< Generic jitter buffer state */ - void *dec; /**< Pointer to Speex decoder */ - spx_int32_t frame_size; /**< Frame size of Speex decoder */ -} SpeexJitter; - -/** Initialise jitter buffer - * - * @param jitter State of the Speex jitter buffer - * @param decoder Speex decoder to call - * @param sampling_rate Sampling rate used by the decoder -*/ -void speex_jitter_init(SpeexJitter *jitter, void *decoder, int sampling_rate); - -/** Destroy jitter buffer */ -void speex_jitter_destroy(SpeexJitter *jitter); - -/** Put one packet into the jitter buffer */ -void speex_jitter_put(SpeexJitter *jitter, char *packet, int len, int timestamp); - -/** Get one packet from the jitter buffer */ -void speex_jitter_get(SpeexJitter *jitter, spx_int16_t *out, int *start_offset); - -/** Get pointer timestamp of jitter buffer */ -int speex_jitter_get_pointer_timestamp(SpeexJitter *jitter); - #ifdef __cplusplus } #endif -/* @} */ #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); /** Get maximal gain in dB (int32) */ #define SPEEX_PREPROCESS_GET_AGC_MAX_GAIN 31 +/* Can't set loudness */ +/** Get loudness */ +#define SPEEX_PREPROCESS_GET_AGC_LOUDNESS 33 + #ifdef __cplusplus } #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 { #define SPEEX_STEREO_STATE_INIT {1,.5,1,1,0,0} /** Initialise/create a stereo stereo state */ -SpeexStereoState *speex_stereo_state_init(); +SpeexStereoState *speex_stereo_state_init(void); /** Reset/re-initialise an already allocated stereo state */ void speex_stereo_state_reset(SpeexStereoState *stereo); -- cgit v1.2.3