biewutayi

biewutayi

0个粉丝

28

问答

0

专栏

8

资料

biewutayi  发布于  2018-11-09 09:08:20
采纳率 0%
28个问答
2801

HI_MPI_AENC_SendFrame里的AUDIO_FRAME_S结构体中的u32PhyAddr和u32PoolId字段怎么...

 
HI_MPI_AENC_SendFrame里的AUDIO_FRAME_S结构体中的u32PhyAddr和u32PoolId字段怎么填?我需要从其他地方,比如蓝牙耳机获取音频PCM数据,然后来编码,怎么构造AUDIO_FRAME_S这个结构体?高手指点下!
我来回答
回答1个
时间排序
认可量排序

celinessl

0个粉丝

3

问答

0

专栏

1

资料

celinessl 2019-01-15 17:27:08
认可1
我这是是海思3531 udp收到用户原始音频pcm,发往aenc编码,可以参考一下


        void Ai_proc(void )
        {
                HI_S32 s32Ret;
                AUDIO_FRAME_S stFrame2;
                char buf[1024];
                static int aits=0;
                unsigned char *pbuf;
                VB_BLK VbBlk;
    unsigned int u32PhyAddr;
    unsigned char *pVirAddr;
                VB_POOL vbpool;

                struct sockaddr peerAddr;
                bzero(&peerAddr, sizeof peerAddr);
                socklen_t addrLen = sizeof peerAddr;
                ssize_t nr = recvfrom(sock, buf, 1024, 0, &peerAddr, &addrLen);

                if ( nr <= 0 ) {
                        printf("recvfrom ret: %d\n", nr);
                        return;
                }

                stFrame2.u32Len=nr;
                stFrame2.enBitwidth=AUDIO_BIT_WIDTH_16;
                stFrame2.enSoundmode=AUDIO_SOUND_MODE_STEREO;//AUDIO_SOUND_MODE_MONO;
                stFrame2.u32Seq=1;
                stFrame2.u32PhyAddr[1]=0;
                stFrame2.u32PoolId[1]=0;
                stFrame2.u64TimeStamp = aits++;

    VbBlk = HI_MPI_VB_GetBlock(hPool, nr, NULL);
    if (VB_INVALID_HANDLE == VbBlk)
    {
        printf("HI_MPI_VB_GetBlock err! size:%d\n",nr);
        return ;
    }
    u32PhyAddr = HI_MPI_VB_Handle2PhysAddr(VbBlk);
    if (0 == u32PhyAddr)
    {
        printf("Func:%s, Info:HI_MPI_VB_Handle2PhysAddr fail\n", __FUNCTION__);
        HI_MPI_VB_ReleaseBlock(VbBlk);
        return;
    }
                stFrame2.u32PoolId[0]= HI_MPI_VB_Handle2PoolId(VbBlk);
    pVirAddr = (unsigned char *)HI_MPI_SYS_Mmap(u32PhyAddr,nr);
    if (NULL == pVirAddr)
    {
        printf("Func:%s, Info:HI_MPI_SYS_Mmap fail\n", __FUNCTION__);
        HI_MPI_VB_ReleaseBlock(VbBlk);
        return;
    }
                memcpy(pVirAddr,buf,nr);
                stFrame2.u32PhyAddr[0]= u32PhyAddr;
                stFrame2.pVirAddr[0] = pVirAddr;
                /*
                LOG_INFO << "ai2len=" <                         << ";bw=" <                         << ";bs=" <                         << ";sq=" <                         << ";pa0=" <                         << ";pa1=" <                         << ";po0=" <                         << ";po1=" <                         << ";ts0=" <                 */
                s32Ret = HI_MPI_AENC_SendFrame(0, &stFrame2, NULL);
                if (HI_SUCCESS != s32Ret )
                {
                        printf("%s: HI_MPI_AENC_SendFrame(0, 0), failed with %#x!\n",\
                       __FUNCTION__, s32Ret);
                        return ;
                }
                HI_MPI_SYS_Munmap(pVirAddr,nr);
                HI_MPI_VB_ReleaseBlock(VbBlk);
                HI_MPI_AI_ReleaseFrame(0,0,&stFrame2, NULL);

        }
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

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

Markdown 语法

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

举报类型

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

详细说明

易百纳技术社区