Commit graph

4287 commits

Author SHA1 Message Date
Sebastian Dröge
9ccf887553 mpegtslivesrc: Remove leftover debug message
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2412>
2025-08-04 16:30:55 +03:00
François Laignel
907fca2aa2 threadshare: fix regression in ts-proxysrc
This [MR] introduced a race condition when the `ts-proxysink` started pushing
items before `ts-prosysrc` had started.

This commit reverts the changes to `ProxySrcTask::start`: wake up the pending
queue when starting the task. Also applies this to `ts-queue` even though the
race condition is less likely to happen.

[MR]: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2400

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2405>
2025-07-30 16:24:48 +02:00
François Laignel
21578ccb83 threadshare: fix flush for ts-intersrc
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2400>
2025-07-29 20:40:48 +02:00
François Laignel
ecc198e5c2 threadshare: fix flush for ts-queue ts-proxy
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2400>
2025-07-29 20:40:48 +02:00
François Laignel
9f4a8d3eeb tracers: queue-levels: add support for threadshare DataQueue related elements
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2399>
2025-07-29 15:55:00 +02:00
François Laignel
2f10e6e23f threadshare: add cur-level properties to DataQueue related elements
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2399>
2025-07-29 15:55:00 +02:00
Seungha Yang
42a72d034e transcriberbin: Release lock before forwarding caps event
Don't hold lock while sending caps events

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2398>
2025-07-28 14:56:03 +00:00
Seungha Yang
37a5acc788 transcriberbin: Fix handling of upstream latency query
Forward latency query upstream instead of downstream.
Fix regression introduced by 4074f4c275

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2398>
2025-07-28 14:56:03 +00:00
Matthew Waters
f55641f5ca ceaX08overlay: support ANY caps features
Allows e.g. memory:GLMemory as long as meta::GstVideoOverlayCompositionMeta is
supported downstream.

Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/710
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2390>
2025-07-25 01:33:57 +00:00
Mathieu Duponchelle
9451c821ae cea708mux: expose "discarded-services" property on sink pads
This can be useful when muxing in an original caption stream with
a newly-created one (eg transcription / translation), in which case one
might wish to discard select services from the original stream in order
to avoid garbled captions.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2389>
2025-07-24 14:41:01 +00:00
Taruntej Kanakamalla
486a373dcb net/webrtc/whep: add WHEP client signaller
Rewrite the whepsrc element with WHEP Client as a signaller
on top of webrtcsrc

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1545>
2025-07-24 14:11:35 +00:00
Taruntej Kanakamalla
6d0cdb30f2 webrtcsrc: add capability to initiate offer and handle answer
- add the handler for session-request signal from the signaller
to initiate an offer

- rename `handle_offer` function as `handle_remote_description` to use
if for the both remote offer and answer.

- in the function `remote_description_set` add checks to deal with answer and
offer separately

- in the session-description signal handler, call the handle_remote_description
for both offer and answer type remote description

- add a new member clock_rate in the Codec struct which is determined from the depayloader
pad templates

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1545>
2025-07-24 14:11:34 +00:00
François Laignel
34462445e8 ts-audiotestsrc: fix non-desirable harmonics
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2392>
2025-07-23 17:02:17 +00:00
François Laignel
00cd58a21c ts-audiotestsrc: actually use volume & mute properties
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2392>
2025-07-23 17:02:17 +00:00
François Laignel
b5af06c88b rtpmp4apay2: fix payload size prefix
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2391>
2025-07-23 17:53:16 +02:00
Mathieu Duponchelle
0a7cbb8d59 awstranscriber2: add property for setting show_speaker_labels
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2240>
2025-07-22 18:51:10 +00:00
François Laignel
79f5bc96d9 threadshare: udpsrc / tcpclientsrc: latency report
Incoming packets might be pushed up to `context-wait` late if the scheduler
just parked due to no tasks needing progress.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2387>
2025-07-17 19:19:44 +02:00
François Laignel
10ec242460 ts-intersink: post Latency message on first buffer
Push a Latency message on first buffer, so as to make sure latency is properly
configured even with dynamic pipelines.

Future improvement: implement Prerolling & async state change.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2387>
2025-07-17 19:19:42 +02:00
François Laignel
3a53d857b8 ts-audiotestsrc: rework
This element didn't comply with usual convetions.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2387>
2025-07-17 19:18:48 +02:00
François Laignel
ff77fc0089 Update gst_plugins_cache
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2382>
2025-07-17 10:32:27 +00:00
François Laignel
7781dff8e5 rtp: basepay: fix timestamp property's range
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2382>
2025-07-17 10:32:27 +00:00
François Laignel
c9b08188f2 ts-rtpdtmfsrc: fix some property ranges
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2382>
2025-07-17 10:32:27 +00:00
Sebastian Dröge
715a6bcd69 rtpbin2: add send / recv examples
Co-authored-by: Sebastian Dröge <sebastian@centricular.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2360>
2025-07-17 10:58:49 +03:00
Sebastian Dröge
31af6cb46b rtprecv: Drop state lock before chaining RTCP packets from the RTP chain function
Otherwise the state lock is taken twice and will cause a deadlock.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2381>
2025-07-16 18:03:36 +03:00
Sebastian Dröge
71d723de48 Update CHANGELOG.md for 0.14.0 2025-07-16 14:28:41 +03:00
Sebastian Dröge
cfe5da44cb Update versions to 0.15.0-alpha.1 2025-07-16 14:28:41 +03:00
François Laignel
96dde2d337 ts-inter: fix racy test
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2380>
2025-07-16 12:24:25 +02:00
François Laignel
716ac58a20 threadshare: src elements: don't pause the task in downward state transitions
The threadshare async Task doesn't cancel a currently running iteration. If the
streaming thread is blocked, the iteration will not return blocking the state
change.

This commit skips the `pause` transition for the src elements, so a blocked
iteration can be interrupted transitioning to `Stop`.

Also make sure the stop transition is called chaining the state change up.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2380>
2025-07-16 12:18:10 +02:00
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