YUV420P

最近一周整理了一下网上关于YUV数据的转化和显示方面的资料, 与大家共享一下.

1. 关于YUV.

百度百科: http://baike.baidu.com/view/189685.htm

英文资料: http://en.wikipedia.org/wiki/YUV#Y.27UV420p_.28and_Y.27V12.29

YUV转换算法http://www.kldby.com/baidunews/index.php/article/jdgg/2010-10-04/10436.html

YUV格式http://www.fourcc.org/yuv.php

自定义数据结构参考http://www.rosoo.net/a/200604/6051.html

 

2. YUV数据的显示.

目前尝试了两种显示YUV数据的方法 YUV表面显示和GDI显示.

YUV表面显示:

     这个网上有很多源码, 当然为了大家省去一些查找和编译的苦恼, 提供我整理后的源码.

这种显示方式呢, 比较直接, CPU占用也不是很高, 而且不管是YUV420还是YUV420P(分辨率1280*720)都可以显示出来.

但是有一个缺点是: 只能创建一个显示画面, 就是要同时显示几个画面是不行的, 而且按下WIN键和D后, 画面还在屏幕上,

很无语. (我不确定此点是否正确, 我在一天之内没突破它的这个缺点后放弃).

 

GDI显示:

   就是用相关算法将YUV420P数据--->RGB24之后,使用StretchDIBits函数将每一帧的图像显示出来.

   在转化算法方面, 在网上找到不止10几种, 除去一些存在错误无法编译的外, 筛选了5种方法.

   此种显示方法上, CPU占用肯定比YUV表面显示高, 但至少可以多画面显示了,并且没有其他缺点.

   转化算法见下一篇随笔.

 

YUV420 显示源码 https://files.cnblogs.com/doorsky/YUV%e6%98%be%e7%a4%ba.rar

YUV文件 https://files.cnblogs.com/doorsky/YUV%e6%96%87%e4%bb%b6.rar

原文地址:https://www.cnblogs.com/doorsky/p/1924231.html