yv12和nv12
2015-07-07 17:59
1286 查看
转载自:http://blog.csdn.net/fanbird2008/article/details/8232673
用videoCapture和IAMStreamConfig拿到的支持的格式列表。
发现支持2中图像格式,YV12和NV12。
具体是怎么样的内存分布不知道。查了些文档。自己修改了几个图。看出了点端倪
YV12
先看看 http://www.fourcc.org/yuv.php 上比较标准的定义:
![](http://www.fourcc.org/images/yplane.gif)
![](http://www.fourcc.org/images/v2plane.gif)
![](http://www.fourcc.org/images/u2plane.gif)
Positive biHeight implies top-down image (top line first)
这种图片其实不是很清楚的, 搞了一个非常明白的
![](http://p.blog.csdn.net/images/p_blog_csdn_net/hhygcy/EntryImages/20081125/yv12.png)
这个wiki上面的图片示例非常明了,第一个图标识了图片真正像素的表示。
可 以看到Y1, Y2, Y7, Y8这些物理上相近的4个像素公用了同样的U1和V1,相似的Y3,Y4,Y9,Y10用的就是U2和V2。这里不同的颜色把这个特性刻画的非常形象,一 目了然。Impressive!!一直觉得教育,或者说基础的教育一定要以这样的模式来阐述这样才能知其所以然,那种盲目的抄了一本国外的教材或者合并了 几本破书的教材不是教人是毁人。 说远了,言归正传。之前说的是物理像素的表示,在内存中的分布则是一个数组,顺序就是YUV。所以如果知道所要表现的取悦的大小的话很容易查找到具体的YUV在数组中的位置。
NV12
NV12和YV12稍有不同,区别就在UV的位置。再看一张图就很明了了!
![](http://p.blog.csdn.net/images/p_blog_csdn_net/hhygcy/EntryImages/20081125/nv12.png)
在YV12中U和V都是连续排布的,而在NV12中,U和V就交错排布的。看到内存中的排布很清楚,先开始都是Y,之后的都是U1V1U2V2的交错式排布。对于像素的压缩的效果是一样的。但是可能是硬件加速的支持与否。
用videoCapture和IAMStreamConfig拿到的支持的格式列表。
发现支持2中图像格式,YV12和NV12。
具体是怎么样的内存分布不知道。查了些文档。自己修改了几个图。看出了点端倪
YV12
先看看 http://www.fourcc.org/yuv.php 上比较标准的定义:
YV12
This is the format of choice for many software MPEG codecs. It comprises an NxM Y plane followed by (N/2)x(M/2) V and U planes.Horizontal | Vertical | |
Y Sample Period | 1 | 1 |
V Sample Period | 2 | 2 |
U Sample Period | 2 | 2 |
![](http://www.fourcc.org/images/yplane.gif)
![](http://www.fourcc.org/images/v2plane.gif)
![](http://www.fourcc.org/images/u2plane.gif)
Positive biHeight implies top-down image (top line first)
这种图片其实不是很清楚的, 搞了一个非常明白的
![](http://p.blog.csdn.net/images/p_blog_csdn_net/hhygcy/EntryImages/20081125/yv12.png)
这个wiki上面的图片示例非常明了,第一个图标识了图片真正像素的表示。
可 以看到Y1, Y2, Y7, Y8这些物理上相近的4个像素公用了同样的U1和V1,相似的Y3,Y4,Y9,Y10用的就是U2和V2。这里不同的颜色把这个特性刻画的非常形象,一 目了然。Impressive!!一直觉得教育,或者说基础的教育一定要以这样的模式来阐述这样才能知其所以然,那种盲目的抄了一本国外的教材或者合并了 几本破书的教材不是教人是毁人。 说远了,言归正传。之前说的是物理像素的表示,在内存中的分布则是一个数组,顺序就是YUV。所以如果知道所要表现的取悦的大小的话很容易查找到具体的YUV在数组中的位置。
NV12
NV12和YV12稍有不同,区别就在UV的位置。再看一张图就很明了了!
![](http://p.blog.csdn.net/images/p_blog_csdn_net/hhygcy/EntryImages/20081125/nv12.png)
在YV12中U和V都是连续排布的,而在NV12中,U和V就交错排布的。看到内存中的排布很清楚,先开始都是Y,之后的都是U1V1U2V2的交错式排布。对于像素的压缩的效果是一样的。但是可能是硬件加速的支持与否。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories