mediaLib

mediaLib

mediaLibmediaLib 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函數進行的一個包裝,旨在為多媒體應用程序提供靈活的多線程擴展能力