首页专栏详情
打赏
关于SS928评估板学习(八):Demo应用(Audio)
关于SS928评估板学习(八):Demo应用(Audio)
易百纳技术社区 Debug 2022-09-26 09:49:49

一、交叉编译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的程序进行验证测试了。

1223
收藏
点赞
打赏
给作者打赏,鼓励他抓紧创作吧~
评论
0个
内容存在敏感词
相关专栏
打赏作者
易百纳技术社区
Debug
您的支持将鼓励我继续创作!
打赏金额:
¥1 易百纳技术社区
¥5 易百纳技术社区
¥10 易百纳技术社区
¥50 易百纳技术社区
¥100 易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区 微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

审核成功

发布时间设置
发布时间:

审核失败

失败原因
备注
Loading...
易百纳技术社区
确定要删除此文章、专栏、评论吗?
确定
取消
易百纳技术社区
易百纳技术社区
在专栏模块发布专栏,可获得其他E友的打赏
易百纳技术社区
回答悬赏问答,被题主采纳后即可获得悬赏金
易百纳技术社区
在上传资料时,有价值的资料可设置为付费资源
易百纳技术社区
达到一定金额,收益即可提现~
收益也可用来充值ebc,下载资料、兑换礼品更容易
易百纳技术社区
活动规则
  • 1.周任务为周期性任务,每周周一00:00刷新,上周完成的任务不会累计到本周,本周需要从头开始任务,当前任务完成后才可以完成下一个任务
  • 2.发布的专栏与资料需要与平台的板块有相关性,禁止注水,专栏/资料任务以审核通过的篇数为准
  • 3.任务完成后,现金奖励直接打款到微信账户;EBC/收益将自动发放到个人账户,可前往“我的钱包”查看;其他奖励请联系客服兑换
  • 4.每周最后三个任务将会有以下奖品掉落:社区热卖开发板、小米音响、视频年度会员、京东卡、华为手机等等
易百纳技术社区
升级提醒
易百纳技术社区

恭喜您由入门

社区送出礼品一份

请填写您的收件地址,礼品将在3个工作日寄出

易百纳技术社区