108 lines
2.9 KiB
C
108 lines
2.9 KiB
C
|
#ifndef _AUD_DEC_EFF_H
|
|||
|
#define _AUD_DEC_EFF_H
|
|||
|
#include "asm/includes.h"
|
|||
|
#include "media/includes.h"
|
|||
|
#include "system/includes.h"
|
|||
|
#include "classic/tws_api.h"
|
|||
|
#include "classic/hci_lmp.h"
|
|||
|
#include "application/eq_config.h"
|
|||
|
#include "application/audio_surround.h"
|
|||
|
#include "app_config.h"
|
|||
|
#include "audio_config.h"
|
|||
|
#include "app_main.h"
|
|||
|
#include "application/audio_vbass.h"
|
|||
|
|
|||
|
|
|||
|
struct dec_sur {
|
|||
|
#if AUDIO_SURROUND_CONFIG
|
|||
|
surround_hdl *surround; //环绕音效句柄
|
|||
|
u8 surround_eff; //音效模式记录
|
|||
|
#endif
|
|||
|
|
|||
|
};
|
|||
|
|
|||
|
#if (defined(TCFG_AUDIO_OUT_EQ_ENABLE) && (TCFG_AUDIO_OUT_EQ_ENABLE != 0))
|
|||
|
#define AUDIO_OUT_EQ_USE_SPEC_NUM 2 // 使用特定的eq段
|
|||
|
#else
|
|||
|
#define AUDIO_OUT_EQ_USE_SPEC_NUM 0
|
|||
|
#endif
|
|||
|
#define AUDIO_EQ_FADE_EN 1
|
|||
|
#define HIGH_BASS_EQ_FADE_STEP (1)
|
|||
|
|
|||
|
#if TCFG_EQ_ENABLE&&TCFG_AUDIO_OUT_EQ_ENABLE
|
|||
|
#define AUDIO_OUT_EFFECT_ENABLE 1 // 音频输出时的音效处理
|
|||
|
#else
|
|||
|
#define AUDIO_OUT_EFFECT_ENABLE 0
|
|||
|
#endif//TCFG_AUDIO_OUT_EQ_ENABLE
|
|||
|
|
|||
|
|
|||
|
typedef int (*eq_output_cb)(void *, void *, int);
|
|||
|
|
|||
|
struct eq_filter_fade {
|
|||
|
u16 tmr;
|
|||
|
int cur_gain[AUDIO_OUT_EQ_USE_SPEC_NUM];
|
|||
|
int use_gain[AUDIO_OUT_EQ_USE_SPEC_NUM];
|
|||
|
};
|
|||
|
struct dec_eq_drc {
|
|||
|
s16 *eq_out_buf;
|
|||
|
int eq_out_buf_len;
|
|||
|
int eq_out_points;
|
|||
|
int eq_out_total;
|
|||
|
|
|||
|
void *priv;
|
|||
|
eq_output_cb out_cb;
|
|||
|
void *drc_prev;
|
|||
|
void *eq;
|
|||
|
void *drc;
|
|||
|
u8 async;
|
|||
|
u8 drc_bef_eq;
|
|||
|
struct eq_filter_fade fade;
|
|||
|
u8 remain;
|
|||
|
};
|
|||
|
|
|||
|
struct eq_parm_new {
|
|||
|
u8 in_mode: 2;
|
|||
|
u8 run_mode: 2;
|
|||
|
u8 data_in_mode: 2;
|
|||
|
u8 data_out_mode: 2;
|
|||
|
};
|
|||
|
void *audio_surround_setup(u8 channel, u8 eff);
|
|||
|
void audio_surround_free(void *sur);
|
|||
|
void audio_surround_set_ch(void *sur, u8 channel);
|
|||
|
void audio_surround_voice(void *sur, u8 en);
|
|||
|
|
|||
|
|
|||
|
vbass_hdl *audio_vbass_setup(u32 sample_rate, u8 channel);
|
|||
|
void audio_vbass_free(vbass_hdl *vbass);
|
|||
|
|
|||
|
|
|||
|
void *dec_eq_drc_setup(void *priv, int (*eq_output_cb)(void *, void *, int), u32 sample_rate, u8 channel, u8 async, u8 drc_en);
|
|||
|
void dec_eq_drc_free(void *eff);
|
|||
|
|
|||
|
|
|||
|
void *esco_eq_drc_setup(void *priv, int (*eq_output_cb)(void *, void *, int), u32 sample_rate, u8 channel, u8 async, u8 drc_en);
|
|||
|
void esco_eq_drc_free(void *eff);
|
|||
|
|
|||
|
|
|||
|
void *audio_out_eq_drc_setup(void *priv, int (*eq_output_cb)(void *, void *, int), u32 sample_rate, u8 channel, u8 async, u8 drc_en);
|
|||
|
void audio_out_eq_drc_free(void *eff);
|
|||
|
int audio_out_eq_set_gain(void *eff, u8 idx, int gain);
|
|||
|
|
|||
|
int eq_drc_run(void *priv, void *data, u32 len);
|
|||
|
|
|||
|
void mix_out_drc_open(u16 sample_rate);
|
|||
|
void mix_out_drc_close();
|
|||
|
void mix_out_drc_run(s16 *data, u32 len);
|
|||
|
/*----------------------------------------------------------------------------*/
|
|||
|
/**@brief mix_out后限幅器系数更新
|
|||
|
@param threadhold限幅器阈值,-60~0,单位db
|
|||
|
@return
|
|||
|
@note
|
|||
|
*/
|
|||
|
/*----------------------------------------------------------------------------*/
|
|||
|
void mix_out_drc_threadhold_update(float threadhold);
|
|||
|
#define V1_GAME_EFF 1
|
|||
|
#define NOR_GAME_EFF 2
|
|||
|
|
|||
|
#endif
|