wxh101 |
2018-06-23 17:24 |
SDK中pluginDemo的问题
APlayerSDK里有个PluginDemo的样本代码,阅读代码时,发现里面有个不明白的地方。 在main.cpp的DrawFrame函数负责将输入的YUV411的格式转成RGB32的格式,显示在对话框中。 里面转换代码如下:
int N = Y << 10; R = (N + V * 1900 - 240000) >> 10; G = (N - V * 570 - U * 450 + 136000) >> 10; B = (N + U * 1630 - 200000) >> 10; 转成公式,大概是:
R=Y+1.855V-234.4 G=Y-0.557V-0.439U+132.8 B=Y+1.592U-195.3
但是,从网上查找了很久,发现别人的YUV转RGB好像不一样,我看到了几种不同的公式,都和demo中的不一样。 比如,最常用的一个公式:
R=Y+1.403V−179.6 G=Y–0.714V–0.343U+135.3 B=Y+1.770U–226.6 明显的数据和上面的差别很大,这是什么原因呢?是不是APlayer需要的这个转换公式是自己独有的?
我想知道这个是如何决定的,plugin处理视频数据时,是不是必须用这个公式换算。
|
|