gangan

gangan

0个粉丝

9

问答

0

专栏

0

资料

gangan  发布于  2017-08-23 18:22:06
采纳率 0%
9个问答
3720

关于hi3520d audio 的问题

 
运行sample_audio 先保存音频文件,然后在运行sample_audio播放这个音频文件,全是噪音,感觉是播放的声音慢了好几倍,听不出原声了。其他的没改,就是我用cool edit pro 播放这个文件,设成单声道,48000采样率是可以播放正常的。不知道什么原因
下面是我的设置
ai就直接使用默认设置,这个我比较郁闷,为什么要48000采样率才是正常的,这里的采样率明明是8000 双通道,不过说明采样还是成功的
    /* init stAio. all of cases will use it */
    stAioAttr.enSamplerate = AUDIO_SAMPLE_RATE_8000;
    stAioAttr.enBitwidth = AUDIO_BIT_WIDTH_16;
    stAioAttr.enWorkmode = AIO_MODE_I2S_SLAVE;
    stAioAttr.enSoundmode = AUDIO_SOUND_MODE_MONO;
    stAioAttr.u32EXFlag = 1;
    stAioAttr.u32FrmNum = 30;
    stAioAttr.u32PtNumPerFrm = SAMPLE_AUDIO_PTNUMPERFRM;
    stAioAttr.u32ChnCnt = 2;
    stAioAttr.u32ClkSel = 0;
下面是我ao的设置,因为我用的是HDMI输出,所以有点小改动,hdmi是运行正常了,但是声音变得好慢好慢,
HI_S32 SAMPLE_AUDIO_AdecAo(AIO_ATTR_S *pstAioAttr)
{
    HI_S32      s32Ret;
    AUDIO_DEV   AoDev = SAMPLE_AUDIO_HDMI_AO_DEV;
    AO_CHN      AoChn = 1;
    ADEC_CHN    AdChn = 0;
    FILE        *pfd = NULL;
    AUDIO_RESAMPLE_ATTR_S stAoReSampleAttr;
    AIO_ATTR_S stHdmiAoAttr;
gs_pstAiReSmpAttr = NULL;
               
                /* ao 8k -> 48k */
                stAoReSampleAttr.u32InPointNum = SAMPLE_AUDIO_PTNUMPERFRM;
                stAoReSampleAttr.enInSampleRate = AUDIO_SAMPLE_RATE_8000;
                stAoReSampleAttr.enReSampleType = AUDIO_RESAMPLE_1X4;
                gs_pstAoReSmpAttr = &stAoReSampleAttr;
               
                memcpy(&stHdmiAoAttr, pstAioAttr, sizeof(AIO_ATTR_S));
                stHdmiAoAttr.enBitwidth = AUDIO_BIT_WIDTH_16;
                stHdmiAoAttr.enSamplerate = AUDIO_SAMPLE_RATE_32000;
                stHdmiAoAttr.u32PtNumPerFrm = pstAioAttr->u32PtNumPerFrm * 4;
                stHdmiAoAttr.enWorkmode = AIO_MODE_I2S_MASTER;
                stHdmiAoAttr.u32ChnCnt = 2;


    if (NULL == pstAioAttr)
    {
        printf("[Func]:%s [Line]:%d [Info]:%s\n", __FUNCTION__, __LINE__, "NULL pointer");
        return HI_FAILURE;
    }

    s32Ret = SAMPLE_COMM_AUDIO_CfgAcodec(pstAioAttr, gs_bMicIn);
    if (HI_SUCCESS != s32Ret)
    {
        SAMPLE_DBG(s32Ret);
        return HI_FAILURE;
    }
   
    s32Ret = SAMPLE_COMM_AUDIO_StartAdec(AdChn, gs_enPayloadType);
    if (s32Ret != HI_SUCCESS)
    {
        SAMPLE_DBG(s32Ret);
        return HI_FAILURE;
    }

    s32Ret = SAMPLE_COMM_AUDIO_StartAo(AoDev, AoChn, &stHdmiAoAttr, gs_pstAoReSmpAttr);
    if (s32Ret != HI_SUCCESS)
    {
        SAMPLE_DBG(s32Ret);
        return HI_FAILURE;
    }

    s32Ret = SAMPLE_COMM_AUDIO_AoBindAdec(AoDev, AoChn, AdChn);
    if (s32Ret != HI_SUCCESS)
    {
        SAMPLE_DBG(s32Ret);
        return HI_FAILURE;
    }

    pfd = SAMPLE_AUDIO_OpenAdecFile(AdChn, gs_enPayloadType);
    if (!pfd)
    {
        SAMPLE_DBG(HI_FAILURE);
        return HI_FAILURE;
    }
    s32Ret = SAMPLE_COMM_AUDIO_CreatTrdFileAdec(AdChn, pfd);
    if (s32Ret != HI_SUCCESS)
    {
        SAMPLE_DBG(s32Ret);
        return HI_FAILURE;
    }
   
    printf("bind adec:%d to ao(%d,%d) ok \n", AdChn, AoDev, AoChn);

    printf("\nplease press twice ENTER to exit this sample\n");
    getchar();
    getchar();

    SAMPLE_COMM_AUDIO_DestoryTrdFileAdec(AdChn);
    SAMPLE_COMM_AUDIO_StopAo(AoDev, AoChn, gs_bAioReSample);
    SAMPLE_COMM_AUDIO_StopAdec(AdChn);
    SAMPLE_COMM_AUDIO_AoUnbindAdec(AoDev, AoChn, AdChn);
   
    return HI_SUCCESS;
}
我来回答
回答0个
时间排序
认可量排序
易百纳技术社区暂无数据
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
相关问答
无更多相似问答 去提问
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区