壓出來檔案大小
DivX 5.0.5 2-pass: 14,501,888 bytes ( 100%)
DivX 5.0.5 3-pass: 14,508,032 bytes ( 100%) <- 檔案偷偷變大一點
DivX 5.0.5 4-pass: 14,510,080 bytes ( 100%) <- 再變大一點
XviD VHQ-1 2-pass: 14,489,600 bytes (99.9%)
XviD VHQ-4 2-pass: 14,485,504 bytes (99.9%)
代碼:
PSNR (dB)
Y Y Y
Min Avg Max
========================================================
DivX 5.0.5 2-pass: 33.5968 43.3420 99.9947 <- Max 99.9947dB 是全黑的畫面
DivX 5.0.5 3-pass: 35.1456 43.4162 99.9947 <- 最低 PSNR 上升,平均 PSNR 上升
DivX 5.0.5 4-pass: 35.1456 43.4328 99.9947 <- 平均 PSNR 再上升
XviD VHQ-1 2-pass: 36.2034 43.8934 99.9947
XviD VHQ-4 2-pass: 36.0888 43.8367 99.9947 <- 最低、平均 PSNR 皆下降
============== 無關主題,順便一提 開始 ==============>
也許有人有疑問。
這個測試裡的原始檔案大家都一樣,都是由 Avisynth 做的 YV12 原始檔。
avisource("Kiddy Grade NCOP_aup_vfapi.avi").ConvertToYV12()
所以測試保證公平。
然而 Avisynth 載入的 Kiddy Grade NCOP_aup_vfapi.avi 這個檔是 RGB24 的 VFAPI,
為什麼不乾脆用全程 Avisynth,做全程 YV12 的製程?
因為:
1. 我需要用到 TMPGEnc 做 IVTC。
2. 全程 YV12 製程有所限制,不是每種訊源都可以使用。
有什麼限制?
引用:
1. 原始訊源不用作 IVTC,不需要用到 TMPGEnc 或 AviUtl。
Avisynth 雖然也有 IVTC 的 plugin,例如 Decomb,
但是我覺得不完美,用 TMPGEnc 手動一張一張選比較完美(廢話.. ^^;)
如果 IVTC 簡單,不會用到單張去交錯或 copy frame,
可以利用 tprivtc.dll 這個 plugin,讀取 TMPGEnc 專案檔內的
IVTC 資訊(先用 TMPGEnc 做好 IVTC 存成專案檔),使用語法是
DoubleWeave().TPRIVTC(<string file.TPR>,<debug mode>)
這樣的話還是可以使用 Avisynth 做 YV12 製程。
2. 壓 MPEG-4 要用全程 YV12,必須要用 VirtualDubMod 這個軟體,
用這個軟體選 "Fast recompress" 壓縮模式,VirtualDubMod 才會傳送
原封不動的 YV12 資料給 Codec 壓縮。
其他如本家的 VirtualDub,即使選 "Fast recompress",VD 也還是會先
轉為 RGB,再送給 Codec 壓縮。
3. 有許多 DVD 硬壓的機器很白爛,明明是 progressive 畫面,卻使用 interlace
模式壓縮,也就是 chroma 取樣的時候是 chroma1 = 0.75*c1 + 0.25*c3
而不是 (c1+c2)/2
遇到這種 DVD,DVD2AVI 的 Frame Type 會顯示 Interlaced,
但是畫面其實並沒有交錯。
這樣子如果用全程 YV12 的製程,
YV12(DVD, interlaced) -> YV12(MPEG-4, interlaced)
則壓好的 MPEG-4 裡面的 chroma 資訊,還是和原來的 DVD 一樣是 interlaced
可是 MPEG-4 AVI 裡面並沒有(旗標)註明這是 interlaced Frame,
解碼的時候 MPEG-4 Decoder 會假設畫面都是 progressive 的,
所以做 chroma upsampling 的時候會把解出來的 chroma1 分給 c1 和 c2
而不是正確的 c1 和 c3(當初 chroma1 是由 c1 和 c3 取樣來的),
這樣會造成 chroma upsampling 錯誤。
所以遇到這種檔案,原始 DVD 一定要解碼為 YUY2,此時 MPEG-2 有 interlaced
旗標可以告訴 DVD2AVI/MPEG2Dec3 等解碼器要怎麼做 upsampling 才正確。
YV12(DVD, interlaced) -> YUY2 -> YV12(重新取樣時以 progressive 取樣)
-> YV12(MPEG-4, progressive)
播放時就會正確了。
|
對了 Nic 寫的 MPEGDecoder.dll 的 Chroma upsampling 是錯的,不要用。
<============== 無關主題,順便一提 結束 ==============
雖然平均 PSNR 大家都有 43dB,但是最低 PSNR 則在 35dB 上下,因為是動畫,銳利線條周圍的 ringing effect 瑕疵看起來已經非常明顯,已經在我忍耐的極限邊緣 :P
下面是幾張抓圖