Bamba--Audio and video streaming over the Internet

IBM Journal of Research and Development, Mar 1998 by Willebeek-LeMair, M H, Kumar, K G, Snible, E C

3. Bamba enhancements and error handling in a lossy environment The HTTP client-server system has some limitations. First, the HTTP protocol has no explicit mechanisms to perform such sophisticated stream-control functions as seeking to a particular position in the stream. There are ways of carrying customized function calls within the HTTP stream, but this requires special server software to execute those functions. Second, TCP/IP is an inefficient protocol for streaming delay-sensitive data across the network. It was originally designed to transport data files, with a built-in mechanism to alleviate congestion in the network [23]. TCP/IP is based on a "sliding-window" protocol that waits for acknowledgments from the receiver for every packet it sends. Each packet in the sliding window has a timer associated with it. A packet-receipt acknowledgment must be received by the transmitter before the timer expires, or the packet will be retransmitted. The size of the sliding window (number of outstanding packets) is based on the speed with which acknowledgments are received. TCP/IP continues to increase the size of the window (effectively, the bandwidth at which it is sending) until packets start to time out. Once they time out, TCP/IP exponentially backs off (reducing the size of the sliding window) and retransmits these (presumably lost) packets. A typical TCP/IP bandwidth "profile" resembles a sawtooth, as shown in Figure 4, resulting in inefficient usage of the bandwidth.

The UDP-based solution is advantageous if sufficient bandwidth is available, since it does not use acknowledgments and allows the server to explicitly control the rate at which the streams are transmitted into the network. The continuous transmission at the server and the elimination of retransmissions make the resource requirements on the server much more predictable and manageable. On the other hand, this approach adds complexity to the server, since it must now pace the transmission of a clip into the network, and it adds complexity to the client side, since the client must be made able to handle packet loss within the network. However, for long clips, this approach reduces the storage requirements at the client and can provide a higher degree of functionality, such as the ability to seek and transmit only specified segments of the clip, or to adapt the transmitted bit rate to the available bit rate (e.g., send audio with no video or send selective portions of the video). Another important merit of UDP/IP is that, given the appropriate routing capability in the network, it can be used to efficiently multicast a stream to multiple clients simultaneously.

In the UDP-based Bamba system, the server store clips and has data pumps that pace the transmission of the video clips into the network. The system block diagram is similar to that of Figure 1, except that the network interface module, which receives the RTP/UDP packets from the network, makes sure they are presented to the splitter module in the correct order and, upon detection of a lost packet, resynchronizes the stream by searching for a new synchronization point. Compression technology The H.263 video compression scheme was enhanced for Bamba, in order to provide added robustness to reduce the effect of lost packets in the UDP/IP environment [24]. Since a large percentage of each video frame within an H.263 compressed stream is encoded by means of P-blocks with interframe dependencies, corrupted data may create errors that propagate for extended periods until an I-block refreshes the region. In general, this makes the video more susceptible to errors. To reduce the error effects, a novel scheme was devised for selecting when and where to place I-blocks within the compressed stream. The scheme is based on a two-phase compression strategy. The first phase of the compression strategy is needed to construct a dependence graph based on motion vectors between pixels in successive frames. [A motion vector is a pointer from a P-block in the current frame to an I- or P-block in the previous frame. These motion vectors are then used to determine the dependence count (the number of future blocks that may depend on a given block) of each block in a sequence of compressed frames.] The second phase selects which blocks to compress as I-blocks on the basis of the dependence count of each block in a sequence of compressed frames. This demonstrably improves the ability of the compressed stream to recover from errors and greatly reduces the time required to reconstruct the video image when an error occurs. The approach is standards-compliant, maintains a smooth bandwidth profile of the compressed stream (small variance in size between compressed frames), and causes only a slight increase in the overall bandwidth requirements.

 

BNET TalkbackShare your ideas and expertise on this topic

Please add your comment:

  1. You are currently: a Guest |
  2.  

Basic HTML tags that work in comments are: bold (<b></b>), italic (<i></i>), underline (<u></u>), and hyperlink (<a href></a)

advertisement
advertisement
  • Click Here
  • Click Here
  • Click Here
advertisement
Click Here

Content provided in partnership with ProQuest