Commit graph

3682 commits

Author SHA1 Message Date
Sebastian Dröge
6ee745edee Update for GLib signal accumulator API changes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1954>
2024-11-30 15:10:06 +02:00
Sebastian Dröge
204c4101f2 deny: Remove obsolete entries
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1954>
2024-11-30 15:01:01 +02:00
Sebastian Dröge
f3c4a106a6 Update dependencies
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1954>
2024-11-30 15:00:30 +02:00
Sebastian Dröge
6aeb3f2af2 Fix / silence various new Rust 1.83 clippy warnings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1954>
2024-11-30 14:57:24 +02:00
Sebastian Dröge
9e59efd9d6 ci: Don't consider no runnable tests an error
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1954>
2024-11-30 14:52:19 +02:00
Edward Hervey
0d4f512e8d gitlab-ci: Don't use massive image for cerbero trigger
Just use a lightweight alpine:latest image

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1950>
2024-11-30 09:28:50 +00:00
Mathieu Duponchelle
9c844acba5 aws/transcriber: fix unsynced_translate_src_%u presence
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1930>
2024-11-29 22:09:37 +00:00
Mathieu Duponchelle
01b3e2a8f2 transcriberbin: take synthesis latency into account
and factor out a method to calculate the element's internal latency, to
be shared with the code for calculating the size of the passthrough
queues.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1930>
2024-11-29 22:09:37 +00:00
Mathieu Duponchelle
a71fd35ebf transcriberbin: set latencies on transcribers as soon as possible
Otherwise if we wait for setup_transcription(), the transcribers might
already have reached the playing state.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1930>
2024-11-29 22:09:37 +00:00
Mathieu Duponchelle
ee6ab26d2a textwrap: fix text accumulating for longer than accumulate-time
By draining before *and* after the word wrapping loop.

We don't do that during the loop in order not to break up sentences
unnecessarily.

Also adds tests

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1930>
2024-11-29 22:09:37 +00:00
Mathieu Duponchelle
f16f8f69d5 aws/transcriber: don't adjust late item duration
It makes for a better user experience to simply adjust the pts of a late
item, but to preserve its duration: for instance a speech synthesis
element might use the duration as a hint for speeding up the audio.

Future late items may also be similarly offset anyway.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1930>
2024-11-29 22:09:37 +00:00
Mathieu Duponchelle
9972c83c60 aws/transcriber: put posting of warning messages behind property
Repeated warning messages are fairly noisy with gst-launch, better make
this behavior opt-in.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1930>
2024-11-29 22:09:37 +00:00
Mathieu Duponchelle
4d45ae0e44 aws/polly: expose ssml-set-max-duration property
With standard voices, AWS polly supports passing a max-duration
attribute.

When the element gets raw text passed in, it can wrap it as SSML and set
the max duration attribute, this to make sure synthesized speech
doesn't overlap.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1930>
2024-11-29 22:09:37 +00:00
Mathieu Duponchelle
4406851ae7 transcriberbin: add support for speech synthesis
This commit adds a new "synthesis-languages" property. Users can set it
to define a map of languages (typically translations) that should then
be routed through a "synthesis" bin, with its description specifiable
as the value of the map.

The output of this bin is then exposed as a new pad on the top-level
bin.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1930>
2024-11-29 22:09:37 +00:00
Mathieu Duponchelle
c57b74e269 awstranscriber: release matching unsynced pad along request pads
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1930>
2024-11-29 22:09:37 +00:00
Mathieu Duponchelle
4720b575b6 webrtscink: fix deadlock when answering
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/637
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1955>
2024-11-29 18:52:41 +01:00
Ruben Gonzalez
f646504fce webrtcsink: add openh264enc support
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1948>
2024-11-29 13:44:11 +00:00
Guillaume Desmottes
95fc407de3 togglerecord: move the next pad id to its own variable
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1935>
2024-11-29 11:56:37 +00:00
Guillaume Desmottes
3f5396af58 togglerecord: stop copying settings
It's racy as the settings values can be changed between the copy and
reading them.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1935>
2024-11-29 11:56:37 +00:00
Guillaume Desmottes
5f007ed7ee togglerecord: define total order on mutexes
I'm tracking a bug which may or may not be related to a deadlock in
togglerecord.

I audited the code and figured we could define a total order on the
mutexes with just a few changes.
I don't know yet if that will help with my bug but it can't hurt to have
a order properly documented with so many mutexes involved.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1935>
2024-11-29 11:56:37 +00:00
Guillaume Desmottes
20fb4f82d8 togglerecord: move pads and other_streams to State
Allow us to remove two mutexes, making dead locks easier to debug.

Also now use the State lock with `main_stream_cond` as we want to use
the higher order mutex in order to prevent dead locks.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1935>
2024-11-29 11:56:37 +00:00
Guillaume Desmottes
fb54cfa425 togglerecord: implement Debug on Stream and StreamState
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1935>
2024-11-29 11:56:37 +00:00
Guillaume Desmottes
7a336cf8ad togglerecord: document mutexes hold when calling ToggleRecord methods
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1935>
2024-11-29 11:56:37 +00:00
L. E. Segovia
6e0d6c1a5a version-helper: Add script for setting the release date in Cargo.toml
See #599

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1939>
2024-11-29 10:42:06 +00:00
Edward Hervey
8bb0a7eecc tttocea708: Fix off-by-one issue
last_frame_no is used to eventually calculate the outgoing pts. We want to
increment it *after* having created the content

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1947>
2024-11-29 09:48:17 +00:00
Sebastian Dröge
f4d2bd1a5d webrtcsink: Set caps-change-mode=delayed on encoder capsfilter
Otherwise when changing the target caps (e.g. for reducing quality)
there is a race condition between buffers between the converter elements
and renegotiation.

For example, videoconvertscale might've output a 1920x1080 buffer, then
the capsfilter is configured to 1280x720, the buffer arrives in
videorate, videorate notices that renegotiation is pending, tries to
renegotiate and ends up with EMPTY caps because it can only change the
framerate but not the resolution.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1949>
2024-11-28 21:14:43 +00:00
Sanchayan Maity
c3de9e5927 net/quinn: Add examples for QUIC multiplexing & RoQ
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1937>
2024-11-28 17:52:18 +00:00
Edward Hervey
059bb2435e meson: Fix document of dependencies.py argument
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1941>
2024-11-27 15:50:54 +01:00
Edward Hervey
6b58c2173c meson: Detect unrelease gstreamer version number
If the minor version is odd, it means we are depending on gstreamer main and
should therefore enable the features of the (upcoming) even minor version

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1941>
2024-11-27 15:49:55 +01:00
Xavier Claessens
e5f3ab4053 webrtcsink: Ignore more fields in caps change
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1838>
2024-11-26 15:49:21 -05:00
Diego Nieto
362216f40b net/webrtc: add whipclient example
Add a simple example producing both audio and video to make it
work with the whipserver example

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1938>
2024-11-25 20:29:43 +01:00
Diego Nieto
0135aea9e4 net/webrtc: whipserver example
extend the example to support both audio and video conversions

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1938>
2024-11-25 20:29:43 +01:00
Sebastian Dröge
347bee16d4 Update for GLib signal API changes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1936>
2024-11-22 15:52:41 +02:00
Sebastian Dröge
dc056213c6 deny: Update
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1936>
2024-11-22 15:44:36 +02:00
Sebastian Dröge
3b7e55e717 Update Cargo.lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1936>
2024-11-22 15:43:13 +02:00
François Laignel
a8146f333f all: use builder conditional setters where applicable
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1926>
2024-11-21 12:57:16 +00:00
François Laignel
4262a8aafe all: update due to new has_property signature
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1926>
2024-11-21 12:57:16 +00:00
François Laignel
df0e9d311d Update Cargo.lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1926>
2024-11-21 12:57:16 +00:00
Sebastian Dröge
160f08889f mpegtslivesrc: Fix mismatch between internal / external time usage
Previously the internal time was stored as base offset for calculating
the external time from the PCR, which resulted in disconts being
detected wrongly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1933>
2024-11-21 11:40:24 +00:00
Sebastian Dröge
d32d499856 mpegtslivesrc: Rename variables to make it clear which time domain they refer to
We have the internal time domain (monotonic clock) and the external time
domain (scaled monotonic clock in the rate of the PCR).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1933>
2024-11-21 11:40:24 +00:00
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