diff options
Diffstat (limited to 'apps/codecs/libspeex/speex/speex_resampler.h')
-rw-r--r-- | apps/codecs/libspeex/speex/speex_resampler.h | 133 |
1 files changed, 71 insertions, 62 deletions
diff --git a/apps/codecs/libspeex/speex/speex_resampler.h b/apps/codecs/libspeex/speex/speex_resampler.h index 93642ced2f..c44fbcd0d1 100644 --- a/apps/codecs/libspeex/speex/speex_resampler.h +++ b/apps/codecs/libspeex/speex/speex_resampler.h @@ -69,29 +69,20 @@ #define speex_resampler_get_quality CAT_PREFIX(RANDOM_PREFIX,_resampler_get_quality) #define speex_resampler_set_input_stride CAT_PREFIX(RANDOM_PREFIX,_resampler_set_input_stride) #define speex_resampler_get_input_stride CAT_PREFIX(RANDOM_PREFIX,_resampler_get_input_stride) -#define speex_resample_set_output_stride CAT_PREFIX(RANDOM_PREFIX,_resample_set_output_stride) -#define speex_resample_get_output_stride CAT_PREFIX(RANDOM_PREFIX,_resample_get_output_stride) +#define speex_resampler_set_output_stride CAT_PREFIX(RANDOM_PREFIX,_resampler_set_output_stride) +#define speex_resampler_get_output_stride CAT_PREFIX(RANDOM_PREFIX,_resampler_get_output_stride) #define speex_resampler_skip_zeros CAT_PREFIX(RANDOM_PREFIX,_resampler_skip_zeros) #define speex_resampler_reset_mem CAT_PREFIX(RANDOM_PREFIX,_resampler_reset_mem) +#define speex_resampler_strerror CAT_PREFIX(RANDOM_PREFIX,_resampler_strerror) #define spx_int16_t short - -#ifdef FIXED_POINT -#define spx_word16_t short -#define spx_word32_t int - -#else /* FIXED_POINT */ - -#define spx_word16_t float -#define spx_word32_t float -#define MULT16_16(a,b) ((a)*(b)) -#define MULT16_32_Q15(a,b) ((a)*(b)) -#define PSHR32(a,b) (a) -#endif /* FIXED_POINT */ - +#define spx_int32_t int +#define spx_uint16_t unsigned short +#define spx_uint32_t unsigned int + #else /* OUTSIDE_SPEEX */ -#include "speex_types.h" +#include "speex/speex_types.h" #endif /* OUTSIDE_SPEEX */ @@ -104,7 +95,17 @@ extern "C" { #define SPEEX_RESAMPLER_QUALITY_DEFAULT 4 #define SPEEX_RESAMPLER_QUALITY_VOIP 3 #define SPEEX_RESAMPLER_QUALITY_DESKTOP 5 + +enum { + RESAMPLER_ERR_SUCCESS = 0, + RESAMPLER_ERR_ALLOC_FAILED = 1, + RESAMPLER_ERR_BAD_STATE = 2, + RESAMPLER_ERR_INVALID_ARG = 3, + RESAMPLER_ERR_PTR_OVERLAP = 4, + RESAMPLER_ERR_MAX_ERROR +}; + struct SpeexResamplerState_; typedef struct SpeexResamplerState_ SpeexResamplerState; @@ -117,10 +118,11 @@ typedef struct SpeexResamplerState_ SpeexResamplerState; * @return Newly created resampler state * @retval NULL Error: not enough memory */ -SpeexResamplerState *speex_resampler_init(int nb_channels, - int in_rate, - int out_rate, - int quality); +SpeexResamplerState *speex_resampler_init(spx_uint32_t nb_channels, + spx_uint32_t in_rate, + spx_uint32_t out_rate, + int quality, + int *err); /** Create a new resampler with fractional input/output rates. The sampling * rate ratio is an arbitrary rational number with both the numerator and @@ -135,12 +137,13 @@ SpeexResamplerState *speex_resampler_init(int nb_channels, * @return Newly created resampler state * @retval NULL Error: not enough memory */ -SpeexResamplerState *speex_resampler_init_frac(int nb_channels, - int ratio_num, - int ratio_den, - int in_rate, - int out_rate, - int quality); +SpeexResamplerState *speex_resampler_init_frac(spx_uint32_t nb_channels, + spx_uint32_t ratio_num, + spx_uint32_t ratio_den, + spx_uint32_t in_rate, + spx_uint32_t out_rate, + int quality, + int *err); /** Destroy a resampler state. * @param st Resampler state @@ -157,12 +160,12 @@ void speex_resampler_destroy(SpeexResamplerState *st); * @param out Output buffer * @param out_len Size of the output buffer. Returns the number of samples written */ -void speex_resampler_process_float(SpeexResamplerState *st, - int channel_index, +int speex_resampler_process_float(SpeexResamplerState *st, + spx_uint32_t channel_index, const float *in, - int *in_len, + spx_uint32_t *in_len, float *out, - int *out_len); + spx_uint32_t *out_len); /** Resample an int array. The input and output buffers must *not* overlap. * @param st Resampler state @@ -174,12 +177,12 @@ void speex_resampler_process_float(SpeexResamplerState *st, * @param out Output buffer * @param out_len Size of the output buffer. Returns the number of samples written */ -void speex_resampler_process_int(SpeexResamplerState *st, - int channel_index, +int speex_resampler_process_int(SpeexResamplerState *st, + spx_uint32_t channel_index, const spx_int16_t *in, - int *in_len, + spx_uint32_t *in_len, spx_int16_t *out, - int *out_len); + spx_uint32_t *out_len); /** Resample an interleaved float array. The input and output buffers must *not* overlap. * @param st Resampler state @@ -190,11 +193,11 @@ void speex_resampler_process_int(SpeexResamplerState *st, * @param out_len Size of the output buffer. Returns the number of samples written. * This is all per-channel. */ -void speex_resampler_process_interleaved_float(SpeexResamplerState *st, +int speex_resampler_process_interleaved_float(SpeexResamplerState *st, const float *in, - int *in_len, + spx_uint32_t *in_len, float *out, - int *out_len); + spx_uint32_t *out_len); /** Resample an interleaved int array. The input and output buffers must *not* overlap. * @param st Resampler state @@ -205,20 +208,20 @@ void speex_resampler_process_interleaved_float(SpeexResamplerState *st, * @param out_len Size of the output buffer. Returns the number of samples written. * This is all per-channel. */ -void speex_resampler_process_interleaved_int(SpeexResamplerState *st, +int speex_resampler_process_interleaved_int(SpeexResamplerState *st, const spx_int16_t *in, - int *in_len, + spx_uint32_t *in_len, spx_int16_t *out, - int *out_len); + spx_uint32_t *out_len); /** Set (change) the input/output sampling rates (integer value). * @param st Resampler state * @param in_rate Input sampling rate (integer number of Hz). * @param out_rate Output sampling rate (integer number of Hz). */ -void speex_resampler_set_rate(SpeexResamplerState *st, - int in_rate, - int out_rate); +int speex_resampler_set_rate(SpeexResamplerState *st, + spx_uint32_t in_rate, + spx_uint32_t out_rate); /** Get the current input/output sampling rates (integer value). * @param st Resampler state @@ -226,8 +229,8 @@ void speex_resampler_set_rate(SpeexResamplerState *st, * @param out_rate Output sampling rate (integer number of Hz) copied. */ void speex_resampler_get_rate(SpeexResamplerState *st, - int *in_rate, - int *out_rate); + spx_uint32_t *in_rate, + spx_uint32_t *out_rate); /** Set (change) the input/output sampling rates and resampling ratio * (fractional values in Hz supported). @@ -237,11 +240,11 @@ void speex_resampler_get_rate(SpeexResamplerState *st, * @param in_rate Input sampling rate rounded to the nearest integer (in Hz). * @param out_rate Output sampling rate rounded to the nearest integer (in Hz). */ -void speex_resampler_set_rate_frac(SpeexResamplerState *st, - int ratio_num, - int ratio_den, - int in_rate, - int out_rate); +int speex_resampler_set_rate_frac(SpeexResamplerState *st, + spx_uint32_t ratio_num, + spx_uint32_t ratio_den, + spx_uint32_t in_rate, + spx_uint32_t out_rate); /** Get the current resampling ratio. This will be reduced to the least * common denominator. @@ -250,15 +253,15 @@ void speex_resampler_set_rate_frac(SpeexResamplerState *st, * @param ratio_den Denominator of the sampling rate ratio copied */ void speex_resampler_get_ratio(SpeexResamplerState *st, - int *ratio_num, - int *ratio_den); + spx_uint32_t *ratio_num, + spx_uint32_t *ratio_den); /** Set (change) the conversion quality. * @param st Resampler state * @param quality Resampling quality between 0 and 10, where 0 has poor * quality and 10 has very high quality. */ -void speex_resampler_set_quality(SpeexResamplerState *st, +int speex_resampler_set_quality(SpeexResamplerState *st, int quality); /** Get the conversion quality. @@ -274,28 +277,28 @@ void speex_resampler_get_quality(SpeexResamplerState *st, * @param stride Input stride */ void speex_resampler_set_input_stride(SpeexResamplerState *st, - int stride); + spx_uint32_t stride); /** Get the input stride. * @param st Resampler state * @param stride Input stride copied */ void speex_resampler_get_input_stride(SpeexResamplerState *st, - int *stride); + spx_uint32_t *stride); /** Set (change) the output stride. * @param st Resampler state * @param stride Output stride */ -void speex_resample_set_output_stride(SpeexResamplerState *st, - int stride); +void speex_resampler_set_output_stride(SpeexResamplerState *st, + spx_uint32_t stride); /** Get the output stride. * @param st Resampler state copied * @param stride Output stride */ -void speex_resample_get_output_stride(SpeexResamplerState *st, - int *stride); +void speex_resampler_get_output_stride(SpeexResamplerState *st, + spx_uint32_t *stride); /** Make sure that the first samples to go out of the resamplers don't have * leading zeros. This is only useful before starting to use a newly created @@ -305,12 +308,18 @@ void speex_resample_get_output_stride(SpeexResamplerState *st, * is the same for the first frame). * @param st Resampler state */ -void speex_resampler_skip_zeros(SpeexResamplerState *st); +int speex_resampler_skip_zeros(SpeexResamplerState *st); /** Reset a resampler so a new (unrelated) stream can be processed. * @param st Resampler state */ -void speex_resampler_reset_mem(SpeexResamplerState *st); +int speex_resampler_reset_mem(SpeexResamplerState *st); + +/** Returns the English meaning for an error code + * @param err Error code + * @return English string + */ +const char *speex_resampler_strerror(int err); #ifdef __cplusplus } |