Commit graph

4159 commits

Author SHA1 Message Date
Sebastian Dröge
9612655f50 Update to async-tungstenite 0.30
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2379>
2025-07-16 11:50:17 +03:00
Sebastian Dröge
e848fb67d5 Update CHANGELOG.md for 0.13.7 2025-07-16 10:33:02 +03:00
Sebastian Dröge
3d088278da Update CHANGELOG.md for 0.13.6 2025-07-16 10:33:02 +03:00
François Laignel
50c6e42b58 ts-intersrc: handle dynamic inter-ctx changes
Users can now update the `inter-context` property of a `ts-intersrc`, which will
disconnect from the `ts-intersink` associated with previous value of
`inter-context` and attempt to connect to the `ts-intersink` associated with the
new value.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2378>
2025-07-16 06:44:34 +00:00
François Laignel
858aee39b5 ts: inter: better ParamSpec Builder usage
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2378>
2025-07-16 06:44:34 +00:00
François Laignel
1ce1a41ca7 rtprecv: optimize src Pad scheduling
This commit implements optimizations to reduce the number of threads and
context switches necessary to handle items on src Pads.

1. A single task for all src pads in a session

Instead of starting one pad task (thread) per src pad in a session, we can
spawn a single async task that dequeues all ready items out of the jitter
buffers and pushes them to their respective src pads.

2. Handle downstream-travelling items immediately when possible

It is possible to immediately handle downstream-travelling items without queuing
them in the jitter buffer:

* for an RTP packet, if the packet is the next packet that we were expecting
  and the src Pad's jitter buffer is empty.
* for a downstream query or event if the src Pad's jitter buffer is empty.

Otherwise, the item needs to be enqueued in the jitter buffer.

3. Making sure the above strategies play well together

If a jitter buffer is empty because the src pad task just dequeued items,
the sink pad might push incoming items before the src pad task had time to push
the dequeued items, which would break ordering.

In order to avoid this situation, each src pad uses a semaphore which is held
from the moment when the sink pad or the src pad makes decisions regarding the
jitter buffer and hold it as long as necessary so as to guarantee ordering.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2346>
2025-07-15 15:30:08 +00:00
François Laignel
41ea936e51 rtpbin2: allow process-wide RUNTIME thread related configuration...
... using env vars.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2346>
2025-07-15 15:30:08 +00:00
François Laignel
c575c93d89 rtprecv: pass RtpRecvSrcPad around instead of only the JitterBufferStore
This allows accessing the src pad too (e.g. to get its name), which can ease
log intepretation when multiple ssrc are involved and more will also ease
subsequent commits.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2346>
2025-07-15 15:30:08 +00:00
François Laignel
618a348b28 rtpbin2: add a bit of documentation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2346>
2025-07-15 15:30:07 +00:00
Sebastian Dröge
19e92e5625 rtp: Update to rtcp-types 0.2
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2373>
2025-07-15 14:34:51 +03:00
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