我想了解有关YV12图像格式的一些信息。
第一个问题是YV12图像格式等于YUV420p格式或YVU420p或YUV420Sp或YVU420Sp。我知道U和V在格式上具有相同的内存量,因此在平面图像格式的情况下,交换U和V确实有一些主要区别。如果可以的话,有人可以向我解释那是什么。
我也听说过YV12和NV12都是12位格式。那有人可以告诉我4:2:0是什么吗?如果有人可以用简单的词解释我,那将是很棒的,谢谢
最佳答案
根据this site,YV12看起来与NV12相同,只是NV12是交错的,而YV12不是。我认为YV12对应于YVU420p,而NV12是YVU420sp,但我对此不是100%肯定。
但是,这意味着,在整个缓冲区中不重复三联体[yuv] [yuv] [yuv] [...]来绘制图像(每像素一个三元组),而是拥有一个较大的[y]缓冲区,然后是[y]大小的1/4缓冲区包含所有[u],然后是[y]的另外1/4包含[v]。对于320x240(76800像素)的图像,缓冲区开始处将有76800 Ys,然后是19200 Us,然后是19200Vs。
在NV12情况下,您有一个[y]的大缓冲区,然后是[y]大小的一个缓冲区1/2,其中包含[uv]对。绘制图像或转换为另一种格式(例如RGB)时,您至少需要2个指针,一个指针将读取Y,而另一个指针将读取Us和Vs。
当读取诸如压缩格式之类的内容时,窍门是每个像素一个Y,但是UV分量仅在奇数行和奇数列上发生变化,而您的眼睛看不到差异。您一次将相同的UV值重复使用4个像素,同时更改每个像素的Y。
关于c# - YUV颜色间距,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17442456/