主題: Xvid的問題
瀏覽單個文章
Shade
Senior Member
 
Shade的大頭照
 

加入日期: Oct 2002
您的住址: El's room
文章: 1,046
XviD 的三種編譯版本

uManiac 的 CVS snapshot,幾乎只要 CVS 上一更新,uManiac 就會編譯一個新版本,不過有時候也會拖個幾個禮拜都沒有更新。uManiac 現在都沒有在看開發小組的討論,所以有時候一些新功能編譯的時候需要注意的事項,uManiac 都不知道。例如以前要改 TOO_SMALL_LIMIT = 1,還有前一陣子 gruel 新增的 GMC 在開發階段,放上 CVS 給其他開發人員測試,gruel 不希望有測試版本的 bianry 流出去給一般大眾,會製造麻煩,所以警告要是被他發現網路上有人提供這個版本的 binary,他以後就不再 commit 任何的程式碼。結果當天 uManiac 的網站上還是出現了這個版本的 bianry,顯然 uManiac 根本不知道有這回事,還好那天他的網站沒多久就掛了 :P
有時候該更新不更新,不該更新卻更新得很快 ^^;
自從 uManiac 擅自更改了 Adaptive Quant 的程式碼被發現以後,就和開發小組漸行漸遠,有時候無法反應一些最新的情況。

Koepi 的版本有一些是 CVS 上都沒有的功能。例如他的 Lumi masking(Adaptive Quant)的程式碼是用 RefDivX 寫的 HVS 版本。以前 sysKin 修改的 Dynamic QPel 程式碼也是還沒上 CVS,就先出現在 Koepi 的 binary 上。再加上 Koepi 有時候會忘掉要 commit 別人給他的程式碼,所以他的版本總是有 CVS 上沒有的功能
因為 Koepi 和開發小組走得比較近,所以有時候能直接從作者手上拿到最新最熱剛出爐的程式碼。但是這些新功能還沒有經過大家的測試與討論,有時候不見得能提供壓縮助益,可能反而有害。
另外,Koepi 的版本因為編譯的時候用的 option,會產生不支援舊 CPU 的 SIMD code,例如 K6-3 和 PII 就無法使用 Koepi 編譯的版本。

Nic 的版本基本上也是原始 CVS 的版本,不過他改寫了 DirectShow 解碼器的部分,加入 Post Processing 的功能,但是負擔變得很重,即使沒開 PP,速度還是很慢,老機器不建議使用 Nic 的版本來播放。

ffdshow 是使用 FFMPEG 的 libavcodec 來解碼。ffdshow 可以偵測舊的編碼器的一些 bug,例如 DivX5/XviD 的 Chroma rounding error,XviD 的 interlacing 模式 bug ...等等,並且修正這些錯誤。所以用 ffdshow 解碼相容性是最高的。基本上只是要播放的話,裝 ffdshow 一個就夠了。

各個解碼器用的 iDCT 算式不同,原則上用什麼編碼就用什麼解碼畫質會最好。ffdshow 預設用的 iDCT 是 Simple iDCT,可以改成 IEEE reference 或 XviD 用的 iDCT。如果知道播放的是 XviD 的檔案,可以將 ffdshow 的 iDCT 改成 "XviD",這樣播放的效果會比較好。不過最近 XviD 要實驗改成使用和 FFMPEG 一樣的 Simple iDCT,Koepi 的版本已經 enable 了這個 iDCT 算式,這樣以後壓出來的 XviD 檔案用 ffdshow 播放,就不必改選 "XviD" 的 iDCT,直接用原本的 Simple iDCT 即可。
當然也可以再安裝 XviD 的 Codec,兩者並存。ffdshow 有一個選項,叫 "use XviD",把這個選項打勾,ffdshow 就會尋找你系統上的 XviD Codec,用 XviD Codec 來解碼,而不是用內建的 libavcodec 解碼。這樣既可以使用 ffdshow 強大的 filter 功能做 Post Processing,又可以用 XviD 自己來解碼,可以說是兩全其美
舊 2003-02-06, 05:25 PM #8
回應時引用此文章
Shade離線中