Usage of transport-wide congestion control (twcc)

Serhan Gül serhan at
Fri Jun 18 08:51:58 UTC 2021


I noticed that with the 1.18 release it is possible to get the transport-wide congestion control (twcc) using webrtcbin. As far as I can understand, this means that Chrome will send a RTP header extension with a transport-wide sequence number to GStreamer, and GStreamer will send an RTCP feedback packet of type GST_RTCP_RTPFB_TYPE_TWCC=15 with FCI content like packet status chunks and receive delta. Then it should be possible to get the TWCC stats in GStreamer with some code like this:

GstElement* rtpbin = gst_bin_get_by_name(GST_BIN(webrtcbin), "rtpbin");
g_signal_emit_by_name(rtpbin, "get-session", 0, &session);
g_object_get(G_OBJECT(session), "twcc-stats", &twcstats, NULL);

My question: Is it only possible to make this work with Chrome so far, or would this also work with a client that uses the native WebRTC code (e.g. Android) ? My goal is to stream to an Android app from a server application using GStreamer webrtcbin and get the twcc-stats on the sender-side so that I can apply some bandwidth adaptation logic according to congestion level and jitter. It seems that the receive bitrate statistic from from twcc-stats is a good candidate for early detection of congestion.

  Serhan Gül
  serhan at <>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the gstreamer-devel mailing list