codecs.org Part of GStreamer Family
home
SpeciaLib
libcodec
bitstream
Hyperopt
nopcodes
 
SourceForge Logo
 
 
 
 
 
 

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.

Projects

Below is a very incomplete list of subprojects. To see the complete list, please look through what's available in CVS.

  • SpeciaLib:

    An infrastructure library for specialization in libraries and applications. Enables runtime function- and object-level specialization, as well as compile-time meta-specialization.

  • bitstream:

    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.

  • Hyperopt:

    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.

  • nopcodes:

    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 application.

  • libcodec:

    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.