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);
    1. 获取音效处理句柄,调用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)); //自定义音量表(可选)
    1. 调节数字音量

调节数字音量, 可以单独调节当前解码器,当前音频的声音大小, 不影响到另外一个解码器, 常常用在混音、叠音中。

user_audio_digital_volume_set(req.dec.get_hdl, volume, fade_en);
    1. 获取数字音量

int get_volume = user_audio_digital_volume_get(req.dec.get_hdl);
    1. 重置数字音量

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>

数字音量参数结构体

Public Members

unsigned char ch

通道数

unsigned char vol

当前音量大小

unsigned char fade_en

是否使能淡入淡出