Commit graph

4021 commits

Author SHA1 Message Date
Robert Mader
6450381017 video/gtk4: Initial colorimetry support
Similar to GtkGstSink.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2022>
2025-05-20 15:35:00 +02:00
Robert Mader
85455c937f Cargo.lock: Update GTK4
In order to pull in an API fix before we start using said API.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2022>
2025-05-20 13:46:24 +02:00
Robert Mader
7db44376db gtk4: Update and adapt to texture builder API changes
See https://github.com/gtk-rs/gtk4-rs/pull/2046

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2247>
2025-05-20 11:18:11 +00:00
Alicia Boya García
c29841dc1e cea608tott: make test less shocking by having more cues as context
The contents of the current test for cea608tott can be a bit shocking
without context about the source.

This patch adds more cues to the test so that a reader just trying to
understand the elements has more context that this is a news program.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2249>
2025-05-18 13:07:36 +02:00
Sebastian Dröge
236608f48e webrtc: Stop using deprecated API and require GStreamer 1.22 or newer
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2243>
2025-05-14 08:40:39 +03:00
Sebastian Dröge
d8d988427f Update plugins docs cache
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2243>
2025-05-13 20:14:33 +03:00
Sebastian Dröge
8366311a42 Update Cargo.lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2243>
2025-05-13 20:03:56 +03:00
Sebastian Dröge
6db8c1806c deny: Update
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2241>
2025-05-13 14:49:19 +03:00
Sebastian Dröge
8df3fbe4ed Update Cargo.lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2241>
2025-05-13 14:47:45 +03:00
Christoph Reiter
2079f23dde aws-lc-rs: Update to 1.13.1
This is required to fix the build with clang+mingw on Windows,
see https://github.com/aws/aws-lc/pull/2381

Updated via "cargo update -p aws-lc-rs --precise 1.13.1"

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2237>
2025-05-12 07:30:09 +00:00
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
L. E. Segovia
4ee38b6cf9 deny: Allow webpki-root-certs license
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2233>
2025-05-05 16:15:41 +00:00
Mathieu Duponchelle
2e03d4f693 awstranslate: expose new accumulator-lateness property
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2221>
2025-05-05 15:41:09 +00:00
Mathieu Duponchelle
9a784d5979 awstranslate: fix docstring
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2221>
2025-05-05 15:41:09 +00:00
Mathieu Duponchelle
492ef81010 awstranslate: unit test accumulator logic
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2221>
2025-05-05 15:41:09 +00:00
Sebastian Dröge
144aeb615a fmp4mux: Fix handling of negative DTS in composition time offset
Actually negative DTS (i.e. < 0) was handled correctly before when
queueing buffers, but this didn't handle the case correctly where the
very same stream has DTS/PTS shifted to be positive (i.e. start DTS is
before earliest PTS).

To solve this, pass through all DTS as signed values and at the very end
for every fragment calculate the offset between the two in addition to
the PTS/DTS offset of each buffer, and adjust the composition time
offsets accordingly.

This way the final PTS of each buffer after demuxing is equal to the
actual running time of the very same buffer before muxing. Previously
all PTS would've been shifted forwards by a couple of frames, which then
broke A/V synchronization.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2232>
2025-05-05 16:47:34 +03:00
Sebastian Dröge
8f8a663555 fmp4mux: Add explanatory comment why tfdt is mapped to the earliest PTS
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2232>
2025-05-05 16:46:51 +03: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
6df4adac31 fmp4mux: Use earliest PTS for the base media decode time (tfdt)
While this is supposed to be a decode time, this doesn't really match
the description in the specification. It starts at 0 and increases by
the duration of each fragment, i.e. is the sum of all previous sample
durations.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2223>
2025-05-02 21:03:19 +03:00
Sebastian Dröge
3012dac758 fmp4mux: Remove redundant if
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2223>
2025-05-02 19:05:12 +03:00
Sebastian Dröge
86d2f2ce1f fmp4mux: Write lmsg as compatible brand into the last fragment
While this is only defined as such in DASH, it's used more widely and
shouldn't hurt to always have it there.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2222>
2025-05-02 15:45:25 +03:00
Piotr Brzeziński
d10993e15e gstwebrtc-api: Support starting a producer session for a given consumer
Updates the API with necessary plumbing to allow to track consumers
being added/removed, as well as starting a producer session targeted at
a consumer peer waiting for one.

The example page has also been updated to demonstrate this
functionality.

Can be tested by launching a webrtcsrc without a peer-id specified.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2206>
2025-05-01 13:14:55 +00:00
Piotr Brzeziński
abf97ba2a9 webrtc: Allow producers to start a session for a chosen consumer
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2206>
2025-05-01 13:14:55 +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
cb1a04465e rtp: Update 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
9d1de72aa8 Update dependencies
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2220>
2025-04-29 08:30:44 +03:00
Sebastian Dröge
79a93999c0 tracers: Update to etherparse 0.18
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2220>
2025-04-29 08:27:32 +03: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
1181dea306 ci: Add test-static-link-all meson logs as artifacts
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/1847>
2025-04-28 21:26:02 +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
Mathieu Duponchelle
ec79102ec5 aws: pin aws-smithy-runtime-api to a compatible version
We pin `aws-smithy-runtime` to 1.7.8 since
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2214,
we need to prevent `aws-smithy-runtime-api` from updating to `1.8.0` in
order for the build to pass after `cargo update`.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2218>
2025-04-28 16:43:14 +02:00
Sebastian Dröge
8596d34f19 ci: Remove typos CI job
It's not really scalable in a repository with lots of different pieces
of code. What is an intentional typo (`fiel`) in one directory might be
an actual typo (`field`) elsewhere, and unfortunately this can't be
configured in a useful way on a per-directory basis.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2208>
2025-04-28 08:13:36 +00:00
Sebastian Dröge
322fc4b400 mp4mux: Fix typo
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2208>
2025-04-28 08:13:36 +00:00
Sebastian Dröge
b06ae44ed4 fmp4mux: Set fragment header buffer offset to the fragment's sequence number
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2208>
2025-04-28 08:13:36 +00:00
Sebastian Dröge
1a381de8aa fmp4mux: Remove obsolete TODO comment
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2208>
2025-04-28 08:13:36 +00:00
Sebastian Dröge
3ae7913ef2 fmp4mux: Fix typo
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2208>
2025-04-28 08:13:36 +00:00
Sebastian Dröge
7e00e8c90b fmp4mux: Add TODO comments for creating codec specific boxes when receiving caps
Keeps error checking up-front and keeps things more consistent overall.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2208>
2025-04-28 08:13:36 +00:00
Sebastian Dröge
3e5da7a783 fmp4mux: Create FLAC dfLa box when receiving the caps too
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2208>
2025-04-28 08:13:36 +00:00
Sebastian Dröge
03e9a9f0fe fmp4mux: Add support for AC-3 / EAC-3
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2208>
2025-04-28 08:13:36 +00:00
Mathieu Duponchelle
8256601d1d webrtcsink: fix deadlock on encoder-setup
Switching to a lockable session re-introduced a similar deadlock to the
one fixed by f82a731b3a: we would call
encoder-setup with the session lock, the default handler would try to
lock the settings, thus not respecting the locking order (settings,
state, session).

We fix this by setting up the whole encoding chain outside of any locks,
then calling a reduxed version of Session.connect_input_stream() (sans
encoder-setup / payloader-setup signal calls).

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2215>
2025-04-25 13:52:23 +02:00
Mathieu Duponchelle
12e6922ac2 webrtcsink: fix deadlock on fast session removal
When a session was removed while its input streams were still getting
connected, a race condition was possible where:

* connect_input_stream was getting called from webrtcbin's pc thread
* the state of the pipeline was getting set to NULL in another thread
* connect_input_stream tried to sync state to NULL, and deadlocked
  because webrtcbin tried to stop its pc thread synchronously

This commit fixes this by making sure we hold the session lock when
setting the state of the pipeline to NULL, thus ensuring
`connect_input_stream` isn't getting called at the same time.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2215>
2025-04-25 13:52:23 +02:00
Mathieu Duponchelle
30a0b155fc webrtcsink: fix locking order
settings is always to be locked before state

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2215>
2025-04-25 13:52:23 +02:00
Mathieu Duponchelle
7cf2736a15 webrtcsink: call webrtcbin:add-ice-candidate without session lock
Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/2215>
2025-04-25 13:52:23 +02:00