MediaLib

mediaLib （ 指 " 多媒體函數庫 " ） 是一個用於加速多媒體應用程序的可移植的底層函數庫 。 它具備C語言接口 ， 其最新版本爲 2.5 。 它最初由Sun開發 ， 之後作爲OpenSolaris項目的一部分在CDDL許可證下開源 。 mediaLib 用C及編譯器原語寫成 ， 可以利用多種處理器上帶有的SIMD多媒體指令集來獲得顯著的性能提升 。 雖然最初它只能利用SPARC處理器上的VIS指令集 ， 但是後來又加入了對Intel ／ AMD處理器上的MMX ／ SSE ／ SSE2等指令集的支持 。 mediaLib 用C及編譯器原語寫就 ， 理論上一個系統只要有支持C和編譯器原語的編譯器 ， 就可以編譯並且使用它 。 如果缺乏編譯器原語的支持 ， 也可以編譯使用mediaLib的純C語言版本 ， 但是這樣的話將無法獲得SIMD多媒體指令集所能帶來的性能提升 。 mediaLib目前包含在Solaris操作系統中 。 mediaLib 2.5 包含近4000個文件和240萬行C源代碼 ， 有針對不同領域應用的函數3000餘個 ： 線性代數 矩陣運算 圖像處理 圖形處理 信號處理 視頻 音頻 語音 三維渲染 調用了mediaLib的開放源代碼應用程序有Java ， JDS for Solaris, mplayer ， ffmpeg ， and ogle 。 mediaLib 有針對多個平臺的不同版本 ， 但是這些版本都共享同一套API ， 所以使用者可在多個平臺間自由遷移 ， 而無需修改源代碼中對mediaLib的調用 ： C語言版本 ： 以純粹的ANSI C寫就 ， 並帶有常見代碼優化 VIS / VIS2 / VIS3版本 ： 以SPARC芯片的VIS / VIS2 / VIS3多媒體擴展指令集進行優化 MMX / SSE / SSE2版本 ： 以Intel / AMD芯片的MMX / SSE / SSE2多媒體擴展指令集進行優化 整數版本 ： 針對無浮點運算能力或浮點性能較弱的芯片進行優化 ， 這樣的芯片如UltraSPARC T1和一些定點嵌入式處理器 多線程版本 ： 是在mediaLib之上以OpenMP對mediaLib函數進行的一個包裝 ， 旨在爲多媒體應用程序提供靈活的多線程擴展能力