瀏覽單個文章
路過
Advance Member
 
路過的大頭照
 

加入日期: Apr 2005
文章: 479
別重覆安裝同樣的東西就好...

唉... 我來解釋一下好了
在這邊先把 decoder 與 encoder 分開,這樣比較好說明


一.
先來說明 decoder 的部份 - 以koepi's XviD為例

在 Windows下若要播放 XviD 影片時,此時 Windows 的播放程式會去尋找、並呼叫 Xvid Decoder 以要求解碼
通常這時的 Decoder 會是由已安裝 koepi's XviD 放出來的 xvid.ax 所管轄
而這個 xvid.ax 則會去調用真正的 XviD 的核心,也就是 xvidcore.dll
你可以把它理解成 xvid.ax 只是 XviD 的 interface
而 xvidcore.dll 則是它名字的意思


當然,這是電腦內只安裝了單一 decoder 的狀況
假設在同個系統內加裝了 Divx 與 XviD decoder 時,
由於 FourCC support 讓 XviD decoder 也可播放 Divx 格式
解碼的優先順序這類旁支末節就暫且不提

可以想見的,兩個 decoder 在極端狀態下就會打架
各自的 interface 會為了同一格式的檔案搶著作解碼
這也是為什麼會有人提出安裝多個 codec 會不穩的原因之一

當然造成不穩的原因還不止這些,我在文後會稍作解釋


二.
再來談到這如 ffdshow 這類整合 cdoec pack
是由於上述狀況其實還蠻常發生的,尤其在 WIN98 那個年代
嚴重一點就只能砍掉重練
所以 milan_cutka 為了解決這類問題
開發了 ffdshow

這類整合 code pack 最主要的目的,不僅僅是為了節省各自安裝 codec 的時間與精力
更重要的是,這類 codec pack 將會有

"獨立且單一的介面去調用電腦內的 codec"

如 ffdshow 的 ffdshow VFW (Xvid 的 GUI VFW component 則是 xvidvfw.dll ,之前這個檔案只是 core suffix)
由於調用的方式與編排在程式編寫時就已納入考量,所以解決了不同 codec 打架的問題


像 MPlayer 也是基於同一個原理,將大部份 codec 包在一起
並由自己開發的播放器調用
與 MPlayer 方式完全相反的則是 gabest 開發的 Media player classic
蠻有趣的狀況是,這兩種極端類型的播放器都有一定的佔有率(順帶一提,我是用MPC)
也沒啥誰好誰不好的,看自己習慣而定


三.
最後來談談 encoder

其實 endoer 與 decoder 的狀況類似
只是由 "將影片 decompress 輸出至顯卡" 換成 "轉換影片格式" 而已
方式大同小異。所以也同樣會遇到 encoder 打架的問題

拿 TMPGEnc 做轉檔為例
一般獨立安裝 codec 的狀況,轉換不同格式的影片
將由 TMPGEnc 內部設定,決定調用 encoder 的優先順序
VirtualDubMod 我記得也是同樣可以設定

早期有些轉檔程式則沒有這個設定,將由程式自己去做判斷
所以才會發生轉檔失敗的狀況

---------------------------------------------------

至於 ffdshow 與 K-Lite 的差異
我想 DSNB2 已經講得很明白了
只是容納程度上的差異而已

只是有些人裝完 K-Lite 這類東西,又回去裝了獨立的 decoder
或是裝了獨立的 decoder , 在K-Lite再加裝一樣的東西上去
造成 encoder 與 decoder 兩邊支援度不一
原本被統一的狀況又變得混亂,因此系統不穩定是一定會的
而且會這麼做的人還真的很多....


另外
如同 MPlayer 的方式,將大部份 codec 包在程式裡
由自帶的程式調用 codec 的程式

目前我只知道 WinMEnc ,其他的就請自行摸索吧


憑印象打了好長一篇...
不知道這樣你是否能理解了呢?
__________________
提高計算速度的方法不只一種。
平行計算只是一種提高效率的方式,具有不確定性與複雜性。關於提高效率的方式,存在著各種不同的理論。
對於我們來說,那並不是完美的東西。
舊 2007-01-19, 06:20 PM #14
回應時引用此文章
路過離線中