platform/upstream/gstreamer.git
15 months agoRelease 1.24.0 upstream/1.24.0 1.24.0
Tim-Philipp Müller [Mon, 4 Mar 2024 23:51:42 +0000 (23:51 +0000)]
Release 1.24.0

15 months agoanalytics: whitespace matters for gtk-doc syntax
Mathieu Duponchelle [Mon, 4 Mar 2024 17:01:50 +0000 (18:01 +0100)]
analytics: whitespace matters for gtk-doc syntax

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6253>

15 months agoanalytics: Add documentation to hotdoc build
Olivier Crête [Sun, 3 Mar 2024 23:35:09 +0000 (18:35 -0500)]
analytics: Add documentation to hotdoc build

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6253>

15 months agoanalytics: Add missing documentation
Olivier Crête [Sun, 3 Mar 2024 23:34:41 +0000 (18:34 -0500)]
analytics: Add missing documentation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6253>

15 months agoanalytics: Fix various typos in the documentation
Olivier Crête [Sun, 3 Mar 2024 23:33:48 +0000 (18:33 -0500)]
analytics: Fix various typos in the documentation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6253>

15 months agoplayback: Remove USE_PLAYBIN3 registration override
Edward Hervey [Mon, 4 Mar 2024 11:22:25 +0000 (12:22 +0100)]
playback: Remove USE_PLAYBIN3 registration override

This was only introduced as a convenience for testing playbin3 instead of
playbin2.

Now that playbin3 is (explicitely) default in many cases, we should not do this
hack anymore

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6255>

15 months agoaudioconvert: set mix-matrix when user changes it to empty
Jurijs Satcs [Thu, 29 Feb 2024 08:30:47 +0000 (09:30 +0100)]
audioconvert: set mix-matrix when user changes it to empty

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6243>

15 months agod3d11memory, d3d12memory: Fix outstanding memory count tracing
Seungha Yang [Wed, 28 Feb 2024 17:41:42 +0000 (02:41 +0900)]
d3d11memory, d3d12memory: Fix outstanding memory count tracing

Gets being released memory back to queue even if allocator is flushing
in order to count the number of outstanding memory objects.
Also, clear queue if there's no outstanding memory object and
allocator is flushing

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6240>

15 months agotests: d3d11: Add buffer pool test
Seungha Yang [Wed, 28 Feb 2024 17:30:38 +0000 (02:30 +0900)]
tests: d3d11: Add buffer pool test

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6240>

15 months agocudamemory: Fix outstanding memory count tracing
Seungha Yang [Wed, 28 Feb 2024 17:06:43 +0000 (02:06 +0900)]
cudamemory: Fix outstanding memory count tracing

Gets being released memory back to queue even if allocator is flushing
in order to count the number of outstanding memory objects.
And fixing double count increment

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6240>

15 months agotests: cuda: Add buffer pool test
Seungha Yang [Wed, 28 Feb 2024 17:06:25 +0000 (02:06 +0900)]
tests: cuda: Add buffer pool test

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6240>

15 months agoges: framepositioner: Expose positioning properties as doubles
Thibault Saunier [Tue, 27 Feb 2024 17:00:04 +0000 (14:00 -0300)]
ges: framepositioner: Expose positioning properties as doubles

Making it possible to properly handle compositors that have those
properties as doubles and handle antialiasing.

Internally we were handling those values as doubles in framepositioner,
so expose new properties so user can set values as doubles also.

This changes the GESFramePositionMeta API but we are still on time for 1.24

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6241>

15 months agoallocators: drmdumb: Remove extra semicolon after G_DECLARE_FINAL_TYPE
Marvin Schmidt [Wed, 28 Feb 2024 15:51:37 +0000 (16:51 +0100)]
allocators: drmdumb: Remove extra semicolon after G_DECLARE_FINAL_TYPE

The `G_DECLARE_FINAL_TYPE` macro does not need to be terminated with a
semicolon and the extra semicolon breaks building e.g. libcamera with
clang because `-Wextra-semi` is used which produces the following
error in conjunction with `-Werror`:
```
gstreamer-1.0/gst/allocators/gstdrmdumb.h:61:43: error: extra ';' outside
of a function is incompatible with C++98 [-Werror,-Wc++98-compat-extra-semi]
   61 |     GST, DRM_DUMB_ALLOCATOR, GstAllocator);
      |                                           ^
1 error generated.
```

Fix this by removing the extra semicolon

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6239>

15 months agodocs: Update lumen theme
Thibault Saunier [Mon, 26 Feb 2024 18:15:05 +0000 (15:15 -0300)]
docs: Update lumen theme

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6224>

15 months agowaylandsink: Move buffer commits to the display thread
Damian Hobson-Garcia [Thu, 15 Feb 2024 21:41:54 +0000 (16:41 -0500)]
waylandsink: Move buffer commits to the display thread

Syncrhonizing buffer commits to the streaming thread can lead to
dropped frames when frame callbacks are not processed before the
next frame is ready for rendering.  Depending on the drift between
the wayland compositor and buffer source timings, this can lead to
periods of significant frame drop, especially when the media frame
rate is close to the display frame rate.

Cache buffers in the streaming thread and peform commits on the
display thread to eliminate the buffer commit racing.

The implementation is the same for both waylandsink and gtkwaylandsink,
so move it to the common wayland library under gst-lib.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6133>

15 months agowayland: Add API to ref/unref current GstBuffer inside a GstWlBuffer
Damian Hobson-Garcia [Thu, 15 Feb 2024 21:41:52 +0000 (16:41 -0500)]
wayland: Add API to ref/unref current GstBuffer inside a GstWlBuffer

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6133>

15 months agowayland: Add synchronized requests to WlDisplay
Damian Hobson-Garcia [Thu, 15 Feb 2024 21:42:13 +0000 (16:42 -0500)]
wayland: Add synchronized requests to WlDisplay

Add synchonized versions of wl_display_sync() and wl_callback_destroy()
that will ensure that to callbacks can be managed in a thread safe way
on the display queue even when they are dispatched from a separate
thread.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6133>

15 months agovolume: Expose the `volume-full-range` as another property
Thibault Saunier [Mon, 26 Feb 2024 15:38:55 +0000 (12:38 -0300)]
volume: Expose the `volume-full-range` as another property

In https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5063
the range of volume value has changed which breaks backward compatibility
when  using a GstDirectControlBinding which is not acceptable. To avoid
breaking compatibility add the feature of allowing the full range  using
another property with the full range. When using that full range, the
value of the `volume` property might end up being out of its valid
range but we do not really have a good solution for that.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3257
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6222>

15 months agortspsrc: Increase rank to PRIMARY for autoplug purposes
Nirbheek Chauhan [Tue, 27 Feb 2024 08:52:58 +0000 (14:22 +0530)]
rtspsrc: Increase rank to PRIMARY for autoplug purposes

This affects autoplug by gst_element_make_from_uri() in, for example,
uridecodebin. The element should've already been PRIMARY rank, but it
was NONE because gst_element_make_from_uri() doesn't ignore NONE rank
elements when searching for element factories, unlike decodebin.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6226>

15 months agodocs: Use Discourse and Matrix as prefered communication channels
Edward Hervey [Mon, 26 Feb 2024 08:27:40 +0000 (09:27 +0100)]
docs: Use Discourse and Matrix as prefered communication channels

Part of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6220

15 months agogitlab_template: Remove duplicate entry and remove mention of IRC
Edward Hervey [Mon, 26 Feb 2024 08:26:44 +0000 (09:26 +0100)]
gitlab_template: Remove duplicate entry and remove mention of IRC

Part of: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6220

15 months agod3d11window_win32: fix crash on RC unprepare() vs window_proc()
Alexander Slobodeniuk [Thu, 22 Feb 2024 14:41:16 +0000 (15:41 +0100)]
d3d11window_win32: fix crash on RC unprepare() vs window_proc()

Unprepare method posts WM_GST_D3D11_DESTROY_INTERNAL_WINDOW
command to the window queue, and from that moment considers
internal_hwnd to be released, and so it sets it to null.
The problem is that it's possible that right at that moment
the window thread might be already processing some other
command, or just another command might be already in the queue.
On practice we met a crash when WM_PAINT got processed in between
(unprepare already finished and WM_GST_D3D11_DESTROY_INTERNAL_WINDOW
was not handled yet)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6187>

15 months agoqueue2: post 100% buffering message even when waiting for space to be freed
Arnaud Vrac [Wed, 21 Feb 2024 11:20:19 +0000 (12:20 +0100)]
queue2: post 100% buffering message even when waiting for space to be freed

In the case where the queue shrinks due to a property change and the queue
becomes full, we would set the waiting_del flag, which would prevent posting the
100% buffering message on the bus. Since the pipeline is not aware of the new
buffering value, in the common case where the pipeline is paused during
buffering, it would never resume.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6165>

15 months agoqueue2: move gst_queue2_get_buffering_message code to the only call site
Arnaud Vrac [Wed, 21 Feb 2024 11:17:45 +0000 (12:17 +0100)]
queue2: move gst_queue2_get_buffering_message code to the only call site

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6165>

15 months agoqueue2: remove redundant check to avoid posting the same buffering value twice
Arnaud Vrac [Wed, 21 Feb 2024 11:05:18 +0000 (12:05 +0100)]
queue2: remove redundant check to avoid posting the same buffering value twice

Remove the percent_changed check to determine whether a buffering message should
be posted. The check on the last posted buffering value is sufficient, and the
removal doesn't introduce additional complexity.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6165>

15 months agoqueue2: consolidate buffering message posting code
Arnaud Vrac [Wed, 21 Feb 2024 10:41:32 +0000 (11:41 +0100)]
queue2: consolidate buffering message posting code

No need to copy paste the code, simply call the common gst_queue2_post_buffering
function.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6165>

15 months agoqueue2: make sure update_buffering is called with the lock taken
Arnaud Vrac [Wed, 21 Feb 2024 10:17:13 +0000 (11:17 +0100)]
queue2: make sure update_buffering is called with the lock taken

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6165>

15 months agojpegdec: Fix progressive/interlaced detection
Seungha Yang [Thu, 22 Feb 2024 11:35:28 +0000 (20:35 +0900)]
jpegdec: Fix progressive/interlaced detection

If input height and parsed one are identical, do not consider it as interlaced

Fixing below pipeline:
gst-launch-1.0 videotestsrc ! video/x-raw,format=I420,width=640,height=10 \
  ! jpegenc ! jpegparse ! jpegdec ! videoconvert ! autovideosink

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6181>

15 months agojpegdec: Remove trailing white space
Seungha Yang [Mon, 26 Feb 2024 14:14:54 +0000 (23:14 +0900)]
jpegdec: Remove trailing white space

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6181>

15 months agoRelease 1.23.90
Tim-Philipp Müller [Fri, 23 Feb 2024 18:20:11 +0000 (18:20 +0000)]
Release 1.23.90

15 months agovabasedec: Fix a possible NULL pointer dereference
He Junyan [Fri, 23 Feb 2024 13:54:17 +0000 (21:54 +0800)]
vabasedec: Fix a possible NULL pointer dereference

The format in _get_preferred_format_and_caps_features() may be NULL.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6206>

15 months agourisourcebin: Handle legacy pad replacements from parsebin
Edward Hervey [Fri, 23 Feb 2024 10:15:49 +0000 (11:15 +0100)]
urisourcebin: Handle legacy pad replacements from parsebin

When dealing with demuxers which aren't streams-aware, we need to handle the
old-school "stream replacement" dance from `parsebin` and hide that in such a
way that output pads are re-used (if compatible).

By analyzing the collection posted by parsebin, we can:
* Identify whether some output slots are no longer used (because the stream they
  currently handle is not present in the collection)
* Decide if some upcoming streams could re-use the existing slot

This supports both buffering and non-buffering modes.

Fixes #1651

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6201>

15 months agotheoradec: Remove mis-leading and redundant uncropped_info
Sebastian Dröge [Fri, 23 Feb 2024 11:17:42 +0000 (13:17 +0200)]
theoradec: Remove mis-leading and redundant uncropped_info

It's actually the cropped info, and equivalent to the info that is
already stored as part of the output state.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6203>

15 months agotheoradec: Don't leak input state if a second type packet is received
Sebastian Dröge [Fri, 23 Feb 2024 11:16:36 +0000 (13:16 +0200)]
theoradec: Don't leak input state if a second type packet is received

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6203>

15 months agotheoradec: Don't overwrite width/height of the input state
Sebastian Dröge [Fri, 23 Feb 2024 11:14:18 +0000 (13:14 +0200)]
theoradec: Don't overwrite width/height of the input state

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6203>

15 months agotheoradec: Don't use custom allocation logic and always crop locally
Sebastian Dröge [Fri, 23 Feb 2024 11:08:21 +0000 (13:08 +0200)]
theoradec: Don't use custom allocation logic and always crop locally

All video frames have to be copied from libtheora's memory to the output
frame anyway, so we can as well do the cropping here directly instead of
copying the full frames and having downstream do the cropping.

This reduces the complexity of the code considerably, and among other
things gets rid of a bug related to buffer pool configuration.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6203>

15 months agovabasedec: disable derived images for i965 driver
Víctor Manuel Jáquez Leal [Thu, 22 Feb 2024 21:11:36 +0000 (22:11 +0100)]
vabasedec: disable derived images for i965 driver

Since it has a very poor performance at reading derived images, which is the
most common use case for decoders.

Partially fixes: #3325

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6202>

15 months agolibav: Don't add `-Werror=deprecated-declarations`
Sebastian Dröge [Fri, 23 Feb 2024 09:00:36 +0000 (11:00 +0200)]
libav: Don't add `-Werror=deprecated-declarations`

It will fail the build for anybody who has an older FFmpeg version
than 6.1 and doesn't use the FFmpeg subproject.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6199>

15 months agoffmpeg: Update subproject to 6.1
Sebastian Dröge [Fri, 23 Feb 2024 08:55:07 +0000 (10:55 +0200)]
ffmpeg: Update subproject to 6.1

Otherwise the build will fail after the recent changes because of
deprecated API usage.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6199>

15 months agovapostproc: optimization for va memory to system memory only
Víctor Manuel Jáquez Leal [Wed, 21 Feb 2024 17:14:36 +0000 (18:14 +0100)]
vapostproc: optimization for va memory to system memory only

When the conversion is only caps feature from memory:VAMemory to system memory,
it's possible to optimize by doing a pseudo pass-through since the va-backed
buffers are the same for system memory buffers.

This change will also mitigates #2940

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6174>

15 months agoasiosink: Fix channel selection
Seungha Yang [Tue, 20 Feb 2024 11:38:55 +0000 (20:38 +0900)]
asiosink: Fix channel selection

Fixing copy paste mistake

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3321
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6170>

15 months agovabase: fail decide allocation if dmabuf without videometa
Víctor Manuel Jáquez Leal [Tue, 20 Feb 2024 16:28:29 +0000 (17:28 +0100)]
vabase: fail decide allocation if dmabuf without videometa

If the allocation query received from downstream doesn't handle GstVideoMeta but
it requests memory:DMABuf caps feature, it's incomplete, so we rather reject the
negotiation.

Both in base decoder, base transform and compositor.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6155>

15 months agouridecodebin3: Atomically switch urisourcebin
Edward Hervey [Thu, 22 Feb 2024 16:00:50 +0000 (17:00 +0100)]
uridecodebin3: Atomically switch urisourcebin

When switching urisourcebin, ensure that we first unlink *all* pads from
decodebin3 before linking them again.

This is to ensure that decodebin3 completely knows that all previous pads are no
longer needed and can prepare itself to being re-used.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6179>

15 months agouridecodebin3: Unify urisourcebin probe handling
Edward Hervey [Thu, 22 Feb 2024 09:50:15 +0000 (10:50 +0100)]
uridecodebin3: Unify urisourcebin probe handling

Instead of handling events from urisourcebin pads in different probes (a
blocking and regular one), move it all to the non-blocking one.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6179>

15 months agosoup: Re-add soup-lookup-dep option
Nirbheek Chauhan [Fri, 23 Feb 2024 06:15:50 +0000 (11:45 +0530)]
soup: Re-add soup-lookup-dep option

It's still useful on Linux since it ensures that the tests are going
to be built, since they use the same dep lookup as the plugin now.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6197>

15 months agortp: Fix constant for maximum two-byte RTP header extension length
Sebastian Dröge [Thu, 22 Feb 2024 11:29:19 +0000 (13:29 +0200)]
rtp: Fix constant for maximum two-byte RTP header extension length

The value is stored as an 8 bit integer, with 0 meaning that there is
not data for this extension. That means that the maximum length is 255
bytes and not 256 bytes.

On the other hand, the one-byte RTP header extensions are storing the
length as a 4 bit integer with an offset of 1 (i.e. 0 means 1 byte
extension length), so here 16 is the correct maximum length.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6180>

15 months agogstplay: Fix typos in documentation
naglis [Thu, 22 Feb 2024 07:41:00 +0000 (09:41 +0200)]
gstplay: Fix typos in documentation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6177>

15 months agonvcodec: Add plugin status message
Seungha Yang [Tue, 20 Feb 2024 16:13:02 +0000 (01:13 +0900)]
nvcodec: Add plugin status message

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6167>

15 months agoamfcodec: Add plugin status message
Seungha Yang [Tue, 20 Feb 2024 15:57:32 +0000 (00:57 +0900)]
amfcodec: Add plugin status message

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6167>

15 months agovabasedec: refactor format and capsfeature selection
Víctor Manuel Jáquez Leal [Mon, 19 Feb 2024 21:17:42 +0000 (22:17 +0100)]
vabasedec: refactor format and capsfeature selection

This is a simplification of the venerable
gst_va_base_dec_get_preferred_format_and_caps_features() function, which
predates since gstreamer-vaapi. It's used to select the format and the
capsfeature to use when setting the output state. It was complex and hard to
follow. This refactor simplifies a lot the algorithm.

The first thing to remove _downstream_has_video_meta() since, most of the time
it will be called before the caps negotiation, and allocation queries make sense
only after caps negotiation. It might work during renegotiation but, in that
case, caps feature change is uncommon. Better a simple and common approach.

Also, for performance, instead of dealing with caps features as strings, GQuarks
are used.

The refactor works like this:

1. If peer pad returns any caps, the returned caps feature is system memory and
   looks for a proper format in the allowed caps.

2. The allowed caps are traversed at most 3 times: one per each valid caps
   feature. First VAMemory, later DMABuf, and last system memory. The first to
   match in allowed caps is picked, and the first format matching with the
   chroma is picked too.

Notice that, right now, using playbin videoconvert never return any.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6154>

15 months agoappsrc: clear eos flag on flush stop event
Jeongki Kim [Thu, 22 Feb 2024 14:41:12 +0000 (23:41 +0900)]
appsrc: clear eos flag on flush stop event

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6186>

15 months agoavviddec: Fix crash with FFmpeg n6.0
Seungha Yang [Thu, 22 Feb 2024 14:13:53 +0000 (23:13 +0900)]
avviddec: Fix crash with FFmpeg n6.0

FFmpeg version 6.0 has an AV_CODEC_FLAG_COPY_OPAQUE related bug.

See https://github.com/FFmpeg/FFmpeg/commit/a3bf63c26e6197a9b6e490538667368530a9dcd3

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6184>

15 months agourisourcebin: Use atomic lock for detecting shutdown
Edward Hervey [Thu, 22 Feb 2024 10:09:24 +0000 (11:09 +0100)]
urisourcebin: Use atomic lock for detecting shutdown

This fixes lock ordering issues

Fixes #3323

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6178>

15 months agosubtitleoverlay: Also use "Decoder/Subtitle" elements
Edward Hervey [Thu, 22 Feb 2024 14:24:57 +0000 (15:24 +0100)]
subtitleoverlay: Also use "Decoder/Subtitle" elements

Elements that "decoded" subtitle formats to raw text were historically
classified as "Parser" and not "Decoder. This is being gradually fixed.

This commit ensures that both classification are allowed

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6153>

15 months agoplaybin3: Inform (uri)decodebin3 of the subtitle caps from playsink
Edward Hervey [Tue, 20 Feb 2024 15:04:09 +0000 (16:04 +0100)]
playbin3: Inform (uri)decodebin3 of the subtitle caps from playsink

Subtitles are better handled by overlayers/renderers within playsink. By
informing (uri)decodebin3 of the formats that can be handled we can avoid those
being "decoded" too early.

Fixes #1081

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6153>

15 months agoparsebin: Use pbutils utils to identify more stream types
Edward Hervey [Tue, 20 Feb 2024 15:02:25 +0000 (16:02 +0100)]
parsebin: Use pbutils utils to identify more stream types

Handles all cases provided they are identified in the pbutils descriptions
list.

Fixes #1081

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6153>

15 months agosubparsers: Give proper category to subtitle "decoders"
Edward Hervey [Tue, 20 Feb 2024 15:00:07 +0000 (16:00 +0100)]
subparsers: Give proper category to subtitle "decoders"

Some subtitle "decoders" had a wrong category of "Parser", which `parsebin`
relies on to identify elements which do not *decode* streams but *parse* them.

This would cause such subtitle decoders to be plugged in within parsebin,
preventing the original stream to be properly used by (more efficient)
downstream decoders or subtitle renderers.

Fixes #1757

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6153>

15 months agoci: Ensure gtk-sharp uses the same revision in both places
Piotr Brzeziński [Thu, 22 Feb 2024 12:59:00 +0000 (13:59 +0100)]
ci: Ensure gtk-sharp uses the same revision in both places

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6182>

15 months agocsharp: Change gtk-sharp revision in gstreamer-sharp subproject to match monorepo...
Piotr Brzeziński [Thu, 22 Feb 2024 12:08:02 +0000 (13:08 +0100)]
csharp: Change gtk-sharp revision in gstreamer-sharp subproject to match monorepo subproject

Fixes build issues when building gstreamer-sharp separately from the monorepo.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6182>

15 months agomsdk: Fix possible memory leaks
Mengkejiergeli Ba [Mon, 19 Feb 2024 04:50:53 +0000 (12:50 +0800)]
msdk: Fix possible memory leaks

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6161>

15 months agoexamples/qmlsinnk-multisink: allow running with leaks tracer
Matthew Waters [Wed, 21 Feb 2024 08:13:45 +0000 (19:13 +1100)]
examples/qmlsinnk-multisink: allow running with leaks tracer

Include a gst_deinit() after the qml engine has been destroyed.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6160>

15 months agoexamples/qml: fix some leaks in the multisink example
Matthew Waters [Wed, 21 Feb 2024 08:11:59 +0000 (19:11 +1100)]
examples/qml: fix some leaks in the multisink example

A GstPad was being leaked and possibly the qmlglsink element depending
on if Qt runs the scenegraph thread again when destroying the example
video item.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6160>

15 months agoqml, qml6: Fix leak of QSGMaterial/Geometry (and therefore a possible GstBuffer)
Matthew Waters [Wed, 21 Feb 2024 08:09:20 +0000 (19:09 +1100)]
qml, qml6: Fix leak of QSGMaterial/Geometry (and therefore a possible GstBuffer)

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6160>

15 months agoqml6: fix a leak of the wrapped QSGTextures
Matthew Waters [Wed, 7 Feb 2024 04:04:53 +0000 (15:04 +1100)]
qml6: fix a leak of the wrapped QSGTextures

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6160>

15 months agogl/x11: fix memory leak when retrieiving a foreign context's info
Matthew Waters [Wed, 7 Feb 2024 01:26:04 +0000 (12:26 +1100)]
gl/x11: fix memory leak when retrieiving a foreign context's info

The FBConfig's were being leaked.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6160>

15 months agoptp-helper: Allow sync to master clock on same host
Jochen Henneberg [Wed, 21 Feb 2024 15:56:48 +0000 (16:56 +0100)]
ptp-helper: Allow sync to master clock on same host

If we drop all messages with the same clock id as ours we will also
drop all messages coming from a PTP clock on our host since both clock
ids are build from the same MAC address.

At least for Linux we do not see our own messages anyway since the
network stack can well distinguish between multicast send from our
socket or from another socket on the same machine. To make sure that
this works for all supported platforms just drop delay requests since
this is the only message that is sent from the GStreamer PTP clock.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6172>

15 months agogst-python: Print exception if pygobject fails to initialize
Nirbheek Chauhan [Wed, 21 Feb 2024 11:01:29 +0000 (16:31 +0530)]
gst-python: Print exception if pygobject fails to initialize

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6159>

15 months agomeson: Use cdata.set_quoted() for configuration data
Nirbheek Chauhan [Wed, 21 Feb 2024 06:28:08 +0000 (11:58 +0530)]
meson: Use cdata.set_quoted() for configuration data

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6159>

15 months agoges, gst-python: Fix libpython dlopen on macOS
Nirbheek Chauhan [Wed, 21 Feb 2024 05:56:30 +0000 (11:26 +0530)]
ges, gst-python: Fix libpython dlopen on macOS

First encountered at https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1171#note_2290789

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6159>

15 months agoges, gst-python: Rework libpython loading to be relocatable
Nirbheek Chauhan [Wed, 21 Feb 2024 04:24:22 +0000 (09:54 +0530)]
ges, gst-python: Rework libpython loading to be relocatable

If we don't specify a path for loading, the runtime linker will search
for the library instead, which will use the usual mechanisms: RPATHs,
LD_LIBRARY_PATH, PATH (on Windows), etc.

Also try harder to load a non-devel libpython using INSTSONAME, if
available.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6159>

15 months agomeson: Use host_system for the host_machine system
Nirbheek Chauhan [Wed, 21 Feb 2024 02:59:45 +0000 (08:29 +0530)]
meson: Use host_system for the host_machine system

This is a convention everywhere else in gstreamer.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6159>

15 months agowasapi: Fix alloc/free function mismatch
Seungha Yang [Wed, 21 Feb 2024 12:50:20 +0000 (21:50 +0900)]
wasapi: Fix alloc/free function mismatch

... and fix leak in wasapi device provider

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3326
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6169>

15 months agowasapi2: Fix task memory leak
Seungha Yang [Wed, 21 Feb 2024 12:46:49 +0000 (21:46 +0900)]
wasapi2: Fix task memory leak

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6169>

15 months agocsharp: Add RTSP server example
Piotr Brzeziński [Mon, 22 Jan 2024 20:40:22 +0000 (21:40 +0100)]
csharp: Add RTSP server example

Port of the test-launch.c example from gst-rtsp-server.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5961>

15 months agocsharp: Add GstRtspServer bindings
Piotr Brzeziński [Mon, 22 Jan 2024 20:07:40 +0000 (21:07 +0100)]
csharp: Add GstRtspServer bindings

With a few unnecessary gst_rtsp_stream_transport_* methods manually disabled to avoid compilation errors.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5961>

15 months agocsharp: Make nuget targets depend on underlying libraries
Piotrek Brzeziński [Fri, 19 Jan 2024 12:07:12 +0000 (13:07 +0100)]
csharp: Make nuget targets depend on underlying libraries

Without this, build will fail if meson/ninja decides to call nuget before building gstreamer-sharp.dll.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5961>

15 months agomse: Add logging init for mediasource sample map
ekwange [Thu, 1 Feb 2024 05:49:21 +0000 (14:49 +0900)]
mse: Add logging init for mediasource sample map

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6033>

15 months agortphdrext-clientaudiolevel: Fix typo in documentation
Sebastian Dröge [Wed, 21 Feb 2024 17:21:57 +0000 (19:21 +0200)]
rtphdrext-clientaudiolevel: Fix typo in documentation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6175>

15 months agoadaptivedemux2: fix build with recent meson
Arnaud Vrac [Wed, 21 Feb 2024 12:45:47 +0000 (13:45 +0100)]
adaptivedemux2: fix build with recent meson

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6168>

15 months agoci: vs2022 x86 was only configuring, was not building
Nirbheek Chauhan [Wed, 21 Feb 2024 11:32:18 +0000 (17:02 +0530)]
ci: vs2022 x86 was only configuring, was not building

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6166>

15 months agortpbasedepayload: Add "extensions" property for the currently enabled extensions
Sebastian Dröge [Wed, 21 Feb 2024 10:53:53 +0000 (12:53 +0200)]
rtpbasedepayload: Add "extensions" property for the currently enabled extensions

This works the same way as the one from `rtpbasepayload`.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6163>

15 months agortpbasepayload: Use `gst_value_array_append_and_take_value()` as a micro optimization
Sebastian Dröge [Wed, 21 Feb 2024 11:22:30 +0000 (13:22 +0200)]
rtpbasepayload: Use `gst_value_array_append_and_take_value()` as a micro optimization

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6163>

15 months agortpbasepayload: Also notify "extensions" property when changing list during negotiation
Sebastian Dröge [Wed, 21 Feb 2024 10:55:42 +0000 (12:55 +0200)]
rtpbasepayload: Also notify "extensions" property when changing list during negotiation

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6163>

15 months agortppassthroughpay: fix critical in gst-inspect
Tim-Philipp Müller [Tue, 20 Feb 2024 11:55:25 +0000 (11:55 +0000)]
rtppassthroughpay: fix critical in gst-inspect

gst_segment_to_running_time() will fail noisily
if the segment has not been initialised yet.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6151>

15 months agotests: cudafilter: actually check for cudascale
Kamal Mostafa [Sat, 17 Feb 2024 21:19:15 +0000 (13:19 -0800)]
tests: cudafilter: actually check for cudascale

Actually check for availability of 'cudascale' instead of accidentally
checking for 'cudadownload' twice.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3327
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6158>

15 months agotest: vkimagebufferpool: fix queue leak
Stéphane Cerveau [Mon, 19 Feb 2024 13:24:51 +0000 (14:24 +0100)]
test: vkimagebufferpool: fix queue leak

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6143>

15 months agosoup: Link to libsoup in all cases on non-Linux
Nirbheek Chauhan [Tue, 20 Feb 2024 21:00:11 +0000 (02:30 +0530)]
soup: Link to libsoup in all cases on non-Linux

We have unsolvable issues on macOS because of this, and the feature
was added specifically for issues that occur on Linux distros since
they ship both libsoup 2.4 and 3.0.

Everyone else should just pick one and use it, since you cannot mix
the two in a single process anyway.

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

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6156>

15 months agortspsrc: Reset combined flows after a seek before restarting
Jan Schmidt [Sat, 17 Feb 2024 12:33:26 +0000 (23:33 +1100)]
rtspsrc: Reset combined flows after a seek before restarting

After a flushing seek, rtspsrc doesn't reset the last_ret value for
streams, so might immediately shut down again when it resumes pushing
buffers to pads due to a cached `GST_FLOW_FLUSHING` result

Prevent a stored flushing value from immediately stopping
playback again by resetting pad flows before (re)starting
playback.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6137>

15 months agoqsv: use new plugin status message API
Tim-Philipp Müller [Sat, 28 Jan 2023 02:15:24 +0000 (02:15 +0000)]
qsv: use new plugin status message API

Minimal example.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3832>

15 months agogst-inspect: print plugin error/warning/info status messages
Tim-Philipp Müller [Sat, 28 Jan 2023 01:11:45 +0000 (01:11 +0000)]
gst-inspect: print plugin error/warning/info status messages

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3832>

15 months agoplugin: add API for plugins to provide status info messages
Tim-Philipp Müller [Fri, 27 Jan 2023 19:08:37 +0000 (19:08 +0000)]
plugin: add API for plugins to provide status info messages

This can be used to store informational messages, errors or
warnings which can later be shown to the user in gst-inspect-1.0,
which can be useful for plugins that expose elements dynamically
based on external libraries or hardware capabilities.

Status messages can then provide an indication as to why a
plugin doesn't have any elements listed, for example.

Plus unit test to make sure code paths are exercised a little.

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3832>

15 months agogstobject: add CONSTRUCTED flag
Tim-Philipp Müller [Mon, 29 Jan 2024 19:47:11 +0000 (19:47 +0000)]
gstobject: add CONSTRUCTED flag

This can be used later by base class APIs to know whether they're
called from a subclass instance init function (where the object
isn't properly constructed yet and one should only really poke
at the instance structure but not much else) or after object
construction has been finished.

Fix up GstBin unit test for CONSTRUCTED flag addition.

See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2794

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6150>

15 months agoci: Run the commit lint job as a user
Jordan Petridis [Thu, 4 Jan 2024 12:35:45 +0000 (14:35 +0200)]
ci: Run the commit lint job as a user

Part of #2433

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5938>

15 months agometa: Skip gst_meta_info_new in gir
Edward Hervey [Tue, 20 Feb 2024 07:54:11 +0000 (08:54 +0100)]
meta: Skip gst_meta_info_new in gir

```
gstmeta.c:500: Warning: Gst: gst_meta_info_new: return value: Invalid
non-constant return of bare structure or union; register as boxed type or (skip)
```

Skip this for now

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6147>

15 months agowasapi2: Respect ringbuffer buffer/latency time
Seungha Yang [Mon, 19 Feb 2024 11:57:26 +0000 (20:57 +0900)]
wasapi2: Respect ringbuffer buffer/latency time

Decide buffer size based on configured buffer/latency time
if low-latency is disabled, so that ringbuffer can buffer more
than minimum required size.

Fixes: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2870
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6141>

15 months agompegst: Fix ownership of return value
Edward Hervey [Tue, 20 Feb 2024 07:47:21 +0000 (08:47 +0100)]
mpegst: Fix ownership of return value

This inherits from the same rule as gst_buffer_add_meta

```
gst-mpegtspesmetadatameta.h:98: Warning: GstMpegts:
gst_buffer_add_mpegts_pes_metadata_meta: return value: Invalid non-constant
return of bare structure or union; register as boxed type or (skip)
```

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6146>

15 months agoosxaudio: add mapping for top/left/right surround channels
Maksym Khomenko [Wed, 29 Nov 2023 15:43:30 +0000 (17:43 +0200)]
osxaudio: add mapping for top/left/right surround channels

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5731>

15 months agoosxaudio: correct mapping for left/right surround
Maksym Khomenko [Wed, 29 Nov 2023 15:40:52 +0000 (17:40 +0200)]
osxaudio: correct mapping for left/right surround

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5731>

15 months agoprotection: Document `original-media-type` caps field
Philippe Normand [Mon, 19 Feb 2024 12:25:01 +0000 (12:25 +0000)]
protection: Document `original-media-type` caps field

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6142>

15 months agouridecodebin3: fix deadlock when switching input item
Guillaume Desmottes [Mon, 19 Feb 2024 14:55:55 +0000 (15:55 +0100)]
uridecodebin3: fix deadlock when switching input item

There was a race between urisourcebin src pad handlers.
One was starting the next item before the other was blocked.

See
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3297#note_2288799
for details.

Fix #3297

Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6145>