Commit graph

628 commits

Author SHA1 Message Date
Mathieu Duponchelle
d99e8a7e7f awstranslate: output buffer lists
This means we can still output sentences as a single unit, even when
using span-based mode.

Update `awspolly` to concatenate buffer lists together before sending
them out for synthesis, and remove the now-useless textwrap element from
transcriberbin's synthesis channels.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2235>
2025-05-06 13:35:32 +02:00
Sebastian Dröge
a9a3a7a435 dav1ddec: Implement hack to finish output buffer with a reference count of 1
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2190>
2025-05-03 15:36:53 +00:00
Sebastian Dröge
2166befce7 dav1ddec: Set output frame duration via the codec frame
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2190>
2025-05-03 15:36:53 +00:00
Sebastian Dröge
9012099e62 dav1ddec: Directly decode into downstream allocated buffers if possible
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/670

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2190>
2025-05-03 15:36:53 +00:00
Sebastian Dröge
0afd415bcb dav1ddec: Simplify LATENCY query handling
And don't keep state locked while querying upstream.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2190>
2025-05-03 15:36:53 +00:00
Sebastian Dröge
6ee63a465d dav1ddec: Allocate output buffers from an internal buffer pool
In the best case we can directly output them without copying now.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2190>
2025-05-03 15:36:52 +00:00
Sebastian Dröge
ebaf8ce8a5 dav1ddec: Move more video format mapping logic into functions
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2190>
2025-05-03 15:36:52 +00:00
Sebastian Dröge
6ae34b751a dav1ddec: Keep state unlocked while calling into the decoder
This is a preparation for handling allocations ourselves from the
element as that would call back from the decoder into the element.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2190>
2025-05-03 15:36:52 +00:00
Sebastian Dröge
52037c8aca dav1ddec: Store the output state instead of just the video info in the decoder state
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2190>
2025-05-03 15:36:52 +00:00
Sebastian Dröge
0afe3e1846 Update everything else to bitstream-io 4.0
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2219>
2025-04-30 13:01:22 +00:00
Sebastian Dröge
5eee9e9eee skia: Update to 0.84
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2220>
2025-04-29 08:25:39 +03:00
Thibault Saunier
5a4e536d6a skia: Implement a video compositor using skia
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1847>
2025-04-28 21:26:02 +03:00
Doug Nazar
52cf612ead gtk4: Avoid deprecated function with newer gtk
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2166>
2025-04-22 18:17:22 +00:00
Sebastian Dröge
1ea767ac2a Update to bitstream-io 3
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2211>
2025-04-22 07:21:56 +00:00
Sebastian Dröge
594fbfd649 Fix various new clippy warnings because of the MSRV bump
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2203>
2025-04-14 13:35:43 +03:00
Sebastian Dröge
b4540e465b gtk4: Allow any windows-sys version >= 0.52 and <= 0.59
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2201>
2025-04-11 18:03:23 +03:00
Matthew Waters
4e64b63bfe tttocea708: fix origin-row handling for roll-up in CEA-708
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2191>
2025-04-10 04:21:07 +00:00
Mathieu Duponchelle
23afeb3258 transcriberbin: make auto passthrough work when transcriber is a bin
For instance, when using translation bin the source of an error message
might be the transcriber it contains, we should still go to passthrough
in that case.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2165>
2025-04-09 18:42:38 +00:00
Sebastian Dröge
20f25ba775 Revert "dav1ddec: Use max-frame-delay value from the decoder instead of calculating it"
This reverts commit 64b6661548.

This needs more work because the decoder often does not know the correct
value in the beginning.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2189>
2025-04-08 12:15:39 +00:00
Sebastian Dröge
64b6661548 dav1ddec: Use max-frame-delay value from the decoder instead of calculating it
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2185>
2025-04-08 09:24:18 +03:00
Matthew Waters
08f9565369 build: update closedcaption deps
cea708-types to 0.4.0
- Includes https://github.com/ystreet/cea708-types/pull/24 which fixes cea708mux
  producing full DTVCCPacket's.
cdp-types to 0.3.0 (updates to cea708-types 0.4.0)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2183>
2025-04-07 15:19:53 +10:00
Matthew Waters
6273e05395 cea708mux: Improve support for overflowing input captions
Input captions on multiple input pads can be bursty and may overflow an
individual output packet if naively put into an output packet leading to a
potential panic of WouldOverflow(1).

Fix by actively tracking the free space of what a generated packet would produce
and delaying output of everything that would overflow.  This is in addition to
the already existing service overflow detection.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2183>
2025-04-07 15:19:53 +10:00
Sebastian Dröge
2e2bbda7ba Update gstreamer-rs / gtk-rs dependencies
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2174>
2025-04-05 18:14:56 +03:00
Sebastian Dröge
b916b7db55 dav1ddec: Allow working with incomplete decoder colorimetry
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2170>
2025-04-04 09:07:10 +00:00
Sebastian Dröge
70ad4410e1 dav1ddec: Support RGB encoded AV1
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4341

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2170>
2025-04-04 09:07:10 +00:00
Sebastian Dröge
24536fef73 colordetect: Change to videofilter base class
And also work in passthrough mode to not require all input buffers to be
writable unnecessarily.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2131>
2025-03-26 19:17:35 +00:00
Sebastian Dröge
d9e3ea3619 dav1ddec: Drain decoder on caps changes if necessary
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2136>
2025-03-26 11:44:18 +00:00
Sebastian Dröge
fc444ba5e7 dav1ddec: Use downstream buffer pool for copying if video meta is not supported
And if strides are not matching either, which they usually don't for
dav1d because of its 128 pixel alignment requirements.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2134>
2025-03-26 00:38:44 +00:00
Sebastian Dröge
230e612b8e vvdec: Don't copy decoded frames if strides/offsets are matching
Even if videometa is not supported downstream we can avoid copying if
the strides/offsets are matching the default ones, which often enough
they do.

This avoids copying when e.g. using fakesink after the decoder most of
the time.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2134>
2025-03-26 00:38:44 +00:00
Sebastian Dröge
da836c01c9 dav1ddec: Only update unknown parts of the upstream colorimetry and not all of it
And also don't replace the whole upstream video-info but modify it.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2132>
2025-03-25 23:03:30 +00:00
Sebastian Dröge
24144739c4 Update gtk-rs / gstreamer-rs dependencies and update for API changes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2141>
2025-03-25 18:49:47 +00:00
tomaszmi
ddecf2812d cdg: typefind: Division by zero fix - fixed formatting
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2137>
2025-03-24 16:44:44 +01:00
tomaszmi
5edcad3734 cdg: typefind: Division by zero fix
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2137>
2025-03-24 16:29:11 +01:00
Sebastian Dröge
5c912446a9 gtk4: Consider surface scale factor when proposing window dimensions
Fixes https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/646

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2125>
2025-03-10 14:07:28 +02:00
Mathieu Duponchelle
780c724902 translationbin: expose read-only translator property on source pads
This lets users easily change the tokenization method on the translator
object for instance.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2124>
2025-03-10 10:02:58 +02:00
Mathieu Duponchelle
ebcb8f220b transcriberbin: fix cea608mux start time selection
cea608mux is set to force-live=true, which means it will not wait for a
first buffer to select a start time.

There was however a problem when manually syncing the state of its
containing bin as we do: when doing so while the state of the containing
bin is still transitioning to Playing, the element first gets a 0 base
time distributed, before its containing bin finally gets the correct
base time and redistributes it.

In this interval cea608mux could pick a start time, then end up waiting
for ever to timeout.

This commit works around the issue by simply unlocking the state of the
inner bins but not syncing it when in Paused, as the subsequent state
change to Playing, if it happens, will trigger the state change of the
elements anyway.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2115>
2025-03-07 16:24:21 +00:00
Mathieu Duponchelle
e31e5b2c6f transcriberbin: fix caption-source selection ..
with recent enough cccombiner.

Originally, dropping transcriptions was enough to support
caption-source=inband, as cccombiner did not implement output
scheduling.

However now that it does, even if no captions arrive on the caption pad
the combiner will still output padding.

Recent-enough combiners however expose an `input-meta-processing`
property which lets us achieve the desired behavior, we thus make use of
it when available.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2115>
2025-03-07 16:24:21 +00:00
Carlos Bentzen
6ba49c4dce vvdec: add VVdeC VVC/H.266 decoder element
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1279>
2025-03-05 20:51:44 +01:00
Sebastian Dröge
873ea52138 closedcaption: Update to itertools 0.14
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2117>
2025-03-04 09:58:39 +02:00
Sebastian Dröge
ceda820236 gtk4: Update to windows-sys 0.59
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2117>
2025-03-04 09:58:39 +02:00
Sebastian Dröge
21947c28a6 videofx: Update image-hasher to 3
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2117>
2025-03-03 16:42:09 +02:00
Sebastian Dröge
e0fdbfa2c1 webp: Don't require default features of libwebp-sys2
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2117>
2025-03-03 13:49:10 +02: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
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
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
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
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
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