Taruntej Kanakamalla
6cf39d4a00
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/1971 >
2024-12-05 17:17:51 +00:00
Guillaume Desmottes
625eeccf25
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/1967 >
2024-12-04 13:05:26 +00:00
Guillaume Desmottes
8434126a58
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/1967 >
2024-12-04 13:05:26 +00:00
Mathieu Duponchelle
f8178fbd21
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/1959 >
2024-12-02 16:49:18 +00:00
Ruben Gonzalez
0821c39640
webrtcsink: add openh264enc support
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1957 >
2024-11-29 23:08:45 +00:00
Sebastian Dröge
3cccede612
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/1951 >
2024-11-29 12:39:20 +00:00
Matthew Waters
0537734aee
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/1932 >
2024-11-28 16:44:05 +11:00
Xavier Claessens
52f48d7279
webrtcsink: Ignore more fields in caps change
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1940 >
2024-11-27 12:18:33 +00:00
Sebastian Dröge
be2b4952d2
Update to async-tungstenite 0.28
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1905 >
2024-11-02 12:34:43 +02:00
Sebastian Dröge
1afe165fce
Update async-tungstenite dependencies
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1905 >
2024-11-02 12:34:11 +02:00
Xavier Claessens
634ec19e24
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/1903 >
2024-11-01 15:11:17 +00:00
Sebastian Dröge
07f7730632
aws: Allow a deprecated BehaviourVersion for now
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1873 >
2024-10-22 20:21:55 +00:00
Sebastian Dröge
347b5987bd
Fix a couple of type hierarchy bugs
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1873 >
2024-10-22 20:21:55 +00:00
Sebastian Dröge
6c0bfd3ffc
webrtc: Silence two new Rust 1.82 clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1874 >
2024-10-22 19:29:28 +00:00
Mathieu Duponchelle
2790fb41b2
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/1859 >
2024-10-18 10:53:16 +00:00
Chris Bainbridge
f5b90ba261
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/1858 >
2024-10-18 09:33:42 +00:00
Guillaume Desmottes
57234522ec
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/1849 >
2024-10-10 16:56:25 -04:00
Guillaume Desmottes
6cc9945d4e
webrtc: janus: fix typo in doc
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1849 >
2024-10-10 16:43:23 -04:00
Mathieu Duponchelle
5958e342c7
webrtcsink: fix naming of error dot files for discovery pipelines
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1844 >
2024-10-03 16:45:42 +01:00
Guillaume Desmottes
87697609a2
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/1833 >
2024-10-01 17:42:21 +01:00
Mathieu Duponchelle
8eedd0ac6d
webrtcsrc: ensure source pad has msid when added
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1812 >
2024-09-26 06:33:44 +00:00
Mathieu Duponchelle
41f75378df
webrtcsrc: fix default msid property value
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1812 >
2024-09-26 06:33:44 +00:00
François Laignel
8f542f084c
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/1811 >
2024-09-25 11:25:51 +01:00
Mathieu Duponchelle
9331824479
webrtcsrc: expose MSID property on source pad
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1796 >
2024-09-21 00:27:57 +02:00
Arun Raghavan
b1ea6d2e65
webrtc: Fix whipclientsink name in README
...
The element name was changed, but the documentation wasn't updated to
match.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1765 >
2024-09-04 13:48:06 +01:00
Mathieu Duponchelle
88a6b6d428
net/webrtc: Add missing npm command to README
...
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/589
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1747 >
2024-08-23 10:30:18 +00:00
Mathieu Duponchelle
4559b6a9f9
webrtcsink: fix segment format mismatch with remote offer
...
webrtcsink was starting the negotiation process on Ready and concurrently
moving the consumer pipeline to Playing, but when answering the remote
description was set so fast that input streams were connected (and the time
format set on appsrc) before the state change to Paused had completed.
This meant gst_base_src_start was happening after that and setting the format
back to bytes, the time segment that was next coming in then caused:
basesrc gstbasesrc.c:4255:gst_base_src_push_segment:<video_0> segment format mismatched, ignore
And the consumer pipeline errored out.
The same issue existed in theory when webrtcsink was creating the offer,
but was much harder to trigger as it required that the remote answer
came in before the state change to Paused had completed.
This commit fixes the issue by simply waiting for the state to have
changed to Paused before negotiating.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1738 >
2024-08-23 09:30:03 +00:00
Sebastian Dröge
85151a6e4f
Fix various 1.80 clippy warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1740 >
2024-08-23 08:59:20 +03:00
Jerome Colle
1abe0fd5fe
webrtcsink: add nvv4l2av1enc support
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1743 >
2024-08-22 09:59:22 +00:00
Dave Lucia
a3d6308579
net/webrtc: Fix turn-servers nick: user -> use
...
Noticed this typo
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1713 >
2024-08-14 09:34:59 +00:00
Sebastian Dröge
b673de4e07
webrtcsrc: Make sure to always call end_session()
without the state lock
...
This was already done in another place for the same reason: preventing a
deadlock. It's probably not correct as hinted by the FIXME comment but
better than deadlocking at least.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1715 >
2024-08-14 08:17:48 +00:00
Mathieu Duponchelle
c87ddd43e4
webrtcsink: fix assertions when finalizing
...
Dumping the pipeline on state changes from an async bus handler was
triggering criticals.
Instead, dump from the sync handler.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1714 >
2024-08-13 18:07:13 +01:00
Sebastian Dröge
c712b36082
webrtcsrc: Don't hold the state lock while removing sessions
...
Removing a session can drop its bin and during release of the bin its
pads are removed, but the pad-removed handler is also taking the state
lock.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1700 >
2024-08-07 12:00:57 +00:00
Loïc Le Page
4bef63ba26
gstwebrtc-api: always include index file in dist for convenience
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1675 >
2024-07-18 23:38:56 +00:00
Sebastian Dröge
06fb47d197
webrtc: Add version to gst-plugin-webrtc-protocol dependency
2024-07-16 18:59:19 +03:00
François Laignel
b50f76223c
webrtcsink: fix property types for rav1enc
...
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/572
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1667 >
2024-07-16 12:47:33 +03:00
Sebastian Dröge
a8ccfe49d9
webrtc: Require livekit-protocol < 0.3.4 due to uncoordinated breaking changes
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1663 >
2024-07-11 20:00:24 +03:00
Sebastian Dröge
98b28d69ce
Update for new debug log macro syntax
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1658 >
2024-07-08 11:25:23 +03:00
leonardo salvatore
f303992e0c
webrtcsink: initial support for vpuenc_h264 encoder for imx8mp, default values set to cover a common streaming scenario
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1639 >
2024-07-01 07:34:04 +00:00
Sebastian Dröge
47d62b6d78
Update for new clone/closure macro syntax
...
Also fix various weak/strong references in the webrtc plugin, and make
sure to pass the object to debug log functions in every place.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1625 >
2024-06-21 11:54:58 +03:00
Sebastian Dröge
9b323a6519
Use Option::is_some_and(...)
instead of Option::map_or(false, ...)
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1630 >
2024-06-19 13:03:37 +00:00
Sebastian Dröge
23d998a1db
Slightly improve code making use of element factories retrieved from an element
...
We can use `is_some_and(...)` instead of `map_or(false, ...)`.
Also in a few places the factory was retrieved multiple times, one time
with unwrapping and another time with handling the `None` case
correctly. Instead of unwrapping, move code to handle the `None` case.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1630 >
2024-06-19 13:03:37 +00:00
Sebastian Dröge
ba70bb1154
deny: Add override for older tungstenite
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1603 >
2024-06-06 10:34:12 +00:00
Sebastian Dröge
85c38107cf
webrtc: Update to async-tungstenite 0.26
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1603 >
2024-06-06 10:34:12 +00:00
Francisco Javier Velázquez-García
8fc652f208
webrtcsink: Refactor value retrieval to avoid lock poisoning
...
When setting an incorrect property name in settings,
start_stream_discovery_if_needed would panic because it attempts to
unwrap a poisoned lock for settings.
This refactor avoids that situation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1594 >
2024-05-31 08:10:23 +00:00
Francisco Javier Velázquez-García
568e8533fa
webrtcsink: Fix typo in property name for av1enc
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1594 >
2024-05-31 08:10:23 +00:00
Arun Raghavan
04e9e5284c
webrtc: signaller: A couple of minor doc fixups
...
The expectation is `Returns:`, not `Return:`
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1525 >
2024-05-30 22:16:46 +03:00
Arun Raghavan
1c54c77840
webrtcsink: Add a mechanism for SDP munging
...
Unfortunately, server implementations might have odd SDP-related quirks,
so let's allow clients a way to work around these oddities themselves.
For now, this means that a client can fix up the H.264 profile-level-id
as required by Twitch (whose media pipeline is more permissive than the
WHIP implementation).
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/516
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1525 >
2024-05-30 22:16:46 +03:00
Taruntej Kanakamalla
83f76280f5
net/webrtc: Example for whipserver
...
rudimentary sample to test multiple WHIP client connections
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1339 >
2024-05-29 21:03:27 +00:00
Taruntej Kanakamalla
712d4757c3
net/webrtc/whip_signaller: multiple client support in the server
...
- generate a new session id for every new client
use the session id in the resource url
- remove the producer-peer-id property in the WhipServer signaler as it
is redundant to have producer id in a session having only one producer
- read the 'producer-peer-id' property on the signaller conditionally
if it exists else use the session id as producer id
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1339 >
2024-05-29 21:03:27 +00:00