Over the past few years we’ve been working to improve the video support in Asterisk. We initially started with adding stream support in a backwards compatible fashion so we could individually address streams and add/remove them. Next we added support for REMB to be able to control the video bitrate with supported clients. We continued improving the experience with the addition of NACK (packet retransmission) and packet reordering. This past year we extended video support some more by adding partial support for transport-cc.
The transport-cc functionality available in Chrome and now partially in Asterisk is a mechanism by which feedback about received packets can be provided to the sender. It allows the sender to know which specific pcakets are lost, if they are received in bursts, and other information. The sender can then adjust how it is sending to better cope with the environment. To a user this action is transparent and in fact it is only necessary to enable the “webrtc” option to enable the functionality. It is negotiated automatically and used when available. Asterisk supports producing these transport-cc feedback messages. It does not currently support consuming the feedback message and using it.
Video Aware Jitterbuffer
Coming soon is support for video in the JITTERBUFFER dialplan function. When enabled the jitterbuffer will buffer video frames as well as audio. The audio jitterbuffer acts as the controlling entity for the buffer and video frames will be buffered up to the current audio. This works by synchronizing the timestamp of both the audio and video, and providing the expected video alongside the audio when it comes out of the jitterbuffer. This has substantially improved the lip synchronization under poor network conditions where the jitterbuffer is having to buffer a lot of audio.