Mathieu Duponchelle
58c8c0edc7
webrtc: signaller iface: fix session-ended vs end-session confusion
...
Session ending is bidirectional: the signaller can tell the sink that a
session was ended, and the sink can tell the signaller to end a session.
As such, two signals are needed, before this patch the second case was
not working as in essence the sink was telling itself that a session was
ended, and obviously failing to even find it when trying to end it again.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1167 >
2023-04-10 07:58:10 +03:00
Tim-Philipp Müller
7c30430320
webrtc-api: replace LICENSE file symlink with copy
...
As in !1157
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1169 >
2023-04-08 17:22:37 +01:00
Matthew Waters
e69b4b7f45
webrtc/signaller/iface: give variables appropriate names
...
Rather than arg0, arg1, etc.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1141 >
2023-04-07 09:58:13 +10:00
Matthew Waters
4f4e5f0d75
webrtcsink/signaller: don't call signals while having state/settings locked
...
It is a recipe for deadlocks if the signal callback calls back into
webrtcsink in some way.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1141 >
2023-04-07 09:58:13 +10:00
Matthew Waters
1c61e46f37
webrtcsink: privatise signalling functions
...
The functionality is now access through the relevant signals instead.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1141 >
2023-04-07 09:58:13 +10:00
Matthew Waters
2ac560975c
webrtc/signaller: emit the relevant signals instead of the interface vtable
...
In order to support the use case of an external user providing their own
signalling mechanism, we want the signals to be used and only if nothing
is connected, fallback to the default handling. Calling the interface
vtable directly will bypass the signal emission entirely.
Also ensure that the signals are defined properly for this case. i.e.
1. Signals the the application/external code is expected to emit are
marked as an action signal.
2. Add accumulators to avoid calling the default class handler if
another signal handler is connected.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1141 >
2023-04-07 09:58:13 +10:00
Matthew Waters
343b659755
webrtc/signaller: remove SignallableImplExt
...
This pattern is used for subclassing and calling parent class/interface functions.
However that is not useful for the signaller object.
1. The signals are the API contract and should instead be used by
webrtcsrc/sink to ask or provide outside for/with information.
2. The default case (no signal attached)is instead handled by default class
handlers that call directly using the relevant rust trait. No parent
(GObject) vfuncs necessary.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1141 >
2023-04-07 09:58:13 +10:00
Matthew Waters
b6e78b5f04
webrtcsink: expose signaller as a property
...
in the process move the signaller field to the settings struct
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1141 >
2023-04-07 09:58:13 +10:00
Thibault Saunier
8236f3e5e7
webrtcsink: Port to the 'webrtcsrc' signaller object/interface
...
With contributions from:
Matthew Waters <matthew@centricular.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1141 >
2023-04-07 09:03:47 +10:00
Loïc Le Page
f17622a1e1
webrtc: Add gstwebrtc-api subproject in net/webrtc plugin
...
This subproject adds a high-level web API compatible with GStreamer
webrtcsrc and webrtcsink elements and the corresponding signaling
server. It allows a perfect bidirectional communication between HTML5
WebRTC API and native GStreamer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/946 >
2023-04-04 16:29:44 +02:00
Tim-Philipp Müller
8845f6a4c6
git: replace LICENSE file symlinks with copies
...
Git will de-duplicate the contents for us anyway, and
symlinks can cause problems with some versions of git
and also on Windows.
https://github.com/mesonbuild/meson/issues/11646
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4326
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1157 >
2023-04-04 14:26:37 +01:00
Mathieu Duponchelle
15e1844956
webrtcsink: fix calculation of fec_ratio with multiple encoders
...
In this context, the bitrate variable is for all encoders, but the
max_bitrate field is per encoder. To calculate a proper FEC ratio, we
need to scale max_bitrate to the number of encoders.
+ Also clamp the fec-percentage that we set on the transceiver for extra
safety
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1151 >
2023-03-31 12:19:07 +00:00
Sebastian Dröge
315e53f064
webrtc: Update to AWS SDK 0.55/0.25
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1152 >
2023-03-31 09:12:26 +00:00
David Revay
002a70a2a4
chore(webrtcsink): fix max-bitrate blurb and nick
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1150 >
2023-03-28 16:11:05 +11:00
Vivia Nikolaidou
7a1b2d97d4
webrtcsink: Add ice-transport-policy option
...
Can be used to force relay ICE candidates, ensuring TURN server is used.
Proxy to the corresponding setting in webrtcbin,
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1143 >
2023-03-27 16:12:13 +03:00
Sebastian Dröge
c1bac30694
webrtc: Update to aws 0.54/0.24
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1131 >
2023-03-11 09:37:14 +02:00
Mathieu Duponchelle
584392049c
net/webrtc: implement AWS KVS signaller
...
And expose a wrapper webrtcsink variant, aws-kvs-webrtcsink.
This adds support in webrtcsink for processing a consumer offer, instead
of producing one.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1114 >
2023-03-09 15:39:09 +00:00
Sebastian Dröge
fc5ed15af5
Update for gst::Element::link_many()
and related API generalization
...
Specifically, get rid of now unneeded `&`.
2023-03-09 16:46:52 +02:00
Thibault Saunier
ce3bb2f1d4
Add a webrtcsrc element
...
Updating the docker image to include:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3236
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/932 >
2023-02-28 20:50:15 -03:00
Thibault Saunier
0ae637f531
webrtcsink: Move RUNTIME to the crate so it can be reused
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/932 >
2023-02-28 17:57:14 -03:00
Thibault Saunier
4ec441560b
webrtc: Enhance debug messages when using unknown peer ID
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/932 >
2023-02-28 19:28:51 +00:00
Matthew Waters
542c7e12b8
webrtcsink: also support nvvidconv in lieu of nvvideoconvert
...
nvvideoconvert may not exist and nvvidconv might on some Jetson
platforms.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1107 >
2023-02-28 10:12:36 +11:00
Sebastian Dröge
9fc1404415
Update minimum supported Rust version to 1.66
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1096 >
2023-02-20 11:09:01 +02:00
Sebastian Dröge
ac8afc4ac0
Update to async-tungstenite 0.20
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1087 >
2023-02-10 13:03:07 +02:00
Sebastian Dröge
1e13dbb99c
Update versions to 0.11.0-alpha.1
2023-02-10 00:23:56 +02:00
Sebastian Dröge
560bdc4cb7
Update for glib API changes
2023-01-31 12:24:07 +02:00
Sebastian Dröge
3b4c48d9f5
Fix various new clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1062 >
2023-01-25 10:31:19 +02:00
Sebastian Dröge
2c386fb792
Update for various deprecated APIs
2023-01-22 20:07:26 +02:00
Sebastian Dröge
4582ae91ab
Move remaining plugins to ParamSpec
builders
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1054 >
2023-01-21 18:34:55 +02:00
Sebastian Dröge
812df78b75
webrtcbin: Update for StreamProducer
API changes
2023-01-16 16:36:41 +02:00
Sebastian Dröge
6132788b02
Update for caps/structure-related string API changes
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1048 >
2023-01-15 22:58:44 +02:00
Mathieu Duponchelle
1a8abde884
webrtcsink: fix panic on pre-bwe request error
...
We dispose of consumer pipelines asynchronously, potentially after the
session objects have been disposed of.
As session objects are the owner of the cc element, it is entirely
possible for the bwe-request signal to get emitted after cc has been
disposed of, as the closure only takes a weak reference to it.
Fix by simply checking if cc is None
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1044 >
2023-01-11 15:09:45 +00:00
Sebastian Dröge
27435ad82e
Update for API changes
2023-01-05 12:33:54 +02:00
Zhao, Gang
9fa838e366
webrtc: Fix rustfmt errors
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1019 >
2022-12-27 11:12:54 +02:00
Zhao, Gang
877a9bd7f3
webrtc: Share runtime between webrtcsink and signaller crates
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1019 >
2022-12-26 23:10:40 +00:00
Zhao, Gang
1ffeb4d44d
webrtc: Move from async-std to tokio
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1019 >
2022-12-26 23:10:40 +00:00
Zhao, Gang
2bc29c1fd3
webrtc: examples: Update package-lock.json
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1019 >
2022-12-26 23:10:40 +00:00
Mathieu Duponchelle
e5360ff431
webrtc/README: update command to run the signalling server
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/277
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1012 >
2022-12-13 12:47:26 +01:00
Sebastian Dröge
3f904553ea
Fix various new clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1011 >
2022-12-13 11:43:16 +02:00
Sebastian Dröge
fb42cd8a0f
net: Update to async-tungstenite 0.19
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1005 >
2022-12-11 12:54:24 +02:00
Raphael Dürscheid
aa2abc50bf
webrtcsink: Support nvv4l2vp9enc
...
Naive support for nvv4l2vp9enc by assuming configuration is equivalent
to existing nvv4l2vp8enc. Validated to have relevant properties.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/983 >
2022-12-02 10:18:27 +00:00
Sebastian Dröge
fceacf7081
Update for gst::Array / gst::List API improvements
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/985 >
2022-11-27 01:12:46 +02:00
Thibault Saunier
6b11284e8a
webrtcsink: Make the turn-server prop a turn-servers
list
...
So that we can simply specify several turn servers at once
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/973 >
2022-11-16 14:48:16 +00:00
Guillaume Desmottes
37cb636140
webrtc: README: fix couple of links
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/975 >
2022-11-11 14:51:46 +01:00
Mathieu Duponchelle
66e7b314f7
webrtcsink: improve debug
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/972 >
2022-11-10 15:00:19 +00:00
Sebastian Dröge
a5f3197651
Add missing doc
features to WebRTC plugins
2022-11-07 18:06:29 +00:00
Sebastian Dröge
a8250abbf1
Fix various new clippy warnings
2022-11-01 10:27:48 +02:00
Sebastian Dröge
976ae5707e
webrtc: Update to human_bytes 0.4
2022-10-31 14:11:29 +02:00
Sebastian Dröge
bf6bdab80c
webrtc: Remove version requirement from internal crate dependencies
2022-10-24 19:50:24 +03:00
Sebastian Dröge
f2223cf2cb
Update versions to 0.10.0-alpha.1
2022-10-24 19:31:19 +03:00
Sebastian Dröge
b64f951160
Update to async-tungstenite 0.18
2022-10-24 18:03:33 +03:00
Sebastian Dröge
9a68f6e221
Move from imp.instance()
to imp.obj()
...
It's doing the same thing and is shorter.
2022-10-23 23:08:46 +03:00
François Laignel
86776be58c
Remove &
for obj
in log macros
...
This is no longer necessary.
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1137
2022-10-23 21:22:31 +02:00
Sebastian Dröge
f045099fc1
Fix GObject type names, GStreamer debug category names and element factory names
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/198
2022-10-23 20:46:08 +03:00
Sebastian Dröge
5d44e0eb3c
rtp: Move GCC bandwidth estimation element from webrtc to rtp plugin
2022-10-23 20:25:08 +03:00
Sebastian Dröge
20ad9175d8
Make GStreamer plugin/crate/library/directory names and descriptions consistent
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/238
2022-10-23 20:25:08 +03:00
Sebastian Dröge
f058a5e229
Various minor cleanups
2022-10-22 19:50:24 +03:00
François Laignel
6319d104a8
Take advantage of Into<Option<_>>
args
...
Commit 24b7cfc8
applied changes related to nullability as declared
by gir. One consequence was that some functions signature ended up
requiring users to pass `Some(val)` when they could use `val`
before.
This commit applies changes on `gstreamer-rs` which, will honoring
the nullability stil allow users to pass `val` for the few affected
functions.
This commit also fixes the signature for `Element::request_new_pad`
which was updated upstream.
2022-10-21 11:54:24 +02:00
Thibault Saunier
5c89c3db69
webrtc: Rename and add to meson build the signalling server
...
The binary was only called `server` it has been renamed to
`gst-webrtc-signalling-server` and is installed in meson.
2022-10-20 18:20:15 +00:00
Thibault Saunier
cbdd3a7f26
webrtc: Enhance documentation
2022-10-20 12:04:43 +00:00
Sebastian Dröge
c0bf05d4bb
webrtc: Minor cleanup
2022-10-20 13:20:32 +03:00
Thibault Saunier
71ed04d89b
webrtc: Rename signaller and protocol crates
2022-10-20 13:32:31 +02:00
Thibault Saunier
25bda89ac8
webrtc: Update an unify rust-version and edition
...
So it all matches the rest of the plugins
2022-10-20 13:32:31 +02:00
Thibault Saunier
4942a916a8
webrtc: Uniformise GType names
2022-10-20 13:32:31 +02:00
Thibault Saunier
37c0239aff
webrtc: Port to new ElementBuilder API
2022-10-20 13:32:31 +02:00
Thibault Saunier
ad78936365
webrtc: Enable more documentation
2022-10-20 13:32:31 +02:00
Thibault Saunier
0f0dec7fa9
webrtc: Fix fmt issues
2022-10-20 11:51:59 +02:00
Thibault Saunier
5ab7be6124
webrtc: Add SDPX license header on every file
2022-10-20 11:51:58 +02:00
Thibault Saunier
39c0dcb0d4
Plug webrtc in
2022-10-20 11:51:58 +02:00
Thibault Saunier
b164daf510
webrtc: Fix clippy issues
2022-10-20 11:51:58 +02:00
Thibault Saunier
87fd49a9bf
webrtc:signalling: Remove short option for 'host' in the cli
...
It clashes with `--help`
2022-10-20 11:51:58 +02:00
Thibault Saunier
5e7537953c
webrtc: Move to net/webrtc
2022-10-18 15:18:53 +02:00