Commit graph

3847 commits

Author SHA1 Message Date
Mathieu Duponchelle
5d83d27798 speechmatics: fix state cycling
The static source pad is added to the dynamic srcpads collection for
convenience, so when the state transitions back to NULL and state is
reset to its default, we need to make sure to re-add the static source
pad to the collection.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2072>
2025-02-26 17:00:13 +01:00
Mathieu Duponchelle
6b9e3fd772 awstranscriber2: fix initial position
Wait until we have received a first buffer before pushing gaps on
timeout, as we don't have a valid start time before that.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2072>
2025-02-26 17:00:13 +01:00
Mathieu Duponchelle
d0db66d61e transcriberbin: implement dynamic language update
Previously, transcriberbin only supported updating translation languages
while playing by resetting the state of the transcriber to NULL
beforehand, as for instance the speechmatics transcriber needs to
reestablish a connection to request new languages.

Now that translationbin exists, we can request new languages without
restarting the transcriber (this commit also implements support for this
in translationbin).

There is some code duplication as the old method still needs to be
supported, and not all code was trivially factorizable, but after some
refactoring most of the code for updating languages is shared
nevertheless.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2072>
2025-02-26 17:00:13 +01:00
Brad Hards
2130c3bfbe mux/mp4: add image sequence mode
Image sequence is defined in ISO/IEC 23008-12 (HEIF), as a variant of
video. The key difference is that image sequence timing is advisory.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2101>
2025-02-26 13:56:09 +00:00
Sanchayan Maity
130e13a33e hlsmultivariantsink: Disable tests
Some of the test randomly fail in CI, disable the tests
till we can pin down the cause of CI failures.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2112>
2025-02-26 13:26:08 +05:30
Thibault Saunier
e6f4b69aa2 cargo_wrapper: Force log file to be written in utf-8
We can hit https://gitlab.freedesktop.org/HuQian/gstreamer/-/jobs/71717584
otherwise, weirdly it never happened here.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2111>
2025-02-25 07:39:46 +00:00
Thibault Saunier
50472dc22c pipeline-snapshot: Use user_cache_dir from the GLib
The 'dirs' crate doesn't behave the same leading to incompatibility

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1956>
2025-02-24 16:27:25 -03:00
Thibault Saunier
2a11f0b577 tracers: pipeline-snapshot: Add websocket support for dots-viewer
Allows connecting to a dots-viewer server instance to trigger pipeline
snapshots remotely through the web interface.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1956>
2025-02-24 16:27:25 -03:00
Matthew Waters
ccf8adb6ae closedcaption: only increase dtvcc packet sequence if we have services
Otherwise, we can produce DTVCC packets that skip sequence numbers.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2103>
2025-02-24 05:35:38 +00:00
Matthew Waters
3feb4fcf51 tttocea708: don't reset the service writer for every incoming caption
This will break when using pop-on captions

It's also not needed every single time and can be relegated to only when
changing services.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2103>
2025-02-24 05:35:38 +00:00
Sebastian Dröge
3d384bff62 mpegtslivesrc: Ignore NIT programs from the PAT
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2102>
2025-02-22 10:35:12 +00:00
Arun Raghavan
a34efda201 net/webrtc: Handle concurrent POSTs to whipserversrc
Fixes: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/657
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2096>
2025-02-21 16:46:08 +00:00
Thibault Saunier
bd6be75107 tracer: Add memory tracer
Requires updating gstreamer-rs

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2092>
2025-02-21 15:40:59 +00:00
Sebastian Dröge
93ee2ee70d Fix various new Rust 1.85 clippy warnings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2104>
2025-02-21 11:16:57 +02:00
Sebastian Dröge
4fdcba449e mpegtslivesrc: Take adaptation field discontinuity flag into account
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/653

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2084>
2025-02-20 10:46:30 +00:00
Sebastian Dröge
f77962937d mpegtslivesrc: Consider the initial calibration of the clock too
Previously we assumed that the calibration is always at the origin but
this is not necessarily true.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2084>
2025-02-20 10:46:30 +00:00
Sanchayan Maity
d2aceab54b hlsmultivariantsink: Serialise tests and increase channel timeout
Serialise the tests and increase the recv_timeout as it may
not be enough on the CI to do H264/H265 encoding for 1080p
streams which are we using for testing.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2083>
2025-02-20 10:28:35 +05:30
eipachte
6165b3fe08 hlssink3: Write playlists atomically
We want to try to ensure that playlist files are written completely in a
single shot, to avoid the possibility of serving up a patially written
playlist.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2093>
2025-02-19 14:07:23 +00:00
Mark-André Schadow
ead9014e78 onvifmetadatacombiner: Metadata should not have a pts/dts
Incoming onvif-data should be stripped of pts/dts, as they are not updated when attached to a frame. Pts/Dta are readded by the associated extractor element

Linked to https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/655

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2086>
2025-02-19 12:47:52 +00:00
Mark-André Schadow
514cf57c56 onvifmetadataextractor: fix missing pts/dts in metadata buffer
Segments coming from the onvifmetadataextractor-plugin's meta_src do not inherit pts/dts from the input.
This leads to strange bugs when trying to send the metadata using rtp.
Fix this by appending the pts/dts of the incoming buffers to the outgoing metadata buffers

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2086>
2025-02-19 12:47:52 +00:00
Tim-Philipp Müller
c0b801ce46 webrtcsink: chain up in signaller ::constructed funcs
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2080>
2025-02-19 08:12:54 +00:00
Tim-Philipp Müller
c6ce0bca57 spotifylyricsrc: chain up in ::constructed
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2080>
2025-02-19 08:12:54 +00:00
Sebastian Dröge
3c0da2518f rtp: Add thread_rng feature to rand dependency
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2090>
2025-02-19 00:34:52 +00:00
Sebastian Dröge
acfee44f58 Update to async-tungstenite 0.29
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2088>
2025-02-18 23:57:35 +00:00
Sebastian Dröge
9b0aa9c710 ci: Remove cmake before running the meson build
The meson cmake dependency resolver is broken.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2091>
2025-02-18 14:38:24 +02:00
Matthew Waters
0a35219c90 closedcaption: add CDP service information inject element
Overwrites the service information descriptor with the value specified in the
services property.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2043>
2025-02-17 10:25:01 +00:00
Matthew Waters
5ada3da580 tests/rtpbin2: improve performance of receive_list_benchmark
Instead of receiving each output buffer through GstHarness individually,
process the received buffer lists directly by prociding our own pad and
chain/chain_list handlers.  Reduces test time locally from 30+s to <2s.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2081>
2025-02-17 09:21:15 +00:00
Sebastian Dröge
bb5e0c9917 closedcaption: Update to winnow 0.7
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2082>
2025-02-17 09:26:35 +02:00
Sebastian Dröge
9d6272b8e0 Update to rand 0.9
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2082>
2025-02-17 09:26:35 +02:00
Sebastian Dröge
c1d6431113 deny: Update
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2082>
2025-02-16 19:33:37 +02:00
Sebastian Dröge
902779ca4e Update Cargo.lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2082>
2025-02-16 19:25:46 +02:00
Brad Hards
12b0c814d7 mux/mp4: add round trip testing infrastructure
This makes use of the recently added qtdemux changes to verify
that muxing works. At this stage its only used for unpadded RGB,
RGBA, BGRA, BGR and GRAY8 since that is all qtdemux supports
at this time. However the approach is general.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2066>
2025-02-15 12:19:11 +11:00
Sebastian Dröge
812d4fdc9d webrtcsink: Close data channel and disconnect signal handler when dropping them
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2078>
2025-02-14 15:30:31 +00:00
Sebastian Dröge
63b6fe5edc webrtcsink: Store navigation events / control request handlers per session
Otherwise only the one from the last established session will be stored
and e.g. metas are only sent to that one session.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2078>
2025-02-14 15:30:31 +00:00
François Laignel
50b0ad95e4 webrtc: precise-sync-recv: add media details log
This commit adds the ability to log details about the media being received by
the webrtc-precise-recv example. Among others, the log shows whether RFC7273 is
active. This uses the 'rfc7273-active' property from rtpjitterbuffer which was
introduced in GStreamer1.26.

See also: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7829

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1908>
2025-02-14 12:40:06 +00:00
Albert Sjolund
cdd2b87953 streamproducer: don't 'leak' hashmap objects
Release is called at the end and replaced with a pending object.
However, this object does not get released from the map and lives on.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2058>
2025-02-14 08:43:45 +00:00
Sebastian Dröge
5256f1e00c cea608tocea708: Fix SMPTE 334-1a field flag usage
If the flag is set then this is field 0, otherwise it is field 1. The
code had this inverted. See also cece286fe8.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2074>
2025-02-14 00:00:36 +00:00
Thibault Saunier
03b7e8ccdd meson: Add options to enable webrtc-livekit/aws
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1806>
2025-02-13 17:22:14 +00:00
Mathieu Duponchelle
2ac9e584d8 webrtc: disable "heavy" dependencies by default (aws, livekit)
This cuts down rebuild times by a third

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1806>
2025-02-13 17:22:14 +00:00
Mathieu Duponchelle
de5033c3e1 transcriberbin: fix panic on successive passthrough en/dis-abling
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2071>
2025-02-12 15:38:21 +01:00
Guillaume Desmottes
af818912c0 uriplaylistbin: tests: fix eos races
Wait for each stream to EOS rather than rely on the EOS message.
Prevent races as our test files are really short, see https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4204

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2063>
2025-02-12 09:21:02 +01:00
Mathieu Duponchelle
efe3a55521 cea608overlay: clear output on field switch
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2069>
2025-02-11 21:39:18 +00:00
Mathieu Duponchelle
cece286fe8 ceax08overlay: fix field lookup for s334-1a
As stated in the spec:

> Bit b7 of the LINE value is the field number (0 for field 2;
> 1 for field 1). Bits b6 and b5 are 0. Bits b4-b0 form a 5-bit unsigned
> integer which represents the offset [..]

Here, b7 is the most significant bit, this is what both cccombiner
and ccconverter agree on.

The overlay elements previously looked at the least significant bit,
which led to garbled text when both fields were actually present
in the CC meta.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2069>
2025-02-11 21:39:18 +00:00
Mathieu Duponchelle
f08b99dcd3 aws/transcriber*: log all debug details from AWS errors
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2055>
2025-02-10 11:16:44 +00:00
Mathieu Duponchelle
71121a2380 aws: reimplement two separate wrappers for translate and transcribe
The original awstranscribe element has grown too complex when
integrating translations for reasons that in retrospect were wrong:

As awstranscribe outputs words one by one, I decided we wanted to
perform translations there with larger sentences if available, but an
alternative design where a separate translation element is composed
downstream is also possible, as long as that element accumulates words
and enough latency is set on the transcriber.

An important difference is that the new elements do not expose unsynced
pads, this use case is instead now served by simple messages on the bus.

The elements should otherwise be at feature parity with the original
element.

A higher-level bin is also provided for convenience (and usage within
transcriberbin): translationbin.

A transcriber element can be provided to this bin, which exposes an
always audio sink pad, and an always text sink pad (for the
transcripts).

Additional source pads can be requested for translations, for now the
bin always uses `awstranslate` as the translator, but this can be made
configurable.

This element is usable as a transcriber in `transcriberbin`.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2055>
2025-02-10 11:16:44 +00:00
Mathieu Duponchelle
7d26990d4a tttocea608: insert carriage returns on speaker changes
This improves readability with speaker-detection capable elements
upstream.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2055>
2025-02-10 11:16:44 +00:00
Mathieu Duponchelle
2d0effd781 speechmaticstranscriber: add properties for speaker detection
diarization=speaker can be set to enable speaker detection, and
max-speakers can be set to control the maximum number of detected
speakers.

An event is then forwarded downstream upon speaker changes.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2055>
2025-02-10 11:16:44 +00:00
Mathieu Duponchelle
9da6dff1a9 speechmaticstranscriber: post messages with raw results
This deprecates the buffers pushed on the unsynced pads, which should
be removed prior to release.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2055>
2025-02-10 11:16:44 +00:00
Mathieu Duponchelle
484275b350 speechmaticstranscriber: output items as early as possible
There is no reason to delay the output of items until the deadline.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2055>
2025-02-10 11:16:44 +00:00
Mathieu Duponchelle
0ed3f833ac speechmaticstranscriber: add new max-delay property
This allows controlling the requested delay independently from the
latency of the element.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2055>
2025-02-10 11:16:44 +00:00