YUV的基础
来源:互联网 发布:海马玩安卓模拟器 mac 编辑:程序博客网 时间:2024/04/29 15:48
前段时间有个电视家软件的BUG,我在分析问题的时候,怎么都找不到原因,然后就推到了客户端。最后经过多媒体领域的技术人员分析,发现是创建surface的问题,然后修改了ACodec.cpp文件,看了一下代码,
if(def.format.video.eColorFormat== OMX_COLOR_FormatYUV420Planar)548 def.format.video.eColorFormat= OMX_COLOR_FormatYUV420SemiPlanar;发现跟流媒体视频颜色格式有关,
顺便普及一下YUV的知识,待钻研多媒体框架。
在OMX中经常见到YUV相关的设置,比如:
OMX_COLOR_FormatYUV411Planar,
OMX_COLOR_FormatYUV411PackedPlanar,
OMX_COLOR_FormatYUV420Planar,
OMX_COLOR_FormatYUV420PackedPlanar,
OMX_COLOR_FormatYUV420SemiPlanar,
OMX_COLOR_FormatYUV422Planar,
OMX_COLOR_FormatYUV422PackedPlanar,
OMX_COLOR_FormatYUV422SemiPlanar,
.....
都是什么意思?
YUV是编译true-color颜色空间(color space)的种类,Y'UV, YUV, YCbCr,YPbPr等专有名词都可以称为YUV,彼此有重叠。“Y”表示明亮度(Luminance、Luma),“U”和“V”则是色度、浓度(Chrominance、Chroma),Y'UV, YUV, YCbCr, YPbPr 常常有些混用的情况,其中 YUV 和 Y'UV 通常用来描述类比讯号,而相反的 YCbCr 与 YPbPr 则是用来描述数位的影像讯号,例如在一些压缩格式内 MPEG、JPEG 中,但在现今,YUV 通常已经在电脑系统上广泛使用。YUV Formats分成两个格式:
- 紧缩格式(packed formats):将Y、U、V值储存成Macro Pixels阵列,和RGB的存放方式类似。
- 平面格式(planar formats):将Y、U、V的三个份量分别存放在不同的矩阵中。
紧缩格式(packed format)中的YUV是混合在一起的,对于YUV4:4:4格式而言,用紧缩格式很合适的,因此就有了UYVY、YUYV等。平面格式(planar formats)是指每Y份量,U份量和V份量都是以独立的平面组织的,也就是说所有的U份量必须在Y份量后面,而V份量在所有的U份量后面,此一格式适用于采样(subsample)。平面格式(planar format)有I420(4:2:0)、YV12、IYUV等。
常用的YUV格式
为节省带宽起见,大多数 YUV 格式平均使用的每像素位数都少于24位元。主要的采样(subsample)格式有YCbCr 4:2:0、YCbCr 4:2:2、YCbCr 4:1:1和 YCbCr 4:4:4。YUV的表示法称为 A:B:C 表示法:
- 4:4:4 表示完全取样。每像素 32 位
- 4:2:2 表示 2:1 的水平取样,没有垂直下采样。每像素 16 位
- 4:2:0 表示 2:1 的水平取样,2:1 的垂直下采样。每像素 16 位
- 4:1:1 表示 4:1 的水平取样,没有垂直下采样。与其他格式相比,4:1:1 采样不太常用
最常用Y:UV记录的比重通常 1:1 或 2:1,DVD-Video 是以 YUV 4:2:0 的方式记录,也就是我们俗称的I420,YUV4:2:0并不是说只有U(即 Cb), V(即 Cr)一定为 0,而是指U:V互相援引,时见时隐,也就是说对于每一个行,只有一个U或者V份量,如果一行是4:2:0的话,下一行就是4:0:2,再下一行是4:2:0...以此类推。YUV411、YUV420格式多见于DV数据中,前者用于NTSC制,后者用于PAL制。YUV411为每个像素都提取Y分量,而UV分量在水平方向上每4个像素采样一次。YUV420并非V分量采样为0,而是跟YUV411相比,在水平方向上提高一倍色差采样频率,在垂直方向上以U/V间隔的方式减小一半色差采样,如上图所示。
* YUV411PackedPlanar : packed per payload in planar slices
* YUV420Planar : Three arrays Y,U,V.
* YUV420PackedPlanar : packed per payload in planar slices
* YUV420SemiPlanar : Two arrays, one is all Y, the other is U and V
* YUV422Planar : Three arrays Y,U,V.
* YUV422PackedPlanar : packed per payload in planar slices
* YUV422SemiPlanar : Two arrays, one is all Y, the other is U and V
* YCbYCr : Organized as 16bit YUYV (i.e. YCbYCr)
* YCrYCb : Organized as 16bit YVYU (i.e. YCrYCb)
* CbYCrY : Organized as 16bit UYVY (i.e. CbYCrY)
* CrYCbY : Organized as 16bit VYUY (i.e. CrYCbY)
* YUV444Interleaved : Each pixel contains equal parts YUV
- YUV的基础
- YUV基础
- YUV基础
- 基础函数:YUV与RGB的转换
- yuv 格式基础
- yuv 格式基础
- YUV格式基础
- YUV格式基础
- 基础:关于YUV 和 Cr Cb的区别
- 基础:关于YUV 和 Cr Cb的区别
- YUV RGB YUV420 YV12基础
- YUV的图像格式
- YUV的转换
- YUV格式的解析
- YUV格式的解析
- YUV格式的解析
- 关于yuv的文档
- YUV的一些资料
- ActiveX 暴漏你所有信息的可怕的插件!
- 初学者VIM配置
- 用户互动功能,微信商城系统
- perl源码分析
- 版本控制基础知识
- YUV的基础
- 第8周作业1——类与对象练习之TV
- Android设置loading的属性
- JAVA 虚函数、抽象函数、抽象类、接口
- 未在本地计算机上注册“Microsoft.Jet.OLEDB.4.0”提供程序
- nsdictionary to jsonString
- 一次痛彻心扉的经历,抵得上千百次的告诫
- adgdag
- 中国移动5.16亿美元获巴基斯坦3G及4G牌照