Initial commit: TXW82x FPV v2.7.0.7-42229 SDK + project sources
This commit is contained in:
89
sdk/include/lib/audio/wsola/wsola_process.h
Normal file
89
sdk/include/lib/audio/wsola/wsola_process.h
Normal file
@@ -0,0 +1,89 @@
|
||||
#ifndef _WSOLA_PROCESS_H_
|
||||
#define _WSOLA_PROCESS_H_
|
||||
|
||||
#include "typesdef.h"
|
||||
#include "osal/string.h"
|
||||
#include "lib/audio/ring_buffer/ring_buffer.h"
|
||||
|
||||
typedef void *(*WSOLA_MALLOC)(int size);
|
||||
typedef void *(*WSOLA_ZALLOC)(int size);
|
||||
typedef void *(*WSOLA_CALLOC)(int nmemb, int size);
|
||||
typedef void *(*WSOLA_REALLOC)(void *ptr, int size);
|
||||
typedef void (*WSOLA_FREE)(void *ptr);
|
||||
|
||||
extern WSOLA_MALLOC wsola_malloc;
|
||||
extern WSOLA_ZALLOC wsola_zalloc;
|
||||
extern WSOLA_CALLOC wsola_calloc;
|
||||
extern WSOLA_REALLOC wsola_realloc;
|
||||
extern WSOLA_FREE wsola_free;
|
||||
|
||||
typedef struct {
|
||||
RINGBUF *input_ringbuf;
|
||||
RINGBUF *output_ringbuf;
|
||||
int16_t *input_buf;
|
||||
int16_t *output_buf;
|
||||
int16_t *downsample_buf;
|
||||
int16_t *pitch_buf;
|
||||
|
||||
int32_t max_required;
|
||||
int32_t max_period_nsamples;
|
||||
int32_t min_period_nsamples;
|
||||
int32_t prev_period_nsamples;
|
||||
int32_t prev_min_diff;
|
||||
|
||||
float pitch;
|
||||
float speed;
|
||||
|
||||
float persample_time;
|
||||
float input_playtime;
|
||||
float time_err;
|
||||
|
||||
int32_t input_nsamples;
|
||||
int32_t output_nsamples;
|
||||
int32_t pitch_nsamples;
|
||||
int32_t reserve_nsamples;
|
||||
|
||||
int32_t old_rate_position;
|
||||
int32_t new_rate_position;
|
||||
|
||||
uint32_t input_buf_size;
|
||||
uint32_t output_buf_size;
|
||||
uint32_t downsample_buf_size;
|
||||
uint32_t pitch_buf_size;
|
||||
|
||||
uint32_t samplerate;
|
||||
uint32_t channels;
|
||||
}WsolaStream;
|
||||
|
||||
void reg_wsola_alloc(WSOLA_MALLOC m, WSOLA_ZALLOC z, WSOLA_CALLOC c, WSOLA_REALLOC r, WSOLA_FREE f);
|
||||
WsolaStream *wsolaStream_init(uint32_t samplerate, uint32_t channels, float speed, float pitch,
|
||||
uint32_t max_input_nsamples, uint32_t max_output_nsamples);
|
||||
int32_t wsolaStream_input_data(WsolaStream* stream, int16_t *data, uint32_t nsamples);
|
||||
int32_t wsolaStream_output_data(WsolaStream* stream, int16_t *data, uint32_t max_nsamples);
|
||||
int32_t wsolaStream_input_available(WsolaStream* stream);
|
||||
int32_t wsolaStream_output_available(WsolaStream* stream);
|
||||
void wsolaStream_set_pitch(WsolaStream* stream, float pitch);
|
||||
void wsolaStream_set_speed(WsolaStream* stream, float speed);
|
||||
float wsolaStream_get_pitch(WsolaStream* stream);
|
||||
float wsolaStream_get_speed(WsolaStream* stream);
|
||||
uint32_t wsolaStream_get_sampleRate(WsolaStream *stream);
|
||||
void wsolaStream_clean(WsolaStream* stream);
|
||||
int32_t wsolaStream_flush(WsolaStream* stream);
|
||||
void wsolaStream_deinit(WsolaStream *stream);
|
||||
|
||||
WsolaStream *wsola_stream_init(uint32_t samplerate, uint32_t channels,
|
||||
uint32_t max_input_nsamples, uint32_t max_output_nsamples);
|
||||
int32_t wsola_stream_write_data(WsolaStream* stream, int16_t *data, uint32_t nsamples);
|
||||
int32_t wsola_stream_read_data(WsolaStream* stream, int16_t *data, uint32_t max_nsamples);
|
||||
int32_t wsola_stream_write_available(WsolaStream* stream);
|
||||
int32_t wsola_stream_read_available(WsolaStream* stream);
|
||||
void wsola_stream_set_pitch(WsolaStream* stream, float pitch);
|
||||
void wsola_stream_set_speed(WsolaStream* stream, float speed);
|
||||
float wsola_stream_get_pitch(WsolaStream* stream);
|
||||
float wsola_stream_get_speed(WsolaStream* stream);
|
||||
uint32_t wsola_stream_get_samplerate(WsolaStream *stream);
|
||||
void wsola_stream_clean(WsolaStream* stream);
|
||||
int32_t wsola_stream_flush(WsolaStream *stream);
|
||||
void wsola_stream_deinit(WsolaStream *stream);
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user