An End-to-End Solution for High Definition Video Conferencing over Best-Effort Networks (2015)

Video streaming applications over best-effort networks, such as the Internet, have become very popular among Internet users. Watching live sports and news, renting movies, watching clips online, making video calls, and participating in videoconferences are typical video applications that millions of people use daily. One of the most challenging aspects of video communication is the proper transmission of video in various network bandwidth conditions. Currently, various devices with different processing powers and various connection speeds (2G, 3G, Wi-Fi, and LTE) are used to access video over the Internet, which offers best-effort services only. Skype, ooVoo, Yahoo Messenger, and Zoom are some well-known applications employed on a daily basis by people throughout the world; however, best-effort networks are characterized by dynamic and unpredictable changes in the available bandwidth, which adversely affect the quality of the video. For the average consumer, there is no guarantee of receiving an exact amount of bandwidth for sending or receiving video data. Therefore, the video delivery system must use a bandwidth adaptation mechanism to deliver video content properly. Otherwise, bandwidth variations will lead to degradation in video quality or, in the worst case, disrupt the entire service. This is especially problematic for videoconferencing (VC) because of the bulkiness of the video, the stringent bandwidth demands, and the delay constraints. Furthermore, for business grade VC, which uses high definition videoconferencing (HDVC), user expectations regarding video quality are much higher than they are for ordinary VC. To manage network fluctuations and handle the video traffic, two major components in the system should be improved: the video encoder and the congestion control. The video encoder is responsible for compressing raw video captured by a camera and generating a bitstream. In addition to the efficiency of the encoder and compression speed, its output flow is also important. Though the nature of video content may make it impossible to generate a constant bitstream for a long period of time, the encoder must generate a flow around the given bitrate. While the encoder generates the video traffic around the given bitrate, congestion management plays a key role in determining the current available bandwidth. This can be done by analyzing the statistics of the sent/received packets, applying mathematical models, updating parameters, and informing the encoder. The performance of the whole system is related to the in-line collaboration of the encoder and the congestion management, in which the congestion control system detects and calculates the available bandwidth for a specific period of time, preferably per incoming packet, and informs rate control (RC) to adapt its bitrate in a reasonable time frame, so that the network oscillations do not affect the perceived quality on the decoder side and do not impose adverse effects on the video session. To address these problems, this thesis proposes a collaborative management architecture that monitors the network situation and manages the encoded video rate. The goal of this architecture is twofold: First, it aims to monitor the available network bandwidth, to predict network behavior and to pass that information to the encoder. So encoder can encode a suitable video bitrate. Second, by using a smart rate controller, it aims for an optimal adaptation of the encoder output bitrate to the bitrate determined by congestion control. Merging RC operations and network congestion management, to provide a reliable infrastructure for HDVC over the Internet, represents a unique approach. The primary motivation behind this project is that by applying videoconference features, which are explained in the rate controller and congestion management chapter, the HDVC application becomes feasible and reliable for the business grade application even in the best-effort networks such as the Internet.