94 lines
2.7 KiB
C
94 lines
2.7 KiB
C
|
|
|
|
|
|
#ifndef _audio_echo_h__
|
|
#define _audio_echo_h__
|
|
|
|
#include "effects/AudioEffect_DataType.h"
|
|
|
|
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%
|
|
af_DataType dataTypeobj;
|
|
} ECHO_PARM_SET;
|
|
|
|
struct echo_update_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%
|
|
} ;
|
|
|
|
|
|
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, ECHO_PARM_SET *echo_parm, 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 __EF_ECHO_TOOL_SET_ {
|
|
int is_bypass; // 1-> byass 0 -> no bypass
|
|
struct echo_update_parm parm;
|
|
u32 wet_bit_wide;
|
|
} echo_param_tool_set;
|
|
|
|
|
|
struct audio_echo_parm {
|
|
ECHO_PARM_SET echo_parm;
|
|
EF_REVERB_FIX_PARM fixparm;
|
|
u16 in_channel;
|
|
u16 wet_bit_wide;
|
|
};
|
|
|
|
|
|
struct audio_echo {
|
|
void *workbuf;
|
|
ECHO_FUNC_API *ops; //函数指针
|
|
struct audio_echo_parm parm;
|
|
u8 status;
|
|
u8 update;
|
|
};
|
|
extern ECHO_FUNC_API *get_echo24r16_func_api();
|
|
extern ECHO_FUNC_API *get_echo_func_api();
|
|
extern ECHO_FUNC_API *get_echo_func_api_mask();
|
|
/*
|
|
* 打开echo声卡混响模块
|
|
*/
|
|
struct audio_echo *audio_echo_open(struct audio_echo_parm *parm);
|
|
/*
|
|
* echo声卡混响处理
|
|
*/
|
|
int audio_echo_run(struct audio_echo *hdl, short *in, short *out, int len);
|
|
/*
|
|
* 关闭echo声卡混响模块
|
|
*/
|
|
void audio_echo_close(struct audio_echo *hdl);
|
|
|
|
/*
|
|
* plate声卡混响参数更新
|
|
*/
|
|
void audio_echo_update_parm(struct audio_echo *hdl, struct echo_update_parm *parm);
|
|
|
|
void audio_echo_bypass(struct audio_echo *hdl, u8 bypass);
|
|
|
|
|
|
#endif // reverb_echo_h__
|