sps硬件解码问题

最近在android系统上使用硬件编解码做视频通话,遇到个问题,记录一下。

系统:android4.0.3

硬件平台:全志A10硬件平台,mali-400 硬件加速模块

工作流程:从摄像头驱动通过ioctl不断取yuv数据,送给编码器,编码完成后udp发送给对方,对方收到编码数据后送给硬件解码器,解码后显示视频。

原因:硬件编码器只在第一帧编出来一个sps帧,之后就没有编sps了。测试发现有时候sps帧会网络传输失败,造成解码端收不到sps,然后一直解码不成功。

初步解决方案:编码端保存sps帧,间隔固定时间发送一次。

修改后发现问题:视频越来越慢,开始视频延迟只有1秒,越往后延迟越大,十分钟后延迟达到十秒以上!

debug:debug发现硬件解码器的问题,猜测可能是硬件解码器重复解码sps帧时,可能会清空之前的数据,重新初始化解码参数等,造成解码延迟。

最终方案:还是循环重发sps,但解码端只在需要的时候处理sps,否则丢掉。

你可能感兴趣的:(android,工作,网络,测试,平台)