Initial commit: TXW82x FPV v2.7.0.7-42229 SDK + project sources

This commit is contained in:
2026-07-06 11:30:13 +08:00
commit e76462eeb7
3451 changed files with 1415300 additions and 0 deletions

View 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