Sebastian Dröge
8ed0b03c78
appsink: Use a class handler callback instead of vfunc for propose-allocation
...
There would otherwise be no padding left in the class struct anymore and
we might need it for something else in the future.
A class handler callback can be overridden by subclasses via
`g_signal_override_class_handler()` and chained up via
`g_signal_chain_from_overridden_handler()`.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2422
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4356 >
2023-04-06 15:21:35 +00:00
Sebastian Dröge
51a2adb837
allocators: drm-dumb: Annotate allocator instance parameters with the correct type
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4360 >
2023-04-06 17:04:45 +03:00
Sebastian Dröge
edcb8e8f35
allocators: drm-dumb: Annotate device-path as a filename
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4358 >
2023-04-06 15:41:27 +03:00
Rouven Czerwinski
7ad84674ab
gst-plugins-base: gl: wayland: cleanup on close
...
The proxy and queue are created in the gst_gl_window_wayland_egl_open()
function and will be recreated on open. This leaks both objects, the
wayland client documentation mentions that they should be destroyed
using the appropriate destroy functions.
Found during valgrind memory leak testing, these blocks were marked as
definitely lost.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4354 >
2023-04-06 08:09:36 +02:00
Guillaume Desmottes
84dea99132
appsrc: properly handle events received before sending the segment
...
The first serialized events that can be send on a src pad are a CAPS and then a
SEGMENT event.
When handling events from user in appsrc, we used to send a segment
automatically if the SEGMENT has not been sent yet.
This breaks if the CAPS event was not send either as we were now sending
a SEGMENT before the CAPS.
Fix this by delaying such events until the CAPS has been configured.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4297 >
2023-04-05 11:11:46 +00:00
Guillaume Desmottes
4bffa7b537
appsrc: log when popping caps and buffer (list) from queue
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4297 >
2023-04-05 11:11:46 +00:00
Sebastian Dröge
a17209220f
sdp: Skip source-specific caps fields when creating an SDP media from caps
...
Regression from https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/2132
We parse the source-specific fields from the SDP and put it into the
caps, but when converting caps into an SDP again this would need special
handling. By default it would end up as part of the fmtp field, which is
simply wrong.
Automatically putting it into the caps and SDP will need some more work.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4338 >
2023-04-05 05:20:33 +00:00
Bart Van Severen
65f953cd23
rtsp: gstrtspurl: gst_rtsp_url_get_request_uri: use rtsps scheme for tls transport methods
...
gst_rtsp_url_get_request_uri returns rtsp://... url when requested url is rtsps://, this is not
in accordance with https://www.rfc-editor.org/rfc/rfc7826.html#section-19.2 .
This also impedes setting up a rtsps session with a live555 rtsp server.
Don't expose other than rtsp and rtsps internal gstreamer rtsp url schemes
to avoid regression:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2412
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4294 >
2023-03-29 11:38:47 +00:00
Bart Van Severen
c2b3afd3dd
Revert "rtsp: gstrtspurl: gst_rtsp_url_get_request_uri: fix incorrect scheme for tls transport methods"
...
This reverts commit 024ef7659d
because it causes a regression:
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2412
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4294 >
2023-03-29 11:38:47 +00:00
Shengqi Yu
96a46e31c7
appsink: add propose_allocation support
...
Adding propose_allocation is to meet the requirement of Application to
request buffers. Application sometimes need to create buffer pool
and request buffers to maintain buffer management itself, and Gstreamer plugin
import Application's buffers to use. So, add propose_allocation in
appsink like waylandsink and kmssink etc.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4185 >
2023-03-27 12:34:16 +03:00
Tobias Rapp
c467ac0869
gst-plugins-base: Add FourCC and type description for FFVHuff video
...
The FFVHuff video codec is a FFmpeg-specific variant of the lossless
HuffYUV codec with increased coverage of supported pixel formats and bit
depths.
Fixes #2389 .
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4250 >
2023-03-23 14:30:59 +00:00
Stéphane Cerveau
23661f0446
vulkan: gl: change symbols to static
...
Change window_proc and subclass_proc to static to avoid symbols
duplication.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4246 >
2023-03-23 00:56:04 +00:00
Philippe Normand
47b8618b2d
glbasesrc: Reword error message
...
The initial glbasesrc implementation was based on a refactoring of gltestsrc,
but one error message wasn't updated accordingly and remained specific to the
gltestsrc implementation.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4222 >
2023-03-19 16:39:18 +00:00
Víctor Manuel Jáquez Leal
d6dd81dbdd
video: remove spurious gst_caps_make_writable()
...
In gst_video_info_dma_drm_to_caps() the caps are newly created, so there's no
need for make it writable. In gst_video_info_dma_drm_from_caps() a copy of the
caps is done, which implies a gst_caps_make_writable().
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4195 >
2023-03-17 13:01:02 +00:00
Tim-Philipp Müller
8759b77a50
gst-plugins-base: re-indent with GNU indent 2.2.12
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4182 >
2023-03-17 03:18:53 +00:00
Nicolas Dufresne
7c7f2bb6df
allocators: Add a DRM Dumb Allocator
...
This allow allocating memory from any DRM driver that supports this
method. It additionally allow exporting DMABuf. This allocator depends
on libdrm and will be stubbed if the dependency is missing. This is derived
from kmssink dumb allocator.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3801 >
2023-03-14 21:50:57 +00:00
He Junyan
67d0a911a5
video: add dma format and info helper functions
...
From the dmabuf.md[1], "drm-format" field in caps will replace the
traditional "format" field, so it needs to import some new helper
functions to support this.
1. https://gstreamer.freedesktop.org/documentation/additional/design/dmabuf.html
Co-authored-by: Yinhang Liu <yinhang.liu@intel.com>
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4043 >
2023-03-12 03:09:01 +00:00
Carlos Falgueras García
dafc024ed0
gldisplay: Remove unused code
...
The code related with environment variable `GST_GL_PLATFORM` is unused
since commit 33c60bdbf9
.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4090 >
2023-03-01 08:23:37 +00:00
Patricia Muscalu
35f1738875
rtspconnection: Annotate RTSP message parameters correctly
...
These parameters are not actually `out` parameters but must
be allocated and zero-initialized by the calling function.
Marking them as `out caller-allocates` will cause memory
corruptions when calling these APIs from e.g., Python code.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4051 >
2023-02-23 12:04:37 +00:00
Tristan van Berkom
0472c306d0
gstglwindow_x11.c: Fix colormap leak
...
This fixes an X server side memory leak, this is normally not severe
but in some circumstances where the glwindow is recreated frequently
it can result in a very bad memory leak.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4047 >
2023-02-22 16:29:06 +00:00
Yang, Xuchen
a14f8008fb
audio: channel-mix: Fix channel count limit to be able to equal 64
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3949 >
2023-02-14 07:04:45 +00:00
Philipp Zabel
485c8ef4b5
gleglimage: cache EGL images per DmabufUpload
...
Do not store cached EGL images in GstMemory QData. Instead, use a
per-DmabufUpload GHashTable to store cache entries with a weak
reference to the GstMemory.
This allows two glupload elements on separate tee branches to have
their own EGL image cache. For this pipeline:
gst-launch-1.0 v4l2src ! tee name=t \
t. ! queue ! glupload ! fakesink
t. ! queue ! glupload ! fakesink
this gets rid of the occasional critical error message:
GStreamer-CRITICAL **: 08:26:33.194: gst_mini_object_unref: assertion 'GST_MINI_OBJECT_REFCOUNT_VALUE (mini_object) > 0' failed
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3880 >
2023-02-07 19:32:14 +00:00
Anders Hellerup Madsen
f0040149a0
glbasefilter: use gst_display_ensure_context
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3843 >
2023-02-06 16:15:46 +01:00
Anders Hellerup Madsen
7bee4619dd
glbasesrc: use gst_display_ensure_context
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3843 >
2023-02-06 16:14:34 +01:00
Anders Hellerup Madsen
0da0da69aa
gldisplay: Add gst_gl_display_ensure_context
...
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/439
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3843 >
2023-02-06 16:14:07 +01:00
Jan Schmidt
edd5911249
gl/cocoa: Return a strong ref to the parent GstGLContext
...
If the GstGLCAOpenGLLayer was initialized via a parent
context, make sure to ref the context before returning it
from getGLContext as all callers will unref it.
Follow up to !3729
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3881 >
2023-02-02 13:53:07 +00:00
Sebastian Dröge
c5d211d45a
gldisplay: Mark gst_gl_display_create_context()
other_context
parameter as nullable
...
See https://gitlab.freedesktop.org/gstreamer/gstreamer-rs/-/issues/438
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3825 >
2023-01-27 16:22:06 +02:00
Bart Van Severen
024ef7659d
rtsp: gstrtspurl: gst_rtsp_url_get_request_uri: fix incorrect scheme for tls transport methods
...
gst_rtsp_url_get_request_uri returns rtsp://... url when requested url is rtsps://, this is not
in accordance with https://www.rfc-editor.org/rfc/rfc7826.html#section-19.2 .
This also impedes setting up a rtsps session with a live555 rtsp server.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3568 >
2023-01-26 07:46:59 +00:00
Bart Van Severen
a62b07f3b4
sdp: gstmikey: gst_mikey_message_to_caps: extract salt and append to srtp-key
...
A KEMAC can hold both key and salt, so if salt is present, we should extract it
and append it to the srtp-key cap because libsrtp expects the srtp-key to hold
the concantenated srtp master key and salt.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3568 >
2023-01-26 07:46:59 +00:00
Bart Van Severen
5678151799
sdp: gstmikey: gst_mikey_message_to_caps: extract ROC from first crypto session
...
We need the ROC to decrypt a SRTP stream as the ROC is part of the AES IV.
So look for first crypto session, from which we can get the ROC and find corresponding
crypto policy.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3568 >
2023-01-26 07:46:59 +00:00
Sebastian Dröge
0378bd3fed
sdp: Fix gst_mikey_payload_key_data_set_interval() array length annotation
...
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1744
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3787 >
2023-01-25 13:16:44 +00:00
Sebastian Dröge
20d394cb21
appsrc: Don't chain up BaseSrc::negotiate()
...
If we have caps then we can only set exactly those caps, if we have no
caps yet then negotiating anything is not very meaningful because the
caps are defined by the application and not downstream.
Avoids, among other things, an unnecessary allocation query and spurious
useless caps being set before the first buffer.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3757 >
2023-01-24 21:44:51 +00:00
Tim-Philipp Müller
13f3feed04
libs: gl: drop use of GSlice
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695 >
2023-01-24 15:25:06 +00:00
Tim-Philipp Müller
d56648ccdb
libs: video: drop use of GSlice
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695 >
2023-01-24 15:25:06 +00:00
Tim-Philipp Müller
df83590008
tag: drop use of GSlice
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695 >
2023-01-24 15:25:06 +00:00
Tim-Philipp Müller
58722ba48e
libs: sdp: drop use of GSlice
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695 >
2023-01-24 15:25:06 +00:00
Tim-Philipp Müller
8bf59703a1
libs: pbutils: drop use of GSlice
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695 >
2023-01-24 15:25:06 +00:00
Tim-Philipp Müller
506c65aa27
libs: audio: drop use of GSlice
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695 >
2023-01-24 15:25:06 +00:00
Tim-Philipp Müller
11b47c4e29
fdmemory: drop use of GSlice
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3695 >
2023-01-24 15:25:06 +00:00
Nicolas Dufresne
8a6d9748b6
gleglimage: Fix GL_OES_EGL_image_external name in debug trace
...
There is a debug log when this extension is missing, but it was
reporting the wrong extension name, which was confusing.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3748 >
2023-01-18 22:47:42 +00:00
Nirbheek Chauhan
ed1bdf9b1a
gl: Fix crash in cocoa due to race in gst_gl_context_activate()
...
We create a new context in `gst_gl_context_create_thread()` and then
activate it on the current thread. Thereafter we assume that the
current thread continues to be the active thread for that context and
call `gst_gl_context_fill_info()` which asserts that the current
thread is the active thread.
However, if at the same time a different thread calls
`send_message_async()`, it will call into
`gst_gl_window_cocoa_send_message_async()` which will schedule the
message to be invoked using GCD. That anonymous function will also
call `gst_gl_context_activate()`, which creates a race, which can lead
to:
```
gst_gl_context_fill_info: assertion 'context->priv->active_thread == g_thread_self ()' failed
```
Fix it by using `gst_gl_context_thread_add()` to invoke `fill_info()`
on the context.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3732 >
2023-01-17 21:56:41 +00:00
Sebastian Dröge
086c8da446
gl/cocoa: Store a weak reference to the GstGLWindow
instead of the GstGLContext
...
We can't rely on the `GstGLContext` to stay alive and need to keep track
of it. For that we keep track of the `GstGLWindow` in a weak reference
to avoid a reference cycle, and get the corresponding `GstGLContext`
whenever needed.
With contributions from Nirbheek Chauhan.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1697
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3729 >
2023-01-17 22:35:29 +05:30
Thibault Saunier
d8ba721d82
glbasefilter: Copy metas when they only contain they "video" tag
...
Same logic as in `GstVideoFilter`
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3716 >
2023-01-12 14:41:24 -03:00
Olivier Crête
f97ff39358
audioenc/dec: Avoid adding temporary structure
...
As a minor optimisation
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3673 >
2023-01-04 11:09:31 +00:00
Olivier Crête
e03a10a0f2
audioenc/dec: Preserve downstream caps preference in get caps
...
This should fix pipelines such as this one to work as expected
... ! opusenc ! capsfilter caps='audio/x-opus,
channels=1; audio/x-opus, channels=2' ! ...
The expectation is that the encoder will propose the first structure
before the second one to the source.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3673 >
2023-01-04 11:09:31 +00:00
Sebastian Dröge
19603248c2
gl: Mark gst_gl_context_new_wrapped()
return value as nullable
...
If a GL context is requested for which no API support is compiled in
then `NULL` is returned.
Also remove a useless `NULL` check: `g_object_new()` can't possibly
return `NULL`, ever.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3656 >
2022-12-29 09:03:53 +00:00
F. Duncanh
b713c141e0
plugins-base/tests/check/meson.build: add omitted Wayland dependence
...
SUSE places Wayland include files in /usr/include/wayland, and needs
a Cflag added to wayland_client_deps by pkg-config, which is added to
gl_winsys_deps: add this as a dependency in gstgl_dep to fix issue.
Fixes #1607
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3638 >
2022-12-28 20:04:49 -05:00
Nirbheek Chauhan
36a619ba60
meson: Add gstreamer-gl-1.0 pkgconfig vars to internal dependency
...
So we can fetch gl_winsys, gl_platforms, etc directly using
gst_gl_dep.get_variable() when building gstreamer as a subproject, or
when building gst-plugins-rs's gtk4 plugin.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3654 >
2022-12-29 03:52:42 +05:30
Thibault Saunier
f7b342f1dd
base:navigation: Cleanup navigation key modifiers enum
...
We were exposing the 'ALT' modifier as if we were guaranteeing its
accuracy but truth is we were only exposing configuration dependent
values.
Make the API simpler for now, the same way as Gtk3 was exposing it, and
when we have time to guarantee more values by making them take backends
configuration into account, we will expose those values in a accurate
way.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/1402
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3565 >
2022-12-15 16:47:13 +00:00
Matthew Waters
e59b3c93c7
glupload: add CAN_ACCEPT_RAW to all dma-buf uploaders
...
Fixes cases where a dma-buf would be uploaded using direct-dma-buf
into an external-oes texture (using video/x-raw caps) and then
attempting to reconfigure the same source.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/3486 >
2022-12-14 23:45:56 +00:00