海思HI3520D解码RTP音频

 1 E币 
成为会员,免费下载资料
文件大小:4.03 MB 上传者:艾编程的鲁小班 时间:2018-12-01 13:04:59 下载量:12
本帖最后由 wfjdemmye 于 2018-12-21 01:09 编辑

一,解决问题的思路
        在遇到音频流的时候,不管是什么格式的音频数据(PCMA,PCMU,AAC,MP4,等,格式很多。)
        首先应该是了解音频格式的数据在RTSP或者文件中,或者在其它地方的格式。
        本文以在RTSP中为例子,解析出完整的过程。希望能偶然帮到一些同学。

二,海思支持的音频格式
        以HI3520D为例子:mpp提供了对G711,G726,ADPCM的音频格式支持。并且支持原始音频文件(LPCM)的播放和录制。
        那么针对RTSP出来的PCMA/PCMU/AAC/MP3都需要软解成原始音频格式(PCM)才能放到海思Mpp提供的接口中。
        程序的大概思路就是如此了。
三,RTP中获取音频数据
        以AAC为例子,通常aac有LATM和ADTS格式传输或者存储。RTP中是以LATM格式存在的,而一般的解码接口是以adts格式的数据解码的,所以需要一个包的重组。
        1,从RTP中获取SDP数据
        从RTSP的服务端出来SDP的信息解析
                (,wireshark设置好过滤规则,用VLC演示播放流程,获取交互的包)
[attach]10157[/attach]
[attach]10158[/attach]



        如上有用的字段:

通过VLC查看的编码信息与SDP获得的信息可能不一致,实际按SDP的信息来初始化AAC或者封装AAC成音频文件。
[attach]10159[/attach]


        如上关键数据是配置将LATM转化成ADTS的重要材料。


四,海思音频部分的接口解析与使用
        采样点数是解码之后输入到HI_S32 HI_MPI_ADEC_SendStream的数据的字节数据的1/2
        举例:PCM 8K 单通道配置
        typedef struct hiAIO_ATTR_S
{
AUDIO_SAMPLE_RATE_E enSamplerate;  /*sample rate*/     
AUDIO_BIT_WIDTH_E  enBitwidth; /*bitwidth*/
AIO_MODE_E enWorkmode; /*master or slave mode*/
AUDIO_SOUND_MODE_E enSoundmode;  /*momo or steror*/
HI_U32 u32EXFlag; /*expand 8bit to 16bit */
HI_U32 u32FrmNum; /*frame num in buffer*/
HI_U32 u32PtNumPerFrm; /*number of samples*/
HI_U32 u32ChnCnt;
HI_U32 u32ClkSel;
}AIO_ATTR_S
        u32PtNumPerFrm = 160;
        AUDIO_SOUND_MODE_E =momo ;

       
        PCM 16K 双通道 16bit
        u32PtNumPerFrm = 2048;
        AUDIO_SOUND_MODE_E =momo ;

        依次类推。。。


        当数据变大之后,音频解码器播放PCM可能出现间歇式阻塞的情况,
        这时间需要使用HI_MPI_ADEC_ClearChnBuf和HI_MPI_AO_ClearChnBuf及时去清空缓存。
[attach]9302[/attach]


[attach]9301[/attach]

[attach]9299[/attach]

展开
折叠
1624
评论
共 0 个
内容存在敏感词
    易百纳技术社区暂无数据
相关资料
关于作者
易百纳技术社区
艾编程的鲁小班
贡献资料 32
易百纳技术社区 我上传的资料
登录查看
我赚取的积分
登录查看
我赚取的收益
登录查看
上传资料 赚取积分兑换E币
易百纳技术社区
删除原因
广告/SPAM
恶意灌水
违规内容
文不对题
重复发帖
置顶时间设置
结束时间
举报反馈

举报类型

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

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-资料模块

审核失败

失败原因
备注
易百纳技术社区