Sebastian Dröge
7b4665c793
Fix some new clippy 1.84 warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2032 >
2025-01-10 10:08:38 +02:00
Sebastian Dröge
38e8134edd
Update to itertools 0.14
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2018 >
2025-01-01 12:46:07 +02:00
Ruben Gonzalez
ebfa0fb890
deps: update itertools to 0.13
...
same used in gstreamer-rs
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2002 >
2024-12-20 16:23:52 +00:00
Thibault Saunier
1e3eef253b
webrtcsrc: Add a 'connect-to-first-producer' property
...
This is an helper property which allows to avoid requiring to know
peer IDs, which is very useful during development.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/386
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1996 >
2024-12-19 14:32:16 +00:00
Sebastian Dröge
7d4ddc7eb9
webrtc: Specify to use playbin3 instead of playbin
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1995 >
2024-12-18 07:31:17 +00:00
Sebastian Dröge
248b7ac059
webrtcsink: Configure custom host/port on the signaller when running signalling server internally
...
Otherwise it just tries connecting to the default URL, which doesn't
work if either the host or the port are changed.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1994 >
2024-12-17 16:22:41 +02:00
Mathieu Duponchelle
8886cceaf0
webrtcsink: add nvh265enc support
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1980 >
2024-12-11 08:07:15 +00:00
Taruntej Kanakamalla
c9a0731e61
webrtc: use the nick to set enum type properties on openh264enc
...
The properties `rate-control` and `complexity` are of enum types and passing
a gint value is resulting in a panic. So pass the corresponding nick of the enum
value instead
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1970 >
2024-12-05 17:28:09 +05:30
Guillaume Desmottes
45519a7d85
webrtc: janus: handle slowlink event
...
Fix this warning:
webrtc-janusvr-signaller imp.rs:426:gstrswebrtc::janusvr_signaller:👿 :Signaller::handle_msg:<GstJanusVRWebRTCSignallerU64@0x7f317009b4d0> Unknown message from server: {
"janus": "slowlink",
"session_id": 980554280060589,
"sender": 5867141593320621,
"mid": "video0",
"media": "video",
"uplink": false,
"lost": 15
}
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1929 >
2024-12-02 15:38:24 +00:00
Guillaume Desmottes
867c2b78b6
webrtc: janus: handle slow_link videoroom event
...
Fix this warning:
webrtc-janusvr-signaller imp.rs:426:gstrswebrtc::janusvr_signaller:👿 :Signaller::handle_msg:<GstJanusVRWebRTCSignallerU64@0x7f317009b4d0> Unknown message from server: {
"janus": "event",
"session_id": 980554280060589,
"sender": 5867141593320621,
"plugindata": {
"plugin": "janus.plugin.videoroom",
"data": {
"videoroom": "slow_link",
"current-bitrate": 0
}
}
}
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1929 >
2024-12-02 15:38:24 +00:00
Sebastian Dröge
6ee745edee
Update for GLib signal accumulator API changes
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1954 >
2024-11-30 15:10:06 +02:00
Sebastian Dröge
6aeb3f2af2
Fix / silence various new Rust 1.83 clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1954 >
2024-11-30 14:57:24 +02:00
Mathieu Duponchelle
4720b575b6
webrtscink: fix deadlock when answering
...
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/637
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1955 >
2024-11-29 18:52:41 +01:00
Ruben Gonzalez
f646504fce
webrtcsink: add openh264enc support
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1948 >
2024-11-29 13:44:11 +00:00
Sebastian Dröge
f4d2bd1a5d
webrtcsink: Set caps-change-mode=delayed on encoder capsfilter
...
Otherwise when changing the target caps (e.g. for reducing quality)
there is a race condition between buffers between the converter elements
and renegotiation.
For example, videoconvertscale might've output a 1920x1080 buffer, then
the capsfilter is configured to 1280x720, the buffer arrives in
videorate, videorate notices that renegotiation is pending, tries to
renegotiate and ends up with EMPTY caps because it can only change the
framerate but not the resolution.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1949 >
2024-11-28 21:14:43 +00:00
Xavier Claessens
e5f3ab4053
webrtcsink: Ignore more fields in caps change
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1838 >
2024-11-26 15:49:21 -05:00
Diego Nieto
362216f40b
net/webrtc: add whipclient example
...
Add a simple example producing both audio and video to make it
work with the whipserver example
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1938 >
2024-11-25 20:29:43 +01:00
Diego Nieto
0135aea9e4
net/webrtc: whipserver example
...
extend the example to support both audio and video conversions
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1938 >
2024-11-25 20:29:43 +01:00
Sebastian Dröge
347bee16d4
Update for GLib signal API changes
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1936 >
2024-11-22 15:52:41 +02:00
François Laignel
a8146f333f
all: use builder conditional setters where applicable
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1926 >
2024-11-21 12:57:16 +00:00
François Laignel
4262a8aafe
all: update due to new has_property signature
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1926 >
2024-11-21 12:57:16 +00:00
Matthew Waters
25bb2a12f1
webrtcsink: don't block the tokio runtime while holding state lock in unprepare()
...
It is possible that in unprepare(), waiting for a task to complete while
holding the state lock, that task may be waiting to acquire the state lock and
result in a deadlock.
This is quick to reproduce when starting and stopping webrtcsink in very quick
succession.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1931 >
2024-11-21 17:15:44 +11:00
Jerome Colle
f88c88ddb3
webrtcsink: set rtpgccbwe min bitrate
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1896 >
2024-11-07 18:00:12 +00:00
Sebastian Dröge
ef39046e18
Update to thiserror 2
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1911 >
2024-11-06 11:02:41 +02:00
Xavier Claessens
372c44655a
janusvr_signaller: Do not block in end_session()
...
Only stop() is allowed to block, wait there.
Fixes #603
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1848 >
2024-10-30 12:36:01 +00:00
Chris Bainbridge
5010ee872d
webrtc: Fix Python custom signaller receiving SDP offer
...
The GstWebRTC API web interface defaults to receiving an SDP offer and
generating an answer, but this can be overridden by entering "offer
options" before clicking to open the remote stream. The Python
webrtcsink-custom-signaller.py example failed in this mode as it was
coded to only generate an offer and receive an answer. Fix this by
implementing support for receiving an offer and sending an answer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1883 >
2024-10-28 11:23:32 +00:00
Chris Bainbridge
e30d80c71e
webrtc: README: add webrtcsink-custom-signaller.py
...
Document the Python webrtcsink custom signaller example.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1888 >
2024-10-28 10:19:25 +00:00
Sebastian Dröge
4abc5c7a48
Be stricter with Impl-trait bounds to enforce type hierarchies
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1871 >
2024-10-22 13:43:12 +00:00
Sebastian Dröge
7e59c3f0fd
Remove once_cell dependency
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1868 >
2024-10-21 17:53:18 +00:00
Sebastian Dröge
0e3d019e24
aws: Don't unnecessarily clone AWS behaviour version
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1864 >
2024-10-20 19:53:15 +00:00
Sebastian Dröge
00a4398aee
aws: Allow a deprecated BehaviourVersion for now
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1864 >
2024-10-20 19:53:15 +00:00
Sebastian Dröge
b43a778a8e
Fix a couple of type hierarchy bugs
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1864 >
2024-10-20 19:53:15 +00:00
Sebastian Dröge
54bc7a898e
webrtc: Silence two new Rust 1.82 clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1860 >
2024-10-17 21:38:10 +00:00
Mathieu Duponchelle
959463ff65
webrtcsink: fix session not in place errors
...
The InPlace/Taken logic was introduced to avoid using an extra lock
around the session, but it places expectations that are not always
obvious to meet around when a session is expected to be taken or not.
Any code that expects to have access to the sessions at all times thus
needs either extra logic in the session wrapper, or to maintain the
state of the session outside of the session (eg mids).
This commit removes the logic, and wraps sessions in Arc<Mutex>>.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1852 >
2024-10-17 12:29:53 +00:00
Mathieu Duponchelle
ef06421a25
webrtcsrc: make updated transceiver retrieval backward compatible
...
In 1.24 and before transceivers for remote sendonly medias are only
created at answer time. If that is the case, we can add the transceiver
ourself, it will get associated when creating the answer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1853 >
2024-10-16 14:48:20 +00:00
Mathieu Duponchelle
82d0eaf438
webrtcsrc: fix debug message on offer created
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1853 >
2024-10-16 14:48:20 +00:00
Mathieu Duponchelle
3d257b4819
webrtcsink: improve debut message when start session failed
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1853 >
2024-10-16 14:48:20 +00:00
Chris Bainbridge
785209cc7f
custom-signaller: add missing manual-sdp-munging property
...
All signallers must now implement this property
Fixes #611
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1854 >
2024-10-16 15:45:50 +02:00
Mathieu Duponchelle
5f0ca7acde
webrtcsink: fix custom_signaller hanging
...
Since 6a23ae168f
, the chain function
of webrtcsink adds a custom meta on input buffers.
That custom meta was registered only by the class_init of the subclasses
of BaseWebRTCSink, but the custom signaller example uses
BaseWebRTCSink::with_signaller() directly.
Fix by registering the meta in BaseWebRTCSink::class_init()
Fixes : #610
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1854 >
2024-10-16 15:25:09 +02:00
Mathieu Duponchelle
5e49f1d10e
webrtcsrc: address non-compliant transceiver creation
...
Instead of adding transceivers explicitly then setting the remote
description, expecting the manually added transceivers to get picked
up, we pass a promise to set-remote-description-set, and set the
relevant properties on the automatically created transceivers at that
point.
We then call create-answer and proceed as before.
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/596
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1829 >
2024-10-14 11:19:38 +00:00
Guillaume Desmottes
027eead86d
webrtc: janus: add 'janus-state' property to the sink
...
This property can be used by applications to track the state of the
signaller, especially to know when the stream is up.
Fix #510
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1505 >
2024-10-10 10:59:50 -04:00
Guillaume Desmottes
d8b9a7a486
webrtc: janus: fix typo in doc
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1505 >
2024-10-10 10:57:02 -04:00
Mathieu Duponchelle
b3ace3678b
webrtcsink: fix naming of error dot files for discovery pipelines
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1843 >
2024-10-03 14:35:45 +00:00
Guillaume Desmottes
d9e8f4054c
webrtc: allow PAR change in webrtcsink input caps
...
We are already allowing resolution changes which can lead to change in
pixel-aspect-ratio.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1830 >
2024-09-30 14:40:48 +02:00
Sebastian Dröge
dcb072ee23
webrtc: livekit: Set connection earlier during setup
...
Otherwise it's not available yet when handling the initial participants
that are already in the session when joining.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1794 >
2024-09-30 13:04:24 +03:00
Sebastian Dröge
cd2b641321
livekitwebrtcsrc: Add API for disabling/enabling a track
...
A disabled track is still negotiated but no data is sent for it
temporarily until it is enabled again.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1794 >
2024-09-30 13:04:24 +03:00
Sebastian Dröge
27dc76826e
livekitwebrtcsrc: Add pad properties for various LiveKit participant / track metadata
...
The content of the TrackInfo and ParticipantInfo structs is exposed as
gst::Structure.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1794 >
2024-09-30 13:04:24 +03:00
Mathieu Duponchelle
87c6719e1d
webrtcsink: add define-encoder-bitrates signal
...
When congestion control is used for a session with multiple encoders,
the default implementation simply divides the overall bitrate equally
between encoders.
This is not always desirable, and this patch exposes a new signal
that users can register to, with two arguments:
* The overall bitrate to allocate
* A structure with an encoder.stream_name -> bitrate mapping
Handlers should return a similar structure with a custom mapping.
An example is also provided.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1792 >
2024-09-25 15:19:44 +00:00
François Laignel
f532d523b2
webrtcsink: fix RFC7273 attributes
...
RFC7273 related attributes are set in the SDP offer by passing them via the
transceiver `codec-preferences` signal. These attributes are intended to be set
at the media level so they must be prefixed by `a-` in the `Caps` argument to
the signal. Otherwise they end up under `a=fmtp`.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1810 >
2024-09-25 09:30:48 +00:00
Mathieu Duponchelle
5c66d8c107
webrtcsrc: ensure source pad has msid when added
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1800 >
2024-09-24 14:50:30 +00:00