Video On Demand is a recent 'hype' in the field of multimedia networking. A major challenge in providing VOD in today's Internet is how to transmit real time video streams across a heterogenous best effort network while ensuring an acceptable quality of service. Because the video stream is variable bit rate, the bandwidth requirement is variable. The interarrival time for each frame must lie within a specified delay bound in order for the frame to be useful. Packet losts due to congestion inside the network could also degrade video quality. However, video is typically transmitted using UDP, which treats each video packet independent of each other, provides no service guarantees and no feedback to the sender.
In order to improve the received video quality, there are two possible approaches. The first one, an end to end approach, is to design and implement network aware VOD servers and clients. The server utilizes feedback information from the client about the network connection and the client's reception to adjust its transmission. There is a question of whether the feedback of previous performance and network conditions will be a sufficient predictor of the future and will be relevant enough to be used by the server.
The second approach is to have intermediate nodes in the network (ie. active routers) which understand the semantics of the VOD application and will assist in providing an acceptable quality of service. For example, using MPEG encoding, upon congestion, the active router will try to avoid dropping I and P frames and will drop only B frames. This capability is not available in today's Internet.
In my project, I will be developing a prototype for the first approach. A VOD system will be implemented using RTP[2]/UDP as the transmission protocol. The client will be performing real time decoding of the MPEG stream. The issues of error resiliency and adapting to packet losses will be investigated on the client side. Also, for adaptation on the server side, network status feedback from the client will also be used.
The tansport level protocol that will be used for the VOD system is RTP (Real Time Transport Protocol) on top of UDP (User Datagram Protocol). RTP was chosen because of its apprpriate for carrying real time information. It also does not provide any guarantees and leaves it up to the application to choose suitable mechanisms.
1. A Simple VOD server: The server implemented for the midterm project is a simple server. There are 2 implementations. The first one uses TCP/IP as a reliable transmission protocol. It was used in the demo because the decoder could not handle any packet misordering or losses, yet. The second implementation uses RTP/UDP/IP, a non reliable transmission protocol. This will be used when the full decoder modifications have been made. The server starts up and waits for a client to connect. Once a client connects, the server packetizes the MPEG stream and transmits it to the client.
2. Usage: send mpeg_filename
Client
1. Choosing MPEG players: The focus of the project is to experiment with end to end characteristics of MPEG video transmission. Thus, the approach was to build a network interface on top of already implemented MPEG decoders. Various public domain software implementations of MPEG decoders were evaluated. The minimum requirements are:
|
|
2. Modifications to mpeg_play: mpeg_play, however, only met
two of our minimum requirements, full X Windows display support and compilable
source code. The MPEG1 decoder needed to read the whole MPEG stream
in (from a file) two times. In the first pass, bitstream syntax
check and variable initialization were performed. The second pass
was the actual decoding and image displaying. In order to use mpeg_play
in the project, mpeg_play had to be modified. The modifications are:
|
|
2. Error Resilient Client
Initial buffering of the stream (before any decoding) is needed so
that delays can be absorbed. This amount of buffering should be enough
so that it can absorb jitters without taking up too much memory resources.
Packets arriving out of order will be ordered at the buffer and, then,
passed on to the decoder. Also, the buffer management scheme should
be efficient in that if a packet is loss, subsequent packets that rely
on the lost one should not be stored. For example,
if a P frame is lost, newly arriving B frames that rely on that P frame
should be dropped. It is also possible to have the buffer do some
form of interpolation for the lost frame for better video quality.
Although the last two features are in conflict with each other, both have
positive impact. Finding a balance between the two is important for an
error resilient client.
3. Extensions to mpeg_play and server:
To support the above features.
Back to the Top
Networking
[1] D. Hoffman, G. Fernando, V. Goyal, M. Civanlar, "RTP Payload Format for MPEG1/MPEG2 Video", STD 1, RFC 2250, January 1998.
[2] H. Schulzrinne, S. Casner, R. Frederick, V. Jacobson, "RTP: A Transport Protocol for Real-Time Applications", STD 1, RFC 1889, January 1996.
Internet-Drafts: