Files
TAIXIN/sdk/include/lib/audio/audio_proc/audio_proc.h

92 lines
3.0 KiB
C
Raw Normal View History

#ifndef _AUDIO_PROCESS_CTRL_H_
#define _AUDIO_PROCESS_CTRL_H_
#include "typesdef.h"
#include "osal/string.h"
#define AUPROC_STACK_SIZE 5120
#define ANF_PROCESSING 0
#define AEC_PROCESSING 1
#define AHS_PROCESSING 1
#define ANS_PROCESSING 1
#define RES_PROCESSING 1
typedef void *(*AUPROC_MALLOC)(int size);
typedef void *(*AUPROC_ZALLOC)(int size);
typedef void *(*AUPROC_CALLOC)(int nmemb, int size);
typedef void *(*AUPROC_REALLOC)(void *ptr, int size);
typedef void (*AUPROC_FREE)(void *ptr);
extern volatile AUPROC_MALLOC auproc_malloc;
extern volatile AUPROC_ZALLOC auproc_zalloc;
extern volatile AUPROC_CALLOC auproc_calloc;
extern volatile AUPROC_REALLOC auproc_realloc;
extern volatile AUPROC_FREE auproc_free;
enum {
TYPE_VOICE_ONLY,
TYPE_MUSIC_ONLY,
TYPE_HYBRID,
};
typedef struct {
int8_t *stack_priv;
uint32_t used_size;
uint32_t total_size;
} AUPROC_STACK;
typedef struct {
uint32_t samplerate;
uint32_t channels;
uint32_t near_discard_ms;
uint32_t far_discard_ms;
uint32_t rand_seed;
float cosTable[256];
float sinTable[256];
float *time_inputbuf;
float *last_freq_buf;
int16_t *overlap_buf;
float *last_magn;
float *filter_w;
struct domainTrans_struct *domainTrans_s;
void *anf;
void *aec;
void *ahs;
void *ans;
void *vad;
void *agc;
void *res;
float *noiseEsit;
} AUPROC_HDL;
AUPROC_HDL *audio_process_init(uint32_t samplerate, uint32_t channels, uint32_t frame_size);
int32_t audio_process_data(AUPROC_HDL *auproc_hdl, int16_t *data, uint32_t nsamples);
int32_t audio_process_fardata(AUPROC_HDL *auproc_hdl, int16_t *data, uint32_t nsamples);
int32_t audio_resample_config(AUPROC_HDL *auproc_hdl, uint32_t src_samplerate, uint32_t dest_samplerate);
int32_t audio_resample_data(AUPROC_HDL *auproc_hdl, int16_t *in_data, uint32_t in_size, int16_t *out_data, uint32_t *out_size);
int32_t audio_process_deinit(AUPROC_HDL *auproc_hdl);
void reg_auproc_alloc(AUPROC_MALLOC m, AUPROC_ZALLOC z, AUPROC_CALLOC c, AUPROC_REALLOC r, AUPROC_FREE f);
void *auproc_stack_alloc(uint32_t size);
void auproc_stack_free(void *ptr);
AUPROC_HDL *audio_process_open(uint32_t samplerate, uint32_t channels, uint32_t frame_size);
int32_t audio_process_prepare(AUPROC_HDL *auproc_hdl);
int32_t audio_process(AUPROC_HDL *auproc_hdl, int16_t *data, uint32_t size);
int32_t audio_process_put_fardata(AUPROC_HDL *auproc_hdl, int16_t *data, uint32_t size);
int32_t audio_resample_reconfig(AUPROC_HDL *auproc_hdl, uint32_t src_samplerate, uint32_t dest_samplerate);
int32_t audio_resample(AUPROC_HDL *auproc_hdl, int16_t *in_data, uint32_t in_size, int16_t *out_data, uint32_t *out_size);
int32_t audio_process_close(AUPROC_HDL *auproc_hdl);
int32_t auproc_attach_anf(AUPROC_HDL * auproc_hdl);
int32_t auproc_attach_aec(AUPROC_HDL * auproc_hdl);
int32_t auproc_attach_ahs(AUPROC_HDL * auproc_hdl, uint8_t mode);
int32_t auproc_attach_ans(AUPROC_HDL * auproc_hdl, uint8_t mode);
int32_t auproc_attach_res(AUPROC_HDL * auproc_hdl);
#endif