It is implemented in ANSI C, but can take advantage of SIMD multimedia instructions on various processors to gain a significant performance boost. It was originally designed to leverage VIS on SPARC processors and later added support for MMX/SSE/SSE2 on Intel/AMD processors.
Since mediaLib is written in C and SIMD multimedia compiler intrinsics, it should be usable on any system that has an ANSI C compiler that supports SIMD multimedia intrinsics. Systems without SIMD intrinsics support can also use it as pure ANSI C, forgoing any extra acceleration provided by SIMD multimedia instructions. It is also included as part of Solaris 10.
mediaLib 2.5 contains about 4000 files and 2.4 million lines of code, and contains more than 3000 functions for different areas:
Open source applications that use mediaLib include Java, JDS for Solaris, mplayer, ffmpeg, and ogle.
There are several mediaLib versions targeting different platforms, but all share the same API, so users can switch from one platform to another without changing source code:
*Standard C: written in pure ANSI C, with some general code optimization for performance
*VIS/VIS2/VIS3: optimized for SPARC chips with VIS/VIS2/VIS3 multimedia instruction sets
*MMX/SSE/SSE2: optimized for Intel/AMD chips with MMX/SSE/SSE2 multimedia instruction sets
*Integer: optimized for chips that have no or limited floating point capabilities, such as UltraSPARC T1 and some embedded chips
*Multi-threaded version: A thin wrapper layer built with OpenMP on top of mediaLib, providing flexible multithreading multimedia acceleration for applications