Commit graph

3692 commits

Author SHA1 Message Date
Matthew Waters
25bb2a12f1 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/1931>
2024-11-21 17:15:44 +11:00
Mathieu Duponchelle
29b5ccacdf transcriberbin: take passthrough state into account in more places
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/630
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1925>
2024-11-20 12:52:17 +01:00
Mathieu Duponchelle
1fc1ed2539 transcriberbin: relink transcriber more thoroughly
* Remove old transcriber from correct bin
* Remove old unsynced ghost pads and expose new ones
* Fix potential deadlock where State was locked after PadState

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1925>
2024-11-20 12:52:17 +01:00
Mathieu Duponchelle
849ae7c845 speechmatics: fix hang when one source pad errors out
We still want to push translations / transcripts on the other pads, and
prior to that patch as the pad only paused itself but kept its mpsc
channel alive and stopped reading from it, it would block further messages
from being processed by the other source pads.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1925>
2024-11-20 12:52:17 +01:00
Mathieu Duponchelle
169f7b762e transcriberbin: remove proxy properties on element
Those properties are now exposed on the sink pads, and should be used
directly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1925>
2024-11-20 12:52:17 +01:00
Mathieu Duponchelle
4074f4c275 transcriberbin: simplify latency query implementation
By always replying with a synthetic latency

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1925>
2024-11-18 19:24:57 +01:00
Mathieu Duponchelle
10a022e457 transcriberbin: expose unsynced source pads for original transcripts
.. when the transcriber exposes those.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1915>
2024-11-18 17:30:54 +00:00
Mathieu Duponchelle
b5bd7d047c awstranscribe: output original transcripts to separate pad
When the transcriber is used in a live situation, it can be useful
to save a transcript for editing after the fact when producing a
VOD.

Each source pad now gets an "unsynced_" pendant. That unsynced pad
is pushed to from the context of the "live" source pad task. Flow
returns from the unsynced pads are ignored, we simply check the
last flow return before attempting to push the next transcript.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1915>
2024-11-18 17:30:54 +00:00
Jordan Petridis
39e9ad1d29 cargo: Default to thin lto for the release profile
Normal "fat" lto is quite resource heavy and requires
a lot of ram at compile time. Thinlto is a
much lighter alternative that produces comparable results
performance but it scales much better. [1] [2] [3]

All browser engines also compile with thinlto exclusively,
as it's almost as fast and saves considerable amount of
link time in the build.

[1]: https://doc.rust-lang.org/cargo/reference/profiles.html#lto
[2]: https://clang.llvm.org/docs/ThinLTO.html
[3]: https://blog.llvm.org/2016/06/thinlto-scalable-and-incremental-lto.html

In a test build on a windows machine, this brings down
the from scratch compile time from 7m30s to roughly 5m.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1922>
2024-11-18 16:33:21 +02:00
Jochen Henneberg
28a200be30 fmp4mux: Fixed comment and removed commented code from test
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1921>
2024-11-18 09:52:23 +00:00
Jochen Henneberg
08c026cea6 fmp4mux: Accept tag updates before stream starts
Tag updates should be done if either the tag is set before the stream
started or if tag changes are allowed while the stream is already
running.

Fixes #629

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1921>
2024-11-18 09:52:23 +00:00
Sanchayan Maity
28e66e150f net/quinn: Use aggregator as base class for quinnroqmux
While at it, also update and fix the docs.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1775>
2024-11-18 11:46:20 +05:30
Sanchayan Maity
8dc8aa6f55 Update docs for quinn elements
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1775>
2024-11-18 10:59:53 +05:30
Sanchayan Maity
accb6b02ea net/quinn: Add muxer and demuxer for RTP over QUIC
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1775>
2024-11-16 11:46:13 +05:30
Sanchayan Maity
d5425c5225 net/quinn: Fix test using QUIC Stream
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1634>
2024-11-15 23:14:13 +00:00
Sanchayan Maity
5bf44b6187 net/quinn: Enable log feature
This is required if and when we do need to capture logs from quinn for
debugging.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1634>
2024-11-15 23:14:13 +00:00
Sanchayan Maity
324f3531be net/quinn: Use aggregator as base class for quinnquicmux
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1634>
2024-11-15 23:14:13 +00:00
Sanchayan Maity
46f1fb4430 Update docs for quinn elements
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1634>
2024-11-15 23:14:13 +00:00
Sanchayan Maity
5c829e6ca8 net/quinn: Add quinnquicdemux to support stream demultiplexing
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1634>
2024-11-15 23:14:13 +00:00
Sanchayan Maity
f4ecf3873b net/quinn: Handle multiple stream connections in quinnquicsrc
While at it, use PushSrc as base class. quinnquicsrc never supported
seeking and only ever operated in push mode. Length and offset for
create from BaseSrc was also never really honoured. Use PushSrc as
the base class which is more appropriate.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1634>
2024-11-15 23:14:13 +00:00
Sanchayan Maity
babb6f360b net/quinn: Support stream multiplexing in quinnquicsink
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1634>
2024-11-15 23:14:13 +00:00
Sanchayan Maity
1cc2682b55 net/quinn: Add quinnquicmux to support stream multiplexing
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1634>
2024-11-15 23:14:13 +00:00
Sanchayan Maity
0eb3f52356 net/quinn: Add helper for queries
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1634>
2024-11-15 23:14:13 +00:00
Sanchayan Maity
0e89a79727 net/quinn: Add helper for adding stream id as meta to buffers
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1634>
2024-11-15 23:14:13 +00:00
Sanchayan Maity
9b5f4b48ca docs: Fix CI failure due to missing GRAY10_LE16 entry
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1920>
2024-11-15 20:00:09 +05:30
Mathieu Duponchelle
d993c95e38 transcriberbin: fix initial transcription setup
Only link the audio tee with the pad transcriber when it is not
in passthrough mode.

Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/628
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1916>
2024-11-14 17:35:33 +00:00
Mathieu Duponchelle
4284fe953a transcriberbin: expose lateness property
Directly mapped to the lateness property on the transcriber object.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1910>
2024-11-14 16:40:14 +00:00
Taruntej Kanakamalla
75a0baa6fa threadshare: udp: avoid getifaddrs in android
until the issue https://github.com/mmastrac/getifaddrs/issues/5 is fixed

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1917>
2024-11-14 20:01:42 +05:30
Taruntej Kanakamalla
1963dad67e threadshare: net: correct the member name in ip_mreq
missed changing to `ifr_interface` after switching to the libc crate

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1917>
2024-11-14 16:43:59 +05:30
Taruntej Kanakamalla
b16379d00b threadshare: udp: add multicast-iface property
similar to the non threadshare counterparts, the ts-udpsink can accept
only one multicast interface and the ts-udpsrc can accept a list of
interfaces to be listening on for the multicast.

Use the getifaddrs crate to get the available network interfaces and filter
the desired interfaces from the available interfaces

Reuse a custom api written for PTP helper to join and leave multicast group
for IPv4 based addresses. Continue to use the UdpSocket crate's _multicast_v6
to join/leave an IPv6 multicast group

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1420>
2024-11-14 00:02:04 +00:00
Jochen Henneberg
580e06a002 fmp4mux: Let test consume remaining buffers after EOS
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1914>
2024-11-13 13:35:56 +01:00
Jochen Henneberg
b95f39f4bf fmp4mux: Avoid error on caps change with incomplete GOP pushed
New fragments may accept inter-frames if an incomplete GOP has been
pushed after a caps change and upstream did not handle the
force-key-unit event.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1914>
2024-11-13 10:25:58 +01:00
Thibault Saunier
1dcf0943db tracers: buffers-lateness: Add a signal to force writing log file
This way applications can write the queue levels info whenever it wants
and does not need to wait for the application to quite.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1912>
2024-11-12 13:04:43 -03:00
Thibault Saunier
153d4c7ac5 tracers: queue-levels: Add a signal to force writing log file
This way applications can write the queue levels info whenever it wants
and does not need to wait for the application to quite.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1912>
2024-11-12 13:04:43 -03:00
Sebastian Dröge
def8a29cc6 Update CHANGELOG.md for 0.13.3 release
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1905>
2024-11-12 11:51:30 +02:00
Sebastian Dröge
a56d82340d Update CHANGELOG.md for 0.13.2
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1826>
2024-11-12 11:51:30 +02:00
Jerome Colle
f88c88ddb3 webrtcsink: set rtpgccbwe min bitrate
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1896>
2024-11-07 18:00:12 +00:00
Jochen Henneberg
26a6c3b7b9 fmp4mux: Fixed caps change handling for multiple streams
* Moved FKU code into separate function.
* Send FKU for each stream where the caps change happened.
* Send FKU for each stream where an incomplete GOP has been pushed on
  caps change.
* Push incomplete GOP from stream if the early fragment end would not
  contain that stream otherwise.
* If an incomplete GOP has been pushed on the previous fragment accept
  inter-frames on the next fragment and do not drop them.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1895>
2024-11-07 14:35:09 +00:00
Sebastian Dröge
e7813ca3fc deny: Update
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1911>
2024-11-06 11:05:44 +02:00
Sebastian Dröge
f73ade7ea4 Update Cargo.lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1911>
2024-11-06 11:03:35 +02:00
Sebastian Dröge
ef39046e18 Update to thiserror 2
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1911>
2024-11-06 11:02:41 +02:00
Mathieu Duponchelle
635a83a8d7 transcriberbin: notify passthrough at the appropriate time
We want to enable passthrough internally, and only notify that
internally it has been enabled once the transcriber has been unlinked.

This way applications connected to the notify handler can synchronously
update the properties and attempt to disable passthrough again.

Doing so properly requires a refactoring of the transition to the
passthrough state, with the currently set passthrough mode maintained
separately from the target passthrough state.

This commit also finishes the work left incomplete in
17d7997137 by moving the passthrough
property to the sink pad class, making each transcriber passthrough
state independent from the others.

Also adds an example to demonstrate the behavior

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1856>
2024-11-05 12:23:54 +00:00
Mathieu Duponchelle
5f8e8b4873 aws: add wrapper for the polly text to speech API
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1899>
2024-11-05 08:46:48 +00:00
Guillaume Desmottes
ce7d314349 spotify: make common module public
Karapulse implements its own bin wrapping spotifyaudiosrc,
spotifylyricssrc and videotestsrc for rendering Spotify songs.

This element has lived in my own gst-plugins-rs branch for ages but now
that spotifylyricssrc has been usptreamed I'd like to move it to the
Karapulse source tree.
But to be able to do so it needs to be able to use the common module
from the spotify plugin.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1907>
2024-11-02 16:14:08 +01:00
Sebastian Dröge
76282cd385 gtk4: Add missing interfaces to the widget
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1904>
2024-11-02 13:00:28 +02:00
Sebastian Dröge
f4b93dc0fb Update Cargo.lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1904>
2024-11-02 12:28:46 +02:00
Guillaume Desmottes
c7c71a830c spotify: bump librespot dep to 0.6
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1902>
2024-11-01 15:12:46 +01:00
Thibault Saunier
93ade2526d tracer: snapshot: Add some documentation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1889>
2024-11-01 07:09:58 +00:00
Thibault Saunier
f752516e31 tracer: snapshot: Add an explicit \xdg-cache\ parameter
Instead of that magically xdg-cache string

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1889>
2024-11-01 07:09:58 +00:00
Thibault Saunier
344326434c tracers: snapshot: Add an option to use folders for each snapshot
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1889>
2024-11-01 07:09:58 +00:00