Commit graph

4149 commits

Author SHA1 Message Date
Sebastian Dröge
98b61b1e56 rtprecv: Improve detection of rtcp-mux RTCP packets received on the RTP sink pad
Most RTCP packets are also valid RTP packets and just have the marker
bit set and a payload type between 64 and 95. If we don't know RTP caps
for such packets, try parsing them as RTCP packet instead.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2362>
2025-07-15 10:48:12 +00:00
Vivia Nikolaidou
20eb83367d tttocea{6,7}08: Disallow pango markup from input caps
Otherwise the elements treat pango markup as plain text, making the text
appear corrupted.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2367>
2025-07-15 10:04:38 +00:00
Sebastian Dröge
f01565cd69 quinn: Remove unused once_cell dependency 2025-07-15 13:00:28 +03:00
Mathieu Duponchelle
362a1a22ce cea708mux: fix clipping function
The intention of the original implementation was to clip buffers outside
the segments, but the second map was getting Some(None) in that case.

Fix by using `and_then` for a flat map

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2372>
2025-07-15 08:38:37 +03:00
Sebastian Dröge
3a6a78d07f Update Cargo.lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2317>
2025-07-14 16:34:47 +00:00
Sebastian Dröge
67175f70d9 analytics: Add new analyticscombiner / analyticssplitter elements
These batch buffers from one or more streams into a single stream via
the GstAnalyticsBatchMeta and allow splitting that single stream into
the individual ones again later.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2317>
2025-07-14 16:34:47 +00:00
Sebastian Dröge
a6b22bc047 fmp4mux: Ignore a couple of tests that were broken by an aggregator change
Caused by https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9320
but these are problems in the tests. GstHarness and aggregator tests are
impossible to write reliably.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2368>
2025-07-14 18:24:25 +03:00
Sebastian Dröge
eec463ca34 dav1ddec: Use video decoder base class latency reporting API
And report the new latency whenever the frame rate changes during
caps negotiation so that the pipeline can configure a new latency
when receiving the latency message.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2368>
2025-07-14 17:46:13 +03:00
Sebastian Dröge
daa48f019b dav1d: Update for GStreamer bindings API changes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2365>
2025-07-14 12:12:36 +00:00
Sebastian Dröge
e85cbbaf7f Update Cargo.lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2365>
2025-07-14 12:12:36 +00:00
Sebastian Dröge
5656a7e4e0 rtprecv/rtpsend: Downgrade warning about incomplete RTP caps to a debug message
When using bundled RTP streams the clock-rate has to come from the
pt-map instead of the caps on the pad.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2364>
2025-07-14 12:38:34 +03:00
Sebastian Dröge
ae2e823340 rtprecv: Drop packets for which we have no clock-rate instead of panicking
Panicking if some spurious packet with an unknown payload type is
received is not good behaviour.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2364>
2025-07-14 12:38:34 +03:00
Sebastian Dröge
72677a6825 rtpsend: Don't configure a zero min RTCP interval for senders
Whether there are local senders or not should not have an effect on the
minimum interval other than for calculations of available bandwidth.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2361>
2025-07-11 16:58:37 +03:00
Sebastian Dröge
020afdfc96 quinn: Silence some clippy warnings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2356>
2025-07-09 12:14:23 +00:00
Sebastian Dröge
9c88b76bd5 deny: Update
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2356>
2025-07-09 12:14:23 +00:00
Sebastian Dröge
ef99afb87f aws: Update to test-with 0.15
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2356>
2025-07-09 12:14:23 +00:00
Sebastian Dröge
dc3a079b0a quinn: Update to rcgen 0.14 and web-transport-quinn 0.7
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2356>
2025-07-09 12:14:23 +00:00
Sebastian Dröge
c09800b7a3 Update to quick-xml 0.38
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2356>
2025-07-09 12:14:22 +00:00
Sebastian Dröge
354a61f1e0 rtsp: Update to lru 0.16
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2356>
2025-07-09 12:14:22 +00:00
Sebastian Dröge
2a9260a325 Update to socket2 0.6
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2356>
2025-07-09 12:14:22 +00:00
Sebastian Dröge
679835b184 Update Cargo.lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2356>
2025-07-09 12:14:21 +00:00
Sebastian Dröge
56b1c5503d version-helper: Update to toml-edit 0.23
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2356>
2025-07-09 12:14:21 +00:00
Thibault Saunier
97f9f1fd8d Fix build after gstreamer-rs!1747
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2356>
2025-07-09 12:14:21 +00:00
Robert Mader
7b561354eb video/gtk4: Copy non-contiguous sysmem buffers
As the texture builder only supports contiguous buffers. This follows
the gtkgstsink implementation.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2271>
2025-07-09 11:02:44 +00:00
Robert Mader
d2308a964e video/gtk4: Add YCbCr memory texture formats
In order to match gtkgstsink. GTK only handles contiguous buffers,
thus adapt the texture builder part accordingly.

TODO: fall back to a copy for non-contiguous buffers.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2271>
2025-07-09 11:02:44 +00:00
Robert Mader
51b8d3dc0e video/gtk4: Improve color-state fallbacks for unknown values
Colorimetry is partially or fully absent in many cases and GTK
sometimes doesn't handle that well.

Follow the example of gtkgstsink and always set defined values
while falling back to defaults otherwise. For the later case
differentiate between RGB and YCbCr formats to avoid the worst
pitfalls.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2349>
2025-07-09 10:14:25 +00:00
Taruntej Kanakamalla
e7790cb997 whipclient: emit shutdown after DELETE request
A shutdown signal to the base object i.e. webrtcsink will
make sure the client is closed gracefully, especially when
the ICE connection with the WHIP server peer is lost in an
unexpected way

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2358>
2025-07-09 15:03:10 +05:30
Taruntej Kanakamalla
93cd202578 whipserver: example: fix leak in the session teardown
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2358>
2025-07-09 15:03:10 +05:30
Sebastian Dröge
93f0bbfbe9 mccparse: Convert "U" to the correct byte representation
It's supposed to be E1 00 00 00 and not E1 00 00.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2357>
2025-07-09 11:07:43 +03:00
Philippe Normand
ad027bd05d webrtc-api: Set default bundle policy to max-bundle
Otherwise the default is "balanced" and GstWebRTC-based browser engines don't
support this very well. Max bundle is already un-conditionally enabled by
default in webrtcsink.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2352>
2025-07-08 13:48:35 +00:00
Thibault Saunier
b305102a28 meson: Try to build skia by default
Now that we can use subprojects and we check dependencies, it should work

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2300>
2025-07-08 13:19:30 +00:00
Thibault Saunier
e5afe39be4 meson: skia: Add harfbuzz, freetype and fontconfig as dependencies
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/692

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2300>
2025-07-08 13:19:30 +00:00
Thibault Saunier
4f7bcf3c1e skia: Update to 0.87 which supports using pkg-config
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2300>
2025-07-08 13:19:30 +00:00
François Laignel
836045e945 rtprecv: fix SSRC collision event sent in wrong direction
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2351>
2025-07-07 13:10:59 +02:00
Mathieu Duponchelle
464d8b6fbb elevenlabssynthesizer: fix running time checks
The deadline for pushing a buffer out of the element is not its running
time, but its running time added to the upstream latency + the element
latency.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2348>
2025-07-04 19:12:51 +00:00
Mathieu Duponchelle
6c1b331129 elevenlabssynthesizer: remove stray progress message
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2348>
2025-07-04 19:12:51 +00:00
Robert Ayrapetyan
e82e5fe5ae webrtc: fix Safari addIceCandidate crash
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2039>
2025-07-03 11:50:19 +00:00
Brad Hards
06939540a1 mp4mux: add TAI timestamp muxing
This is an implementation of the TAI timestamp functionality described in ISO/IEC 23001-17 Amendment 1 Section 8.1.2 and 8.1.3.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2280>
2025-07-03 21:07:35 +10:00
Arun Raghavan
efaab53ab3 aws: s3hlssink: Write to S3 on OutputStream flush
It is quite brittle to try to depend on signal order from splitmuxsink
or hlssink3 (or worse, when S3Upload gets drop()ed). We implement
flush() on the stream instead, with a simple check to make sure there's
new data to avoid duplicate uploads.

If we get the ordering wrong, we upload new segments _after_ the
corresponding playlist update referencing that segment, which outside of
being wrong, could break players.

I had done this in the initial implementation, but iirc the flush() was
insufficient for reasons I don't fully recall. Doing a flush in both
flush() and drop() should hopefully cover all the cases that I found to
not work. In addition, since this is an append-only stream, we can do a
simple length check to avoid redundant uploads.

Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/701
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2330>
2025-07-02 14:50:48 +00:00
Robert Mader
b271edc3f8 gtk4: Promote set_caps debug log to info
As that info is very helpful for debugging and can get easily get
lost in debug noise.

This matches the behavior of glupload and gtkgstsink.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2341>
2025-07-02 14:38:42 +02:00
François Laignel
096987a31c rtpbin2: sync: fix race condition
Under some circumstances, the `ssrc` could be added to the `ssrcs` map without
the `clock_rate` being defined. When `rtprecv` would check wether the ssrc
`has_clock_rate()`, it would return `true` spuriously, which would then cause a
panic in `calculate_pts()`.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2337>
2025-07-02 13:33:34 +02:00
Jochen Henneberg
594a0152ba gopbuffer: Push GOPs in order of time on EOS
GOPs are internally ordered with latest GOP first so they have to be
pushed in reverse order on EOS.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2335>
2025-07-02 09:48:22 +02:00
Jerome Colle
388b442891 webrtcsink: add signal to configure mitigation modes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2279>
2025-07-01 19:25:09 +02:00
François Laignel
0be4cd8b32 rtpbin2: fix race condition on serialized Queries
If a serialized Query was pushed after the src Pad Task had already started
waiting for next item, the Query was not processed, blocking the stream.

This commit wakes the `JitterbufferStore` if a `Waker` was pending.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2332>
2025-07-01 17:26:27 +02:00
Taruntej Kanakamalla
fc0b433e29 webrtcsink: fix deadlock on error setting remote description
Avoids another attempt to lock the sesion mutex recursively.
Take a copy of the session id string to be passed to the signaller and
drop the session mutex after removal of session from the hashmap

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2331>
2025-07-01 13:36:38 +05:30
Matthew Waters
f835e075ea livekit: add room-timeout
Produces an error message and disconnects when there is no other participant
in the room for room-timeout milliseconds.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2307>
2025-07-01 00:30:47 +00:00
Arun Raghavan
a5f0b5947b net: hlssink3: Fix a comment typo
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2329>
2025-06-30 10:01:49 -04:00
Arun Raghavan
5d4b23eb2c net: hlssink3: Use closed fragment location in playlist generation
Currently, we incorrectly use the last location we generated, which is
the current in-flight fragment while generating a new playlist. Instead,
the playlist should use the fragment that was just close (i.e. the
previous fragment), so it does not refer to a fragment we have not yet
uploaded.

This is a bug that was copied over from how hlssink2 does things.

Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/701
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2324>
2025-06-30 12:09:58 +00:00
Taruntej Kanakamalla
ab50ef2fb7 webrtc: sink: avoid recursive locking of the session
Drop the session lock before calling end_session and finalize session
if the consumer refuses the media or the provided payload in not valid

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2322>
2025-06-30 11:09:55 +00:00
Sebastian Dröge
77e45a6f00 Update gstreamer-rs / gtk-rs dependencies
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2323>
2025-06-27 12:15:30 +03:00