AC63_BT_SDK/cpu/br30/audio_dec_eff.h
2025-02-18 15:40:42 +08:00

108 lines
2.9 KiB
C
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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