next up previous contents index
Next: Session Description and Up: Network Communication Previous: Network Communication

Transmission of Multimedia Data Streams

Figure gif visualises the data flow inside a session and the relevant method invocations.gif

 
Figure:  The method invocations relevant to the inter-application data flow.

     Session objects are designed in resemblance to RTP sessions; however, they can work with other transmission protocols as well. A Session comprises two Connection objects (one for payload data transmission, one for control information transmission), a ProtocolCoDec object, which encapsulates media elements in protocol data units of a particular transmission protocol, and a Profile object, which is used to configure the ProtocolCoDec and the Session object. Similar to RTP, only one payload type is conveyed in one session that is stored in the Profile.

  The two Connection objects assigned to a Session object correspond to the two network access points of an RTP session; they are each bound to a local address and send data to a remote address. The only requirement to Connection objects is that their send() and receive() methods must support framing. That means,

a data block which was the argument of one send() method invocation must always be retrieved entirely by a single invocation of the corresponding receive() method, or not at all in case the packet got lost during the transmission. Objects that make use of Connection objects must be prepared to deal with packet loss or a disordered packet sequence. A Connection object can be constructed around a UDP multicast socket joining a multicast host group, for example.

  A Session object interacts with the underlying system's network QoS control entities, by means of a ConnectionControl object. The ConnectionControl object is responsible for negotiating and maintaining network resource reservations for flows that are received or forwarded by means of the Session's Connection object.
ConnectionControl objects are highly dependent on the particular operating system interfaces and networking techniques used by a Session's Connection object. A ConnectionControl implementation could for example use the RAPI mentioned in Section gif on page gif.

  A ProtocolCoDec implements a particular transport protocol suitable for the transmission of multimedia data stream. Hence, the ProtocolCoDec is the central element of a Session. Its tasks include:

The ProtocolCoDec is also responsible for performing all protocol-specific tasks, which can be effected automatically; depending on the protocol, this might include generation of receiver or sender statistics and forwarding them through the control Connection, as well as receiving and processing of reports from other session participants.

  A Profile object is used to configure the ProtocolCoDec and Session objects. Most of all, the Profile specifies the payload type that is conveyed in a session. The Profile also lays down the maximum packet rate and the bandwidth share of a session. Besides, the profile contains protocol-specific parameters.

  Generally, a Session object manages the operation of its ProtocolCoDec, Connections, LocalSources, and RemoteSources. In particular, the management comprises the following tasks:

  SessionManagers administrate the inter-application data flow. They maintain lists of Session, ProtoSession, LocalSource, and RemoteSource objects mainly; besides, they induce the SessionAgent to export session descriptions on special occasions, such as Session creation or termination, or to notify remote session participants of changes in the application's session membership.



next up previous contents index
Next: Session Description and Up: Network Communication Previous: Network Communication



tspeuker@cip.informatik.uni-erlangen.de