KT24-1110_65E-HA-651B/include_lib/media/audio_eq_drc_apply.h

116 lines
3.6 KiB
C
Raw Permalink Normal View History

2024-11-10 10:44:17 +00:00
#ifndef _EQ_APPLY_H_
#define _EQ_APPLY_H_
#include "system/includes.h"
#include "media/audio_stream.h"
#include "media/audio_eq.h"
#if 0
#include "media/eq_config.h"
#define DECREASE_MEM 1 //减少输出buf占用
struct audio_eq_drc_parm {
u8 eq_en: 1; //eq是否使能 1:使能 0:关闭
u8 drc_en: 1; //drc是否使能 1:使能 0:关闭
u8 high_bass: 1; //高低音是否使能, 1使能 0关闭
u8 async_en: 1; //是否使能异步eq 1:使能 0关闭
u8 out_32bit: 1; //eq后是否输出32bit 1:使能: 0关闭
u8 divide_en: 1; //各个声道eq drc效果是否独立0使用同个效果
u8 mode_en: 1; //没离线文件时是否支持使用默认系数表做eq
u8 online_en: 1; //是否支持在线调试 1支持 0不支持
u8 ch_num: 3; //输入数据通道数
u8 process_split: 1; //eq、drc是否单独处理 1节点内各自单独处理并输出 0节点内一起处理(先处理eq再做drc后输出)
u8 reserved: 4;
u8 nsection : 6;//最大的eq段数,根据使用填写要小于等于EQ_SECTION_MAX
u8 eq_name; //FL FR通道的eq_name 普通音乐eq 使用song_eq_mode,通话下行eq 使用call_eq_mode
u32 sr; //采样率
float global_gain ;
struct eq_seg_info *seg;
audio_eq_filter_cb eq_cb; //获取eq系数的回调函数
audio_drc_filter_cb drc_cb;//获取drc系数的回调
};
/*
*cmd :
*/
#define AUDIO_EQ_SET_CH 0
#define AUDIO_EQ_CLR_DAT 1
#define AUDIO_EQ_HIGH 2
#define AUDIO_EQ_BASS 3
#define AUDIO_EQ_GET_DATA_LEN 4
#define AUDIO_EQ_HIGH_BASS_DIS 5
struct high_bass {
int freq; //频率写0 内部会用默认125hz 和12khz
int gain; //增益范围 -12~12
};
typedef struct eq_fade {
u16 tmr;
#ifdef EQ_CORE_V1
float cur_gain[2];
float use_gain[2];
#else
int cur_gain[2];
int use_gain[2];
#endif
} audio_eq_fade_cfg;
struct audio_eq_drc {
struct audio_eq *eq;
struct audio_drc *drc;
struct eq_fade *fade_cfg;//高低音系数表
s16 *eq_out_buf;
int out_buf_size;
int eq_out_points;
int eq_out_total;
u8 high_bass_dis;
struct audio_eq_drc_parm parm;
struct audio_stream_entry entry; // 音频流入口
};
/*----------------------------------------------------------------------------*/
/**@brief 打开eq drc支持接入audio_stream
@param parm: 使,
@return eq drc句柄
@note
*/
/*----------------------------------------------------------------------------*/
struct audio_eq_drc *audio_eq_drc_open(struct audio_eq_drc_parm *parm);
/*----------------------------------------------------------------------------*/
/**@brief eq drc接入音频流数据处理回调
@param entry:
@param in:
@param out:
@return
@note
*/
/*----------------------------------------------------------------------------*/
void audio_eq_drc_close(struct audio_eq_drc *hdl);
/*----------------------------------------------------------------------------*/
/**@brief 参数更新
@param hdl:
@param cmd:
@param parm:
@return
@note
*/
/*----------------------------------------------------------------------------*/
int audio_eq_drc_parm_update(struct audio_eq_drc *hdl, u32 cmd, void *parm);
/*
*eqdrc的run处理接口
* */
int audio_eq_drc_run(struct audio_eq_drc *hdl, s16 *data, u16 len);
#endif
#endif