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
Top of page Top of page