关于SS928评估板学习(八):Demo应用(Audio)
一、交叉编译sample_audio
进入sample目录SS928V100_SDK_Vx.x.x.x/smp/a55_linux/mpp/sample/audio下,直接执行make,生成的sample_audio二进制文件,可直接拷贝到板端进行验证;
对于sample_audio,会使用Makefile.param文件中的ACODEC_TYPE参数,默认的ACODEC_TYPE参数是使用内置音频编解码器,文件具体目录如下:
SS928V100_SDK_Vx.x.x.x/smp/a55_linux/mpp/sample/Makefile.param
当选择需要使用的音频编解码器类型后,函数中会调用sample_inner_codec_cfg_audio函数来对编解码器芯片进行配置,用户可以在此函数中进行配置修改。
函数示例:
hi_s32 sample_comm_audio_cfg_acodec(const hi_aio_attr *aio_attr)
{
hi_bool codec_cfg = HI_FALSE;
#ifdef OT_ACODEC_TYPE_ES8388
hi_s32 ret = sample_es8388_cfg_audio(aio_attr->work_mode, aio_attr->sample_rate, aio_attr->bit_width);
if (ret != HI_SUCCESS) {
printf("%s: sample_es8388_cfg_audio failed\n", __FUNCTION__);
return ret;
}
codec_cfg = HI_TRUE;
#endif
#ifdef OT_ACODEC_TYPE_INNER
/* INNER AUDIO CODEC */
hi_s32 ret = sample_inner_codec_cfg_audio(aio_attr->sample_rate);
if (ret != HI_SUCCESS) {
printf("%s:sample_inner_codec_cfg_audio failed\n", __FUNCTION__);
return ret;
}
codec_cfg = HI_TRUE;
#endif
if (codec_cfg == HI_FALSE) {
printf("can not find the right codec.\n");
return HI_FAILURE;
}
return HI_SUCCESS;
}
一、修改sample_audio
根据不通的音频需求,用户可以在sample_audio中进行修改,其中主要参数位于sample_audio_ai_ao_init_param函数,此函数可设置音频采样率、通道数、时序、位宽、主从模式等。
代码示例:
static hi_void sample_audio_ai_ao_init_param(hi_aio_attr *aio_attr, hi_audio_dev *ai_dev, hi_audio_dev *ao_dev)
{
aio_attr->sample_rate = HI_AUDIO_SAMPLE_RATE_48000;
aio_attr->bit_width = HI_AUDIO_BIT_WIDTH_16;
aio_attr->work_mode = HI_AIO_MODE_I2S_MASTER;
aio_attr->snd_mode = HI_AUDIO_SOUND_MODE_STEREO;
aio_attr->expand_flag = 0;
aio_attr->frame_num = 30; /* 30:frame num */
aio_attr->point_num_per_frame = AACLC_SAMPLES_PER_FRAME;
aio_attr->chn_cnt = 2; /* 2:chn num */
#ifdef OT_ACODEC_TYPE_INNER
*ai_dev = SAMPLE_AUDIO_INNER_AI_DEV;
*ao_dev = SAMPLE_AUDIO_INNER_AO_DEV;
aio_attr->clk_share = 1;
aio_attr->i2s_type = HI_AIO_I2STYPE_INNERCODEC;
#else
*ai_dev = SAMPLE_AUDIO_EXTERN_AI_DEV;
*ao_dev = SAMPLE_AUDIO_EXTERN_AO_DEV;
aio_attr->clk_share = 1;
aio_attr->i2s_type = HI_AIO_I2STYPE_EXTERN;
#endif
g_aio_resample = HI_FALSE;
/* config ao resample attr if needed */
if (g_aio_resample == HI_TRUE) {
/* ai 48k -> 32k */
g_out_sample_rate = HI_AUDIO_SAMPLE_RATE_32000;
/* ao 32k -> 48k */
g_in_sample_rate = HI_AUDIO_SAMPLE_RATE_32000;
} else {
g_in_sample_rate = HI_AUDIO_SAMPLE_RATE_BUTT;
g_out_sample_rate = HI_AUDIO_SAMPLE_RATE_BUTT;
}
/* resample and anr should be user get mode */
g_user_get_mode = (g_aio_resample == HI_TRUE) ? HI_TRUE : HI_FALSE;
}
二、运行sample_audio
将编译好的sample_audio拷贝进板端前,还需要确定自己所需要的动态库是否在板端存在,在mpp的lib目录下找到音频所需要的动态库,拷贝进板端,具体目录如下:
SS928V100_SDK_Vx.x.x.x/smp/a55_linux/mpp/out/lib
所需要的库,主要为libsecurec.so,若需要aac编解码,则还需要添加aac的动态库。
完成动态库的拷贝后,即可运行sample_audio的程序进行验证测试了。
- 分享
- 举报
-
浏览量:5489次2022-09-23 09:10:47
-
浏览量:6296次2022-09-16 15:39:40
-
浏览量:14070次2022-09-15 15:54:04
-
浏览量:5827次2022-09-19 14:17:36
-
浏览量:4904次2022-09-20 15:23:26
-
浏览量:5859次2022-09-21 14:30:18
-
浏览量:3730次2022-09-22 11:37:57
-
浏览量:2144次2022-12-13 16:59:00
-
浏览量:721次2023-09-09 13:40:42
-
浏览量:2243次2023-01-11 15:56:24
-
浏览量:1590次2022-12-13 17:11:14
-
浏览量:3922次2023-04-12 16:05:14
-
浏览量:10178次2022-11-10 18:07:40
-
浏览量:1617次2022-12-13 16:47:02
-
浏览量:6365次2022-11-10 14:33:49
-
浏览量:301次2024-09-13 17:34:13
-
浏览量:2687次2024-03-14 14:15:25
-
浏览量:1117次2024-06-06 10:17:20
-
浏览量:4439次2022-10-10 15:32:19
-
广告/SPAM
-
恶意灌水
-
违规内容
-
文不对题
-
重复发帖
Debug
感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明