找回密码
 立即注册
收起左侧

s5pv210中MFC的帧内存格式(转)

6
回复
5548
查看
[复制链接]
累计签到:82 天
连续签到:1 天
来源: Qt文章 2016-4-26 09:35:12 显示全部楼层 |阅读模式

马上注册,查看详细内容!注册请先查看:注册须知

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
  最近调了一下TQ210的mfc硬件h264编码功能,编码是成功了,但出来的视频却是花的。这个问题困扰了我很久,网上关于这方面的资料也很少,没办法只能查看s5pv210的芯片手册,功夫不负有心人,终于让我找到了原因,主要是s5pv210中MFC的帧内存格式不同造成的。
  1.YV12和NV12
  首先让我们了解一下s5pv210中MFC编码需要的视频格式,YV12和NV12都属于YUV420格式,每个像素占12位,其中Y占8位,每4个像素占8位的U和8位的V,平均一下就是每个像素的U和V各占2位,结构如下图所示,圈表示UV,叉表示Y。


  YV12和NV12是YUV420的具体格式类型,YV12是比较常用的格式,Y分量在前面,后面是V分量,最后是U分量,具体如下图所示。


  虽然YV12比较常用,但在s5pv210中用的却是NV12格式,这两种格式唯一的区别就是后面UV分量的排列上,在NV12中UV分量是分别穿插排列的,先U后V,如下图所示。


  一般我们用摄像头采集到的YUV420都是YV12格式的,要想把它输入到MFC里就必须转换为NV12格式,否则编码出来的视频颜色会出问题。
  2.linear和tile
  这是MFC中图像存储的内存格式,这是造成编码花屏的主要原因。linear mode线性模式,也就是一般的内存格式,在上面NV12的格式图中从左到右,从上到下,依次写入MFC的内存空间。而tile mode就不一样了,喂给MFC的数据是以块的形式写入的,比如一张QCIF(176x144)的Y分量,以64x32的大小分为20块,再按一定顺序写入内存空间,具体如下图。


  图片的宽度为176,所以上图右边一部分的数据用不到,留空即可。UV分量也是按章这个顺序,因为尺寸小一倍,会被分为12块。MFC使用哪种模式取决于ENC_MAP_FOR_CUR(0xF170_C51C)寄存器。
  使用正确的视频格式和帧内存格式后,花屏问题终于解决了,再次庆祝一下。
  文章来源:http://wuyuans.com/2013/04/s5pv210-frame-memory
  供货情况:
  天嵌科技提供专业嵌入式板卡和行业解决方案。如有需要,可以联系天嵌科技的销售人员。
  销售电话:020-38219416 38373101
  技术支持:020-38219416转807 820
  网址:http://www.embedsky.com
  官方淘客:https://embedsky.taobao.com/

回复

使用道具 举报

累计签到:1 天
连续签到:1 天
2016-4-26 14:35:56 显示全部楼层
谢谢楼主,新手已学习
回复 支持 反对

使用道具 举报

尚未签到

2016-4-28 11:55:29 显示全部楼层
看帖必回,谢楼主辛苦分享!
回复 支持 反对

使用道具 举报

累计签到:1 天
连续签到:1 天
2016-4-29 09:28:42 显示全部楼层
好贴必回,谢谢分享!!!!
回复 支持 反对

使用道具 举报

累计签到:2 天
连续签到:1 天
2016-4-29 12:01:38 显示全部楼层
MFC使用哪种模式取决于ENC_MAP_FOR_CUR(0xF170_C51C)寄存器
回复 支持 反对

使用道具 举报

累计签到:6 天
连续签到:1 天
2016-4-29 17:24:15 显示全部楼层
最近正在选型,听过天嵌,TQ210的功能怎样,有谁用过
回复 支持 反对

使用道具 举报

累计签到:1 天
连续签到:1 天
2016-5-5 17:49:58 显示全部楼层
210 可以支持h264编码,挺不错!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

公告
可以关注我们的微信公众号yafeilinux_friends获取最新动态,或者加入QQ会员群进行交流:190741849、186601429(已满) 我知道了