1380 Commits

Author SHA1 Message Date
Alexander Slobodeniuk
a776793969 audioaggregator: fix chaining up to parent class (again)
An error was added in !8416, it was calling to the
wrong parent class

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8740>
2025-03-31 11:29:03 +00:00
Doug Nazar
12932ecc90 uridecodebin3: Free various props before being set
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8648>
2025-03-27 09:03:18 +00:00
Doug Nazar
5a19c4a4ae theoraenc: Free various props before being set
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8648>
2025-03-27 09:03:18 +00:00
Doug Nazar
3a20c0bca3 gl: Free various props during cleanup
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8648>
2025-03-27 09:03:18 +00:00
Doug Nazar
a7dce91f0d alsamidisrc: free ports during finalize()
If the element is never start/stopped the ports variable will leak.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8648>
2025-03-27 09:03:18 +00:00
Doug Nazar
5f90a4ae67 all: Annotate *_set_property() contructor only props without free
Properties that are marked constructor only aren't required to be freed
before g_value_dup_string() as they can only be called once during construction.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8648>
2025-03-27 09:03:18 +00:00
Víctor Manuel Jáquez Leal
ca04a4cd44 gl: eglimage: warn the reason of export failure
So people debugging could know what's happening at debugging.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8672>
2025-03-27 08:10:53 +00:00
Víctor Manuel Jáquez Leal
146b49fd9e gl: eglExportDMABUFImageQueryMESA expects modifiers to be an array
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8672>
2025-03-27 08:10:53 +00:00
Philippe Normand
5bd36c694c device-monitor: Deinitialize GStreamer before exiting
Nice to have when using the leak tracer.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8670>
2025-03-27 00:40:56 +00:00
Sebastian Dröge
c2be97d591 videotimecode: Add missing 119.88fps support to some functions
And while at it generalize the drop frame handling to all integer multiples
of 30000/1001 fps.

Also adjust tests accordingly and add some other missing test.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8649>
2025-03-26 09:32:36 +02:00
Sebastian Dröge
18798440e3 videotimecode: Fix conversion of timecode to datetime with drop-frame timecodes
gst_video_time_code_to_date_time() simply calculated the date time based on
adding the hours/minutes/seconds to the daily jam. This causes a gap every full
minute (except for every 10th minute) with drop-frame timecodes as the first 2
(29.97fps) or 4 (59.94fps) timecodes are skipped (not frames!), e.g. with
29.97fps:

timecode: 12:00:59;28  12:00:59;29  12:01:00;02  12:01:00;03
time    : 12:00:59.950 12:00:59.983 12:01:00.017 12:01:00.050

and not

time    : 12:00:59.934 12:00:59.968 12:01:00.067 12:01:00.100
                        |-- gap of 2 frames --|

The correct calculation would be to use gst_video_time_code_nsec_since_daily_jam()
and add that to the daily jam.

Also add a test for this.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8649>
2025-03-26 09:32:36 +02:00
Marc Leeman
f2b5c0b602 meson.build: test for and link against libatomic if it exists
It's needed on some platforms for some subset (or all) atomic operations and
checking for the cases when it's actually needed is quite complex.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4300

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8637>
2025-03-14 15:12:33 +00:00
Edward Hervey
235b0acd63 decodebin3: Don't avoid parsebin even if we have a matching decoder
This is too brittle, there is no guarantee that the input stream has been
properly parsed.

There is another check above (is_input_parsed) that will skip that if the
content came from `urisourcebin` and had a parser applied

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4308

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8641>
2025-03-14 09:40:35 +01:00
Olivier Blin
9b47a2dde3 alsadeviceprovider: Fix leak of Alsa longname
Detected by ASan.

As a drive-by fix, use free() instead of g_free() in gstalsadeviceprovider.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8619>
2025-03-13 01:01:39 +00:00
Tim-Philipp Müller
bd3aabbc25 videorate: add support for JPEG-XS
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8601>
2025-03-13 00:11:52 +00:00
Edward Hervey
6454698f82 urisourcebin: Make parsebin activation more reliable
`parsebin` is potentially added by a `typefind` callback.

That `typefind` was activated by a `READY_TO_PAUSED` state change on `urisourcebin`

We want to ensure that it is the "setup_parsebin_for_slot" method that activates
the underlying `parsebin`, and not the external state-change.

Otherwise we would risk a potential deadlock where elements activating in
`parsebin`, and which would cause the upstream `typefind` to switch scheduling
mode, would not be able to acquire the STREAM_LOCK of the `typefind` task.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4225

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8511>
2025-03-12 16:15:20 +00:00
Thibault Saunier
ed693c7435 video: Give better names to buffer pools
Making debugging simpler

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8617>
2025-03-12 14:49:22 +00:00
Tim-Philipp Müller
1a971d8e12 Back to development in main branch after 1.26.0
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8621>
2025-03-12 14:21:08 +01:00
Tim-Philipp Müller
d31ce8e5e1 Release 1.26.0 2025-03-11 20:20:16 +00:00
Alyssa Ross
bfd995f9df tcpclientsrc, tcpserversrc: fix building for musl
musl only exposes struct tcp_info when _GNU_SOURCE is defined.

Fixes: b4bef7fd35 ("tcpclientsrc, tcpserversrc: fix tcp stats gathering")
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8612>
2025-03-11 12:43:55 +01:00
Dongyun Seo
c206ddd930 playbin3: fix unlocking twice
fix unlocking playbin3 lock twice.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8570>
2025-02-28 13:49:11 +00:00
Sebastian Dröge
593dc0356c Revert "glupload: Add formats supported by #GstGLMemory to raw caps when generating sink pad caps"
This reverts commit cf30e875de7b8f04730753fb35869d0f7338b6e5.

This broke caps negotiation on Wayland/EGL with:

  videotestsrc ! glupload ! glimagesinkelement

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4240

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8552>
2025-02-26 10:08:41 +00:00
Tim-Philipp Müller
644a005ecb Back to development after 1.25.90 2025-02-23 23:52:57 +00:00
Tim-Philipp Müller
94a3e912ab Release 1.25.90 2025-02-23 23:44:10 +00:00
Tim-Philipp Müller
a43c9ba9a0 gst-plugins-base: update translations 2025-02-23 23:44:02 +00:00
Matthew Waters
ddf7c1ec63 gldisplay/egl: Add API for overriding foreign-ness of the EGLDisplay
Scenario is using wayland with this pipeline: videotestsrc ! glupload ! qml6glsink.

First pipeline and qml construction works just fine.  However if all GStreamer
and QML scenegraph resources are removed, GStreamer will call eglTerminate() and
sever the connection to the display server for Qt.  When Qt attempts to do any
further GL operations like construct a new QML scene, it can crash in any number
of places as libEGL will start returning NULL or other unexpected values.

What we really need is to ensure that if an external API (e.g. Qt) will
eventually call eglTerminate(), there is no need for GStreamer to call
eglTerminate().  This is what the foreign display flags allows setting.

There is also another possible scenario where one may like to make GStreamer
assume ownership of an EGLDisplay and thus eventually call `eglTerminate()`.  As
such, it is now also possible to mark an GstGLDisplayEGL as non-foreign.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8504>
2025-02-21 12:03:31 +00:00
Nicolas Dufresne
08e76f993c video: dma-drm: Fix MT2110R/T DRM mapping
The base format for these should be NV15 (10bit) rather then NV12.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8524>
2025-02-20 21:25:03 +00:00
Jan Schmidt
ae33acda5d convertframe: Fix video crop meta handling
Cropping parameters were being miscalculated - getting
the output width/height wrong when an x/y crop offset
was given.

Cropping was also incorrectly being applied twice (because at
some point after the convertframe code was written,
`videocrop` also started paying attention to the
GstVideoCropMeta, but not in useful ways for this purpose). Add
a buffer probe to strip the crop meta from the input buffer
so videocrop can do its job correctly.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8526>
2025-02-20 10:55:48 +00:00
Michael Olbrich
8d42a7e233 gl: upload: use empty caps if transform_caps returns NULL
transform_caps() from the upload methods can return NULL in some cases, so fall
back to empty caps in that case.

This can happen if "Raw Data" is the currently selected method and new caps with
memory:DMABuf caps feature are negotiated.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8514>
2025-02-20 09:43:28 +00:00
Thibault Saunier
8162b4ec86 audiorate: Take the tolerance into account when filling gaps
The property is defined as:

> The difference between incoming timestamp and next timestamp must exceed
> the given value for audiorate to add or drop samples.

so if the gap duration < tolerance, we should not act.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8498>
2025-02-19 16:32:11 +00:00
Markus Ebner
2171c5d27e gstvorbistag: Add support for lyrics tag
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8513>
2025-02-19 13:10:49 +00:00
Benjamin Gaignard
515e241b38 typefind: Add typefinder for AV1 obu/annexb raw streams
AV1 specification [1] define 2 AV1 raw bitstreams storage
formats without containers:
- OBU in chapiter 5.2
- Annexb in chapiter 11.

Implement a detection function for the both cases mostly
by testing OBU forbidden, type, has_size_field and reserved bits.
For annexb case testing if temporal unit size, frame unit size and
obu length are valid. If they are check that the first OBU is
a temporal delimiter.

[1] https://aomediacodec.github.io/av1-spec/av1-spec.pdf

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8502>
2025-02-18 13:01:13 +00:00
Sebastian Dröge
fb34f63835 uridecodebin3: Don't hold play items lock while activating source items
Activating them can cause messages that call back into the message handler of
uridecodebin3 and take exactly the same lock again.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8215>
2025-02-18 09:14:59 +00:00
Seungha Yang
a3c45f2848 glupload: Fix for wrongly recognized reconfigure condition
gst_gl_upload_transform_caps() method might return non-fixed
caps (texture-target for example) but priv->out_caps is fixed one
so the former (non-fixed caps) is superset.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8492>
2025-02-17 13:16:46 +00:00
Tim-Philipp Müller
c9062375e9 pbutils: descriptions: add Hap video codec
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7717>
2025-02-15 21:25:05 +00:00
Sebastian Dröge
fc026fcfbe glupload: Don't skip all other methods than the currently selected one when transforming caps
This leads to spurious negotiation failures because the configured method can
change over time and caps queries (and thus transform_caps) are happening
independently from configuring caps. Instead prefer the transformed caps of the
current method, but always also return the transformed caps for all other
methods. Previously all other methods would've only been used if the current
method returned empty caps. If a different method is needed later when
configuring the caps, it will be and was selected regardless.

Later during caps fixation, prefer the caps of the current method too for the
fixated caps if possible in any way.

This should preserve the desired behaviour of preferring the current method if
possible but to change to a different method if nothing else is possible, while
also returning consistent (and not too narrow) caps every time.

The way how the current method was checked was also racy as the current method
might change at any moment during caps query handling, and apart from
inconsistent results also a NULL pointer dereference was possible here. Use the
GST_OBJECT_LOCK to protect access to the current method like in other places.

This part of the code was introduced in f349cdccf5e1538f3eb9caa31458b53fdd81671b
and tried to be fixed multiple times over the years without addressing the root
cause of caps queries and caps configuration happening independently from each
other, e.g. in !2687 and !2699.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8431>
2025-02-14 18:44:34 +00:00
Sebastian Dröge
4fb5784e53 gluploadelement: Fix typo in debug output
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8431>
2025-02-14 18:44:33 +00:00
Sebastian Dröge
8411a46c72 video-overlay-composition: Fix meta scale transformation for xscale != yscale
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8431>
2025-02-14 18:44:33 +00:00
Sebastian Dröge
6e9a0c2229 videoconvertscale: Explicitly handle overlaycomposition meta caps feature
Otherwise it will be dropped unnecessarily. videoconvertscale can always pass it
through, no matter if it does conversion or not.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4161

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8431>
2025-02-14 18:44:33 +00:00
Sebastian Dröge
959ccf65ad video-info: Validate chroma-site when parsing caps and set defaults if none is set
Previously there was no validation at all and the defaults were set if the
colorimetry was not set or invalid, but there's not really any connection
between colorimetry and chroma-site.

More validation could make sense in the future.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8258>
2025-02-12 13:15:24 -03:00
Alexander Slobodeniuk
33fc2d9c65 glvideomixer: fix missing GObject vtable chainups
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8452>
2025-02-11 22:49:06 +01:00
Alexander Slobodeniuk
3cae6af025 examples/gl/gtk: fix chaining up GObject's constructed virtual method
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8416>
2025-02-10 17:49:29 +00:00
Alexander Slobodeniuk
6016cdccf1 gl: fix chaining up GObject's constructed virtual method
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8416>
2025-02-10 17:49:29 +00:00
Alexander Slobodeniuk
e9f488a2c5 audioaggregator: fix chaining up GObject's constructed virtual method
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8416>
2025-02-10 17:49:29 +00:00
Carlos Bentzen
7faa031e0e pbutils: add profile-tier-level functions for VVC/H.266
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5088>
2025-02-10 09:20:22 +00:00
Tim-Philipp Müller
bf5f642841 Back to development after 1.25.50 2025-02-09 17:47:32 +00:00
Tim-Philipp Müller
3e8f88d756 Release 1.25.50 2025-02-09 17:35:17 +00:00
Nicolas Dufresne
5b1fb0e581 video: Add DRM for NV12_10LE40 to DRM_FORMAT_NV15
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8426>
2025-02-07 22:17:17 +00:00
Nicolas Dufresne
388f86131f video: dma-drm: Extend the format mapping
These formats were mapped in video4linux2 plugin, but not here. Add them
so te video4linux2 plugin can use the global mapping.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8404>
2025-02-05 18:56:15 -05:00
Nicolas Dufresne
9eec7ddf19 video: Add support for big endian DRM formats
When a format is big endian, the 8bith of the fourcc is set. Handle this by
using a "_BE" suffix in serialization. The patch also update the design document
and introduce a unit test.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8404>
2025-02-05 18:56:15 -05:00