Please note as of Wednesday, August 15th, 2018 this wiki has been set to read only. If you are a TI Employee and require Edit ability please contact x0211426 from the company directory.

Codec Engine Roles

From Texas Instruments Wiki
Jump to: navigation, search

Codec Engine User Roles

Introduction

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

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
  • Generate a codec library with appropriate IALG and optional IDMA3 interface symbols exported
  • Implement the ti.sdo.ce.ICodec interface, referencing the requisite exported symbols
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

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
  • Config scripts
    • For BIOS 6-based systems (i.e. >= CE 3.x), both Server and BIOS use the same config file (.cfg)
    • For BIOS 5-based systems (i.e. <= CE 2.x), the Server uses a .cfg script and BIOS uses a separate tconf script (.tcf)
  • A simple main() routine to do minimal initialization (e.g. CERuntime_init()).
  • Execute the configuration scripts and compile the output into an executable.
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

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
  • Various Codec packages from Algorithm Creators
  • A Codec Server DSP executable from the Server Integrator if codec will run on a DSP
  • An Engine config file (.cfg) from the Engine Integrator
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

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
  • Application code
  • Generate output from Engine config file (.c and .xdl)
  • Compile app code and generated files, and linking them - including the generated linker command file (.xdl) - into an executable.
    • The process for generating an application executable is highly dependent on the app's OS. If the app runs on BIOS, for example, a .tcf file will be required to configure the OS as well. If the app runs on Linux, the app isn't required to configure the OS.
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.