We have witneseed great advances, during the last decade, in two ares of computing which are of interest for this thesis: 1) Open Distributed Processing (ODP) and 2) hardware performance increases -- which allow regular personal computers to function as powerful multimedia processing units.
ODP, also referred to as Object-Oriented Middleware, offers benefits like location, hardware, operating-system and programming language transparency, but ODP platforms are naturally unfitted to handle multimedia data because of its continuos (streaming) nature and because it often comes in large quatities.
As part of the research done in the last years to find ways to combine these two computing areas, we propose the implementation of a Multimedia Stream Adapter for Object-Oriented Middleware (MSA). The purpose of our MSA is to extend the native capabilitites of ODP platforms, which is the implementation of the Remote Procedure Call (RPC) paradigm, with support for the concept of streaming. In particular, we want to be able to treat streams of data as regualar (C++) first-class objects within a program.
Among the existing ODP platforms we have only considered CORBA and the Internet Communication Engine (ICE), developed by ZeroC. Inc., see www.zeroc.com, which are Open Source platforms. Among these two, we have chosen to implement our solution with ICE because 1) many CORBA implementations have been abandoned during the last years, and there has been a decline in the interest to address the misfeatures of the CORBA specification by the Object Management Group (OMG) and 2) because CORBA is extremely complex and very difficult to become proficient with. ICE has been developed by experienced CORBA programmers and provides a much simpler object model, which still is very powerful. At the time of this writting, ICE has reached a level of maturity which warrants its use as a viable platform for both research and production systems. ICE uses an interface definiton language called Slice, similar in purpose to CORBA's IDL.
In this thesis we have implemented a compiler for a slightly extended version of the Flow Interface Definition Language (FIDL), developed at the University of Tromsø, called FIDL++, which allows the programmer to describe streams and flows of data by means of QoS parameters. By means of this compiler we generate Slice and C++ code which, when compiled, provides us with a set of objects which together implement the functionality of a stream of data. A streaming API is provided, via one of the objects, thus offering a single point of control of the stream of data. We describe the run-time of MSA based applications and we present a demo application. We also provide a description of the process of how to build MSA based applications.
Because this thesis was, to begin with, part of the MULTE-ORB project, developed as a cooperative effort between the Center of Technology at Kjeller and the Department of Computer Science at the University of Oslo, we have also provided an implementation of a Da CaPo core. Da CaPo is a system which allows the implementation of highly customized communication protocols for distributed applications.