What is codecs.org?
codecs.org is a meta-project containing a wide range of tools and libraries designed to
improve the state of codecs and their optimization. Most projects are inextricably tied to each
other, because many were created in order to solve a problem that first appeared while working on
another. As such these projects constitute a complete suite of tools.
Below is a very incomplete list of subprojects. To see the complete
list, please look through what's available in CVS.
An infrastructure library for specialization in libraries and applications. Enables
runtime function- and object-level specialization, as well as compile-time meta-specialization.
Highly optimized bitstream-parsing and writing routines, using the SpeciaLib object infrastructure.
Capable of being inlined into high-performance code at compile-time, while still interoperating with
libraries specializing at run-time.
Modern processors long since ceased to execute one instruction at a time, taking constant time
each. Consequently, the ordering of instructions can significantly alter the performance of a
function. Hyperopt calculates all valid reorderings of a sequence of instructions, and times them
to find the fastest version on any given processor.
Written for the Hyperopt project because of the lack of any kind of real opcode library, nopcodes
will eventually become a full-featured, multi-architecture library capable of assembling and
disassembling instructions to/from memory, into an intermediate object that can be manipulated. All
other opcode libraries either translate to/from strings, or are intimately tied to a specific
libcodec is a SpeciaLib-based library containing kernels commonly used by various codecs. This
includes MPEG motion compensation and motion estimation, forward and reverse DCT's in both 1 and 2
dimensions, block placement, various vector scaling, and type conversion routines.