by the software environment and the host platform:
* The host platform has to offer sufficient computation power for executing complex SA performances in real-time. In a complex multimedia application, it is virtually impossible to meet
real-time constraints without a realtime operating system underneath. Moreover, the host platform should support typical DSP operations like
multiply-add efficiently, since they are an important part of most signal-processing algorithms
used in SAOL orchestras.
* As the SA decoder comprises an in-time compiler
and a dynamic execution unit, it has a rather complex structure that is most conveniently implemented in a high-level language like C or C++.
Efficient compilers are required to map the highlevel code onto the host processor for real-time
performance.
* The RAM space accessible by the host processor
should be large enough to allow for the storage of
SA orchestras making extensive use of wavetable
instruments.
A platform fulfilling these conditions is the TriMedia processor family (Philips Semiconductors, 1999).
It provides a very long instruction word (VLIW) core
with five instructions per clock cycle as well as interfaces and custom blocks for audio/video-I/O and data
processing. It runs a realtime operating system and
is programmable in C and C++. A powerful compiler
exists for exploiting fine grain parallelism resulting in
machine code that is highly optimized for the VLIW
architecture. Typical signal-processing operations are
supported by custom operators. SDRAM connected
to the TriMedia processor by high-speed data and address busses allows for the storage of the whole decoder
configuration including memory-extensive wavetables.
A large library of streaming multimedia components
exists for this platform. These components are implemented according to the guidelines of the TriMedia
Software Streaming Architecture (TSSA). It guarantees
a conformance of the streaming TriMedia components
regarding their I/O, error, setup and run-time configuration interface. For enabeling a software component
to cooperate flawlessly with others, a TriMedia software component should be implemented according to
the TSSA rules.
Seven API functions need to be implemented
for a TSSA-compliant software component:
GetCapabilities(), Open(), GetInstanceSetup(),
InstanceSetup(), Start (), InstanceConfig(),
Stop(), Close(). The application calls
GetCapabilities() to retrieve the component's
capabilities structure containing the information
required to connect it to other components, such
as supported input and output data formats. The
Open() function is used to install an instance of the
component, followed by GetInstanceSetup() for
retrieving a template containing the component's
initialization defaults. The application may alter the
setup structure and pass it back to the component via
an InstanceSetup() call. Now that the component
I I II ControloQeue I
Full buffers
Data Queue
npty buffers
Full buffet
apty bufferue
npty buffers
Figure 1: After starting each component with the
Start () function, data transfer is managed indepently
of the application by the operating system and a default layer library via data queues. At runtime, all
commands to the components are issued using the
InstanceConfig() function.
library is configured, the actual data processing
can start by calling Start(). While running in an
infinite loop, a component synchronizes itself with
connected components through the availability of data
packets on the connection queues as shown in Fig.1.
The application accesses the components via control
queues by calling InstanceConfig() in order to get
status information or to trigger runtime changes. The
components are terminated by calling the Stop()
function. When the processing has finished and the
instance of a component is no longer used, the instance
handle can be returned to the library by calling the
component's Close () function, which also performs
a cleanup of allocated resources. The communication
between the application and each software component
is bidirectional. While the application uses the aforementioned functions to address the component, it may
give the component the opportunity to call error,
progress, memAlloc, memFree and completion
function callbacks implemented by the application.
For a more detailed introduction to the TriMedia
hardware and software platform, the reader is referred
to (Peplinski and Fink, 1999; Claussen, 2000).
4 STREAMING
IMPLEMENTATION
The basis for the TriMedia streaming implementation
is the MPEG-4 SA reference decoder SAOLC. It was
the only SA decoder available when the project started.
The main design goal for SAOLC was clarity in coding
0