xDAIS and xDM
The eXpressDSP™ Algorithm Interoperability Standard (xDAIS) and the eXpressDSP Digital Media (xDM) standard fully leverage the ability of DSPs to perform a wide range of multimedia functions on a single device. eXpressDSP compliance is achieved by adhering to these standards. To deliver today’s multifunction DSP-based applications, systems providers must often acquire algorithms from multiple sources and then integrate them together into a working whole. A key factor that determines "time to revenue" is how quickly these different algorithms can be made to work together.
The xDAIS and xDM standards provide a set of coding conventions and application programming interfaces (APIs) that enables algorithms to be integrated much more quickly. xDAIS eliminates problems caused by algorithms implementing hard-coded access to system resources that must be shared with other algorithms. xDM specifies a standard API for the application to call a particular algorithm class (see below for explanation of algorithm class), enabling an integrator to quickly change to algorithm from a different source if different functionality or performance is required. The APIs defined in the xDM standard are also referred to as the VISA (video, imaging, speech and audio) APIs.
By establishing standards for algorithms used on TI DSPs, TI benefits both algorithm providers and systems integrators. Because algorithms from third parties can be easily integrated by OEMs using TI DSPs and software frameworks, the market for third-party algorithms increases. Likewise, algorithm standardization increases the quantity and quality of algorithms available for use by OEMs. To assist developers in producing compliant algorithms, TI provides tools and frameworks for creating and testing standardized algorithms.
xDAIS and xDM Advantages
- Well-established standard first introduced in 1999 proven in numerous applications
- Significant reduction in integration time as algorithms do trash each others resources
- Easy comparison of algorithms from multiple different sources in the same application
- Access to broad range of compliant algorithms available from multiple TI DSP Third Parties eliminates need to custom develop complex algorithms
- Algorithms work out-of-the-box with eXpressDSP Multimedia Framework Products, such as Codec Engine
How to Create and Verify an eXpressDSP-compliant algorithm - See below.
xDAIS and xDM Technical Overview
eXpressDSP Digital Media (xDM) standard
- The xDM standard defines APIs through which an application invokes a particular class of codec, such as video decode or audio encode. xDM APIs are defined for the following codecs classes:
- Video decode
- Video encode
- Image decode
- Image encode
- Speech/Voice decode
- Speech/Voice encode
- Audio decode
- Audio encode
By standardizing these APIs, xDM enables an application framework to support multiple codecs of the same type without extensive modification. For example, a portable media player might need to play a mix of AAC, MP3, and WMA-encoded tracks. Using xDM, the framework developer can create a single audio decode task that can invoke which ever decoder is needed for the track selected by the user, rather than having to have multiple task each designed to handle the custom requirements of each audio codec. In addition, it is straightforward for developers to change from one MP3 decoder to another, for example, when evaluating which codec is the best for their system.
eXpressDSP™ Algorithm Interoperability Standard (xDAIS) - The xDAIS standard is designed to enable multiple algorithms to coexist in an application by preventing 'hard-coded' use of critical system resources, such as memory and DMA, in the algorithm. In contrast, the algorithm must implement two interfaces (IALG and IDMA; see definitions below) that are then queried by the application framework to determine the memory and DMA needs of the codec:
- IALG provides an interface the application framework queries for use of memory resources. IALG enables sharing of scratch memory between algorithms that will not preempt each other. This allows more efficient use of memory since total scratch memory requirements may be reduced.
- IDMA3 provides an interface the application framework queries for use of EDMA3 resources on TMS320C64x+™ DSP core-based devices. Algorithms can request dedicated EDMA3 resources that they always own or dynamically share a pool of DMA channels with other algorithms. Please note that IDMA3 should not be confused with the IDMA HW on the C64x+ DSP core-based devices. IDMA3 does not use or program the IDMA HW. C64x+DSP core-based devices include:
The framework can then ensure that the resources granted are not already in use by another algorithm. As a result, it is easier to reuse algorithms that are eXpressDSP compliant, especially when utilizing algorithms from multiple sources.
In addition to the resource sharing interfaces, xDAIS also specifies 46 "common sense" coding guidelines that algorithms must implement, such as being reentrant or avoiding C programming techniques that are prone to introducing errors.
For full details of xDAIS and xDM APIs and coding conventions, please download the xDAIS Developer’s Kit.
xDAIS Developer’s Kit - Download
The xDAIS developer’s kit is an eXpressDSP software component for algorithm developers who want to implement the interfaces of the xDAIS and xDM standards. The xDAIS Developer’s Kit provides the header files, specifications, and documentation needed to implement xDAIS-compliant algorithms.
xDAIS Developer’s Kit v5.21 includes the following:
- XDAIS and xDM Core Content: This includes standard headers (ialg.h, etc), sample algorithms and algorithm API headers and libraries
- DSP Platform Support: The C64x+ DSP core-based devices are fully supported.
- Previous versions: For versions of the xDAIS Developer’s Kit that support the TMS320C2000™ and TMS320C5000™ DSP platform, as well as other devices in the TMS320C6000™ DSP platform
- Technical Documentation: The latest xDAIS and xDM standard documentation, application notes and getting started guides
- TMS320 DSP Algorithm Standard API Reference - spru360e
- TMS320 DSP Algorithm Standard Rules and Guidelines - spru352g
- Technical Overview of eXpressDSP-Compliant Algorithms for DSP Software Products - spra579c
- Using the TMS320 DSP Algorithm Standard in a Dynamic DSP System - spra580b
- Writing a C Callable Assembly Function Using the TMS320C2000 - spra590
- Using the TMS320 DSP Algorithm Standard in a Static DSP System - spra577
- Using DMA with Framework Components for C64x+ - spraag1
- Using External References in eXpressDSP-Compliant Algorithms - spra929
- xDM User’s Guide - spruec8b
- Codec Engine Algorithm Creator User’s Guide - sprued6b
- Codec Engine Server Integrator’s Guide - sprued5a
How to Create and Verify an eXpressDSP-Compliant Algorithm
How to create and verify an algorithm that complies with xDAIS and xDM
Third-party algorithm providers and system integrators who wish to have their algorithms comply with the eXpressDSP standards need to perform to main steps:
- Ensure their algorithm complies with the rules and API definitions specified in the xDAIS Developer’s Kit
- Test their algorithms function in the Codec Engine framework. Codec Engine requires eXpressDSP-compliant algorithms
These steps are described in more detail below, along with links to appropriate documentation.
How to modify your algorithm to comply with xDM and xDAIS
Before You Begin: Download the Codec Engine, Framework Components and the xDAIS Developer’s Kit to get started, as these contain all relevant specifications, documentation, and examples.
Algorithm developers will need to perform three main steps to create an algorithm that is compliant with xDAIS and xDM:
How to test your algorithm in Codec Engine for xDM and xDAIS compliance
- Review the coding guidelines and ensure that the algorithm code meets these. The coding guidelines are described in spru360.pdf and spru352.pdf
- Eliminate all direct access by the algorithm to physical resources such as memory, DMA, or I/O peripherals. Memory and DMA resources must be requested through the framework using the IALG and IDMA3 interfaces. The IALG and IDMA3 interfaces are documented in spru360.pdf and spru352.pdf. For additional information on use of IAGL, please refer to spra579.pdf, spra580.pdf, spra590,pdf, and spra577.pdf. For additional information on IDMA3, please refer to spraag1.pdf. Any other peripheral access must be moved out to the framework with the algorithm simply operating on data buffers. If there are some additional hardware resources, such as timers or accelerators, that an algorithm must refer, please refer to spra929.pdf for guidance on this.
- Make the algorithm support the xDM APIs for invocation. The xDM APIs are documented in spruec8.pdf
In addition to completing the steps listed for xDAIS and xDM compliance list above, developers must do the following steps:
- Wrap the algorithm in an XDC package so it conforms to the ICODEC package interface and directory naming conventions. The process for doing this is described in sprued6.pdf.
- You should then select the appropriate example from the examples directory. For an audio decoder, you would select the audio decode example. To simplify the test process, you should execute the codec locally on the DSP. To do this, chose the local.cfg file and replace the name of the copy codec used in the example with your own codec. You can use the in.dat file to provide input data for testing.
- If you wish your codec to be used on ARM-DSP devices such as the DM6446, you must also test your codec in a remote execution configuration by creating a DSP server. The guidelines for creating a DSP server are found in sprued5.pdf.