next up previous contents index
Next: Local Data Flow Up: Design of a Previous: Design Goals

Architectural Overview

Figure gif illustrates the overall structure of the architecture.

 
Figure:   Architectural overview of the inter- and intra-application data flow.

     The main objects, through which the media elements travel inside an application, are Producer, StreamExporter, Stream, and Consumer objects. Producers generate multimedia data streams, which the respective StreamExporters distribute by inserting the media elements into Stream objects. Consumers extract the media elements from their associated Stream objects and process the data in their specific way, for example by displaying or storing it. The purpose of the Stream objects is to decouple the Producers and Consumers by storing the media elements until a Consumer requests them. Therefore, the Stream objects might apply flow control mechanisms to avoid unnecessary memory consumption.

      Network transmission of multimedia data streams is effected by means of Connection, ProtocolCoDec, LocalSource, and RemoteSource objects.

A Session object consists of two Connection, one ProtocolCoDec, some configuration objects, and all LocalSources and RemoteSources that communicate through the ProtocolCoDec. An application can participate in multiple sessions simultaneously.
A LocalSource object coordinates the network transmission of one multimedia data stream. LocalSources conform to the StreamExporter type and export their streams to local Consumers like any other StreamExporter; however, they also packetise the media elements, use a ProtocolCoDec to encapsulate the data chunks in protocol data units of the ProtocolCoDec's particular multimedia transport protocol and to forward the resulting packet stream by means of a Connection object.
Multimedia data streams that are received from remote sources take the opposite way: packets that arrived through a Connection are processed by an appropriate ProtocolCoDec, which evaluates the protocol header that was attached to the media elements by the sender's ProtocolCoDec. The ProtocolCoDec reifies the packets' contents to the application's object representation of media elements and feeds the reified media element objects into the intra-application data flow. For that purpose, the ProtocolCoDec uses a RemoteSource object, which conforms to the StreamExporter type and represents the remote sender.

      The management of an application is effected by an AppManager, a GuiManager, a StreamManager, a SessionManager, and a SessionAgent object.
The GuiManager handles the interaction with the user. Therefore, it provides GUI objects for configuring and monitoring architecture components, and triggers the notification of major application events to the user.
The StreamManager object administrates the objects that are involved in the local intra-application data flow, namely Stream and StreamExporter objects. All new StreamExporters are reported to the StreamManager. The StreamManager also sets up new Stream objects by registering them with a StreamExporter.
The SessionManager object is responsible for managing the objects occupied with network communication: in particular, it manages the operation of Sources, Sessions and session description exchange.
On behalf of the SessionManager, a SessionAgent imports information about sessions initiated by remote users, and exports information about locally started sessions to potential remote participants. The SessionAgent uses session description and announcement protocols for these purposes.
The AppManager serves as the central event dispatcher for the whole application: all major events, such as the reception of data of a new RemoteSource or user commands, are reported to the AppManager by appropriate method calls; the AppManager in turn invokes the corresponding methods of the StreamManager, the SessionManager, or the GuiManager to inform them of the event.



next up previous contents index
Next: Local Data Flow Up: Design of a Previous: Design Goals



tspeuker@cip.informatik.uni-erlangen.de