Johan Sternerup
607ef6db60
webrtc: Split sctptransport into lib and implementation parts
...
GstWebRTCSCTPTransport is now made into into an abstract base class
that only contains property specifications matching the
RTCSctpTransport interface of the W3C WebRTC specification, see
https://w3c.github.io/webrtc-pc/#rtcsctptransport-interface . This
class is put into the WebRTC library to expose it for applications and
to allow for generation of bindings for non-dynamic languages using
GObject introspection.
The actual implementation is moved to the subclass WebRTCSCTPTransport
located in the WebRTC plugin.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2214 >
2021-08-25 13:20:22 +00:00
Sebastian Dröge
0e559fc2f3
webrtcbin: Sync to the clock per stream and not per bundle
...
By using the clocksync inside the dtlssrtpenc, all streams inside a
bundled are synchronized together. This will cause problems if their
buffers are not already arriving synchronized: clocksync would wait for
a buffer on one stream and then buffers from the other stream(s) with
lower timestamps would all be sent out too late.
Placing the clocksync before the rtpbin and rtpfunnel synchronizes each
stream individually and they will be send out more smoothly as a result.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2355 >
2021-06-28 16:38:33 +00:00
Olivier Crête
ee0124cb36
webrtc: Remove the webrtc-priv.h header from public headers
...
And this time for real, also import it in a couple more places
inside the webrtc element to make it build.
Fixes #1607
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2359 >
2021-06-28 16:06:59 +00:00
Sebastian Dröge
03d3e0fe73
webrtc: Re-add WebRTC object docs to the public headers
...
So they end up in the generated documentation and the Since markers
appear in the .gir files too.
Also remove wrong "Since: 1.16" markers for some objects that were
available since 1.14.0 already.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1609
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2366 >
2021-06-28 14:45:37 +00:00
Olivier Crête
a931e31141
webrtc lib: Make the datachannel struct private
...
This will prevent any unsafe access.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2241 >
2021-06-21 20:53:09 +00:00
Olivier Crête
dd2da6f2b4
webrtc lib: Make the DTLSTransport struct private
...
This will prevent any unsafe access.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2241 >
2021-06-21 20:53:09 +00:00
Olivier Crête
a0813c5bd2
webrtc lib: Make the icetransport struct private
...
This will prevent any unsafe access.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2241 >
2021-06-21 20:53:09 +00:00
Olivier Crête
5233c349e7
webrtc lib: Make the rtpreceiver struct private
...
This will prevent any unsafe access.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2241 >
2021-06-21 20:53:09 +00:00
Olivier Crête
a6593753a5
webrtc lib: Make the rtpsender struct private
...
This will prevent any unsafe access.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2241 >
2021-06-21 20:53:09 +00:00
Olivier Crête
b5f2de3124
webrtc lib: Make the transceiver struct private
...
This will prevent any unsafe access.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2241 >
2021-06-21 20:53:09 +00:00
Olivier Crête
e9f14ed117
webrtcbin: Hold lock while accessing the codec preferences
...
They could be changed at runtime by the application, so take the lock
when modifying them.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2183 >
2021-05-13 15:05:00 -04:00
Olivier Crête
4c3270409d
webrtc rtptransceiver: Implement "codec-preferences" property
...
This allows safer access to the internals of the codec-preferences
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2183 >
2021-05-13 15:05:00 -04:00
Olivier Crête
97a78a903a
webrtc rtptransceiver: Implement "kind" property
...
Implement the property as read-only to follow the WebRTC spec
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2183 >
2021-05-13 15:05:00 -04:00
Olivier Crête
5fd0ee3227
webrtc rtptransceiver: Implement "current-direction" property
...
Implement the property as read-only to follow the WebRTC spec
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2183 >
2021-05-13 15:05:00 -04:00
Olivier Crête
7e7678f4cb
webrtc rtptransceiver: Implement "mid" property
...
Implement the property as read-only to follow the WebRTC spec
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2183 >
2021-05-13 15:05:00 -04:00
Marijn Suijten
061e32b197
Add @ prefix to enum-variant references in documentation
...
Found while working on GStreamer-rs documentation, some enums had this
bit of text pasted verbatim in the enum documentation rather than
attached to the enum-variant. Fortunately it seems these in WebRTC and
D3D11 are the only ones matching the non-@-prefixed pattern:
^ \* GST_\w+:\s*\w+
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/2118 >
2021-03-28 13:08:24 +00:00
Mathieu Duponchelle
86c009e7aa
webrtc: expose transport property on sender and receiver
...
As advised by !1366#note_629558 , the nice transport should be
accessed through:
> transceiver->sender/receiver->transport/rtcp_transport->icetransport
All the objects on the path can be accessed through properties
except sender/receiver->transport. This patch addresses that.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1952 >
2021-01-13 19:22:42 +00:00
Olivier Crête
52c676546d
webrtc: Also remove rtcp_transport from the structure
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1765 >
2020-11-24 01:59:55 +00:00
Olivier Crête
c5d76d944e
webrtc: Remove APIs to set transport on sender/receiver
...
They're not not used ever.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1765 >
2020-11-24 01:59:55 +00:00
Olivier Crête
5d5417f271
webrtc: Remove non rtcp-mux code
...
RTCP mux is now always required by the WebRTC spec
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1765 >
2020-11-24 01:59:55 +00:00
Olivier Crête
cca313ecd8
rtpsender: Add API to set the priority
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1707 >
2020-10-30 16:24:40 -04:00
Olivier Crête
7be09a5f22
webrtc: Save the media kind in the transceiver
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1707 >
2020-10-30 16:23:10 -04:00
Olivier Crête
78c687da3e
webrtc: Document more objects
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1707 >
2020-10-30 16:23:10 -04:00
Xavier Claessens
2efb4a7adb
Meson: Use pkg-config generator
2020-10-23 11:14:18 -04:00
Sebastian Dröge
cc7e98816f
Revert "webrtc: Save the media kind in the transceiver"
...
This reverts commit f54d8e9945
.
It breaks the CI until the C# bindings are fixed.
2020-10-08 18:53:12 +03:00
Sebastian Dröge
a40d6f4994
Revert "rtpsender: Add API to set the priority"
...
This reverts commit a8b287c764
.
It breaks the CI until the C# bindings are fixed.
2020-10-08 18:53:10 +03:00
Sebastian Dröge
f12265d9c5
Revert "webrtc: Document more objects"
...
This reverts commit ad68c6b1eb
.
It breaks the CI until the C# bindings are fixed.
2020-10-08 18:52:50 +03:00
Sebastian Dröge
74a42c5ba8
Revert "webrtc: Add hotdoc style since tags"
...
This reverts commit 63a5fa818c
.
It breaks the CI until the C# bindings are fixed.
2020-10-08 18:51:37 +03:00
Olivier Crête
63a5fa818c
webrtc: Add hotdoc style since tags
...
We're stuck having to add a separate comment for now.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1425 >
2020-10-06 16:52:48 -04:00
Olivier Crête
ad68c6b1eb
webrtc: Document more objects
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1425 >
2020-10-06 16:49:08 -04:00
Olivier Crête
a8b287c764
rtpsender: Add API to set the priority
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1425 >
2020-10-06 16:49:08 -04:00
Olivier Crête
f54d8e9945
webrtc: Save the media kind in the transceiver
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1425 >
2020-10-06 16:49:08 -04:00
Matthew Waters
7489addc0a
webrtc/datachannel: free previous protocol/label fields
...
Fixes a memory leak
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1535 >
2020-08-24 17:02:35 +10:00
Sebastian Dröge
ab82893941
webrtc: Add Since: 1.18
markers to the new datachannel library API
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1315 >
2020-06-03 10:32:00 +03:00
Sebastian Dröge
b25d153c34
webrtc: Add GstWebRTCDataChannel to the library API
...
This makes it more discoverable for bindings and allows bindings to
generate static API for the signals and functions.
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/issues/1168
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/merge_requests/1313 >
2020-06-02 21:04:37 +00:00
Jan Schmidt
8e3472faee
webrtc: Use the dtlssrtenc rtp-sync property
...
Instead of synchronising at the ICE transport, do clock sync for the
RTP stream at the DTLS transport via the dtlssrtpenc rtp-sync
property. This avoids delaying RTCP while waiting until it is time
to output an RTP packet when rtcp-mux is enabled.
https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/1212
2020-02-27 12:30:32 +00:00
Sebastian Dröge
b2e7739364
webrtc/dtlstransport: Proxy DTLS connection state from the DTLS elements to the transport
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/issues/758
2020-01-19 11:16:34 +00:00
Niels De Graef
d8f61515d8
Don't pass default GLib marshallers for signals
...
By passing NULL to `g_signal_new` instead of a marshaller, GLib will
actually internally optimize the signal (if the marshaller is available
in GLib itself) by also setting the valist marshaller. This makes the
signal emission a bit more performant than the regular marshalling,
which still needs to box into `GValue` and call libffi in case of a
generic marshaller.
Note that for custom marshallers, one would use
`g_signal_set_va_marshaller()` with the valist marshaller instead.
2019-11-06 14:27:46 +00:00
Tim-Philipp Müller
f218ec2794
Remove autotools build system
2019-10-14 13:54:27 +01:00
Mathieu Duponchelle
42adb02a10
docstrings: port ulinks to markdown links
2019-08-23 20:14:12 +02:00
Sebastian Dröge
28b0be4036
rtptransceiver: Remove direction setter and vfunc and replace it by a property
...
It was changed from a function to a property in the latest WebRTC spec.
2019-08-06 12:22:21 +00:00
Niels De Graef
7af1a4566f
Use G_DEFINE_AUTOPTR_CLEANUP_FUNC unconditionally
...
Since we started depending on GLib 2.44, we can be sure this macro is
defined (it will be a no-op on compilers that don't support it).
2019-06-05 08:12:10 +02:00
Matthew Waters
177aa22bcd
webrtc: Initial support for stream addition/removal
...
Limitations:
- No transport changes at all (ICE, DTLS)
- Codec changes are untested and probably don't work
- Stream removal doesn't remove transports (i.e. non-bundled transports
will stay around until webrtcbin is shutdown)
- Unified Plan SDP only. No Plan-B support.
2019-05-30 21:33:09 +10:00
Matthew Waters
c3c4b07ad3
webrtc/transceiver: add a set_direction function
...
Matches the setDirection() from the W3C spec and allows changing the
transceiver direction at the next negotiation cycle.
2019-05-30 21:33:09 +10:00
Sebastian Dröge
b3bf3a0d21
webrtc: Add various Since markers to new types after 1.14.0
2019-05-21 12:16:31 +03:00
Thibault Saunier
7fe3f36ac8
Minor documentation fixes
2019-05-13 11:36:27 -04:00
Niels De Graef
39c8c206be
webrtc: Add g_autoptr() support for public types
2019-05-08 15:47:06 +02:00
Mathieu Duponchelle
85c75bb23b
webrtc: expose ice-transport-policy property
...
This is the equivalent of iceTransportPolicy in the RTCConfiguration
dictionary.
Only two values are implemented:
* all: default behaviour
* relay: only gather relay candidates
The third member of the iceTransportPolicy enum, "public", is
obsolete.
2019-01-23 22:47:51 +00:00
Maciej Wolny
465ea32d73
webrtc: Remove duplicate declarations
...
This causes 'redefinition of typedef ...' errors on GCC 4.5.3
2018-11-28 12:24:37 +00:00
Mathieu Duponchelle
9f684a2f81
webrtcbin: implement support for group: BUNDLE
2018-10-15 14:17:35 +02:00