目录
1. Hexagon DSP SDK开发环境搭建
2. capi_v2_gain 算法模块编译和验证
3. 模块核心算法
1. Hexagon DSP SDK开发环境搭建
Hexagon SDK 是高通提供的一个软件开发工具包,专为 Hexagon DSP(数字信号处理器)而设计,它提供了一组工具、库和API,可以用于创建和优化针对 Hexagon DSP 的软件。开发人员可以利用 Hexagon SDK 中的编程接口和资源,充分发挥 DSP 的处理能力,用于音频和视频处理、计算机视觉、机器学习以及其他信号处理应用。下载地址:Hexagon DSP SDK - Qualcomm Developer Network (根据实际芯片ADSP型号选择SDK)。
以下是基于Ubuntu 16.04.6 LTS进行操作,理论上同样适用于其他版本。
- 解压sdk包
unzip hexagon_sdk_lnx_3_5_installer_00006_1.zip
tar -xv Hexagon_SDK_LNX_3_5_Installer_00006_1.tar
- 赋予可执行权限并开始安装
chmod +x qualcomm_hexagon_sdk_3_5_4_eval.bin
执行 ./qualcomm_hexagon_sdk_3_5_4_eval.bin开始安装,根据提示输入信息,以便安装继续。
- 目录位置和文件列表
安装成功后的位置:~/Qualcomm/Hexagon_SDK/3.5.4
├── build ├── docs ├── examples ├── incs ├── Launch Hexagon IDE ├── libs ├── readme.txt ├── scripts ├── setup_sdk_env.source ├── test ├── tools └── Uninstall_Hexagon_SDK
2. capi_v2_gain 算法模块编译和验证
capi_v2_gain是Hexagon SDK中预置的算法样例,它提供了一种简单的方法来对音频数据进行增益处理。该算法的原理十分简单,通过将增益值和使能开关作为参数传递给算法模块,可以轻松地控制增益处理的效果。通过调整增益值,可以改变音频信号的音量大小,而使能开关则用于启用或禁用增益处理功能。
- 设置环境变量
~/Qualcomm/Hexagon_SDK/3.5.4
source setup_sdk_env.source
- 编译capi_v2_gain
cd examples/audio/capi_v2_gain
make tree V=hexagon_Debug_dynamic_toolv83_v66
- 测试capi_v2_gain算法
~/Qualcomm/Hexagon_SDK/3.5.4/tools/HEXAGON_Tools/8.3.07/Tools/bin/hexagon-sim -mv66g_1024 --simulated_returnval --usefs hexagon_Debug_dynamic_toolv83_v66 hexagon_Debug_dynamic_toolv83_v66/capi_v2_gain_q
ls 3.5.4/examples/audio/capi_v2_gain/data gain.cfg //配置文件 input_wnoise_48k_stereo.raw //输入源文件 wnoise_48k_stereo_example_out.raw //输出文件

3. 模块核心算法
void pcm_gain(int16_t* primary_mic_ptr,
int16_t* out_ptr,
uint32_t gain_val,
uint32_t num_samples)
{
uint32_t i;
uint32_t out;
for (i = 0; i < num_samples; i++) {
out = gain_val * primary_mic_ptr[i];
out_ptr[i] = (out >> 13);
}
}
static capi_v2_err_t capi_v2_gain_process(capi_v2_t* _pif,
capi_v2_stream_data_t* input[],
capi_v2_stream_data_t* output[])
{
...
pcm_gain(in_pcm_ch_ptr, out_pcm_ch_ptr, me->gain_val, (in_buf_ptr->actual_data_len) / sizeof(int16_t));
...
return result;
}