webrtc: add a few comments on bundle and src pad exposure
authorMatthew Waters <matthew@centricular.com>
Mon, 26 Nov 2018 05:21:19 +0000 (16:21 +1100)
committerMatthew Waters <matthew@centricular.com>
Mon, 26 Nov 2018 05:21:19 +0000 (16:21 +1100)
ext/webrtc/gstwebrtcbin.c

index fd0fdbc..090e953 100644 (file)
  *
  * On the receiving side, RTPTransceiver's are created in response to setting
  * a remote description.  Output pads for the receiving streams in the set
- * description are also created.
+ * description are also created when data is received.
+ *
+ * A TransportStream is created when needed in order to transport the data over
+ * the necessary DTLS/ICE channel to the peer.  The exact configuration depends
+ * on the negotiated SDP's between the peers based on the bundle and rtcp
+ * configuration.  Some cases are outlined below for a simple single
+ * audio/video/data session:
+ *
+ * - max-bundle (requires rtcp-muxing) uses a single transport for all
+ *   media/data transported.  Renegotiation involves adding/removing the
+ *   necessary streams to the existing transports.
+ * - max-compat without rtcp-mux involves two TransportStream per media stream
+ *   to transport the rtp and the rtcp packets and a single TransportStream for
+ *   all data channels.  Each stream change involves modifying the associated
+ *   TransportStream/s as necessary.
  */
 
 /*
@@ -2908,6 +2922,9 @@ _connect_output_stream (GstWebRTCBin * webrtc,
   g_free (pad_name);
 
   gst_element_sync_state_with_parent (GST_ELEMENT (stream->receive_bin));
+
+  /* The webrtcbin src_%u output pads will be created when rtpbin receives
+   * data on that stream in on_rtpbin_pad_added() */
 }
 
 typedef struct