杨坤的分享空间
目录:
原始引用地址: 海思Hi3519A 进行4k60 h264编码帧率不足的问题
time: 2020.5.20 12:34:00
使用英码的开发板,信号源lt6911,可以接收4k 60的hdmi信号 ,不过这个输入是通过两个mipi接口输入的,里面需要拼接,用的avs的例子,这也为之后编码埋了坑。
领导让调研4k_60 d1_60 cif_60的编码效果,程序很快改好了,但是测试时,发现h264编码60帧时,总是帧率不足,尝试更改编码器参数,增大vb空间,及时取出编码后数据,甚至不把编码后数据写文件。。。问题依旧。仍然只能编码52或53帧。
运行cat /proc/umap/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帧 :
总结:
海思的很多东西都是封闭的,出了问题要多看手册代码,一般的问题都可以在这里面找到答案,真是新问题,那只有接海思官方了。