Commit graph

121762 commits

Author SHA1 Message Date
Sebastian Dröge
f6cc65a6bc splitmuxsink: Be less strict about queueing negative durations
In case of temporary backwards timestamps durations can become negative. Instead
of erroring out, simply clip the durations and warn.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8390>
2025-02-17 09:36:00 +00:00
Xavier Claessens
f25668a223 gststructure: Fix deserialization of GStrv
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8438>
2025-02-17 08:31:36 +00:00
Xavier Claessens
e06e977304 gstvalue: Add (de)serialize of G_TYPE_STRV
This allows setting strv properties from gst-launch-1.0, such as uris in
uriplaylistbin.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8438>
2025-02-17 08:31:36 +00:00
Xavier Claessens
a54568a93c pre-commit: Advice to install pre-commit in deprecation message
Running "meson setup" again is not enough, pre-commit must be installed.
Meson already prints a warning but that's not fatal and easy to miss.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8438>
2025-02-17 08:31:36 +00:00
Tim-Philipp Müller
5cd582c9c6 libxml2: update wrap to v2.13.5
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8490>
2025-02-17 06:30:17 +00:00
Tim-Philipp Müller
46b473f226 glib: update to v2.82.4
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8490>
2025-02-17 06:30:17 +00:00
Tim-Philipp Müller
85782a06b6 pcre2: update wrap to v10.44
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8490>
2025-02-17 06:30:17 +00:00
Tim-Philipp Müller
cb51d065eb sqlite3: update wrap to v3.49.0
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8490>
2025-02-17 06:30:17 +00:00
Tim-Philipp Müller
b4746103f5 freetype: update to v2.13.3
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8490>
2025-02-17 06:30:17 +00:00
Tim-Philipp Müller
740b9a2760 wayland-protocols: update to v1.40
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8490>
2025-02-17 06:30:17 +00:00
Tim-Philipp Müller
72ef471ad9 libsrtp: update wrap to v2.6.0
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8490>
2025-02-17 06:30:17 +00:00
Tim-Philipp Müller
2843397f7d openh264: update wrap to v2.6.0
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8490>
2025-02-17 06:30:17 +00:00
Tim-Philipp Müller
34bc22e5ba expat: update wrap to v2.6.4
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8490>
2025-02-17 06:30:17 +00:00
Tim-Philipp Müller
1246d277fa fdk-aac: update wrap to v2.0.3
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8490>
2025-02-17 06:30:17 +00:00
Tim-Philipp Müller
54e49fdd48 libopenjp2: update wrap to v2.5.3
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8490>
2025-02-17 06:30:17 +00:00
Tim-Philipp Müller
a98dfec836 json-glib: update to v1.10.6
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8490>
2025-02-17 06:30:17 +00:00
Tim-Philipp Müller
44b99e0337 lame: update to v3.100-9
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8490>
2025-02-17 06:30:17 +00:00
Tim-Philipp Müller
ad189fd22a libjpeg-turbo: update wrap to v3.1.0
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8490>
2025-02-17 06:30:17 +00:00
Tim-Philipp Müller
e27ba4abb2 libpng: update wrap to v1.6.46
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8490>
2025-02-17 06:30:17 +00:00
Tim-Philipp Müller
09ee07c7d0 zlib: update wrap to v1.3.1
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8490>
2025-02-17 06:30:17 +00:00
Tim-Philipp Müller
4674d95529 ogg: update wrap to v1.3.5-6
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8490>
2025-02-17 06:30:17 +00:00
Seungha Yang
008ffd8f00 cccombiner: Fix critical warnings
gst_buffer_add_video_caption_meta: assertion 'data != NULL' failed

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8486>
2025-02-16 16:44:22 +00:00
Sebastian Dröge
ad66d338dd play: Fix annotations of parse_missing_plugins() API
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8487>
2025-02-16 17:11:32 +02:00
Tim-Philipp Müller
4c13d1453f gst-libav: update docs for hap codec addition and other changes
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7717>
2025-02-15 21:25:05 +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
Tim-Philipp Müller
9724227c09 avcodecmap: add mapping for Hap video codec
Decoder works, encoder needs more work.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7717>
2025-02-15 21:25:05 +00:00
Tim-Philipp Müller
7c3a468056 qtdemux: add mappings for Hap video codec
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3596

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7717>
2025-02-15 21:25:05 +00:00
Thibault Saunier
1f7b6fea6d dots-viewer: Add dragscroll support for better UX
Patch suggested by Rubén Gonzalez

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7999>
2025-02-15 18:01:37 +00:00
Thibault Saunier
fcfa668a27 devtools: Remove the gstdump binary as the 'dots' tracer replaces it
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7999>
2025-02-15 18:01:37 +00:00
Thibault Saunier
174460770b gst: Allow tracers to set the GST_DEBUG_DUMP_DOT_DIR
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7999>
2025-02-15 18:01:37 +00:00
Thibault Saunier
642ad6c927 tracers: Add a dots tracer which is meant to be used with gst-dots-viewer
See documentation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7999>
2025-02-15 18:01:37 +00:00
Thibault Saunier
f103692205 devtools: dots-viewer: Reimplement get_user_cache_dir the same way as in the GLib
The 'dirs' crate doesn't behave the same which makes it harder to work with in rust

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7999>
2025-02-15 18:01:37 +00:00
Thibault Saunier
5685e36293 devtools: gstdump: Check that pipeline-snapshot is present
And use the tracing crate for logging to make it cleaner

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7999>
2025-02-15 18:01:37 +00:00
Thibault Saunier
d95417621d dots-viewer: Add "Dump Pipelines" button
Add a button in the web interface to trigger pipeline dumps via websocket,
replacing the need to manually send SIGUSR1 to the process. Also set up
the pipeline-snapshot tracer with the proper websocket URL by default.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7999>
2025-02-15 18:01:37 +00:00
Thibault Saunier
0bfc9a8350 dots-viewer: Use a dark theme
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7999>
2025-02-15 18:01:37 +00:00
Thibault Saunier
61159bd992 devtools: Add dots-viewer set of tools
This adds `gstdump` and `gst-dots-viewer` server, see the
README for more details about what those tools do.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7999>
2025-02-15 18:01:36 +00:00
Thibault Saunier
4b74819671 core: debugutils: Write dot files atomically
Replace fopen/fputs with g_file_set_contents() to ensure dot files are written
atomically. This prevents tools like gst-dots-viewer from reading partially
written files when watching the dot folder.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7999>
2025-02-15 18:01:36 +00:00
Tim-Philipp Müller
b41d5c733d svtjpegxsenc: fix copy'n'paste error in property registration
Doesn't change anything in practice because the default value
was set correctly in the instance init function.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8485>
2025-02-15 15:44:14 +00:00
Alicia Boya García
ee97c89c51 gstreamer: parse: Log bus error messages during construction
Suppose you invoke gst-launch with this invalid pipeline:

```
$ gst-launch-1.0  videotestsrc num-buffers=10 ! x264enc name=enc ! mux.sink_0 \
    mpegtsmux name=mux ! fakesink
0:00:00.018631594 351169      0xb523090 ERROR           GST_PIPELINE
subprojects/gstreamer/gst/parse/grammar.y:1151:gst_parse_perform_link:
could not link enc to mux
WARNING: erroneous pipeline: could not link enc to mux
```

The error message you get is not very helpful. This is a pity, because
this is where the error comes from:

```c
static GstPad *
gst_base_ts_mux_request_new_pad (GstElement * element, GstPadTemplate * templ,
    const gchar * name, const GstCaps * caps)
{ // [...]
    GST_ELEMENT_ERROR (element, STREAM, MUX,
        ("Invalid Elementary stream PID (0x%02u < 0x40)", pid), (NULL));
    return NULL;
```

mpegtsmux posted an error with an explanation of why the linking failed.
However, since the error ocurred within gst_parse_launchv(), gst-launch
could not have set a bus handler, and the error message got discarded.

This patch attempts to make gst-launch more user-friendly by setting a
temporary bus handler during early bin construction to catch error
messages like this.

The errors are logged as ERROR level in the GST_PIPELINE category.
However, this is not enough, as GST_LEVEL_DEFAULT defaults to
GST_LEVEL_NONE in releases. In other words, outside of the dev
environment, GStreamer won't print ERROR logs by default.

To make sure the errors can reach users of packaged versions of
GStreamer, a new AtomicRcBox-based struct is added: reason_receiver_t.
graph_t owns a reference to reason_receiver_t and so does the temporary
bus handler.

When the temporary bus handler receives an error message, the `reason`
field of `reason_receiver_t` is filled with the error message.
Later, when SET_ERROR() is called as a consequence of the operation that
posted the error having returned failure, the reason message is
extracted and added to the GError message.

This is how the resulting error would look in the example from above:

    WARNING: erroneous pipeline: could not link enc to mux --
    GstMpegTsMux <mux> posted an error message: Invalid Elementary
    stream PID (0x00 < 0x40)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8417>
2025-02-15 00:04:46 +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 f349cdccf5
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
Thibault Saunier
2df47c1300 scripts: update-girs: Normalize shared-library extensions for macOS
So the script can be used on mac

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8476>
2025-02-14 16:50:41 +00:00
Thibault Saunier
7a70860ac0 hooks: docs: Ensure the hodoc config has a gst_plugin_library field before using it
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8476>
2025-02-14 16:50:41 +00:00
Arun Raghavan
5ffa6902c3 onnx: Allow generic well-known names for tensors
This allows us to use the upstream version of the ssd_mobilenet model[1], and
starts setting us up to allow some tensor names by convention if we want to add
more decoders.

[1] https://github.com/onnx/models/tree/main/validated/vision/object_detection_segmentation/ssd-mobilenetv1

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8117>
2025-02-14 15:42:52 +00:00
Edward Hervey
96e660e0d9 mpegts: Fix PCR Discontinuity handling for HLS
We can only reliably use the adaptation field discontinuity flag if our input is
properly timestamped on a regular basis (ex: UDP, DVB, RTP, etc...).

For HLS and other systems which don't provide that information, we should not
reset the base observations. Otherwise we would potentially end up picking a
reference time from a long time ago.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8480>
2025-02-14 14:33:45 +00:00
Seungha Yang
54a0ad7161 closedcaption: Add closed caption extractor element for H.264 stream
Adding new h264ccextractor element. This element will extract
closed caption meta from H.264 stream, and output in display order.
For the frame reordering, this element is implemented as a subclass
of h264decoder but without actual frame decoding.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6580>
2025-02-14 13:43:01 +00:00
Alexander Slobodeniuk
1eaf9b867e avfassetsrc: fix mutex leak
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8479>
2025-02-14 12:55:27 +00:00
Alexander Slobodeniuk
c3fdd1ea3a avfassetsrc: fix missing GObject dispose chainup
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8479>
2025-02-14 12:55:27 +00:00