Commit graph

3684 commits

Author SHA1 Message Date
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
Sebastian Dröge
628dee9079 gtk4: Use a correctly typed None value when retrieving the paintable property fails
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/609

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1850>
2024-10-14 18:22:04 +03: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
Matthew Waters
d4fd21d197 rtp2/jitterbuffer: check for event query earlier
If a serialized query arrives (e.g. allocation) and the jitterbuffer has never
received a packet, then jitterbuffer would never forward the serialized query
resulting in a hang.

Fix by forwarding queries/events before the conditions that require the first
packet to arrive.

Also update unit test to check for this scenario.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1846>
2024-10-09 16:21:13 +00:00
Ray Tiley
06c8874752 [cea608overlay] - don't indent centered text.
Adding the additional 10% padding was causing captions to render to far
to the right.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1845>
2024-10-08 16:30:43 -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
Jordan Petridis
3788914cea ci: Specify the number of build jobs on windows
Followup to b5e0e071

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1840>
2024-10-03 10:32:22 +00:00
Jordan Petridis
24ffee3fd6 ci: Use cargo nextest as the test runner and export junit reports
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1840>
2024-10-03 10:32:22 +00:00
Guillaume Desmottes
2fc8d6a27d togglerecord: provide details when RT assertion fails
We hit this assertion once during our tests but it's unclear why.
This change will hopefully help us understanding what's going on next
time.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1809>
2024-10-03 09:24:35 +00:00
Sebastian Dröge
36304a7d36 gtk4paintablesink: Don't initialize a GL context unless a GL platform is enabled
And also don't suggest in the template caps that GL might be supported.

For clarification, the wayland feature is also renamed to waylandegl and
using wayland gives a deprecation warning.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1837>
2024-10-02 14:12:12 +00:00
Sebastian Dröge
d1254fc4ef gtk4paintablesink: Don't check for a GL context when filtering dmabuf caps
There's no connection between the two and dmabuf can also not be
supported if GL is also unsupported.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1837>
2024-10-02 14:12:12 +00:00
Mathieu Duponchelle
867408b1c0 speechmaticstranscriber: add debug
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1831>
2024-10-02 11:16:02 +00:00
Mathieu Duponchelle
115e12c09a transcriberbin: fix linking of user-provided transcriber
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1831>
2024-10-02 11:16:02 +00:00
Mathieu Duponchelle
5eccb180be transcriberbin: support both latency and transcribe-latency properties
Also don't set translate-latency property if not present

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1831>
2024-10-02 11:16:02 +00:00
Mathieu Duponchelle
8fae519c8d transcriberbin: add debug
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1831>
2024-10-02 11:16:02 +00:00
Sebastian Dröge
ccb9610d6b Update Cargo.lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1835>
2024-10-02 06:36:56 +00:00
Sebastian Dröge
2c9be9f236 deny: Update
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1835>
2024-10-02 06:36:56 +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
Sebastian Dröge
ceb88d960f rtpav1depay: Add wait-for-keyframe and request-keyframe properties
These behave the same as the properties in other depayloaders. Keyframe
detection is based on the N flag in the aggregation header.

Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/598

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1823>
2024-09-27 12:25:16 +03:00
Nick Steel
5f055160ba spotify: add missing tokio crate feature rt-multi-thread
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1818>
2024-09-26 09:56:46 +01:00
Nick Steel
32aaf19fa3 spotify: depend on librespot-core and librespot-playback only
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1818>
2024-09-26 09:54:27 +01:00
Nick Steel
e006c20556 spotify: avoid librespot::discovery dependency
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1815>
2024-09-26 06:48:56 +00:00
Mathieu Duponchelle
0d160d8cf6 Cargo.toml: turn lto off for dev profile
Turning on opt-level=1 is necessary to make things reasonably fast, but
it also turns on lto which since thinlto became enabled by default slows
down compile times by a factor of 2 compared to lto off.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1814>
2024-09-25 16:09:29 +00: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
Sebastian Dröge
b5586095bc tracers: Update to etherparse 0.16
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1808>
2024-09-25 09:05:56 +03: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
Mathieu Duponchelle
f70482d9bc webrtcsrc: fix default msid property value
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1800>
2024-09-24 14:50:30 +00:00
Guillaume Desmottes
bd7b94e305 fmp4: use the right DEFAULT constant
Does not really matter as both have the same value but best to have it
right.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1799>
2024-09-23 12:48:42 +00:00
Jochen Henneberg
8313260e09 fmp4mux: Renamed caps_change_allowed() to header_update_allowed()
Because tag events like orientation and language require a header
update as well.

For proper logging the function now takes a reason parameter and logs
a debug message in case the header update is allowed.

And added some explanation to the function to make sure that it is
used in the right place.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1762>
2024-09-23 11:52:18 +00:00
Jochen Henneberg
c0f3eff18e fmp4mux: Renamed caps_changed to need_new_header
Because the header update is needed in case of language code or
orientation changes as well that come with tag events.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1762>
2024-09-23 11:52:18 +00:00
Jochen Henneberg
1be92c4b86 fmp4mux: Added tests for caps change feature
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1762>
2024-09-23 11:52:18 +00:00
Jochen Henneberg
0c8b84d8a8 fmp4mux: Send new fragment with header in case of caps change
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1762>
2024-09-23 11:52:18 +00:00
Jochen Henneberg
4d71525eee fmp4mux: Simplified EOS detect logic
The all_eos cannot be set without having sinkpad.is_eos(). Thus
all_eos || sinkpad.is_eos() == sinkpad.is_eos().

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1762>
2024-09-23 11:52:18 +00:00
Guillaume Desmottes
431adaa2f9 fmp4: examples: hls_live: don't set header-update-mode=update
No need to update the header in live mode.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1798>
2024-09-23 12:24:22 +02:00
Jordan Petridis
b5e0e0713c ci: Set build jobs according to FDO_CI_CONCURRENT when available
The CI runners run multiple jobs concurrently, and as such we should
only be building with the number of jobs allocated to us when the
variable is set.

Related to https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/merge_requests/1545

Also move the rest of the common flags we pass to cargo together so it's
a bit easier to read.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1791>
2024-09-20 15:05:21 +03:00
Jendrik Weise
1ff761e410 fmp4: Add tests for split-at-running-time signal
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1761>
2024-09-20 12:35:24 +03:00
Jendrik Weise
d5a9c7a940 fmp4: Add split-at-running-time signal
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1761>
2024-09-20 12:35:24 +03:00
Mathieu Duponchelle
a85b0cb72e webrtcsrc: expose MSID property on source pad
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1789>
2024-09-20 09:31:57 +03:00
Sebastian Dröge
c9b370a6e4 cea708mux: Fix off-by-one in deciding whether a buffer belongs to this or the next frame
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1774>
2024-09-19 12:05:42 +00:00