瀏覽單個文章
Shade
Senior Member
 
Shade的大頭照
 

加入日期: Oct 2002
您的住址: El's room
文章: 1,046
回覆: 如果你看xvid顏色明顯偏紅偏黃請看這裡

不知道你的原始訊源是什麼?

新版的 XviD 1.0 Beta or RC 系列的 Decoder,選擇 No Force 的時候,預設輸出的色彩格式是 YUY2。
當使用 YUY2 或 YV12 輸出的時候通常會使用硬體的 YUY2/YV12 Overlay,這時的色彩設定會和桌面的色彩設定不一樣,硬體 Overlay 會遵照顯示卡驅動設定中 Overlay 項目底下的色彩設定輸出。

我知道 ATi 顯示卡的 Overlay 輸出預設會偏紅,不過看起來很鮮豔,還蠻好看的

如果你的訊源播放時也有使用硬體 Overlay,照道理講壓成 XviD 之後兩者看起來會是一樣的。嚴格說起來因為 MPEG 量化誤差的關係,不會完全相同,但是也應該不會差得太多。
如果你的訊源因為格式的關係,輸出時沒有使用 Overlay,例如 Huffyuv 使用 vfw codec 解碼時不能使用 Overlay,那麼比較訊源和壓好之後的 XviD 就會有很大的差異,不過這是因為播放使用的輸出的色彩設定不同,和壓縮沒有關係。

如果你比較的對象不是播放中的訊源,而是在例如 VirtualDub 的軟體視窗中訊源看起來的樣子,因為 VirtualDub 顯示的時候沒有用 Overlay,同時是完全由 Decoder 解碼為 RGB 輸出,所以你看到的色彩也會和播放時的色彩不一樣。

例如 AviUtl 的視窗畫面有啟用 Overlay 的選項,或者 DVD2AVI 也有 DirectDraw Overlay 的選項,VirtualDub 有播放時啟用 DirectDraw 加速的選項,在這些情況下預覽畫面,你看到的色彩才會和用 Media Player 播放時的色彩一樣。

也就是說,當 XviD Decoder 使用預設的 YUY2 輸出,或者強制 YV12 輸出,會使用硬體的 YV12/YUY2 Overlay 輸出,硬體 Overlay 的色彩設定和一般桌面的色彩設定不同,所以顏色會和在 VirtualDub 視窗中看到的訊源顏色不一樣。
當切換成 RGB24/32 輸出的時候,由於一般顯示卡都沒有提供硬體的 RGB Overlay,所以這時便無法使用硬體 Overlay 輸出,硬體 Overlay 的色彩設定便不會影響影片輸出的結果。

使用 RGB24/32 輸出會有一些缺點....
==
那個選項,當使用預設值 "No Force",在新版的 XviD,XviD 1.0 RC 系列,預設使用的是 YUY2 輸出。
使用 YUY2 輸出時,XviD Decoder 必須自己做 YUV 4:2:0 -> YUV 4:2:2 up-sampling 的工作,XviD 本身的 up-sampling 品質很差,沒有高階的內插補點,所以使用 YUY2 輸出時,會產生明顯的色階,尤其是紅色的部分,會有一條一條,一格一格,一階一階的明顯的色階現象。
1.0 RC 系列將預設的輸出格式由 YV12 改為 YUY2 的原因是為了相容性考量,有的顯示卡對 YV12 的相容性不好,YUY2 是最普遍、絕大多數顯示卡都能支援處理的色彩格式。

如果你的顯示卡硬體對於 YV12 的支援很好,例如 ATi 的顯示卡,強制指定輸出格式為 YV12,YV12 是 YUV 4:2:0 格式,後續的 4:2:0 up-sampling -> 4:2:2 -> 4:4:4 -> RGB 等色彩轉換的工作全部交由顯示卡硬體來做,顯示卡硬體通常有高階的內插補點,畫質會好非常多,而且使用硬體加速,減少軟體運算,也可以大幅減輕 CPU 的負擔,所以一般建議將輸出格式改為強制指定 YV12。
找一個有紅色部分的畫面來看,相信一定可以看出 YV12 輸出和 YUY2 輸出相差很多。

當使用 YV12/YUY2 輸出時,會使用 YV12/YUY2 Overlay,這時你所看到的色彩、色調、亮度、對比等表現會和你的視窗桌面的設定不同。
通常顯示卡的 Overlay 是獨立一組色彩設定,和桌面的色彩設定分開,各家顯示卡 Overlay 輸出預設的調性不同,譬如說 ATi 的可能鮮豔一點,NV 的可能冷淡一點,在顯示卡的驅動設定中通常可以調整 Overlay 的亮度、對比、飽和、色調,以及 Gamma 等設定。
不同的驅動版本,Overlay 的預設值也不同,有些版本的 Overlay 預設值偏差太多,預設的亮度太低,看影片時畫面會一團黑。遇到這種現象就必須調整 Overlay 的設定,顯示卡討論區中 LukeLo 大大曾貼過相關的設定文章,可以查閱。

所以如果你覺得播放影片的畫面調性和桌面不同,這是正常的,因為 Overlay 的色彩設定通常不會和桌面的色彩設定一樣。至於哪一個正確,我想除非你的桌面色彩設定經過校正,否則你原本的桌面色彩設定就不一定正確。

當強制 XviD Decoder 輸出 RGB24/32 時,如前所述,這時是由 XviD Decoder 自己本身做 YUV 4:2:0 -> 4:4:4 -> RGB24/32 的工作,品質很差,同時全部軟體運算,CPU 負擔非常重。
使用 RGB24/32 輸出時,由於顯示卡一般都沒有提供硬體的 "RGB" Overlay,注意是沒有提供 "RGB" Overlay,不是沒有提供 Overlay,沒有提供 Overlay 的顯示卡可以丟了
由於一般顯示卡都沒有提供硬體的 RGB Overlay,所以使用 RGB 格式輸出時如果沒有強制指定 Overlay 輸出,輸出的色彩調性就是沿用你的桌面色彩設定,和你的桌面色彩設定一樣,所以你的桌面色彩設定偏紅,他就偏紅,偏綠,他就偏綠,調整你的顯示卡的桌面色彩設定影片畫面就會跟著改變。

所以如果你的桌面色彩設定經過校正,確定完全正確,強制 RGB24/32 輸出確實可以得到正確的色彩表現,不過這其中還有太多複雜的因素,譬如說視訊 Gamma 的標準值,以及電腦螢幕的 Gamma 值等等,寫起來一大堆,研究起來又沒完沒了 ^^;
所以說要求「正確」,是一件很累的事情。
舊 2004-03-10, 12:39 PM #4
回應時引用此文章
Shade離線中