海思Hi3519A 进行4k60 h264编码帧率不足的问题

目录:

原始引用地址: 海思Hi3519A 进行4k60 h264编码帧率不足的问题
time: 2020.5.20 12:34:00

hi3519A进行4k60 h264编码时编码不足

​ 使用英码的开发板,信号源lt6911,可以接收4k 60的hdmi信号 ,不过这个输入是通过两个mipi接口输入的,里面需要拼接,用的avs的例子,这也为之后编码埋了坑。

​ 领导让调研4k_60 d1_60 cif_60的编码效果,程序很快改好了,但是测试时,发现h264编码60帧时,总是帧率不足,尝试更改编码器参数,增大vb空间,及时取出编码后数据,甚至不把编码后数据写文件。。。问题依旧。仍然只能编码52或53帧。

运行cat /proc/umap/venc有如下显示:

帧率不足时venc 编码器状态

帧率不足时venc 编码器状态

从上图中,结合《himpp v4.0媒体处理软件开发参考》,给人的感觉就是h264编码器编码能力不足了。一秒编码52或53帧,并有上面的截图中有"busy"和"full",这些关键记事,给人的感觉就是3519A的h264编码能力不足了!!

寻找突破口

手册上明确标注,可以进行4k60的h264,h265的编解码,既然通过目前现象认为是编码能力不足了,那肯定就是哪里配置不对了。

​ 重新查看软件,硬件手册,着重查看关于编码器的描述,想找关于编码器时钟的描述,3519A没有。

​ 又看了sample代码中关于编码的,喜出往外,手册里没有,在代码里添补丁了。看看代码里的描述:

/*In order for business to run normally, the frequency point of vedu needs to be raised.
    note:It is recommended to use 750M when the business is no less than 4k60,
    otherwise default values are used*/
s32Ret = SAMPLE_VENC_SetClkCfg(0x2);

大意就是要使业务正常,vedu的频率需要提升。估计问题就在这。

顺着代码找到了可以调整时钟的地址,使用himm查看,默认值是0x00CC7148:

himm 0x04510164    ==>0x00CC7148

按代码的意思更改最低位设置2后如下:

himm 0x04510164 0x00CC714A

再测试,编码正常可以到60帧 :

编码帧率正常显示

编码帧率正常显示

总结:

海思的很多东西都是封闭的,出了问题要多看手册代码,一般的问题都可以在这里面找到答案,真是新问题,那只有接海思官方了。

首页