2. 另一個會造成不相容的原因,是因為這個 codec 在實作 MPEG-4 壓縮規格的時候做錯了。
程式有 bug,造成壓出來的資料流是「不合法」、不符合 MPEG-4 標準的資料流,所以其他正確的 MPEG-4 codec 無法解碼。
有的時候不一定是 codec 的程式設計人員做錯,而是 MPEG-4 規格有一些修訂,設計人員沒有更新手上的 MPEG-4 標準文件,還是用舊的規格去實作,結果當然不符合新的修訂規格。
或者是,標準本身就有錯。
真的,標準也會有錯,尤其是那個天殺的,超難看懂的 MPEG-4 Standard 文件

有時候會出現 Standard 文件裡面寫的是這樣做,然而範例程式的 source code 卻是用另一種做法,令人不知所措,不知道該聽誰的,哪一個做法才是正確的。
再加上 MPEG-4 涵蓋的範圍很廣,又不容易閱讀,所以程式設計人員不小心看錯,或者是理解錯誤的情況也時有發生。
用錯誤的 codec 壓出來的檔案就有可能無法被其他 codec 解碼,所幸的是這種錯誤通常會立刻被發現,隨即推出更新的版本。
DivX 5.x 系列有許多版號,從 5.0 到現在的 5.1.1,每一版都是 MPEG-4 codec,不同的版本只是在更新提高壓縮的效率,還有修正這些重大的錯誤。
就如同 TMPGEnc 這個 encoder 有許多版本,每一版都做了一些修正和改進,但是他壓出來的都還是 MPEG-2。
DivX 5 這個 "encoder" 也一樣,每一版只是在做改進,不是每一版都是一個新規格。
3. 第三種不相容的情況,不是完全不能播放,而是播放的時候會有一些錯誤。
例如
1) 畫面會出現各種奇怪的瑕疵,例如水波紋、顏色逐漸變成粉紅色、色彩像水彩沾到水一樣擴散開來... 等等,idct mismatch 的問題。
這個是 MPEG-4 壓縮規格本身的瑕疵,不同的 iDCT 演算法會造成嚴重的畫面瑕疵。這個問題無解。由於目前流行的 DivX 和 XviD 所採用的 iDCT 演算法是 walken idct,所以硬體的 MPEG-4 player 可能也都會採用 walken idct,以避免不相容的情形。
2) 畫面會頓。
由於解碼的 buffer 不可能無限大,在硬體播放機上更是有一定的限制,例如 DVD-Video 規定 VBV Buffer 必須是 224kbytes,然而目前 MPEG-4 並沒有被制訂為是媒體壓縮的標準,所以各個 codec 在壓縮時並沒有做統一的限制 VBV Buffer 的大小。
DivX 的公司 DXN 有自訂幾個 Profile 限制最大 Bitrate,只要有掛上這個 DivX Profile 認證的播放機,就可以順暢的播放沒有問題。而 XviD 目前的 RC 演算法並沒有考慮 VBV 的設計,所以無法限制最大 Bitrate,如果檔案的流量真的很大,拿到硬體播放機上面播放就有可能會出現停頓的現象。
以上是一些不相容的情況,其中大部分的問題,在制訂媒體壓縮標準的時候一定會有明確的規定,所以這些問題都不成為問題。
MPEG-4 要成為媒體標準最大的問題,我覺得還是在 MPEG-4 本身的瑕疵上面。
MPEG-4 當初制定的時候目標並不是高流量,而是在低流量的品質,所以他能夠壓出來的最高品質,比 MPEG-2 低。
有在壓 MPEG-4 的人會發現,H.263 quantization quantizer 2 壓出來的品質還是很差,如果用 quantizer 1 壓縮,檔案又會很大,quantizer 1 和 quantizer 2 的落差很大,沒有進一步細分。
而要做為高品質的壓縮標準,quantizer 2 還是不夠用的。
而 MPEG-2 的 quantizer 2,non-linear scale,和 MPEG-4 的 MPEG quantization 相比,品質高了一倍。
再加上現在的 MPEG-4 codec,DC 精度都只有 8bit,MPEG-2 可以到 11bit,所以高品質 MPEG-4 還是比不過 MPEG-2。
MPEG-4 的設計還有其他許多缺陷,例如 B-frame 的 Macroblock skip 機制,這是一個天才的設計,會造成離譜的壓縮瑕疵。
所以要拿 MPEG-4 做為高畫質的影音媒體標準,實在是不太行。
相形之下,WMV9 或 VP6 可能就好一點。
現行的 MPEG-4 不是不能做為高畫質影音媒體的壓縮標準,只是還要修改一下,例如前面提到的 DC 精度,MPEG-4 不是只能為 8bit,只是現行的設計都是 8bit。
修改一下,為影音媒體量身定做一個 Profile,還是可行的,但是我想大家應該都已經轉移目標,把希望寄託在 MPEG-4 的 part.10,MPEG-4 AVC(Advanced Video Coding),也就是 H.264 的身上。
如果要拿來做為下一代影音媒體的標準,MPEG-4 AVC,也就是 H.264 是比較考慮的,不過 H.264 的問題在於:「太複雜了!!」,編碼、解碼的負擔非常重,而且很難設計,實在太難了,君不見有多少開放原始碼的 H.264 的計畫最後都無疾而終。
光是以前的 MPEG-4,MPEG-4 part.2 視訊壓縮大家就做得要死要活,錯得錯誤百出,做到現在才算有一點成熟,part.10 要做到實用化,可能還要再等上一段時日。
在這段空窗期,WMV9 就很有可能趁虛而入

或者乾脆用回以前的 MPEG-2。
一切都還在未定之數.....