PCDVD數位科技討論區

PCDVD數位科技討論區 (https://www.pcdvd.com.tw/index.php)
-   DVD 討論區 (https://www.pcdvd.com.tw/forumdisplay.php?f=5)
-   -   如果你看xvid顏色明顯偏紅偏黃請看這裡 (https://www.pcdvd.com.tw/showthread.php?t=307868)

windstar001 2004-03-10 03:06 AM

如果你看xvid顏色明顯偏紅偏黃請看這裡
 
剛剛發現我轉的影片都會跟本來的顏色有色偏
所以查了好一陣子

如果你看xvid壓的AVI時顏色明顯偏紅偏黃
可能並非你壓縮時的問題

請打開 XviD decoding 的設定畫面



Output---------------------------------------------

flip video [RGB32/24]
---------------------------------------------------

請將flip video 後的選單依你的螢幕設定色彩該為 RGB24 或 RGB32
*flip video 不用打勾
這樣就可以了^_^


我不知道是不是大家都會有這問題
不過我下載的這版XVID是得改........
不知道大家有沒有這情況?
或是我壓縮時其實有錯?
請大家分享依下經驗吧^^

NY_Piz 2004-03-10 08:26 AM

這跟你的 video card 有很大的關係
要視 video card 是支援 24 bit 還是 32 bit color 而定

yhnui 2004-03-10 08:36 AM

早期xvid有那個選項時,不小心調到會造成顯示錯誤..
無法放映或者變條狀顯示..
有時候顯示卡的支援程度也有關係...(大大說有支援overlay的顯示卡沒幾張)

PS:調成RGB的話 Xvid的cpu使用率會飆兩倍左右喔
不過經過YC伸張後的RGB,亮度和色度就是有差
值得啦

Shade 2004-03-10 12:39 PM

回覆: 如果你看xvid顏色明顯偏紅偏黃請看這裡
 
不知道你的原始訊源是什麼?

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

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

如果你的訊源播放時也有使用硬體 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 的顯示卡可以丟了 :p
由於一般顯示卡都沒有提供硬體的 RGB Overlay,所以使用 RGB 格式輸出時如果沒有強制指定 Overlay 輸出,輸出的色彩調性就是沿用你的桌面色彩設定,和你的桌面色彩設定一樣,所以你的桌面色彩設定偏紅,他就偏紅,偏綠,他就偏綠,調整你的顯示卡的桌面色彩設定影片畫面就會跟著改變。

所以如果你的桌面色彩設定經過校正,確定完全正確,強制 RGB24/32 輸出確實可以得到正確的色彩表現,不過這其中還有太多複雜的因素,譬如說視訊 Gamma 的標準值,以及電腦螢幕的 Gamma 值等等,寫起來一大堆,研究起來又沒完沒了 ^^;
所以說要求「正確」,是一件很累的事情。

Shade 2004-03-10 12:49 PM

使用 RGB24/32 輸出,會有幾個缺點
1) 如前所述,此時必須由 Decoder 做 up-sampling 和 YUV -> RGB 色彩轉換
a. 耗費 CPU 資源
b. 不能使用硬體 Overlay,顯示速度慢
c. 軟體 up-sampling 通常品質比顯示卡硬體差
d. 軟體 YUV -> RGB 轉換精度堪慮,可能色偏會比顯示卡硬體還糟糕

2) RGB24/32 輸出如果沒有強制指定 Overlay 輸出通常也無法使用顯示卡硬體的放大,必須由軟體做放大,例如原始影片解析度 640x480 放大至桌面解析度 1024x768 輸出,軟體放大內插補點通常不如硬體放大平滑,會有鋸齒。
如果你看片的時候習慣切換到原始解析度看片,那麼這項的影響就比較小,不過很少人會特意去切換至原始解析度看片,還有 LCD 螢幕的特性,原生解析度才是最好的觀看解析度,所以越來會越少人使用原始解析度看片。

更進一步研究,如果你的顯示卡驅動,VMR9 和 Overlay 的設定值是分開的,例如在 WIN98 底下 Radeon 的 Driver,VMR9 輸出不使用 Overlay 的設定值,VMR9 使用桌面的色彩設定,那麼你不用切換至 RGB24/32,用原本的 YV12/YUY2 輸出,只要輸出 Renderer 選 VMR9,這樣就不會使用 Overlay 的色彩設定,而會和桌面的色彩設定一模一樣。
這樣就可以避過上述的 Deocder 自己做 up-sampling 和 YUV->RGB 轉換的問題。

但是使用 VMR9 Renderer 也有缺點,在舊的顯示卡上相容性可能會有問題,在新的顯示卡上由於技術上不成熟,顯示的品質可能也不如 Overlay。例如 Radeon 在 WIN98 底下使用 VMR9 輸出畫面會非常模糊,這是 VMR9 的 bug。
以目前來說,顯示速度、顯示品質,最好的還是 Overlay。

當然,凡事不可一概而論,會有特殊情況,例如有些顯示卡的驅動,VMR 輸出和 Overlay 輸出的色彩設定是共用同一組,這時你選擇 VMR9 輸出色彩調性就會和 Overlay 一樣。在 WINXP 底下預設輸出 Renderer 是 VMR7,那又是另外一種情況。

不過我個人經驗,使用自己調整的桌面色彩設定輸出影片,看起來不一定比廠商調整好的 Overlay 色彩設定好看。例如 ATi 的 Overlay 雖然偏紅,不過看起來還蠻好看的 :p
所以只要把顯示卡驅動預設的 Overlay 亮度對比等偏差太多的設定值調整好,Overlay 看起來應該不會太差。

MPEG 影片存放的資料是 YUV,在顯示到螢幕上之前必須先轉換為 RGB,在 YUV -> RGB 轉換的時候必須做一個動作叫做 YC 伸張。當我們使用 Decoder 自己軟體做 YUV -> RGB 的時候有些 Decoder 會做 YC 伸張,有些不會。XviD 的 Decoder 按照 601 標準,會做 YC 伸張,所以最終顯示出來的色彩是正確的。
而如果使用硬體 Overlay,顯示卡的硬體 YUV -> RGB 也是遵照 601 標準,也會做 YC 伸張,所以用軟體硬體做 YUV -> RGB,都會做 YC 伸張,不用擔心硬體 YC 伸張的問題。

寫得很亂,我也不知道該怎麼解釋會比較清楚,希望大家都知道我在說什麼 :p


所有的時間均為GMT +8。 現在的時間是01:55 AM.

vBulletin Version 3.0.1
powered_by_vbulletin 2026。