Codec Engine 1.20 Release Notes
April 5, 2007
This Codec Engine Release is targetted to the DaVinci platforms,
enabling users to instantiate and utilize both local and remote codecs.
In addition to the heterogenous DM644x devices, it supports single
processor environments as well; specifically C64+ devices (e.g. DM643x,
and DM648), ARM9 devices running Linux and x86 devices running Linux.
Introduction,
Documentation,
What's New,
Upgrade Info,
Compatibility Information,
Validation Info,
Known Issues,
Device Support,
Examples,
Version Information,
Technical Support.
The Codec Engine is a software platform for algorithm execution that
satisfies the following, high-level goals:
- Robust - drives pre-integrated components with fully
characterized performance.
- Easy to use - app developers specify what needs to
be run, but not how or where.
- Extensible and Configurable - new algorithms can be added
by anyone, using standard tools and techniques.
- Portable - API's are target, platform, and in many cases
even codec independant.
The Codec Engine consists of the following packages:
- ti.sdo.ce - The Codec Engine runtime.
- ti.sdo.ce.video - The Codec Engine video component.
Both encode and decode are supported, and an example is provided.
- ti.sdo.ce.image - The Codec Engine image component.
Both encode and decode are supported, and an example is provided.
- ti.sdo.ce.speech - The Codec Engine speech/voice component.
Both encode and decode are supported, and an example is provided.
- ti.sdo.ce.audio - The Codec Engine audio component.
Both encode and decode are supported, and an example is provided.
- ti.sdo.ce.osal - The Codec Engine OS Abstraction
Layer. This package insulates CE from the OS it's running on, and
provides a few Modules for customers to use (e.g. Memory).
- ti.sdo.ce.utils.trace - The Codec Engine utility
package for trace. This includes the TraceUtils module. This makes
tracing features easier to use by an application. It will be
supported in this release, but may be replaced in a future release
with an incompatible implementation.
Additionally, this release of the Codec Engine supports the xDM 1.00
interfaces included in xDAIS 5.21. This support is provided in
the following packages:
- ti.sdo.ce.video1 - The Codec Engine video 1.00 component
(supporting the xDM 1.00 interfaces). Both encode and decode
are supported, and an example is provided.
- ti.sdo.ce.image1 - The Codec Engine image 1.00 component
(supporting the xDM 1.00 interfaces). Both encode and decode
are supported, and an example is provided.
- ti.sdo.ce.speech1 - The Codec Engine speech 1.00 component
(supporting the xDM 1.00 interfaces). Both encode and decode
are supported, and an example is provided.
- ti.sdo.ce.audio1 - The Codec Engine audio 1.00 component
(supporting the xDM 1.00 interfaces). Both encode and decode
are supported, and an example is provided.
The following documentation is available:
- Codec Engine Application Developer's Guide
- Codec Engine Server Integrator's Guide
- Codec Engine Algorithm Creator User's Guide
- Codec Engine Application Programming Interface (API) Reference
Guide (HTML | CHM)
- Codec Engine System Programming Interface (SPI) Reference
Guide (HTML | CHM)
- Configuration Reference Guide.
- Using Adapters
to Run Existing xDAIS Algorithms with Codec Engine App Note
Release notes from previous releases are also available in the
relnotes_archive directory.
The following significant changes have been made since 1.00
1.20 (This Release)
- General
- Updated to xDAIS 5.21, which includes xDM 1.00 interfaces
- Updated to DSP/BIOS Link 1.40.05 - this resulted in some
necessary configuration-related changes
- Updated to Framework Components 1.20.02
- Updated to new XDC Tools 2.93.01
- Updated to CMEM 1.04
- Added examples for single-processor, environments (e.g. DM643x) -
this includes placing executables into platform-specific directories,
as well as demonstrating necessary caching techniques for cache-enabled
environments.
- Added Link Arbiter Daemon (LAD)
- Added CERuntime_exit() for applications which want to erase any
CE Runtime from their environment without exiting their application.
This is useful if, for example, an application wants to switch between
a Codec Engine based environment, and a custom DSP Link-based framework.
- Moved examples into "Codec Engine-specific" namespaces (e.g., the
previous codecs.viddec1_copy codec package is now the
ti.sdo.ce.examples.codecs.viddec1_copy package.
- Added configuration option to xDM 0.9-based video encoders
to not manage the cache for the reconstruction buffers.
- Added 'checked' builds to the distribution. This enables
some parameter and usage validation to occur within the CE
framework, helping to identify common coding errors in both
applications and algorithms. Enabling this optional feature
introduces some performance overhead, but is encouraged for
those early in development. This can be enabled in the
application configuration, as well as the Server (for systems
with remote algorithms). See the documentation on the
ti.sdo.ce.Settings Module's "checked" parameter in the
Configuration Reference Guide.
- BIOS-based environments
- Added LOG_events for profiling performance
- The following defects were resolved:
ID |
Headline |
SDSCM00014413 |
xdcpaths.mak requires FC installation in ".lite" release |
SDSCM00014540 |
CE OSAL requires presence of dsplink.dsp package even if it's used
in a DSP/BIOS-only setting |
SDSCM00015336 |
Scale example's SCALE_Params struct does not have the required
IALG_Params struct as its first element |
- The following enhancements were resolved:
ID |
Headline |
SDSCM00013759 |
CMEM should support multiple processes |
SDSCM00014703 |
Add Memory_cacheWb() to OSAL |
1.10
- General
- Updated to C6x Codegen 6.0.7
- Updated to DSP/BIOS 5.31.01
- Updated to Framework Components 1.10.01
- Updated to xDAIS 5.10, which includes xDM 1.00 beta
interfaces
- CE Runtime
- Added new methods to ti.sdo.ce.ICodec interface
(getCreationStackSize(),
getDaramScratchSize(), and
getSaramScratchSize()) to make Server configuration
easier. When codecs implement these methods, the XDC Config Kit
is able to either:
- Auto-generate the DSKT2 scratch configuration, or
- Validate the scratch config (if the server integrator
wants to continue explicitly configuring those values).
- VISA
- Added support for xDM 1.00 Beta interfaces. (Previous xDM
0.9 interfaces continue to be supported)
- SPI (System Programming Interfaces)
- Added VISA_setContext() and
VISA_getContext() services for stub/skeleton/API authors.
- Documentation
- Added "Adapter" application note describing how to integrate
non-xDM codecs, as well as a technique for adding pre- and post-
processing steps to existing codecs without modifying them.
- Examples
-
Added new, Linux-only example demonstrating how users can
create a shared library from a single configuration, which can
then be used by multiple applications.
-
Added a new example, explicitly describing the steps taking
during configuration to better demonstrate the necessary
configuration steps for users who want to integrate this into
their own, custom build flows.
-
Modified example codecs, when possible, to utilize copy
codecs now distributed in xDAIS 5.10. In this way, it's more
clearly described what little XDC packaging is required to
integrate an already XDC packaged Codec (independant of CE) into
the CE framework.
- Defects
- SDSCM00010422 - CE and CMEM should set the close-on-exec
flag on any open file handles
- SDSCM00005810 - Additional C++ testing required
- SDSCM00004993 - GT no longer supports wildcards as second
character
- SDSCM00004805 - GT computes (a lot) during GT_?trace()
- Enhancements
- SDSCM00010364 - GT needs productized
- SDSCM00008121 - not possible to properly size RMS thread's
stack
- SDSCM00007887 - Support VISA_getContext/setContext SPIs
- SDSCM00006616 - CE should ensure unique UUIDs
- SDSCM00003992 - Add pre- and/or post- process example to
codecs
- SDSCM00002920 - ICodec should have a getScratchSize method
1.02
- General
- Introduced ti.sdo.ce.utils.trace.TraceUtils
module.
- Libraries are now provided in release builds. Previously,
they were debug-only.
- Introduced Engine_setTrace() API.
- Added support for C++
- VISA Classes
- Added extended xDM support to the remaining 3 classes
(AUDENC, VIDENC, and SPHENC).
- Documentation
- Addition of System Programming Interface (SPI) Reference
Guide.
- Codec Engine Server Integrator's Guide (SPRUED5)
- Codec Engine Algorithm Creator User's Guide (SPRUED6)
- Minor updates to the Codec Engine Application Developer's
Guide (SPRUE67A)
1.01
- General
- Many trace strings were modified/added.
- C64P libraries built with 6.0.3 compiler.
- VISA Classes
- Audio Encoding support has been added
- Better compliance checking of "size" field. This field
must be set correctly in the various VISA APIs, as it is
now used to determine how much data to provide to the
codecs.
- Related to previous bullet, added extended xDM support to
VIDDEC, VIDENC, AUDDEC, IMGDEC, and SPHDEC classes. There are
limits to the size of the extended structures, and they must not
contain pointers in the extended structures.
- outArgs fixed to be provided in the case of a failed
process() call (enabling inspection of extendedError).
- Removed cache alignment validation of input buffers. When the
application can ensure cache coherence, these buffers need not be
aligned.
- Documentation
- Minor updates to the Codec Engine Application Developer's
Guide (SPRUE67A)
The Codec Engine packages are available in the "packages/"
subdirectory of the product. If you have a previous release of the
Codec Engine product, you can install this release next to it, and
modify your application and/or server builds to use this newer release.
If you're using the DVEVM, this can be done by setting the
CE_INSTALL_DIR variable in the Rules.make file at the
top of the DVEVM distribution directory.
Compatibility Breaks!
- CE 1.20 requires system integrators to update to DSP Link 1.40.05 and
XDC Tools 2.93.01 releases.
- ti.bios.utils usage has changed. This was only
supported/necessary in DSP/BIOS-based content (DSP-side), but server
integraters previously had to configure the "LOAD_idlefxn" function
into their idle loop. This "LOAD_idlefxn" has been renamed
"Load_idlefxn".
The good news for Codec Engine users is that now
the idle loop will be correctly configured automatically, so it's
safe (and necessary!) to simply remove the idle loop configuration
from your .tcf script.
This release supports and has been tested on the following devices:
- DM6446 EVM, dual-processor configuration:
- dual-processor configuration, running ARM9 MV Linux (gcclib) and
C64+ DSP/BIOS
- dual-processor configuration, running ARM9 MV Linux (uClibc) and
C64+ DSP/BIOS
- single-processor configuration, running ARM9 MV Linux (gcclib)
- single-processor configuration, running ARM9 MV Linux (uClibc)
- DM6437 EVM, single processor configuration:
- C64+ simulators, single processor configuration:
- x86 Linux, single processor configuration, running Red Hat Enterprise
Linux 3
Some packages have broken compatibility with previous releases. The details
provided below describe each package's compatibility with the previous release
(1.10).
Note, the Configuration Reference Guide contains
further details about each package.
-
ti.sdo.ce - This package is compatible with the
previous release. (Compatibility key: 1,0,3,0 -> 1,0,
4)
-
ti.sdo.ce.audio - This package is compatible with the
previous release. (Compatibility key: 1,0,0,0 -> 1,0,
1)
-
ti.sdo.ce.bioslog - This package is compatible with the
previous release. (Compatibility key: 1,0,0,0 -> 1,0,
1)
-
ti.sdo.ce.image - This package is compatible with the
previous release. (Compatibility key: 1,0,0,0 -> 1,0,
1)
-
ti.sdo.ce.node - This package is compatible with the
previous release. (Compatibility key: 1,0,0,0 -> 1,0,0)
-
ti.sdo.ce.osal - This package is incompatible
with the previous release. (Compatibility key: 1,0,0,0 ->
2,0,0)
-
ti.sdo.ce.osal.alg - This package is compatible with the
previous release. (Compatibility key: 1,0,0,0 -> 1,0,0)
-
ti.sdo.ce.speech - This package is compatible with the
previous release. (Compatibility key: 1,0,0,0 -> 1,0,
1)
-
ti.sdo.ce.trace - This package is compatible with the
previous release. (Compatibility key: 1,0,0,0 -> 1,0,0)
-
ti.sdo.ce.utils - This package is compatible with the
previous release. (Compatibility key: 1,0,0 -> 1,0,0)
-
ti.sdo.ce.utils.trace - This package is compatible with
the previous release. (Compatibility key: 1,0,0,0 -> 1,0,
1)
-
ti.sdo.ce.video - This package is compatible with the
previous release. (Compatibility key: 1,0,0,0 -> 1,0,
1)
The following packages are being introduced in this release, and therefore
have no compatibility with previous releases.
-
ti.dsplink.utils.lad (Compatibility key:
1,0,0)
-
ti.dsplink.utils.ladclient (Compatibility key:
1,0,0)
-
ti.sdo.ce.utils.xdm (Compatibility key:
1,0,0)
The following packages were provided but unsupported in previous releases.
The are now officially supported, and therefore have no compatibility with
previous releases.
-
ti.sdo.ce.audio1 (Compatibility key:
1,0,0)
-
ti.sdo.ce.image1 (Compatibility key:
1,0,0)
-
ti.sdo.ce.speech1 (Compatibility key:
1,0,0)
-
ti.sdo.ce.video1 (Compatibility key:
1,0,0)
If migrating from a release prior to CE 1.10, consult previous
releases available in the relnotes_archive directory.
Compatibility Key Definitions
Compatibility keys are intentionally independent of Marketing product
numbers and are intended to:
- Enable tooling to identify incompatibilities between components,
and
- Convey a level of compatibility between different releases to
set end user expectations.
Compatibility keys are composed of 4 comma-delimited numbers - M,S,R
- where:
- M = Major. A difference in M indicates a break in
compatibility.
- S = Source. A difference in S indicates source
compability. That is, the user's source doesn't require change, but
does require rebuilding.
- R = Radix. A difference in R indicates an introduction
of new features, but compatibility with previous interfaces has not
broken. If libraries are provided by the package, an application
must re-link with the new libraries, but not rebuild from source.
This release was built and validated against using the following
components:
- Framework Components 1.20.02
- xDAIS 5.21
- XDC Tools 2.93.01
- DSP/BIOS Link 1.40.05, configured for the DM6446 EVM
- C6x Code Generation Tools version 6.0.8
- DSP/BIOS 5.31.05
- MontaVista Linux v4.0
- Red Hat Enterprise Linux 3 (SMP)
This release was validated in the following configurations:
- DM6446 EVM, dual-processor configuration:
- dual-processor configuration, running ARM9 MV Linux (gcclib) and
C64+ DSP/BIOS
- dual-processor configuration, running ARM9 MV Linux (uClibc) and
C64+ DSP/BIOS
- single-processor configuration, running ARM9 MV Linux (gcclib)
- single-processor configuration, running ARM9 MV Linux (uClibc)
- DM6437 EVM, single processor configuration:
- C64+ simulators, single processor configuration:
- x86 Linux, single processor configuration, running Red Hat Enterprise
Linux 3
The following are known issues with the CE 1.20 release:
Examples
Previous CE releases included the video_copy/dualcpu_explicitconfig and
dualcpu_seperateconfig examples. These were removed as the transition of
these examples to the new Configuro build model was not yet complete at the
time of release.
The build_instructions.html page also incorrectly lists
these examples as being present in this release.
They are being updated and will be included in a future release.
LAD
-
The Link Arbiter Daemon (LAD) does not detect when a client process
terminates abnormally, for example, via a CTRL-C. The consequence is that
the reference counts maintained within LAD will remain artificially high,
which will: a) reduce by one the maximum number of simultaneous client
connections to LAD that are allowed; b) prevent LAD from stopping the
DSP when the last remaining client disconnects from LAD; and c) prohibit
startup of a different DSP executable, without restart of LAD, or a reboot
of Linux. Also, in some situations future attempts by other processes to
use the DSP may fail due to assertions from DSP Link.
Codec Engine examples and instructions are located in the
"examples" directory.
- Example Build Instructions
This product's version follows a version format, M.mm.pp.bb,
where M is a single digit Major number, mm is 2 digit
minor number, pp is a 2 digit patch number, and b is an
unrestricted set of digits used as an incrementing build counter.
To support multiple side-by-side installations of the product, the
product version is encoded in the top level directory,
ex. codec_engine_1_20.
Subsequent releases of patch upgrades will be identified by the patch
number, ex. CE 1.20.01 with directory codec_engine_1_20_01.
Typically, these patches only include critical bug fixes.
For technical support, contact softwaresupport@ti.com
Check the following web site for updates: https://www-a.ti.com/downloads/sds_support/targetcontent/CE/index.html
Last updated: April 5, 2007