一、交叉编译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的程序进行验证测试了。
免责声明:文章内容来自互联网,本站不对其真实性负责,也不承担任何法律责任,如有侵权等情况,请与本站联系删除。
转载请注明出处:关于SS928评估板学习(八):Demo应用(Audio)-关于ssl协议的说法错误 https://www.yhzz.com.cn/a/9804.html