NOTICE: The Processors Wiki will End-of-Life on January 15, 2021. It is recommended to download any files or other content you may need that are hosted on processors.wiki.ti.com. The site is now set to read only.
Codec Engine Roles
Contents
Codec Engine User Roles[edit]
Introduction[edit]
The Codec Engine (CE) is a framework which enables several customer use cases, from ARM-side application developers to DSP-side codec authors, and several integrators in between. In many cases, these roles may be played by a single person - in other development environments, a different developer may be assigned each role individually. This topic describes the 4 primary roles which CE users will play, and the inputs and outputs of each role.
Because CE is very portable and configurable, and can run in many different environments, the descriptions of these roles may be intentionally vague. When applicable, specific hardware and software environments are described after the general descriptions.
Algorithm Creator[edit]
The codec creator is responsible for creating an XDAIS algorithm, and providing the necessary packaging to enable these algorithms to be consumed, and configured by CE.
If the codec is XDM compliant, CE's VISA APIs will support remote execution of the codecs without additional support. However, if the codec is *not* XDM compliant, and the codecs support remote execution, they will need to supply CE skeletons and stubs.
Responsibilities |
|
---|---|
Inputs |
XDAIS, XDCtools |
Outputs |
A released codec package. This package includes a module that implements ti.sdo.ce.ICodec, as well as the libraries that contain the algorithm's implementation. |
Notes |
Resources:
|
CE Server Integrator[edit]
To support engines with remote codecs, a Server must be created. The Server integrates the various components necessary to house the codecs (e.g. BIOS, Framework Components, DSP Link, codecs, CE, etc.) and generates an executable.
Responsibilities |
|
---|---|
Inputs |
Various Codec packages, Codec Engine and dependent packages (e.g. ti.bios, ti.sdo.fc.dskt2, etc), XDCtools |
Outputs |
A Codec Server package, containing a DSP executable |
Notes |
Resources:
|
The Server Integrator hands the DSP executable to the Engine Integrator (preferably as a Codec Server package. The Server Integrator should also provide a list of the codecs in the Codec Server, as well as documentation about how they've been configured (for example, thread priorities and resource configuration).
On GPP-only (e.g. DM355, DM365) and DSP-only (e.g. DM6437, DM648) platforms, Codec Servers (and therefore this role!) are not applicable.
CE Engine Integrator[edit]
The CE Engine integrator defines various engine configurations. This can include the names of the engines, as well as the codecs and their names within each engine, whether each codec is local or remote relative to the application, which groups each codec should be integrated into (for environments which support resource sharing), the name of the server image if a particular engine contains remote codecs, etc. This is done via a XDC configuration script (*.cfg).
This script, when run at a later time by the application author, generates code and build instructions appropriate for the configuration.
Responsibilities |
An engine config file (.cfg). If the Engine uses remote codecs, this may reference a Codec Server |
---|---|
Inputs |
|
Outputs |
The engine config script (.cfg) |
Notes |
Resources:
Leveraging createFromServer() when possible will simplify this role greatly |
The Application Author writes application code, generates output from the Engine configuration file (.c and .xdl output files) using the XDC Tools, and compiles the application code and generated files. This person then links the files, including the generated linker command file (.xdl) into an executable. The end result is the application executable.
The process for generating an application executable is highly dependent on the application's operating system. If the application runs on the DSP using DSP/BIOS, for example, a .tcf file is needed to configure the DSP/BIOS kernel as well. If the application runs on Linux, the application does not need to configure the operating system.
CE Application Author[edit]
The application uses the CE APIs (e.g. Engine_, VISA, and other utility APIs) provided by CE to create/delete preconfigured engine instances, create/delete and interact with codecs, acquire buffers appropriate for the codecs, etc. As CE doesn't perform any I/O, the application is responsible for all I/O, including file access (e.g. open/read/write/seek/close) and driver interaction (e.g. open/close/ioctl and buffer management).
The application author is responsible for building the app code, and for linking in "the appropriate content" into the executable image.
Responsibilities |
|
---|---|
Inputs |
An Engine config file, XDCtools |
Outputs |
An application executable |
Notes |
Resources:
|
The Application Author writes application code, generates output from the Engine configuration file (config-specific .o, compiler.opt and linker.cmd output files) using the XDC Tools, and compiles the application code and generated files. This person then links the files, including the generated linker command file (linker.cmd or .xdl) into an executable. The end result is the application executable.
The process for generating an application executable is highly dependent on the application's operating system. If the application runs on the DSP using DSP/BIOS, for example, a .tcf file is needed to configure the DSP/BIOS kernel as well. If the application runs on Linux, the application does not need to configure the operating system.