75 lines
2.4 KiB
C
75 lines
2.4 KiB
C
#ifndef _AUDIO_DVOL_H_
|
|
#define _AUDIO_DVOL_H_
|
|
|
|
#include "generic/typedef.h"
|
|
#include "os/os_type.h"
|
|
#include "os/os_api.h"
|
|
#include "generic/list.h"
|
|
|
|
#define DVOL_RESOLUTION 14
|
|
#define DVOL_MAX 16384
|
|
#define DVOL_MAX_FLOAT 16384.0f
|
|
|
|
#define BG_DVOL_FADE_ENABLE 0 /*多路声音叠加,背景声音自动淡出小声*/
|
|
|
|
#define DIGITAL_VOLUME_LEVEL_MAX 200 //默认的音量等级限制设成200
|
|
|
|
/*Digital Volume Channel*/
|
|
#define MUSIC_DVOL 0b00001
|
|
#define CALL_DVOL 0b00010
|
|
#define TONE_DVOL 0b00100
|
|
#define RING_DVOL 0b01000
|
|
#define KEY_TONE_DVOL 0b10000
|
|
|
|
/*Digital Volume Fade Step*/
|
|
#define MUSIC_DVOL_FS 2
|
|
#define CALL_DVOL_FS 4
|
|
#define TONE_DVOL_FS 30
|
|
|
|
/*Digital Volume Max Level*/
|
|
#define MUSIC_DVOL_MAX 16
|
|
#define CALL_DVOL_MAX 15
|
|
#define TONE_DVOL_MAX 16
|
|
|
|
struct audio_vol_params {
|
|
u16 vol;
|
|
u16 vol_max;
|
|
u16 fade_step;
|
|
s16 vol_limit;
|
|
u8 bit_wide;
|
|
};
|
|
|
|
typedef struct {
|
|
u8 toggle; /*数字音量开关*/
|
|
u8 fade; /*淡入淡出标志*/
|
|
u16 vol; /*淡入淡出当前音量(level)*/
|
|
u16 vol_max; /*淡入淡出最大音量(level)*/
|
|
s16 vol_limit; /*最大数字音量限制*/
|
|
s16 vol_fade; /*淡入淡出对应的起始音量*/
|
|
#if BG_DVOL_FADE_ENABLE
|
|
s16 vol_bk; /*后台自动淡出前音量值*/
|
|
struct list_head entry;
|
|
#endif/*BG_DVOL_FADE_ENABLE*/
|
|
volatile s16 vol_target; /*淡入淡出对应的目标音量*/
|
|
volatile u16 fade_step; /*淡入淡出的步进*/
|
|
float cfg_vol_min; /*最小音量的分贝数*/
|
|
float cfg_vol_max; /*最小音量的分贝数*/
|
|
u16 cfg_level_max; /*最大音量等级*/
|
|
u8 vol_table_custom; /*是否使用外部工具读取的音量表*/
|
|
u8 vol_table_default; /*是否使用默认的音量表*/
|
|
u8 mute_en; /*是否将数据设成0*/
|
|
u8 bit_wide; /*数据位宽*/
|
|
float *vol_table; /*自定义音量表*/
|
|
} dvol_handle;
|
|
|
|
int audio_digital_vol_init(u16 *vol_table, u16 vol_max);
|
|
void audio_digital_vol_bg_fade(u8 fade_out);
|
|
dvol_handle *audio_digital_vol_open(struct audio_vol_params params);
|
|
void audio_digital_vol_close(dvol_handle *dvol);
|
|
void audio_digital_vol_set(dvol_handle *dvol, u16 vol);
|
|
void audio_digital_vol_mute_set(dvol_handle *dvol, u8 mute_en);
|
|
int audio_digital_vol_run(dvol_handle *dvol, void *data, u32 len);
|
|
void audio_digital_vol_reset_fade(dvol_handle *dvol);
|
|
|
|
#endif/*_AUDIO_DVOL_H_*/
|