9.17. 数字音量(DIGITAL_VOL)
概述
提供数字音量的使用流程
audio_config.c
文件, 可配置以下参数:
const int config_digital_fade_step = 1; //单位采样点音量变化量
const int config_digital_vol_max = 100; //最大音量
用户自定义音量表参考如下:
static const u16 user_dig_vol_table[] = {
0 , //0
93 , //1
111 , //2
132 , //3
158 , //4
189 , //5
226 , //6
270 , //7
323 , //8
386 , //9
462 , //10
552 , //11
660 , //12
789 , //13
943 , //14
1127, //15
1347, //16
1610, //17
1925, //18
2301, //19
2751, //20
3288, //21
3930, //22
4698, //23
5616, //24
6713, //25
8025, //26
9592, //27
11466,//28
15200,//29
16000,//30
16384 //31
};
9.17.1. 使用流程
1.打开解码服务后,在调用cmd
AUDIO_DEC_OPEN
时候传递参数(解码服务打开流程详情查看音频解码
章节)
/*中间省略其他参数*/
req.dec.cmd = AUDIO_DEC_OPEN;
req.dec.effect = AUDIO_EFFECT_DIGITAL_VOL;
err = server_request(__this->dec_server, AUDIO_REQ_DEC, &req);
获取音效处理句柄,调用cmd
AUDIO_DEC_GET_EFFECT_HANDLE
, 返回的req.dec.get_hdl
就是音效处理句柄, 此时可以选择设置用户自定义音量表(可选),不设置的话默认用库里面的音量表
req.dec.cmd = AUDIO_DEC_GET_EFFECT_HANDLE;
req.dec.effect = AUDIO_EFFECT_DIGITAL_VOL;
err = server_request(__this->dec_server, AUDIO_REQ_DEC, &req);
user_audio_digital_set_volume_tab(req.dec.get_hdl, user_dig_vol_table, ARRAY_SIZE(user_dig_vol_table)); //自定义音量表(可选)
调节数字音量
调节数字音量, 可以单独调节当前解码器,当前音频的声音大小, 不影响到另外一个解码器, 常常用在混音、叠音中。
user_audio_digital_volume_set(req.dec.get_hdl, volume, fade_en);
获取数字音量
int get_volume = user_audio_digital_volume_get(req.dec.get_hdl);
重置数字音量
user_audio_digital_volume_reset_fade(req.dec.get_hdl);
9.17.2. API参考
Functions
-
void *user_audio_digital_volume_open(void *priv, void *parm)
打开数字音量处理
- Parameters
priv – 私有指针
parm – 始化参数,详见结构体digital_vol_open_parm
- Returns
句柄
-
int user_audio_digital_volume_close(void *priv)
关闭数字音量处理
- Parameters
priv – 句柄
- Returns
0:成功 -1:失败
-
int user_audio_digital_volume_run(void *priv, s16 *buf, int len, int sample_rate)
数字音量运行
Note
数字音量调节, 调整输入数据的幅值
- Parameters
priv – 句柄
data – 输入数据
len – 输入数据长度
sample_rate – 采样率
- Returns
0:成功 -1:失败
-
u8 user_audio_digital_volume_get(void *priv)
获取当前数字音量大小
- Parameters
priv – 句柄
- Returns
返回音量大小
-
int user_audio_digital_volume_set(void *priv, u8 vol, u8 fade_en)
设置当前数字音量大小,是否淡入淡出
- Parameters
priv – 句柄
vol – 音量大小
fade_en – 淡入淡出使能
- Returns
0:成功 -1:失败
-
int user_audio_digital_volume_reset_fade(void *priv)
重置清零淡入淡出
- Parameters
priv – 句柄
- Returns
0:成功 -1:失败
-
void user_audio_digital_set_volume_tab(void *priv, u16 *user_vol_tab, u8 user_vol_max)
设置自定义音量表
- Parameters
priv – 句柄
user_vol_tab – 自定义音量表,自定义表长user_vol_max+1
user_vol_max – 音量级数
-
int user_audio_digital_volume_wait_fade_complete(void *priv, u32 pcm_cache_buf_size)
等待淡入淡出完成
- Parameters
priv – 句柄
pcm_cache_buf_size – 缓存的pcm数据大小
- Returns
0:成功 -1:失败
-
struct digital_vol_open_parm
- #include <digital_vol.h>
数字音量参数结构体