platform/upstream/gstreamer.git
17 months agowebrtc: implement support for msid values
Matthew Waters [Tue, 18 Oct 2022 01:17:04 +0000 (12:17 +1100)]
webrtc: implement support for msid values

Local msid values are taken from sink pad property, or fallback to the
previously used cname.

The remote msid values are exposed on the relevant src pads.

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

17 months agomacos: Add wrapper API to run a NSApplication in the main thread
Piotr Brzeziński [Tue, 13 Dec 2022 17:42:11 +0000 (18:42 +0100)]
macos: Add wrapper API to run a NSApplication in the main thread

On macOS, a Cocoa event loop is needed in the main thread to ensure
things like opening a GL window work correctly. In the past, this was
patched into glib via Cerbero, but that prevented us from updating it.
This workaround simply runs an NSApplication and then calls the
main function on a secondary thread, allowing GStreamer to correctly
display windows and/or system permission prompts, for example.

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

17 months agosystemclock: Use `futex_time64` syscall if available (32-bit systems) and use correct...
Sebastian Dröge [Mon, 12 Dec 2022 09:34:51 +0000 (11:34 +0200)]
systemclock: Use `futex_time64` syscall if available (32-bit systems) and use correct `struct timespec` definition

See also https://gitlab.gnome.org/GNOME/glib/-/issues/2634

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

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

17 months agogst_init: Removed wrong warning in docstring
sezanzeb [Sat, 15 Aug 2020 12:53:13 +0000 (12:53 +0000)]
gst_init: Removed wrong warning in docstring

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

17 months agoh264parser: Update doc for GST_H264_FRMAE_PACKING_TOP_BOTTOM
Seungha Yang [Mon, 12 Dec 2022 19:31:24 +0000 (04:31 +0900)]
h264parser: Update doc for GST_H264_FRMAE_PACKING_TOP_BOTTOM

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

17 months agoh264parser: typo fix in enum value
Brad Hards [Sun, 7 Nov 2021 00:18:15 +0000 (11:18 +1100)]
h264parser: typo fix in enum value

Old value is marked deprecated, new enum with same entry is added. Should be binary compatible.

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

17 months agovideo-format: Add macro checking for validity of GstVideoFormatInfo
Philippe Normand [Mon, 12 Dec 2022 13:43:30 +0000 (13:43 +0000)]
video-format: Add macro checking for validity of GstVideoFormatInfo

Mostly to maintain consistency with the GST_AUDIO_FORMAT_INFO_IS_VALID_RAW
macro.

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

17 months agoaudio-format: Add macro checking for validity of GstAudioFormatInfo
Philippe Normand [Wed, 27 Jul 2022 08:39:52 +0000 (09:39 +0100)]
audio-format: Add macro checking for validity of GstAudioFormatInfo

`gst_audio_format_info_fill_silence()` not properly checking the validity of its
input may lead it into an infinite loop.

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

17 months agowebrtc/signalling: Give a helpful error when starting a double-session
Nirbheek Chauhan [Mon, 12 Dec 2022 14:39:00 +0000 (20:09 +0530)]
webrtc/signalling: Give a helpful error when starting a double-session

If the peer is already in a session and tries to start a new one, give
them a helpful error.

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

17 months agogst-examples: webrtc: signalling: simple-server Fix condition when calling a busy...
byran77 [Mon, 15 Nov 2021 09:04:07 +0000 (17:04 +0800)]
gst-examples: webrtc: signalling: simple-server Fix condition when calling a busy peer

When a session request is coming in, ERROR occurs when the callee is busy.
But peer_status is the status of the caller, which is of course None when
calling someone, while self.peers[callee_id][2] is that of the callee.

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

17 months agojpegdec: Enable packetized if sink caps contains parsed as true.
Víctor Manuel Jáquez Leal [Sun, 22 May 2022 08:46:12 +0000 (10:46 +0200)]
jpegdec: Enable packetized if sink caps contains parsed as true.

jpegdec is capable to parse input frames, but if jpegparse is before,
there's no need to reparse frames. This patch configure jpegdec as
packetized, skipping parsing, if negotiated sink caps has the boolean
field 'parsed' as true.

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

17 months agompegts: Handle when iconv doesn't support ISO 6937
A. Wilcox [Sat, 22 Oct 2022 03:46:16 +0000 (22:46 -0500)]
mpegts: Handle when iconv doesn't support ISO 6937

Systems like musl libc don't support ISO 6937 in iconv.  This ensures
that the MPEG-TS plugin can cope with that.  There is existing support
in the plugin for other methods, so it seems to have been the original
intent anyway.

Fixes: #1314
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3245>

17 months agopulsesink: Fix occasional period of silence on resume
Henry Hoegelow [Tue, 27 Sep 2022 09:44:51 +0000 (09:44 +0000)]
pulsesink: Fix occasional period of silence on resume

According to comment in gst_pulsering_stream_latency_cb, latency updates
happen every 100 ms. The code in gst_pulsering_stream_latency_cb does
not care about the actual state of the ringbuffer, pbuf->acquired or
not.
Thus, every 100 ms the ringbuf->segdone may be set, even though the
object itself might be in 'destroyed' state. On next
gst_pulseringbuffer_acquire the segdone is not touched, so playback may
resume with invalid/wrong segdone value. This finally leads to a period
of silence playing after resuming the pipeline.

The problem was found on 'not-yet-released'-hardware and so far was not
reproducible on desktop computer.

Removing the callback as long as the ringbuffer is not in 'acquired'
state solves the problem reliably on the hardware device that the issue
was detected on.

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

17 months agotimeoverlay: fix pad leak
Tim-Philipp Müller [Sun, 11 Dec 2022 17:36:53 +0000 (17:36 +0000)]
timeoverlay: fix pad leak

Spotted by Jiri Uncovsky.

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

17 months agovaallocator: Fix gi annotations.
Víctor Manuel Jáquez Leal [Sun, 11 Dec 2022 09:12:25 +0000 (10:12 +0100)]
vaallocator: Fix gi annotations.

Remove spurious types and skip functions that returns VASurfaceID
which isn't exposed to introspection.

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

17 months agozxing: update to 1.4.0 tag
Stéphane Cerveau [Tue, 22 Nov 2022 11:32:52 +0000 (12:32 +0100)]
zxing: update to 1.4.0 tag

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

17 months agovaapi: prefix USE_FOO defines to fix build with mesa 22.3.0
Tim-Philipp Müller [Sat, 10 Dec 2022 13:11:08 +0000 (13:11 +0000)]
vaapi: prefix USE_FOO defines to fix build with mesa 22.3.0

Apparently mesa 22.3.0 has updated the egl headers, and eglplatform.h now
contains commit
https://github.com/KhronosGroup/EGL-Registry/pull/130/commits/3670d645f4a26a0a9e87e7f3a8608e7cc1d53b5b
after which xlib headers don't get included by default anymore but are
dependent upon whether USE_X11 was defined.

This breaks headless builds of gstreamer-vaapi because we always define
an internal define USE_X11 as either 1 or 0.

Change these defines to GST_VAAPI_USE_XYZ instead to avoid this.

Fixes #1634

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

17 months agodocs: specify possibility of a NULL return
Hugo Svirak [Wed, 7 Dec 2022 21:57:31 +0000 (21:57 +0000)]
docs: specify possibility of a NULL return

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

17 months agoci: pin hotdoc to 0.13.7 for now, 0.14 has a regression
Nirbheek Chauhan [Mon, 5 Dec 2022 12:40:14 +0000 (18:10 +0530)]
ci: pin hotdoc to 0.13.7 for now, 0.14 has a regression

```
ERROR: [links]: (mandatory-link-not-found): Mandatory link Link GstGLSinkBin -> None (GstGLSinkBin) could not be resolved
ERROR: [links]: (mandatory-link-not-found): Mandatory link Link GstRTPMux -> None (GstRTPMux) could not be resolved
ERROR: [links]: (mandatory-link-not-found): Mandatory link Link GstSRTSink -> None (GstSRTSink) could not be resolved
ERROR: [links]: (mandatory-link-not-found): Mandatory link Link GstSRTSrc -> None (GstSRTSrc) could not be resolved
```

Same change was already made in the 1.20 branch:

https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1582#note_1669723

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

17 months agoci: Bump image tags to rebuild new fedora / windows images
Nirbheek Chauhan [Mon, 5 Dec 2022 12:40:14 +0000 (18:10 +0530)]
ci: Bump image tags to rebuild new fedora / windows images

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

17 months agomeson: Update some more wraps
Nirbheek Chauhan [Mon, 5 Dec 2022 12:28:23 +0000 (17:58 +0530)]
meson: Update some more wraps

At least the libxml2 update fixes a failure on macOS, the rest are
happening for free.

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

17 months agompegts: Check continuity counter on section streams
Edward Hervey [Tue, 6 Dec 2022 10:30:47 +0000 (11:30 +0100)]
mpegts: Check continuity counter on section streams

This wasn't really done, and is needed in order to detect potential section
changes for sections that have got identical information (such as when switching
between streams that have the same PAT/PMT pid and subtable information).

Other checks exist in tsbase to detect if the "new" PAT/PMT really is an update or not.

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

17 months agortpvp9depay: expose keyframe-related properties
Mathieu Duponchelle [Fri, 14 May 2021 21:06:43 +0000 (23:06 +0200)]
rtpvp9depay: expose keyframe-related properties

This simply brings in the wait-for-keyframe and request-keyframe
properties from rtpvp8depay.

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

17 months agomultiqueue: update for renamed log id macros
Tim-Philipp Müller [Sat, 10 Dec 2022 11:33:38 +0000 (11:33 +0000)]
multiqueue: update for renamed log id macros

See #1635.

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

17 months agoinfo: rename new log macros from GST_*_OBJECT_ID -> GST_*_ID
Tim-Philipp Müller [Sat, 10 Dec 2022 11:32:25 +0000 (11:32 +0000)]
info: rename new log macros from GST_*_OBJECT_ID -> GST_*_ID

Fixes #1635

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

17 months agogstplugin: Handle static plugins in gst_plugin_load_by_name()
Jan Schmidt [Fri, 9 Dec 2022 16:54:23 +0000 (03:54 +1100)]
gstplugin: Handle static plugins in gst_plugin_load_by_name()

gst_plugin_load_by_name() assumed a plugin has a filename,
which isn't true for static plugins, leading to criticals.

If a plugin is already loaded, just return the loaded plugin,
which makes it work for static plugins as well as saving a
moment for already-loaded dynamic plugins.

Add locking in gst_plugin_is_loaded(), as a plugin may be
still being loaded in another thread.

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

17 months agoexamples: webrtc: fix unidirectional pipeline
Guillaume Desmottes [Fri, 9 Dec 2022 12:49:44 +0000 (13:49 +0100)]
examples: webrtc: fix unidirectional pipeline

'autoaudiosrc' does not have a 'is-live' property.

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

17 months agocuda: Fix runtime compiler library loading on Windows
Seungha Yang [Wed, 7 Dec 2022 21:05:25 +0000 (06:05 +0900)]
cuda: Fix runtime compiler library loading on Windows

The cuda is a part of GPU driver but runtime compiler is a part of
cuda toolkit, which means the version number can be different.

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

17 months agocuda: Hide memory copy util function
Seungha Yang [Wed, 7 Dec 2022 20:58:48 +0000 (05:58 +0900)]
cuda: Hide memory copy util function

The method was intended to be used by only cudaupload/download elements
and not ready to be a part of public API

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

17 months agoksvideosrc: Warn for deprecated plugin use
Seungha Yang [Wed, 7 Dec 2022 19:32:47 +0000 (04:32 +0900)]
ksvideosrc: Warn for deprecated plugin use

This plugin should not be used any more

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

17 months agowinscreencap: Warn for deprecated plugin use
Seungha Yang [Wed, 7 Dec 2022 19:25:55 +0000 (04:25 +0900)]
winscreencap: Warn for deprecated plugin use

This plugin should not be used any more

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

17 months agoproxysink: Post EOS message on EOS event
Seungha Yang [Sat, 26 Nov 2022 15:26:22 +0000 (00:26 +0900)]
proxysink: Post EOS message on EOS event

proxysink is actual sink (GST_ELEMENT_FLAG_SINK flag has configured)
so it should post EOS message.

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

17 months agoqtdemux: exit when protection caps are not defined during PIFF parsing
Jacek Skiba [Wed, 7 Dec 2022 08:47:49 +0000 (09:47 +0100)]
qtdemux: exit when protection caps are not defined during PIFF parsing

Reproduction testcase (uses PlayReady):
https://developers.canal-plus.com/rx-player/upc/?appTileLocation=[object%20Object]

In test streams we are using PIFF box, but caps did not had
present GST_PROTECTION_SYSTEM_ID_CAPS_FIELD. In consequence, invalid
system_id was returned which caused SIGSEGV crash.

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

17 months agoh264parse: Avoid setting wrong colorimetry info if the stream doesn't contain it
Thibault Saunier [Wed, 7 Dec 2022 15:28:55 +0000 (12:28 -0300)]
h264parse: Avoid setting wrong colorimetry info if the stream doesn't contain it

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

17 months agotextrender: Negotiate caps on a GAP event if none were negotiated yet
Sebastian Dröge [Wed, 7 Dec 2022 12:49:05 +0000 (14:49 +0200)]
textrender: Negotiate caps on a GAP event if none were negotiated yet

Otherwise downstream wouldn't have received a segment event either and
wouldn't know what to do with the gap event

And also forward any pending segment event.

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

17 months agoh265decoder: Do not abort when failed to prepare ref pic set
Marek Olejnik [Thu, 1 Dec 2022 17:35:07 +0000 (19:35 +0200)]
h265decoder: Do not abort when failed to prepare ref pic set

Currently the element calls abort when failed to prepare reference
picture set. This can happent when the input stream is somehow
corrupted, like a rtsp strem with lost packets. Now it will only
return with GST_FLOW_ERROR instead of terminating whole process.

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

17 months agomeson: fix check for pthread_setname_np()
Tim-Philipp Müller [Wed, 7 Dec 2022 11:49:40 +0000 (11:49 +0000)]
meson: fix check for pthread_setname_np()

Need to define _GNU_SOURCE.

Fixes #1542

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

17 months agodvbsubenc: Forward GAP events as-is if we wouldn't produce an end packet and are...
Sebastian Dröge [Wed, 7 Dec 2022 08:21:52 +0000 (10:21 +0200)]
dvbsubenc: Forward GAP events as-is if we wouldn't produce an end packet and are not in the middle of an existing subtitle

An end packet is only produced once for the last subtitle, so multiple
GAP events between subtitles would result only in a single end packet
and nothing else otherwise. This would potentially starve downstream
then, so instead forward the GAP events in that case.

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

17 months agoci: build less for integration testsuite
Tim-Philipp Müller [Sat, 26 Nov 2022 10:02:17 +0000 (11:02 +0100)]
ci: build less for integration testsuite

- skip gst-omx
- skip sharp bindings
- skip examples and gst-examples
- skip check unit tests (only needed for check job)
- skip microdns (not needed and pulls in subproject)
- skip avtp (ditto)
- skip webrtc (same)
- skip benchmarks
- skip qt5 and gtk

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

17 months agoexamples: webrtc: fix plugins check
Guillaume Desmottes [Mon, 5 Dec 2022 14:58:46 +0000 (15:58 +0100)]
examples: webrtc: fix plugins check

`videoconvert` and `videoscale` are now part of the `videoconvertscale`
plugin, see d11f13f476411b828387c3c26619bc77c255affb

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

17 months agodirectshow: Fix build error with glib 2.75 and newer
Nirbheek Chauhan [Mon, 5 Dec 2022 14:00:43 +0000 (19:30 +0530)]
directshow: Fix build error with glib 2.75 and newer

Starting with glib 2.75, `NULL` is `nullptr`, which cannot be
implicitly coerced to `0`, unlike `NULL`. So explicitly pass `0`.

```
[3206/4524] Compiling C++ object subprojects/gst-plugins-bad/sys/directshow/gstdirectshow.dll.p/dshowvideosink.cpp.obj
FAILED: subprojects/gst-plugins-bad/sys/directshow/gstdirectshow.dll.p/dshowvideosink.cpp.obj
"cl" "-Isubprojects\gst-plugins-bad\sys\directshow\gstdirectshow.dll.p" "-Isubprojects\gst-plugins-bad\sys\directshow" "-I..\subprojects\gst-plugins-bad\sys\directshow" "-Isubprojects\gst-plugins-bad" "-I..\subprojects\gst-plugins-bad" "-Isubprojects\gst-plugins-base\gst-libs" "-I..\subprojects\gst-plugins-base\gst-libs" "-Isubprojects\gstreamer\libs" "-I..\subprojects\gstreamer\libs" "-Isubprojects\gstreamer" "-I..\subprojects\gstreamer" "-Isubprojects\orc" "-I..\subprojects\orc" "-I..\subprojects\gst-plugins-bad\sys\directshow\strmbase\baseclasses" "-Isubprojects\gst-plugins-base\gst-libs\gst\video" "-Isubprojects\gstreamer\gst" "-Isubprojects\gst-plugins-base\gst-libs\gst\audio" "-Isubprojects\gst-plugins-base\gst-libs\gst\tag" "-IC:/gst-install/include/glib-2.0" "-IC:/gst-install/lib/glib-2.0/include" "-IC:/gst-install/include" "/MD" "/nologo" "/showIncludes" "/utf-8" "/W2" "/EHsc" "/O2" "/Zi" "/wd4018" "/wd4146" "/wd4244" "/wd4305" "/utf-8" "/we4002" "/we4003" "/we4013" "/we4020" "/we4027" "/we4029" "/we4033" "/we4045" "/we4047" "/we4053" "/we4062" "/we4098" "/we4101" "/we4189" "/utf-8" "-D_MBCS" "/wd4189" "/wd4456" "/wd4701" "/wd4703" "/wd4706" "/wd4996" "-DHAVE_CONFIG_H" "/Fdsubprojects\gst-plugins-bad\sys\directshow\gstdirectshow.dll.p\dshowvideosink.cpp.pdb" /Fosubprojects/gst-plugins-bad/sys/directshow/gstdirectshow.dll.p/dshowvideosink.cpp.obj "/c" ../subprojects/gst-plugins-bad/sys/directshow/dshowvideosink.cpp
../subprojects/gst-plugins-bad/sys/directshow/dshowvideosink.cpp(62): warning C5051: attribute 'noinline' requires at least '/std:c++20'; ignored
../subprojects/gst-plugins-bad/sys/directshow/dshowvideosink.cpp(123): error C2664: 'LRESULT SendMessageA(HWND,UINT,WPARAM,LPARAM)': cannot convert argument 3 from 'nullptr' to 'WPARAM'
../subprojects/gst-plugins-bad/sys/directshow/dshowvideosink.cpp(123): note: A native nullptr can only be converted to bool or, using reinterpret_cast, to an integral type
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\winuser.h(3690): note: see declaration of 'SendMessageA'
../subprojects/gst-plugins-bad/sys/directshow/dshowvideosink.cpp(635): error C2664: 'BOOL SystemParametersInfoA(UINT,UINT,PVOID,UINT)': cannot convert argument 2 from 'nullptr' to 'UINT'
../subprojects/gst-plugins-bad/sys/directshow/dshowvideosink.cpp(635): note: A native nullptr can only be converted to bool or, using reinterpret_cast, to an integral type
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\winuser.h(13153): note: see declaration of 'SystemParametersInfoA'
../subprojects/gst-plugins-bad/sys/directshow/dshowvideosink.cpp(1593): error C2664: 'LRESULT SendMessageA(HWND,UINT,WPARAM,LPARAM)': cannot convert argument 3 from 'nullptr' to 'WPARAM'
../subprojects/gst-plugins-bad/sys/directshow/dshowvideosink.cpp(1593): note: A native nullptr can only be converted to bool or, using reinterpret_cast, to an integral type
C:\Program Files (x86)\Windows Kits\10\include\10.0.19041.0\um\winuser.h(3690): note: see declaration of 'SendMessageA'
```

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

17 months agogstreamer-full: use the basename of plugin_path to avoid the ':' detection
Stéphane Cerveau [Mon, 5 Dec 2022 08:50:43 +0000 (08:50 +0000)]
gstreamer-full: use the basename of plugin_path to avoid the ':' detection

The absolute path on windows contains ':' which prevents
gstinitstaticplugins.py to work properly. Use the basename whic is good
enough for the script to make the list of plugins

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

17 months agoadaptivedemux2: Don't allow stream selection while switching periods
Edward Hervey [Mon, 5 Dec 2022 09:55:57 +0000 (10:55 +0100)]
adaptivedemux2: Don't allow stream selection while switching periods

The stream selection is done on the currently outputting tracks, but in order to
(de)activate the backing streams we can only do it if the input and output
period are identical.

Fixes crash when doing stream selection during period migration

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

17 months agogstinfo: Minor modification to avoid gst-indent pain
Edward Hervey [Tue, 29 Nov 2022 14:12:51 +0000 (15:12 +0100)]
gstinfo: Minor modification to avoid gst-indent pain

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

17 months agomultiqueue: Use new id-based debugging methods
Edward Hervey [Tue, 29 Nov 2022 09:03:14 +0000 (10:03 +0100)]
multiqueue: Use new id-based debugging methods

Clarifies the debug logs

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

17 months agogstinfo: Allow passing a string identifier for debugging
Edward Hervey [Tue, 29 Nov 2022 08:37:00 +0000 (09:37 +0100)]
gstinfo: Allow passing a string identifier for debugging

This adds "id" variants to most debugging functions, and allows providing a
string identifier instead of a GObject.

This allows providing unified and clearer debug logs for all the
non-gobject-based items, and opens the way for more unified logging.

As an extension, copying the object name is avoided as much as possible, by
using it directly instead of going through another copy.

* API : gst_debug_message_get_object_id

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

17 months agoBack to development
Tim-Philipp Müller [Mon, 5 Dec 2022 02:29:08 +0000 (02:29 +0000)]
Back to development

17 months agoRelease 1.21.3
Tim-Philipp Müller [Mon, 5 Dec 2022 01:28:21 +0000 (01:28 +0000)]
Release 1.21.3

17 months agoRemove ChangeLog files from git repository
Tim-Philipp Müller [Sun, 4 Dec 2022 12:25:41 +0000 (12:25 +0000)]
Remove ChangeLog files from git repository

This information is tracked fully in the git repository, so
no point having the ChangeLog duplicate it, and it interferes
with grepping the repository.

We are going to create the ChangeLogs on the fly when generating
tarballs going forward (with a limited history), since it's still
valuable for tarball consumers to be able to easily see a list of
recent changes.

Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer-project/-/issues/73

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

17 months agomeson: Generate ChangeLog files for release tarballs on dist
Tim-Philipp Müller [Mon, 7 Nov 2022 00:10:39 +0000 (00:10 +0000)]
meson: Generate ChangeLog files for release tarballs on dist

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

17 months agoflacparse: Fix handling of headers advertising 32bps
Philippe Normand [Sun, 4 Dec 2022 11:44:17 +0000 (11:44 +0000)]
flacparse: Fix handling of headers advertising 32bps

According to the flac bitstream format specification, the sample size in bits
corresponding to `111` is 32 bits per sample.

https://xiph.org/flac/format.html#frame_header

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

17 months agov4l2src: Fix crash in renegotiation
Nicolas Dufresne [Fri, 2 Dec 2022 17:15:34 +0000 (12:15 -0500)]
v4l2src: Fix crash in renegotiation

This regression was introduce by fix for making buffer pool thread safe. When
we renegotiate, the pool will be setup after we set the format. But the code
has been simplified to only get the pool once before, which caused a null
pointer deref.

Fixes 94ba019 ("v4l2: Fix SIGSEGV on 'change state' during 'format change'")
Related to !3481
Fixes #1626

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

17 months agoChange name of property from Exists to Availability
tasoss foobaridis [Fri, 2 Dec 2022 13:35:50 +0000 (13:35 +0000)]
Change name of property from Exists to Availability

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

17 months agoges: Add API to disable timeline coherence checks
Thibault Saunier [Wed, 26 Oct 2022 02:12:00 +0000 (23:12 -0300)]
ges: Add API to disable timeline coherence checks

There are cases where user might want to be in full control of the
timeline and not be limited by the checks that are being done by GES
to go from one timeline layout to another, this should be doable as
it is a valid use case.

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

17 months agod3d11av1dec: Promote rank to primary + 1
Seungha Yang [Wed, 30 Nov 2022 18:52:53 +0000 (03:52 +0900)]
d3d11av1dec: Promote rank to primary + 1

... so that this element can have higher rank than the other software
AV1 decoders

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

17 months agogit: Show all suggestions on pre-commit hook
Colin Kinloch [Thu, 1 Dec 2022 18:45:59 +0000 (18:45 +0000)]
git: Show all suggestions on pre-commit hook

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

17 months agouridecodebin3: Protect against NULL uri/suburi
Edward Hervey [Fri, 2 Dec 2022 14:52:56 +0000 (15:52 +0100)]
uridecodebin3: Protect against NULL uri/suburi

Fixes #1625

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

17 months agoREADME: Add section how to build and visualize documentation
Xavier Claessens [Mon, 21 Nov 2022 16:38:39 +0000 (11:38 -0500)]
README: Add section how to build and visualize documentation

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

17 months agomeson: Add toplevel "gst-doc" alias target
Xavier Claessens [Mon, 21 Nov 2022 16:21:27 +0000 (11:21 -0500)]
meson: Add toplevel "gst-doc" alias target

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

17 months agomeson: Add doc directory to XDG_DATA_DIRS
Xavier Claessens [Mon, 21 Nov 2022 15:20:41 +0000 (10:20 -0500)]
meson: Add doc directory to XDG_DATA_DIRS

gst-env.py does it already, but it was missing from meson devenv.

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

17 months agomultiqueue: Handle gapless with flushing
Edward Hervey [Wed, 30 Nov 2022 15:16:53 +0000 (16:16 +0100)]
multiqueue: Handle gapless with flushing

Don't reset the stream-start group-id when stop/pausing single queues. They are
only resetted when re-used (in READY->PAUSED).

Fixes #1586

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

17 months agouridecodebin3: Always store pending buffering messages
Edward Hervey [Wed, 30 Nov 2022 08:26:48 +0000 (09:26 +0100)]
uridecodebin3: Always store pending buffering messages

Fixes #1586

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

17 months agovajpegdec: Reenable element negotiation.
Víctor Manuel Jáquez Leal [Fri, 2 Dec 2022 06:03:30 +0000 (07:03 +0100)]
vajpegdec: Reenable element negotiation.

negotiation vmethod were overwritten by vabasedec, leading to errors.

This was a regression of commit b6538e0560.

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

17 months agogstinfo: Optimize color escape code creation
Edward Hervey [Thu, 1 Dec 2022 07:16:45 +0000 (08:16 +0100)]
gstinfo: Optimize color escape code creation

When coloring is in use, those escape codes are going to be created many times
for almost all debug lines.

Don't create plenty of temporary allocations, and instead build the escape code
ourselves statically

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

17 months agowebrtc: Fix possible use-after-free of GstWebRTCICETransport
Johan Sternerup [Thu, 1 Dec 2022 12:28:16 +0000 (13:28 +0100)]
webrtc: Fix possible use-after-free of GstWebRTCICETransport

Because of the asynchronous resolving of mDNS ICE candidates it is
possible that GstWebRTCICE outlives webrtcbin. This in turn prolongs
the lifetime of the GstWebRTCNiceStream objects via refs in
nice_stream_map. Thus the GstWebRTCICETransport objects held in
GstWebRTCNiceStream may be invalid at the time they are accessed by
the _on_candidate_gathering_done() callback since GstWebRTCNiceStream
doesn't take a reference to them. Doing so would create a circular
reference, so instead this commit introduces weak references to the
transport objects and then we can check if the objects are valid before
accessing them.

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

17 months agortspsrc: fix seek event leaks
Aleksandr Slobodeniuk [Thu, 1 Dec 2022 09:34:10 +0000 (10:34 +0100)]
rtspsrc: fix seek event leaks

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

17 months agova: Handle input caps change.
Victor Manuel Jaquez Leal [Mon, 28 Nov 2022 19:42:29 +0000 (20:42 +0100)]
va: Handle input caps change.

Update output caps if it's notified by baseclass

See https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3328

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

17 months agovaav1dec: Use gst_va_base_dec_set_output_state().
Victor Manuel Jaquez Leal [Sun, 27 Nov 2022 12:00:20 +0000 (13:00 +0100)]
vaav1dec: Use gst_va_base_dec_set_output_state().

And even that vaav1dec doesn't use vabasedec negotiate vmethod, it should align
with the new scheme of using base's width & height for surface size and
output_info structure for downstream display size negotiation.

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

17 months agovavp9dec: Use gst_va_base_dec_set_output_state().
Victor Manuel Jaquez Leal [Sat, 26 Nov 2022 10:45:52 +0000 (11:45 +0100)]
vavp9dec: Use gst_va_base_dec_set_output_state().

As this element reopen the internal decoder differently, it only uses the helper
function to negotiate.

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

17 months agovampeg2dec: Streams are progressive by default.
Victor Manuel Jaquez Leal [Mon, 28 Nov 2022 18:31:57 +0000 (19:31 +0100)]
vampeg2dec: Streams are progressive by default.

By initializating progressive, then interlaced streams are detected correctly.

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

17 months agova: Add and use common decode negotiate vmethod.
Victor Manuel Jaquez Leal [Sat, 26 Nov 2022 08:11:39 +0000 (09:11 +0100)]
va: Add and use common decode negotiate vmethod.

This vmethod can be used by decoders with the same VA decoder reopen logic:
same profile, chroma, width and height.

Also a new public method called gst_va_base_dec_set_output_state() with the
common GStreamer code for setting the output state, which is always called by
the negotiate vmethod.

In order to do this refactoring, new variables in vabasedec have to be populated
by the decoders:

* width and height define the resolution set in VA decoder. In the case of H264
  would be de coded_width and codec_height, or max_width and max_height in AV1.
* output_info is the downstream video info used for negotiation in
  gst_va_base_dec_set_output_state().
* input_state, from codec parent class shall be also held by vabasedec

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

17 months agovaav1dec: Use gst_va_base_dec_prepare_output_frame().
Víctor Manuel Jáquez Leal [Thu, 24 Nov 2022 12:52:59 +0000 (13:52 +0100)]
vaav1dec: Use gst_va_base_dec_prepare_output_frame().

And simplify a bit the code flow.

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

17 months agova: Add and use gst_va_base_dec_prepare_output_frame().
Víctor Manuel Jáquez Leal [Thu, 24 Nov 2022 12:15:04 +0000 (13:15 +0100)]
va: Add and use gst_va_base_dec_prepare_output_frame().

This helper will do downstream negotiation and later will
allocate the output frame.

H265 and AV1 decoders don't use this approach since their output
frame allocation is different.

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

17 months agova: Remove last_ret error handling in decoders.
Víctor Manuel Jáquez Leal [Wed, 23 Nov 2022 17:29:58 +0000 (18:29 +0100)]
va: Remove last_ret error handling in decoders.

It was used in the early development of the base classes. Now it
shouldn't be needed.

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

17 months agova: Add and use gst_va_base_dec_process_output().
Víctor Manuel Jáquez Leal [Wed, 23 Nov 2022 17:14:30 +0000 (18:14 +0100)]
va: Add and use gst_va_base_dec_process_output().

This function will copy the frame, if it's needed, and will apply buffer flags.

The function is used by all the decoders.

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

17 months agova: Fix the caps memory leak by gst_va_pool_new_with_config().
He Junyan [Thu, 1 Dec 2022 14:50:30 +0000 (22:50 +0800)]
va: Fix the caps memory leak by gst_va_pool_new_with_config().

The gst_va_pool_new_with_config() will ref the caps, and so we need
to unref after that.

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

17 months agova: Add render node name in non-first devices.
Víctor Manuel Jáquez Leal [Wed, 30 Nov 2022 12:33:49 +0000 (13:33 +0100)]
va: Add render node name in non-first devices.

There could be multi-GPU setups where the non-first has more
entrypoints than the first one, and the elements names are not
homogeneous, leading to pipeline building error.

This patch add the render node in the elements names when they belong
to the non-first device.

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

17 months agovafilter: Increase the caps for HDR.
Victor Manuel Jaquez Leal [Sat, 26 Nov 2022 20:02:00 +0000 (21:02 +0100)]
vafilter: Increase the caps for HDR.

As they might be other medatadata types.

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

17 months agovafilter: Increase the number of 3DLUT caps to 16.
Victor Manuel Jaquez Leal [Sat, 26 Nov 2022 19:48:45 +0000 (20:48 +0100)]
vafilter: Increase the number of 3DLUT caps to 16.

To fix the warning on Alderlake

vafilter gstvafilter.c:534:gst_va_filter_ensure_filters:<vafilter0>
vaQueryVideoProcFiltersCaps: list argument exceeds maximum number

Increase the number of caps to 16 as vadumpcaps does.

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

17 months agoqt: deactivate context if fill_info fails
Bo Elmgreen [Wed, 30 Nov 2022 13:32:52 +0000 (14:32 +0100)]
qt: deactivate context if fill_info fails

Now the OpenGL context is deactivated if call to gst_gl_context_fill_info()
fails in gst_qt_get_gl_wrapcontext(), preventing that the context is left
activated, which could lead to invalid memory reads.

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

17 months agoav{aud,vid}dec: Report decoding errors to the base class
Sebastian Dröge [Tue, 8 Mar 2022 14:05:17 +0000 (16:05 +0200)]
av{aud,vid}dec: Report decoding errors to the base class

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

17 months agov4l2: Fix SIGSEGV on 'change state' during 'format change'
Pawel Stawicki [Mon, 28 Nov 2022 22:26:50 +0000 (22:26 +0000)]
v4l2: Fix SIGSEGV on 'change state' during 'format change'

Ensure all access to v4l2object->pool imply taking a lock and a hard ref on the pool

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

17 months agogst-inspect: Don't leak list
Edward Hervey [Wed, 30 Nov 2022 08:59:09 +0000 (09:59 +0100)]
gst-inspect: Don't leak list

Just iterate the list instead of trying to be smart...

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

17 months agoexample: vaenc-dynamic-reconfigure: Support H265.
Víctor Manuel Jáquez Leal [Tue, 15 Nov 2022 05:58:14 +0000 (06:58 +0100)]
example: vaenc-dynamic-reconfigure: Support H265.

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

17 months agova: Add H265 SCC profile support.
He Junyan [Wed, 4 May 2022 02:42:59 +0000 (10:42 +0800)]
va: Add H265 SCC profile support.

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

17 months agova: Add extended formats support such as 10/12 bits, 4:2:2 and 4:4:4.
He Junyan [Mon, 2 May 2022 15:14:32 +0000 (23:14 +0800)]
va: Add extended formats support such as 10/12 bits, 4:2:2 and 4:4:4.

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

17 months agova: enable multi tile support for H265 encoder.
He Junyan [Mon, 25 Apr 2022 07:49:31 +0000 (15:49 +0800)]
va: enable multi tile support for H265 encoder.

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

17 months agova: enable vah265lpenc for low power mode H265 encoder.
He Junyan [Thu, 2 Jun 2022 13:18:16 +0000 (21:18 +0800)]
va: enable vah265lpenc for low power mode H265 encoder.

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

17 months agova: Add the low-delay-b frame support for H265.
He Junyan [Mon, 18 Apr 2022 14:36:09 +0000 (22:36 +0800)]
va: Add the low-delay-b frame support for H265.

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

17 months agova: Add prediction direction attribute support for H265 encoder.
He Junyan [Wed, 6 Apr 2022 09:06:20 +0000 (17:06 +0800)]
va: Add prediction direction attribute support for H265 encoder.

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

17 months agova: Register and enable and the vah265enc plugin.
He Junyan [Fri, 25 Mar 2022 13:55:28 +0000 (21:55 +0800)]
va: Register and enable and the vah265enc plugin.

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

17 months agova: Implement the vah265enc plugin for va HEVC encoding.
He Junyan [Fri, 25 Mar 2022 13:54:30 +0000 (21:54 +0800)]
va: Implement the vah265enc plugin for va HEVC encoding.

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

17 months agoopusdec: Use proper guint/guint8 type conversion
Vivia Nikolaidou [Wed, 30 Nov 2022 18:48:28 +0000 (20:48 +0200)]
opusdec: Use proper guint/guint8 type conversion

Do not cast, that might yield wrong results.

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

17 months agoopusdec: Negotiate default to 2 channels
Vivia Nikolaidou [Wed, 30 Nov 2022 18:47:11 +0000 (20:47 +0200)]
opusdec: Negotiate default to 2 channels

In that place, dec->n_channels can still theoretically be 0. Default to
2 in that case.

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

17 months agoopusenc: Reverse channel order in template caps
Vivia Nikolaidou [Wed, 30 Nov 2022 18:46:05 +0000 (20:46 +0200)]
opusenc: Reverse channel order in template caps

We want to make it so that we prefer a higher, not lower, number of
channels. Otherwise, this pipeline would convert from 2 to 1 channels:

gst-launch-1.0 audiotestsrc ! audio/x-raw,channels=2 ! opusenc ! queue ! opusdec ! queue ! opusenc ! fakesink

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

17 months agoavviddec: Report flow error when decoder refused packet
Philippe Normand [Thu, 24 Nov 2022 17:39:50 +0000 (17:39 +0000)]
avviddec: Report flow error when decoder refused packet

In cases where an invalid input packet is submitted to the decoder we emit a
warning but reporting the flow error upstream would also be useful. This came up
with a case were the application interacts directly with the decoder, using a
mechanism similar to GstHarness.

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

17 months agoaudiodecoder: Make data processing errors non-fatal by default
Philippe Normand [Mon, 28 Nov 2022 16:05:16 +0000 (16:05 +0000)]
audiodecoder: Make data processing errors non-fatal by default

The previous default value of `max-errors` was too small and would potentially trigger the
decoder to emit errors too often for most cases.

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

17 months agovideodecoder: Make data processing errors non-fatal by default
Philippe Normand [Wed, 30 Nov 2022 10:27:27 +0000 (10:27 +0000)]
videodecoder: Make data processing errors non-fatal by default

The previous default value of `max-errors` was too small and would potentially trigger the
decoder to emit errors too often for most cases.

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

17 months agosdpmessage: Annotate SDP message parameters for `parse_uri()` and `parse_buffer(...
Sebastian Dröge [Tue, 29 Nov 2022 12:02:55 +0000 (14:02 +0200)]
sdpmessage: Annotate SDP message parameters for `parse_uri()` and `parse_buffer()` correctly

They are not actually `out` parameters but must be allocated and
initialized to a valid SDP message by the caller. Just allocating them
without initialization will cause memory corruptions because the
functions will try to clear/append to the existing SDP message.

As such they should be just marked as `transfer none`.

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

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

17 months agomfvideosrc: Fix buffer leak
Seungha Yang [Mon, 28 Nov 2022 17:22:50 +0000 (02:22 +0900)]
mfvideosrc: Fix buffer leak

The allocated buffer should be released

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