gstreamer/subprojects/gst-plugins-bad/ext/webrtc
Carlos Bentzen 48ae40f477 webrtcbin: create and associate transceivers earlier in negotation
According to https://w3c.github.io/webrtc-pc/#set-the-session-description
(steps in 4.6.10.), we should be creating and associating transceivers when
setting session descriptions.

Before this commit, webrtcbin deviated from the spec:
1. Transceivers from sink pads where created when the sink pad was
   requested, but not associated after setting local description, only
   when signaling is STABLE.
2. Transceivers from remote offers were not created after applying the
   the remote description, only when the answer is created, and were then
   only associated once signaling is STABLE.

This commit makes webrtcbin follow the spec more closely with regards to
timing of transceivers creation and association.

A unit test is added, checking that the transceivers are created and
associated after every session description is set.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7156>
2024-08-01 07:38:46 +00:00
..
fwd.h webrtc: Split WebRTCICE into base classes and implementation. 2022-07-26 13:51:11 +00:00
gstwebrtc.c Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
gstwebrtcbin.c webrtcbin: create and associate transceivers earlier in negotation 2024-08-01 07:38:46 +00:00
gstwebrtcbin.h webrtc: Track stats for data channels opened and closed 2023-05-18 04:31:16 +00:00
gstwebrtcstats.c webrtcstats: Properly report IceCandidate type 2023-07-03 03:51:53 +00:00
gstwebrtcstats.h Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
meson.build meson: Call pkgconfig.generate in the loop where we declare plugins dependencies 2022-09-01 21:17:35 +00:00
transportreceivebin.c Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
transportreceivebin.h Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
transportsendbin.c Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
transportsendbin.h Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
transportstream.c webrtc: add all SSRC attributes getting CAPS for a PT 2024-03-08 10:28:15 +00:00
transportstream.h webrtc: implement initial simulcast fec/rtx usage 2022-03-29 23:55:41 +00:00
utils.c webrtcbin: Improve SDP intersection for Opus 2024-01-25 13:37:21 +00:00
utils.h webrtcbin: Improve SDP intersection for Opus 2024-01-25 13:37:21 +00:00
webrtcdatachannel.c webrtcdatachannel: Bind to parent webrtcbin using a weak reference 2023-05-08 19:20:22 +00:00
webrtcdatachannel.h webrtcdatachannel: Bind to parent webrtcbin using a weak reference 2023-05-08 19:20:22 +00:00
webrtcsctptransport.c Move files from gst-plugins-bad into the "subprojects/gst-plugins-bad/" subdir 2021-09-24 16:14:36 -03:00
webrtcsctptransport.h webrtc: Split WebRTCICE into base classes and implementation. 2022-07-26 13:51:11 +00:00
webrtcsdp.c webrtcbin: create and associate transceivers earlier in negotation 2024-08-01 07:38:46 +00:00
webrtcsdp.h webrtcbin: create and associate transceivers earlier in negotation 2024-08-01 07:38:46 +00:00
webrtctransceiver.c webrtcbin: Store pending mid to make create-offer idempotent 2022-09-02 11:52:58 +02:00
webrtctransceiver.h webrtcbin: Store pending mid to make create-offer idempotent 2022-09-02 11:52:58 +02:00