The first version of adaptive video streaming is implemented

 We just pushed the update to our repository at gitorious. This is our first implementation of the adaptive video streaming. To adapt to changing network conditions, we are tracking the size of output queue and adjust the frame size dynamically if the queue exceed certain size.
This functionality uses scaler element within gstreamer encoding pipeline. Scaler is located between video source element and encoding element. If we detect the Quality Of Service (QoS) condition we need to react (queue size is too large) then we pause the pipeline, adjust corresponding caps to instruct the scaler to reduce or enlarge frame size and then unpause the pipeline again. The implementation of this functionality could be found in
src/vehicle/VideoSenderThread.cpp file. In particular, VideoSenderThread::setFrameSize() function makes pipeline adjustments mentioned above. Starting at line 300 there is a piece of code which illustrates how we react on observed QoS conditions.
License Content on this site is licensed under a Creative Commons Attribution 3.0 License .

Comments