Commit graph

3928 commits

Author SHA1 Message Date
Jordan Petridis
15ef826bcf ci: Force git-fetch-with-cli on windows as well
We already do this on linux, do this on windows as well

We need this as git has better handling of redirects, and
we are running into issues after gitlab.freedesktop.org
switched to using a cdn proxy.

Similar to the original issue [1]

[1]: https://gitlab.freedesktop.org/gstreamer/gst-ci/-/issues/71

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2194>
2025-04-09 10:14:11 +03:00
Sebastian Dröge
916e946bf1 fmp4mux: Add manual-split mode that is triggered by serialized downstream events
The chunk / fragment duration properties are only used for configuring
the latency in this mode, and split-at-running-time splits have no
effect. Similarly, no force-keyunit events are sent in this mode.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2182>
2025-04-08 17:30:08 +03:00
Sebastian Dröge
1d9d6e2719 fmp4mux: Simplify code that selects force-keyunit time
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2182>
2025-04-08 17:29:56 +03: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
Nirbheek Chauhan
66b3857bc4 ci: Fix cerbero trigger rules for file changes
"if changes... never" will NOT create the pipeline if *any* of the
changes are in these files, which is not what we want. Flip the logic,
so that the pipeline is created when any Rust file is changed, or
Cargo.toml/Cargo.lock is changed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2121>
2025-04-08 11:19:13 +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
Sebastian Dröge
c62139c64a fmp4mux: Write a v0 tfdt box if the decode time is small enough
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2184>
2025-04-07 17:36:45 +03:00
Sebastian Dröge
8ba5496563 fmp4mux: Get rid of local copy of GroupBy slice iterator
This was stabilized as ChunkBy in Rust 1.77

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2184>
2025-04-07 17:32:33 +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
c901cdfb42 fmp4mux: Fix some comments / debug output
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2178>
2025-04-06 14:03:03 +00:00
Sebastian Dröge
8bed1e156e fmp4mux: Improve split-at-running-time handling
Recalculate the fragment end PTS more regularly to allow adding a new
split request for the currently active fragment.

Also directly discard split requests that are before the current
fragment start PTS.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2178>
2025-04-06 14:03:03 +00:00
Sebastian Dröge
a49a9243ea fmp4mux: Fix latency configuration for properties set during construction
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2179>
2025-04-06 11:55:52 +00:00
Sebastian Dröge
a598fb2e28 fmp4mux: Add send-force-keyunit property
Setting this to false will cause fmp4mux to stop sending force-keyunit
events for the fragment boundaries.

By default this is enabled and keeps the existing behaviour.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2177>
2025-04-06 10:31:35 +00:00
Sebastian Dröge
891feca253 threadshare: Update to rustix 1.0
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2176>
2025-04-06 12:45:24 +03:00
Sebastian Dröge
a139412126 deny: Update
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2176>
2025-04-06 12:43:23 +03:00
Sebastian Dröge
a3e6baad3c Update Cargo.lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2176>
2025-04-06 12:38:24 +03:00
Sebastian Dröge
3a47abd0fa fmp4mux: Use correct timescales for edit lists
The duration is using the movie timescale while the media time is using
the media / track timescale.

Previously both were using the track timescale.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2167>
2025-04-05 16:43:37 +00:00
Sebastian Dröge
8a70f1617a mp4mux: Use correct timescales for edit lists
The duration is using the movie timescale while the media time is using
the media / track timescale.

Previously both were using the track timescale.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2167>
2025-04-05 16:43:37 +00: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
d1aec1e0d2 Fix various new clippy 1.86 warnings
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2174>
2025-04-05 11:18: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
Mathieu Duponchelle
8972402b90 mpegtslivesrc: increase threshold for PCR <-> PTS DISCONT
Real-life streams can readily be found with > 1.5 second offsets,
increase to next reasonable random number.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2171>
2025-04-03 13:13:49 +02:00
Sebastian Dröge
380918a17c mp4mux: Don't write composition time offsets if they're all zero
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2168>
2025-04-01 19:47:30 +03:00
Mathieu Duponchelle
0e6413b827 aws/polly: add GstScaletempoTargetDurationMeta to output buffers
When a scaletempo element is placed downstream of the element, it will
be able to rescale the generated audio to the target duration of the
original input text, thus preserving synchronization.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2012>
2025-03-27 18:57:13 +00:00
Sebastian Dröge
3a4d01d1fb ci: Configure nextest timeout in the right place
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2159>
2025-03-27 17:02:06 +00:00
Mathieu Duponchelle
10ed6582a9 net/aws: consolidate apostrophes with next word in span_tokenize_items
As the text to translate in span-based mode looks like:

<span>the</span> <span>year</span>

We may receive back from the service when translating to French:

<span>l'</span> <span>année</span>

Which in turn means we'll push out two items. It makes more sense to
push those as a single item, as this will prevent downstream elements
from inserting a space.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2126>
2025-03-27 15:41:14 +01:00
Mathieu Duponchelle
644c10f62c net/aws: don't insert space when joining leftover punctuation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2126>
2025-03-27 15:41:14 +01:00
Mathieu Duponchelle
5fc0523c90 net/aws: trim spaces in span_tokenize_items
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2126>
2025-03-27 15:41:14 +01:00
L. E. Segovia
fb4f498a02 webrtc: Port to reqwest 0.12
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2148>
2025-03-27 07:13:57 +00:00
eipachte
a82a4f6d0f hlssink3: Support NTP Timestamp in GstBuffer
We want to enable retrieving the segment start timestamp from the GST
buffer instead of calculating it.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2017>
2025-03-26 22:32:05 +00:00
François Laignel
eb5c8276c0 tracers: reduce legend entry font size
The legend entries in the matplotlib tracer graphs are a bit too big, which
tends to clutter the resulting graph when there are many pads.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2149>
2025-03-26 21:35:43 +00:00
François Laignel
76a48baa32 tracers: buffer-lateness: don't panic on add overflow
Better not producing logs than panicking.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2149>
2025-03-26 21:35:43 +00:00
Robert Mader
333e88012e meson: Require gst 1.18 features for dav1d
Matching what the cargo file requires.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2135>
2025-03-26 20:14:26 +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
Brad Hards
a34475fb60 mux: use smaller number of samples for testing
This improves the test time from ~30 seconds to ~5 seconds, mainly
because of the AV1 encoding. However reduction in the uncompressed
tests is also worth while because there are a lot of them, and
will likely be more as the number of formats supported on both
encode side and in qtdemux for round-trip.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2130>
2025-03-26 16:39:51 +00:00
Guillaume Desmottes
a81dcbffd5 uriplaylistbin: skip cache test when offline
The test requires Internet to retrieve the media from fdo.

Fix #676

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2140>
2025-03-26 12:31:48 +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
fc0c9cbd36 ci: Decrease test timeouts
Consider tests slow if they take more than 20s and terminate them
after 80s, and if they're not responsive kill them 5s later.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2147>
2025-03-26 07:24:44 +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
Piotr Brzeziński
75212c7b61 webrtcsink: Fix compatibility with audio level header extension
Browsers send back SDP with vad=on (default) stripped, so our caps end up incompatible.
Let's re-add the explicit vad=on variant for compatibility.

Tested with Chrome, Safari and Firefox, audiolevel correctly shows up browser-side.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2116>
2025-03-25 19:42:16 +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
47ea36be9d mpegtslivesrc: Drop state mutex before sending buffers/bufferlists downstream
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2128>
2025-03-14 10:14:19 +00:00
Sebastian Dröge
83200db4c2 mpegtslivesrc: Use a separate mutex for the properties
Otherwise applications reading the properties would potentially block
on the streaming thread unnecessarily.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2128>
2025-03-14 10:14:19 +00:00
Piotr Brzeziński
91f3472bad gstwebrtc-api: Update ESLint, use JSDoc @import for types from docs
ESLint no longer supports the old type of config, it was automatically
migrated.

jsdoc/no-undefined-types has been raised to an error since it's been
found to hide other issues that only show up once that warning is
disabled.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2049>
2025-03-14 07:42:40 +00:00