199 lines
6.0 KiB
C
199 lines
6.0 KiB
C
|
#ifndef reverb_api_h__
|
|||
|
#define reverb_api_h__
|
|||
|
|
|||
|
#include "media/audio_stream.h"
|
|||
|
typedef struct REVERBN_PARM_SET {
|
|||
|
int dry; // 0-200%
|
|||
|
int wet; //0-300%
|
|||
|
int delay; //0-100ms
|
|||
|
int rot60; //100-15000ms
|
|||
|
int Erwet; // 5%- 400%
|
|||
|
int Erfactor; // 50%-250%
|
|||
|
int Ewidth; // -100% - 100%
|
|||
|
int Ertolate; // 0- 300%
|
|||
|
int Erbasslpf; //0-18k
|
|||
|
int ErbassB; //-100% - 100%
|
|||
|
int predelay; // 0- 20ms
|
|||
|
int allpassfeedback; //0% - 100%
|
|||
|
int diffusion; //0% - 100%
|
|||
|
int dampinglpf; //0-18k
|
|||
|
int basslpf; //0-1.1k
|
|||
|
int bassB; // 0-80%
|
|||
|
int lowcut;
|
|||
|
} REVERBN_PARM_SET;
|
|||
|
|
|||
|
|
|||
|
/*open 跟 run 都是 成功 返回 RET_OK,错误返回 RET_ERR*/
|
|||
|
/*魔音结构体*/
|
|||
|
typedef struct __REVERBN_FUNC_API_ {
|
|||
|
unsigned int (*need_buf)(unsigned int *ptr, REVERBN_PARM_SET *reverb_parm, int sr);
|
|||
|
int (*open)(unsigned int *ptr, REVERBN_PARM_SET *reverb_parm, int sr);
|
|||
|
int (*init)(unsigned int *ptr, REVERBN_PARM_SET *reverb_parm);
|
|||
|
int (*run)(unsigned int *ptr, short *inbuf, short *outdata, int len);
|
|||
|
} REVERBN_FUNC_API;
|
|||
|
|
|||
|
typedef struct _REVERBN_API_STRUCT_ {
|
|||
|
// REVERBN_PARM_SET*reverb_parm_obj; //参数
|
|||
|
REVERBN_PARM_SET parm; //参数
|
|||
|
REVERBN_PARM_SET target_parm; //目标参数
|
|||
|
unsigned int *ptr; //运算buf指针
|
|||
|
REVERBN_FUNC_API *func_api; //函数指针
|
|||
|
struct audio_stream_entry entry; // 音频流入口
|
|||
|
int out_len;
|
|||
|
int process_len;
|
|||
|
s16 *out_buf;
|
|||
|
u8 run_en;
|
|||
|
u8 update;
|
|||
|
int sr;
|
|||
|
} REVERBN_API_STRUCT;
|
|||
|
|
|||
|
extern REVERBN_FUNC_API *get_reverbn_func_api();
|
|||
|
|
|||
|
|
|||
|
|
|||
|
#if 1
|
|||
|
|
|||
|
typedef struct _EF_ECHO__PARM_ {
|
|||
|
unsigned int delay; //回声的延时时间 0-300ms
|
|||
|
unsigned int decayval; // 0-70%
|
|||
|
unsigned int filt_enable; //滤波器使能标志
|
|||
|
unsigned int lpf_cutoff; //0-20k
|
|||
|
unsigned int wetgain; //0-200%
|
|||
|
unsigned int drygain; //0-100%
|
|||
|
} ECHO_PARM_SET;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
typedef struct _EF_REVERB_FIX_PARM {
|
|||
|
unsigned int sr;
|
|||
|
unsigned int max_ms;
|
|||
|
} EF_REVERB_FIX_PARM;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/*open 跟 run 都是 成功 返回 RET_OK,错误返回 RET_ERR*/
|
|||
|
/*魔音结构体*/
|
|||
|
typedef struct __ECHO_FUNC_API_ {
|
|||
|
unsigned int (*need_buf)(unsigned int *ptr, EF_REVERB_FIX_PARM *echo_fix_parm);
|
|||
|
int (*open)(unsigned int *ptr, ECHO_PARM_SET *echo_parm, EF_REVERB_FIX_PARM *echo_fix_parm);
|
|||
|
int (*init)(unsigned int *ptr, ECHO_PARM_SET *echo_parm);
|
|||
|
int (*run)(unsigned int *ptr, short *inbuf, short *outdata, int len);
|
|||
|
void (*reset_wetdry)(unsigned int *ptr, int wetgain, int drygain); //新增
|
|||
|
} ECHO_FUNC_API;
|
|||
|
|
|||
|
typedef struct _EHCO_API_STRUCT_ {
|
|||
|
ECHO_PARM_SET echo_parm_obj; //参数
|
|||
|
ECHO_PARM_SET target_parm; //参数
|
|||
|
EF_REVERB_FIX_PARM echo_fix_parm;
|
|||
|
unsigned int *ptr; //运算buf指针
|
|||
|
ECHO_FUNC_API *func_api; //函数指针
|
|||
|
struct audio_stream_entry entry; // 音频流入口
|
|||
|
int out_len;
|
|||
|
int process_len;
|
|||
|
u8 run_en;
|
|||
|
u8 update;
|
|||
|
} ECHO_API_STRUCT;
|
|||
|
|
|||
|
extern ECHO_FUNC_API *get_echo_func_api();
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
#if 1
|
|||
|
|
|||
|
typedef struct _EF_REVERB0_PARM_ {
|
|||
|
unsigned int wet; //0-300% //回声的延时时间 0-300ms
|
|||
|
unsigned int dry; //0-200% // 0-70%
|
|||
|
short damping; //0-100 //影响衰减的频率,值越大衰减越快
|
|||
|
short feedback; //0-100 //feedback越大,衰减越慢
|
|||
|
short roomsize; //0-100 //空间大小
|
|||
|
short highcut_freq;//0-18k
|
|||
|
short lowcut_freq; //0-18k
|
|||
|
} EF_REVERB0_PARM;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
typedef struct _EF_REVERB0_FIX_PARM {
|
|||
|
unsigned int sr;
|
|||
|
} EF_REVERB0_FIX_PARM;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/*open 跟 run 都是 成功 返回 RET_OK,错误返回 RET_ERR*/
|
|||
|
/*魔音结构体*/
|
|||
|
typedef struct __REVERB0_FUNC_API_ {
|
|||
|
unsigned int (*need_buf)(unsigned int *ptr, EF_REVERB0_FIX_PARM *echo_fix_parm);
|
|||
|
int (*open)(unsigned int *ptr, EF_REVERB0_PARM *echo_parm, EF_REVERB0_FIX_PARM *echo_fix_parm);
|
|||
|
int (*init)(unsigned int *ptr, EF_REVERB0_PARM *echo_parm);
|
|||
|
int (*run)(unsigned int *ptr, short *inbuf, short *outdata, int len);
|
|||
|
} REVERB0_FUNC_API;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
typedef struct _REVERB0_API_STRUCT_ {
|
|||
|
EF_REVERB0_PARM reverb_parm_obj;
|
|||
|
EF_REVERB0_FIX_PARM reverb_fixparm_obj; //参数
|
|||
|
unsigned int *ptr; //运算buf指针
|
|||
|
REVERB0_FUNC_API *func_api; //函数指针
|
|||
|
struct audio_stream_entry entry; // 音频流入口
|
|||
|
int out_len;
|
|||
|
int process_len;
|
|||
|
s16 *out_buf;
|
|||
|
u8 run_en;
|
|||
|
u8 update;
|
|||
|
} REVERB0_API_STRUCT;
|
|||
|
|
|||
|
extern REVERB0_FUNC_API *get_reverb0_func_api();
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
|
|||
|
#if 1
|
|||
|
|
|||
|
|
|||
|
typedef struct _Plate_reverb_parm_ {
|
|||
|
int wet; //0-300%
|
|||
|
int dry; //0-200%
|
|||
|
int pre_delay; //0-40ms
|
|||
|
int highcutoff; //0-20k 高频截止
|
|||
|
int diffusion; //0-100%
|
|||
|
int decayfactor; //0-100%
|
|||
|
int highfrequencydamping; //0-100%
|
|||
|
int modulate; // 0或1
|
|||
|
int roomsize; //20%-100%
|
|||
|
} Plate_reverb_parm;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
typedef struct __PLATE_REVERB_FUNC_API_ {
|
|||
|
unsigned int (*need_buf)(Plate_reverb_parm *preverb_parm);
|
|||
|
int (*open)(unsigned int *ptr, Plate_reverb_parm *preverb_parm, EF_REVERB0_FIX_PARM *echo_fix_parm);
|
|||
|
int (*init)(unsigned int *ptr, Plate_reverb_parm *preverb_parm);
|
|||
|
int (*run)(unsigned int *ptr, short *inbuf, short *outdata, int len);
|
|||
|
} PLATE_REVERB0_FUNC_API;
|
|||
|
|
|||
|
|
|||
|
|
|||
|
typedef struct _PLATE_REVERB_API_STRUCT_ {
|
|||
|
Plate_reverb_parm reverb_parm_obj;
|
|||
|
EF_REVERB0_FIX_PARM reverb_fixparm_obj; //参数
|
|||
|
unsigned int *ptr; //运算buf指针
|
|||
|
PLATE_REVERB0_FUNC_API *func_api; //函数指针
|
|||
|
struct audio_stream_entry entry; // 音频流入口
|
|||
|
int out_len;
|
|||
|
int process_len;
|
|||
|
s16 *out_buf;
|
|||
|
u8 run_en;
|
|||
|
u8 update;
|
|||
|
} PLATE_REVERB_API_STRUCT;
|
|||
|
|
|||
|
extern PLATE_REVERB0_FUNC_API *get_plate_reverb_func_api();
|
|||
|
|
|||
|
|
|||
|
|
|||
|
#endif
|
|||
|
|
|||
|
|
|||
|
#endif // reverb_api_h__
|