Multimedia Framework Products (MFP)
A major advantage of programmable signal processors over fixed-function devices is their ability to accelerate multiple multimedia functions and provide flexible environments to enable user customization. However, sharing scarce embedded hardware resources between different algorithms (including codecs), as well as between multiple instances of the same algorithm, can be challenging. Systems can be further complicated when algorithms are independently provided by different vendors.
The Multimedia Framework Products (MFP) is a collection of related software components, including TI's XDAIS algorithm standard, Framework Components, Linux Utils, WinCE Utils, and Codec Engine. TI's XDAIS algorithm standard provides the rules and guidelines necessary to solve these integration problems. The additional products in the MPF suite build on this standard to provide scalable services that insulate higher-level applications and frameworks from these complexities.
The MFP components are available independently, as different customer use cases enter the SW stack at different locations, and may or may not require the complete MFP solution. The upper layer products (e.g. Codec Engine and Framework Components) include distributions that contain the underlying components as a convenience. Extensive documentation is provided in the various MFP product Wikis referenced here; in particualr, see Codec Engine FAQ.
If you are looking for the complete MFP Suite, you should download the CE release that includes the 'cetools' directory. Check the CE Release Notes for the exact versions of subcomponents that are included in the cetools/ directory.
Multimedia Framework Products MFP
MFP is completely open source. It is distributed under the BSD license (with the exception of kernel mode Linux drivers in the Linux Utils product, which are licensed under GPLv2), and is freely available from TI.
TI's well-proven eXpressDSP Algorithm Interoperability Standard, known as XDAIS, provides the rules and guidelines necessary to enable integration and execution of algorithms (including codecs). It provides C/C++ compatible headers for defined interfaces which can algorithms implement and application invoke. These interfaces enable algorithms to safely share resources, including memory, DMA, and other hardware accelerators. Examples and tooling are also provided.
- HLOS: Linux Utils and WinCE Utils
High Level Operating Systems (HLOS) such as Linux and WinCE don’t allow direct access to hardware resources often needed for efficient implementation of algorithms and codecs. Linux Utils and WinCE Utils provide user mode access to these resources. Since accelerators and DSPs generally lack a MMU, one critical feature provided is the ability to allocate physically contiguous memory (CMEM) for data used by algorithms and codecs.
Wiki: Linux Utils
Wiki: WinCE Utils
- Framework Components
XDAIS provides interfaces for algorithm management and resource sharing. Framework Components (FC) provides low-level libraries that utilize these XDAIS interfaces for creating, using, and deleting algorithms (DSKT2), as well as managing resources for them (RMAN and DMAN3). This enables users to quickly create a customized, XDAIS-compliant framework.
Wiki: Framework Components|
Codec Engine builds on the products in the MFP suite, and provides a complete out-of-the-box framework that enables users to use XDAIS algorithms and codecs with minimal coding.
A unique feature is that the algorithms it manages can be ‘local’ (on the same processor as the application) or ‘remote’ (on a different processor than the application), further insulating the application from the hardware on which it’s executing. It supports WinCE and Linux, and has been ported to multiple other Operating Systems.
CE supports concurrent execution of multiple channels and codecs. It does not provide A/V synchronization or manage application I/O, but rather accepts and delivers elementary audio and video streams. Codec Engine is designed to be used in conjunction with higher layer frameworks or middleware that provide a/v synchronization, video port and disk I/O, or network streaming while calling Codec Engine's APIs for actual encoding, decoding, and processing. This approach enables system providers to easily differentiate their applications while still leveraging Codec Engine.Wiki: Codec Engine
Technical documents are provided in each product, as well as via the related TI Embedded Processor Wiki sites.