ngswfx

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx  发布于  2017-11-24 11:33:30
采纳率 0%
55个问答
4444

海思音频解码[已解决-4楼答案]

 
本帖最后由 ngswfx 于 2017-11-24 12:38 编辑

对音频从来就比较恐惧,一致没敢碰,一直都是搞视频,现在有需求必须把音频搞出来,早在十年前,就折腾过一周左右时间的音频,那几个参数,由于低层理论搞不清楚,所以就不停修改,试了好多回,采样率,bitwidth,单双通道,编码方式,虽然最后搞定了,但在内心深处有了阴影,呵呵。

按照我的感觉,要出声不难,声音正确可不容易,目前就卡在这个声音不正确上了,也不知道是rtsp获取的声音数据异常,还是解码配置异常,还是VO参数配置异常。

目前3520D和3536都是这个声音,一模一样,配置为8Ksamplerate,就哒哒哒,改改配置,倒是不断断续续了,但音尖,感觉像是快放了一样

////////////////////可能层面1
先说音频来源部分:DH IPC  配置主次码流都是G711A  8K,这个IPC肯定是单声道,这个应该没啥疑问了,都是最基本的711。


////////////////rtsp得到音频数据:可能层面2,这里没检查rtp包的通道,只要发现是音频,都注入过来了,前端不可能发来2个通道音频吧?
INPUT Audio:0320   :41 44 42 4e 4a 75 75 77 74 4f 4d 49 75 49 41 45 45 45 5e 52 52 51 d4 db c5 dc d0 d2 dc d3 d7 d6 d0 d0 d6 d3 db c0  
INPUT Audio:0320   :63 60 60 64 78 7f 7c 7d 7d 72 78 7a 65 64 65 7f 72 7d 73 76 77 76 77 75 74 77 71 73 72 70 70 74 49 47 5e 5e 5b 47  
INPUT Audio:0320   :64 64 64 7b 79 7f 7f 7d 70 71 73 71 74 75 71 7d 7c 72 70 72 73 75 4f 40 47 5b 5e 5a 41 43 44 41 46 5a 5b 5e 52 5e  
INPUT Audio:0320   :64 65 7b 7b 7a 79 7e 7f 79 78 78 78 7a 7b 7e 7d 72 72 7e 79 7e 7c 7f 7e 7d 76 71 76 71 70 70 7d 7e 7e 7f 7d 7c 7f  
INPUT Audio:0320   :5e 5d 56 51 52 56 5c 44 46 45 45 44 45 45 5e 44 43 4b 74 75 4b 74 74 74 48 4b 4b 49 49 75 77 71 70 73 71 72 72 7d  
INPUT Audio:0320   :f2 f3 f3 f2 ff fe f9 f9 f9 fe fc f3 f7 f7 f4 f7 f5 c8 cf c2 c1 c1 c1 c0 c2 c3 c4 c1 c2 ce c9 c9 c9 c8 c0 d9 de de  
INPUT Audio:0320   :ef ef ec ec ed e3 e0 e0 e0 e0 e1 e7 e7 e7 e4 fa fa fa e5 e4 e5 e5 e5 e5 ff f3 f3 f6 f5 cd c3 cc f5 f5 ca cb cb cf  
INPUT Audio:0320   :f5 ce f4 f0 f2 fc f9 e5 e7 e4 e5 e5 f8 f9 fe ff ff f9 fb e5 e1 e2 e0 e6 e6 e1 e1 e7 e5 f9 fe fc f3 f0 f0 fc fe f9  
INPUT Audio:0320   :cd c8 c8 c9 cf cf cb f4 f7 f2 f8 e5 e4 e4 e7 e4 e4 e4 e5 e4 e4 e7 e6 e0 e3 e3 e0 e0 e3 e0 e0 e0 e1 e6 e6 e6 e6 e6  
INPUT Audio:0320   :4f 48 4c 47 5a 59 5f 50 54 d6 d6 d5 d7 d0 c4 c6 c3 ca f4 f6 f7 f1 f3 f2 f9 fa e4 e7 e7 e4 fb ff f2 f0 f3 f3 f8 e7  
INPUT Audio:0320   :7a 78 7e 7b 7a 65 7a 7b 7a 65 64 65 65 7a 7b 78 7f 7d 73 73 71 74 74 75 4b 75 4a 4a 4e 4c 43 46 5a 46 5a 5f 57 d5  
INPUT Audio:0320   :7d 73 73 70 73 73 73 71 71 71 74 4b 4e 48 4b 4b 49 49 4d 43 47 5b 5f 52 5d 5d 59 47 4f 42 47 58 5e 56 d0 dc dd d1  
INPUT Audio:0320   :75 77 76 71 70 76 72 7d 70 77 71 76 70 71 77 70 72 72 71 71 76 70 77 75 74 71 73 72 7c 7e 7b 7b 65 7a 65 65 65 64  
INPUT Audio:0320   :74 48 48 42 4c 4a 77 71 73 7d 72 7d 7c 7d 73 72 7f 7d 71 71 76 76 75 77 71 70 70 77 77 71 73 72 70 70 7c 79 7b 7a  
INPUT Audio:0320   :53 5f 51 d4 dd df db c3 ce ca ce c8 f5 f4 cb ce c8 ca f5 f4 f5 ca c8 cd c3 ce f7 f7 f4 f5 f5 f4 f5 ca f6 f6 f6 f6  
INPUT Audio:0320   :f7 f6 f4 ca c9 f5 f5 ca c8 c9 f5 f7 cf ce f1 f1 f6 f0 f2 f3 f0 f3 f7 f5 ff fb e5 e4 e0 e1 e6 f8 fd f1 ca ce ce f5  

////////可能层面3///输出为了方便,还没搞0输出通道,直接用的HDMI 的1通道,以下为源码,bSupportAudioOut全局变量,true,会开启hdmi音频输出硬件
//不知道这里面配置是否合适,3536的芯片,stAttr.enSampleRate好像必须弄成32000,HI_HDMI_SAMPLE_RATE_32K,否则开启不成功,3520D芯片这里用的是8K

HI_HDMI_ATTR_S      stAttr;
    HI_HDMI_VIDEO_FMT_E enVideoFmt;
    HI_HDMI_EDID_S stEdidData;
    /////////////////////////////////////////////////////
    IVHI_VO_HdmiConvertSync(enIntfSync, &enVideoFmt);
    HI_MPI_HDMI_Init();
    HI_MPI_HDMI_Open(HI_HDMI_ID_0);
    HI_MPI_HDMI_Force_GetEDID(HI_HDMI_ID_0,&stEdidData);
    HI_MPI_HDMI_GetAttr(HI_HDMI_ID_0, &stAttr);
    ////////////////////////////////////////////////////
    stAttr.bEnableHdmi = HI_TRUE;
    stAttr.bEnableVideo = HI_TRUE;
    stAttr.enVideoFmt = enVideoFmt;
    stAttr.enVidOutMode = HI_HDMI_VIDEO_MODE_YCBCR444;
    stAttr.enDeepColorMode = HI_HDMI_DEEP_COLOR_OFF;
    stAttr.bxvYCCMode = HI_FALSE;
    stAttr.enDefaultMode = HI_HDMI_FORCE_HDMI;
    stAttr.bEnableAudio = HI_FALSE;
    stAttr.enSoundIntf = HI_HDMI_SND_INTERFACE_I2S;
    stAttr.bIsMultiChannel = HI_FALSE;
    stAttr.enBitDepth = HI_HDMI_BIT_DEPTH_16;
    stAttr.bEnableAviInfoFrame = HI_TRUE;
    stAttr.bEnableAudInfoFrame = HI_TRUE;
    stAttr.bEnableSpdInfoFrame = HI_FALSE;
    stAttr.bEnableMpegInfoFrame = HI_FALSE;
    stAttr.bDebugFlag = HI_FALSE;
    stAttr.bHDCPEnable = HI_FALSE;
    stAttr.b3DEnable = HI_FALSE;

    if(bSupportAudioOut){
                printf("HDMI bSupportAudioOut:%d.\n",bSupportAudioOut);
                stAttr.bEnableAudio = HI_TRUE;        /**< 是否Enable音频 */
                //HI_HDMI_SND_INTERFACE_SPDIF
                stAttr.enSoundIntf = HI_HDMI_SND_INTERFACE_I2S;
                //stAttr.enSampleRate = pstAioAttr->enSamplerate;        /**< PCM音频采样率,此参数需要与AO的配置保持一致 */
                stAttr.enSampleRate = (HI_HDMI_SAMPLE_RATE_E)AUDIO_SAMPLE_RATE_32000;
                stAttr.u8DownSampleParm = HI_FALSE;    /**< PCM音频向下downsample采样率的参数,默认为0 */
                //stAttr.enBitDepth = 8 * (pstAioAttr->enBitwidth+1);   /**< 音频位宽,默认为16,此参数需要与AO的配置保持一致 */
                stAttr.enBitDepth =HI_HDMI_BIT_DEPTH_16;//(HI_HDMI_BIT_DEPTH_E)( 8*(AUDIO_BIT_WIDTH_16+1));
                stAttr.u8I2SCtlVbit = 0;        /**< 保留,请配置为0, I2S control (0x7A:0x1D) */
                stAttr.bEnableAviInfoFrame = HI_TRUE; /**< 是否使能 AVI InfoFrame,建议使能 */
                stAttr.bEnableAudInfoFrame = HI_TRUE; /**< 是否使能 AUDIO InfoFrame,建议使能 */
                stAttr.bIsMultiChannel =HI_FALSE;// HI_TRUE;
   }

    HI_MPI_HDMI_SetAttr(HI_HDMI_ID_0, &stAttr);
    HI_MPI_HDMI_Start(HI_HDMI_ID_0);
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
可能层面4:
/////////////////////////////////////下面代码是初始化芯片时完成的,因为声音输出通道就1-2个,比较少,没有动态开启关闭了///////////////////////////////////////
//这里就开启了声音输出,开启AUDIO_BIT_WIDTH_8代码日志提示不成功,目前只能设置为AUDIO_BIT_WIDTH_16
//pstAioAttr.enSamplerate = AUDIO_SAMPLE_RATE_16000,配置为AUDIO_SAMPLE_RATE_8000也不行,声音也不正常,如果不用HI_MPI_AO_EnableReSmp,感觉还稍微正常点,用了就容易哒哒哒,由于HDMI那里是32K,这里我的理解,就是主动把采样率转换为32K了,所以这么配置的

        if(bSupportAudioOut){
                //IVHI_Tlv320_CfgAudio(AIO_MODE_I2S_SLAVE, AUDIO_SAMPLE_RATE_8000);
                int AoDevId=SAMPLE_AUDIO_HDMI_AO_DEV;//HDMI 音频输出为1
                 AIO_ATTR_S pstAioAttr;
                 memset(&pstAioAttr,0,sizeof (AIO_ATTR_S));
                 HI_MPI_AO_Disable(AoDevId);


                 /*s32Ret = HI_MPI_AO_GetPubAttr(AoDevId, &pstAioAttr);
                 printf("HI_MPI_AO_GetPubAttr s32Ret:%x!\n",s32Ret);
                 if(HI_SUCCESS == s32Ret){
                         printf("pstAioAttr.u32ChnCnt :%d\n",pstAioAttr.u32ChnCnt );
                         printf("pstAioAttr.enBitwidth :%d \n",pstAioAttr.enBitwidth );
                 }*/
                 //AOP1 在芯片内部实现和 HDMI 对接,对接方式只支持 I 2 S 主模式
                pstAioAttr.enSamplerate = AUDIO_SAMPLE_RATE_16000;//AUDIO_SAMPLE_RATE_32000;//AUDIO_SAMPLE_RATE_8000 AUDIO_SAMPLE_RATE_8000
                 pstAioAttr.enBitwidth = AUDIO_BIT_WIDTH_16;
                 pstAioAttr.enWorkmode = AIO_MODE_I2S_MASTER;//AIO_MODE_I2S_MASTER;//AIO_MODE_I2S_SLAVE
                pstAioAttr.enSoundmode = AUDIO_SOUND_MODE_MONO; //AUDIO_SOUND_MODE_MONO AUDIO_SOUND_MODE_STEREO
                 pstAioAttr.u32EXFlag =0;//1;
                 pstAioAttr.u32FrmNum = 30;
                pstAioAttr.u32PtNumPerFrm =SAMPLE_AUDIO_PTNUMPERFRM;// SAMPLE_AUDIO_PTNUMPERFRM; //320
                 pstAioAttr.u32ChnCnt =1;
                 pstAioAttr.u32ClkChnCnt   = 2;
                 pstAioAttr.u32ClkSel = 0;
                 /////////////////////////////////
                 AUDIO_RESAMPLE_ATTR_S stAoReSampleAttr;
                 /* ao 8k -> 32k */
                 stAoReSampleAttr.u32InPointNum =320;// SAMPLE_AUDIO_PTNUMPERFRM;
                 stAoReSampleAttr.enInSampleRate = pstAioAttr.enSamplerate;
                stAoReSampleAttr.enOutSampleRate = AUDIO_SAMPLE_RATE_32000;
                 AUDIO_RESAMPLE_ATTR_S *pstAoReSmpAttr=&stAoReSampleAttr;
                ///////////////////////////////////////////////////////////

                 s32Ret = IVHI_INNER_CODEC_CfgAudio(pstAioAttr.enSamplerate);
                if (HI_SUCCESS != s32Ret)
                {
                        printf("%s:SAMPLE_INNER_CODEC_CfgAudio failed\n", __FUNCTION__);
                        return s32Ret;
                }
                ///////////////////////////////////////////////////////////////////////////////
                 s32Ret = HI_MPI_AO_SetPubAttr(AoDevId, &pstAioAttr);
                 printf("HI_MPI_AO_SetPubAttr s32Ret:%x!\n",s32Ret);
                if(HI_SUCCESS != s32Ret)
                {
                        printf("%s: HI_MPI_AO_SetPubAttr(%d) failed with %#x!\n", __FUNCTION__, AoDevId,s32Ret);
                }
                s32Ret = HI_MPI_AO_Enable(AoDevId);
                printf("HI_MPI_AO_Enable s32Ret:%x!\n",s32Ret);
                if(HI_SUCCESS != s32Ret)
                {
                        printf("%s: HI_MPI_AO_Enable(%d) failed with %#x!\n", __FUNCTION__,AoDevId, s32Ret);
                }
                for (i=0; i                         int AoChn=i;
                        s32Ret = HI_MPI_AO_EnableChn(AoDevId, AoChn);
                        printf("HI_MPI_AO_EnableChn:%d s32Ret:%x!\n",i,s32Ret);
                        if(HI_SUCCESS != s32Ret){
                                printf("%s: HI_MPI_AO_EnableChn(%d) failed with %#x!\n", __FUNCTION__, AoChn, s32Ret);
                                break;
                        }
                        if (NULL != pstAoReSmpAttr)
                        {
                                s32Ret = HI_MPI_AO_DisableReSmp(AoDevId, AoChn);
                                s32Ret |= HI_MPI_AO_EnableReSmp(AoDevId, AoChn,stAoReSampleAttr.enOutSampleRate);
                                if(HI_SUCCESS != s32Ret)
                                {
                                        printf("%s: HI_MPI_AO_EnableReSmp(%d,%d) failed with %#x!\n", __FUNCTION__, AoDevId, AoChn, s32Ret);
                                        break;
                                }
                        }
                }
                HI_S32 s32VolumeDb=3;//取值范围:[-81, 6],单位:dB
                HI_MPI_AO_SetVolume(AoDevId,s32VolumeDb);
        }
///////////////////////////////////////////////////////////////////////////////////////////////////
可能层面5:解码部分,先打开音频解码器  nAudioType=PT_G711A,这个应该没啥疑问,里面的决定因素也不多,没啥参数可调整的

///////////////////////////////////////////////
        gs_DecParam[AuChn].nAudioType=nAudioType;
        HI_S32 s32Ret;
        ADEC_CHN_ATTR_S stAdecAttr;
        stAdecAttr.enType = (PAYLOAD_TYPE_E)nAudioType;
        stAdecAttr.u32BufSize = 20;
        stAdecAttr.enMode = ADEC_MODE_PACK;//ADEC_MODE_STREAM ADEC_MODE_PACK
        if (PT_ADPCMA == stAdecAttr.enType)
        {
                ADEC_ATTR_ADPCM_S stAdpcm;
                stAdecAttr.pValue = &stAdpcm;
                stAdpcm.enADPCMType = ADPCM_TYPE_DVI4 ;
        }
        else if (PT_G711A == stAdecAttr.enType || PT_G711U == stAdecAttr.enType)
        {
                ADEC_ATTR_G711_S stAdecG711;
                stAdecAttr.pValue = &stAdecG711;
        }
        else if (PT_G726 == stAdecAttr.enType)
        {
                ADEC_ATTR_G726_S stAdecG726;
                stAdecAttr.pValue = &stAdecG726;
                stAdecG726.enG726bps = MEDIA_G726_40K ;
        }
        else if (PT_LPCM == stAdecAttr.enType)
        {
                ADEC_ATTR_LPCM_S stAdecLpcm;
                stAdecAttr.pValue = &stAdecLpcm;
                stAdecAttr.enMode = ADEC_MODE_PACK;/* lpcm must use pack mode */
        }
        else
        {
                printf("%s: invalid aenc payload type:%d\n", __FUNCTION__, stAdecAttr.enType);
                return HI_FAILURE;
        }
        /* create adec chn*/
        s32Ret = HI_MPI_ADEC_CreateChn(AuChn, &stAdecAttr);
        if (s32Ret)
        {
                printf("%s: HI_MPI_ADEC_CreateChn(%d) failed with %#x!\n", __FUNCTION__,AuChn,s32Ret);
                return s32Ret;
        }
        //////////////////////////////////////////////////////
        int AoDev=1;//HDMI 输出音频输出通道为1
        int AoChn=AuChn;
        int AdChn=AuChn;
        MPP_CHN_S stSrcChn,stDestChn;
        stSrcChn.enModId = HI_ID_ADEC;
        stSrcChn.s32DevId = 0;
        stSrcChn.s32ChnId = AdChn;
        stDestChn.enModId = HI_ID_AO;
        stDestChn.s32DevId = AoDev;
        stDestChn.s32ChnId = AoChn;
        s32Ret = HI_MPI_SYS_Bind(&stSrcChn, &stDestChn);

        printf("%s: HI_MPI_ADEC_CreateChn(%d) with %#x!\n", __FUNCTION__,AuChn,s32Ret);
        gs_DecParam[AuChn].bAudioInited=true;
//////////////////////////////////////////////////////////////////////

可能层面6:数据送入解码器,其中Audio_seq全局变量,每个包320都增加1



        int AuChn=0;
        char buffAudio[1024];
        memset(buffAudio,0,sizeof buffAudio);
        if(nLen>=1000)
                return false;
        buffAudio[0]=0x0;
        buffAudio[1]=0x1;
        buffAudio[2]=nLen/2;
        buffAudio[3]=0x0;
        memcpy(buffAudio+4,buffin,nLen);


        int nAudioType=PT_G711A;//PT_G711A; //PT_G711A  PT_ADPCMA PT_G711U
        if(!gs_DecParam[AuChn].bAudioInited)
                IVHI_HDEC_OpenAudioDecChl(AuChn,nAudioType);
        if(!gs_DecParam[AuChn].bAudioInited){
                printf("%s: IVHI_HDEC_OpenAudioDecChl(%d) bAudioInited=false\n", __FUNCTION__, AuChn);
                return false;
        }
        AUDIO_STREAM_S stAudioStream;
        stAudioStream.u64TimeStamp=u64pts;
        Audio_seq++;
        stAudioStream.u32Seq=Audio_seq;
        stAudioStream.pStream =(unsigned char*)buffAudio;
        HI_S32 s32Ret;
        stAudioStream.u32Len = nLen+4;
        s32Ret = HI_MPI_ADEC_SendStream(AuChn, &stAudioStream, HI_TRUE); //HI_TRUE 阻塞 HI_FALSE 非阻塞
        if (s32Ret!=HI_SUCCESS)
        {
                printf("%s: HI_MPI_ADEC_SendStream(%d) failed with %#x!\n", __FUNCTION__, AuChn, s32Ret);
                return false;
        }

///////////////////////////////////////////////////////////////////////////////


///////////////////////////////////问题现象,目前整体代码均无报错,没有提示哪个函数运行返回异常,目前就是声音出来后,音比较尖

我尝试调整过的代码部分是红色的部分,对于这种G711A 8K,不知道哪些参数对其有影响















我来回答
回答12个
时间排序
认可量排序

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-11-24 11:50:02
认可0
嗒嗒嗒是由于只开了一个Ao channel, 而HDMI是双声道, 另外一个声道没有输入导致

试一下
        HI_MPI_AO_EnableChn(AoDevId, 0);
        HI_MPI_AO_EnableChn(AoDevId, 1);
        HI_MPI_AO_DisableChn(AoDevId, 1);
即打开后关掉一个Ao channel, 这里关掉是没有送声音的通道

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2017-11-24 11:53:37
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=81180&ptid=38291]zhuangweiye 发表于 2017-11-24 11:50[/url]
嗒嗒嗒是由于只开了一个Ao channel, 而HDMI是双声道, 另外一个声道没有输入导致

试一下
[/quote]

好的,我试试,不行我就往2个通道都送相同数据进去试试

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2017-11-24 12:35:04
认可0
本帖最后由 ngswfx 于 2017-11-24 15:17 编辑

//////////////参数设置反了

-----AO DEV ATTR---------------------------------------------------------------------------------------------------------
AoDev WorkMod   SampR  BitWid  ChnCnt  ClkCnt  ClkSel SoundMod  PoiNum  ExFlag  FrmNum
    1 i2s_mas    8kHZ   16bit       2       2       0     mono     320       1      30

-----AO DEV STATUS-------------------------------------------------------------------------------------------------------
AoDev TranLen     CBPhy  CBSize   ROffSet   WOffSet
    1    1280  56c84000    5120         0       500

-----AO DEV EXTEND STATUS------------------------------------------------------------------------------------------------
AoDev enTrack   bMute  Volume
    1       0       0       3

-----AO CHN STATUS-------------------------------------------------------------------------------------------------------
AoDev   AoChn   State    Read   Write      BufEmp  u32Data0  u32Data1  bResmp  PoiNum InSampR  OutSampR
    1       0  enable       0       0         835         0         0  enable     320   32kHZ      8kHZ
    1       1  enable      27      27         774   17a0211  fefc004f  enable     320   32kHZ      8kHZ


问题就出在这里了,对于那个resample理解的到没问题,主要是:既然HDMI要32K的,我创建的AO dev也必须是32K的,然后由于音源是8K的,所以必须让音源往32K转换,这里的参数弄反了:
pstAioAttr.enSamplerate = AUDIO_SAMPLE_RATE_32000;//这里必须是32K
HI_MPI_AO_SetPubAttr(AoDevId, &pstAioAttr);

//这里必须是8K,
HI_MPI_AO_EnableReSmp(AoDevId, AoChn, AUDIO_SAMPLE_RATE_8000);

///////////////老想着音源是8K,创建一个8K的AO,然后resample到32,其实是创建一个32K AO,在输出前从8K resample到32K,再AO







//////////////////////////////////////////////////////////////////////////////////上面的是3536,以下3520D配置方法,函数稍有区别
int AoDevId=1;//HDMI 音频输出为1
                 AIO_ATTR_S pstAioAttr;
                 memset(&pstAioAttr,0,sizeof (AIO_ATTR_S));
                 HI_MPI_AO_Disable(AoDevId);
                 //AOP1 在芯片内部实现和 HDMI 对接,对接方式只支持 I 2 S 主模式
                 pstAioAttr.enSamplerate = AUDIO_SAMPLE_RATE_32000;//AUDIO_SAMPLE_RATE_8000 AUDIO_SAMPLE_RATE_8000
                 pstAioAttr.enBitwidth =(AUDIO_BIT_WIDTH_E)AUDIO_BIT_WIDTH_16;// AUDIO_BIT_WIDTH_16;
                 pstAioAttr.enWorkmode =AIO_MODE_I2S_MASTER;// AIO_MODE_I2S_MASTER;//AIO_MODE_I2S_SLAVE
                 pstAioAttr.enSoundmode = AUDIO_SOUND_MODE_MONO; //AUDIO_SOUND_MODE_MONO AUDIO_SOUND_MODE_STEREO
                 pstAioAttr.u32EXFlag = 0;
                 pstAioAttr.u32FrmNum = 30;
                 pstAioAttr.u32PtNumPerFrm = SAMPLE_AUDIO_PTNUMPERFRM*4; //320*4,这里注意和重采样之间的关系
                 pstAioAttr.u32ChnCnt =2;//hdmi有2个通道 必须为2
                 pstAioAttr.u32ClkSel = 0;

                 /////////////////////////////////
                 AUDIO_RESAMPLE_ATTR_S stAoReSampleAttr;
                 /* ao 8k -> 32k */
                stAoReSampleAttr.u32InPointNum = SAMPLE_AUDIO_PTNUMPERFRM;
                 stAoReSampleAttr.enInSampleRate = AUDIO_SAMPLE_RATE_8000;
                 stAoReSampleAttr.enReSampleType = AUDIO_RESAMPLE_1X4;

                 AUDIO_RESAMPLE_ATTR_S *pstAoReSmpAttr=&stAoReSampleAttr;






zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-11-24 12:38:44
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=81185&ptid=38291]ngswfx 发表于 2017-11-24 12:35[/url]
-----AO DEV ATTR------------------------------------------------------------------------------------ ...[/quote]

这个我也是用耳机听后才发现一个声音正常, 另一个嗒嗒声, 而后送双声道是好的, 而后想到disable一个

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2017-11-24 12:47:10
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=81186&ptid=38291]zhuangweiye 发表于 2017-11-24 12:38[/url]
这个我也是用耳机听后才发现一个声音正常, 另一个嗒嗒声, 而后送双声道是好的, 而后想到disable一个[/quote]

大侠稍微提点一下,我就把那几个mono单通道之类的调整到位了,以及2个通道号,然后开启了针对AO=1的2个通道,然后就离胜利不远了,呵呵

zxf_meian

0个粉丝

3

问答

0

专栏

0

资料

zxf_meian 2017-11-24 17:00:10
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=81180&ptid=38291]zhuangweiye 发表于 2017-11-24 11:50[/url]
嗒嗒嗒是由于只开了一个Ao channel, 而HDMI是双声道, 另外一个声道没有输入导致

试一下
[/quote]

请问下运行3518ev200的sample_venc,在tmp下生成了stream_chn0.h264 文件,上传到电脑上用暴风影音播放出现了如图的画面,为什么啊?参数检查过两遍了

zhuangweiye

8个粉丝

0

问答

0

专栏

0

资料

zhuangweiye 2017-11-24 17:05:24
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=81206&ptid=38291]zxf_meian 发表于 2017-11-24 17:00[/url]
请问下运行3518ev200的sample_venc,在tmp下生成了stream_chn0.h264 文件,上传到电脑上用暴风影音播放出 ...[/quote]

先从源头分析, 即看输入图像是否正确

zxf_meian

0个粉丝

3

问答

0

专栏

0

资料

zxf_meian 2017-11-24 17:10:27
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=81208&ptid=38291]zhuangweiye 发表于 2017-11-24 17:05[/url]
先从源头分析, 即看输入图像是否正确[/quote]

摄像头不断换位置,甚至全部遮住摄像头,得到的结果一样

zxf_meian

0个粉丝

3

问答

0

专栏

0

资料

zxf_meian 2017-11-24 17:12:18
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=81208&ptid=38291]zhuangweiye 发表于 2017-11-24 17:05[/url]
先从源头分析, 即看输入图像是否正确[/quote]

proc里面的各文件也没有任何的信息

出手无招

0个粉丝

12

问答

0

专栏

0

资料

出手无招 2018-04-23 10:49:45
认可0
想问下楼主, 关于音频卡顿问题,有什么想法和思路没有

刘胜126

0个粉丝

18

问答

0

专栏

0

资料

刘胜126 2018-04-24 16:10:26
认可0
有调试过海思VQE没

hero

0个粉丝

1

问答

0

专栏

0

资料

hero 2017-11-24 17:21:51
认可0
:):):):):):):):):):):):):)
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区