Files
99_7018_lmx/apps/common/audio/audio_dvol.h
2025-10-29 13:10:02 +08:00

56 lines
1.8 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 BG_DVOL_FADE_ENABLE 1 /*多路声音叠加,背景声音自动淡出小声*/
/*Digital Volume Channel*/
#define MUSIC_DVOL 0xA1
#define CALL_DVOL 0xA2
#define TONE_DVOL 0xA3
#define HEARING_DVOL 0xA4
/*Digital Volume Fade Step*/
#define MUSIC_DVOL_FS 2
#define CALL_DVOL_FS 4
#define TONE_DVOL_FS 30
#define HEARING_DVOL_FS 2
/*Digital Volume Max Level*/
#define MUSIC_DVOL_MAX 16
#define CALL_DVOL_MAX 15
#define TONE_DVOL_MAX 16
#define HEARING_DVOL_MAX 16
typedef struct {
u8 toggle; /*数字音量开关*/
u8 fade; /*淡入淡出标志*/
u8 vol; /*淡入淡出当前音量(level)*/
u8 vol_max; /*淡入淡出最大音量(level)*/
char vol_limit; /*最大数字音量限制*/
u8 idx; /*数字音量通道索引*/
s16 vol_fade; /*淡入淡出对应的起始音量*/
#if BG_DVOL_FADE_ENABLE
s16 vol_bk; /*后台自动淡出前音量值*/
#endif/*BG_DVOL_FADE_ENABLE*/
struct list_head entry;
volatile s16 vol_target; /*淡入淡出对应的目标音量*/
volatile u16 fade_step; /*淡入淡出的步进*/
} 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(u8 dvol_idx, u8 vol, u8 vol_max, u16 fade_step, char vol_limit);
void audio_digital_vol_close(u8 dvol_idx);
void audio_digital_vol_set(u8 dvol_idx, u8 vol);
int audio_digital_vol_get(u8 dvol_idx);
int audio_digital_vol_run(u8 dvol_idx, void *data, u32 len);
void audio_digital_vol_reset_fade(u8 dvol_idx);
void audio_digital_vol_set_no_fade(u8 dvol_idx, u8 vol);
#endif/*_AUDIO_DVOL_H_*/