AV_PIX_FMT_YUV420P與AV_PIX_FMT_YUVJ420P


定義
下面是兩者在ffmpeg中的定義

AV_PIX_FMT_YUV420P,   ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)

AV_PIX_FMT_YUVJ420P,  ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of AV_PIX_FMT_YUV420P and setting color_range
注:這里不討論相同點。

區別
區別的表現
兩者的不同在於,顏色空間不同。
AVCOL_RANGE_JPEG

/**
* MPEG vs JPEG YUV range.
*/
enum AVColorRange {
 AVCOL_RANGE_UNSPECIFIED = 0,
 AVCOL_RANGE_MPEG        = 1, ///< the normal 219*2^(n-8) "MPEG" YUV ranges
 AVCOL_RANGE_JPEG        = 2, ///< the normal     2^n-1   "JPEG" YUV ranges
 AVCOL_RANGE_NB,              ///< Not part of ABI
};

YUVJ420P的字面含義是“使用了JPEG顏色范圍的YUV420P,像素使用表示顏色的數值范圍發生了變化。
YUV420p的像素顏色范圍是[16,235],16表示黑色,235表示白色
YUVJ420P的像素顏色范圍是[0,255]。0表示黑色,255表示白色

從這里來看,貌似是YUVJ420P表示的更准確一下。

區別的緣由
YUV420p對應的是電視。
YUVJ420P對應的是顯示器。

灰階
何謂灰階?通常來說,液晶屏幕上人們肉眼所見的一個點,即一個像素,它是由紅、綠、藍(RGB)三個子像素組成的。每一個子像素,其背后的光源都可以顯現出不同的亮度級別。而灰階代表了由最暗到最亮之間不同亮度的層次級別。這中間層級越多,所能夠呈現的畫面效果也就越細膩。以8bit面板為例,能表現2的8次方,等於256個亮度層次,我們就稱之為256灰階。LCD屏幕上每個像素,均由不同亮度層次的紅、綠、藍組合起來,最終形成不同的色彩點。也就是說,屏幕上每一個點的色彩變化,其實都是由構成這個點的三個RGB子像素的灰階變化所帶來的。

電腦如果想顯示准確的色彩,那么必須要0-255灰階全部齊全。灰階的損失,就意味着色彩的損失。 對於PC主機,灰階的輸出是0-255。灰階輸出為0的情況下,顯示全黑畫面;灰階為255的情況下,顯示全白畫面。液晶顯示器為了適應PC主機,所可接受的灰階信號范圍同樣是0-255。

256個灰階輸出圖,如果PC接電視,必然會有13%的灰階損失 而液晶電視是不同的,它的灰階范圍是16-235,當接收到信號16時,液晶電視將其還原成白色;當接收到信號235時,顯示全白畫面。電視的輸入設備,比如說有線電視信號、DVD影碟機等輸出的也是16-235的灰階信號。 液晶電視如果接收到了低於16的信號,會被認為是干撓,將不被顯示;如果接收到了高於235的信號,大部分液晶電視只能做削波處理,即仍當做235信號來處理。簡單點說,就是0-15全部顯示純黑,236-255全部顯示純白,中間的過渡全部損失。

(上面這一段是從“液晶電視與液晶顯示器的區別”中截取的一段)

總結
沒啥太大的區別。
如果偏色不嚴重,你也可以對客戶解釋說是顯示器的色差,而不是你的程序的問題。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM