Sebastian Dröge
6072e54666
gl: Implement basetransform meta transform function
...
This makes sure we can pass through more metas correctly, e.g.
GstVideoOverlayComposition meta.
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4422
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9004 >
2025-05-21 12:13:56 +00:00
Matthew Waters
daae2c18a4
gl/window: add support for configuring whether a backing surface is needed
...
Fixes videotestsrc ! glimagesink videotestsrc ! glimagesink under Wayland (at
least).
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/2997
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/9007 >
2025-05-21 08:30:47 +00:00
Doug Nazar
e4f60e44ee
gstglfiltershader: Free various props before set & during cleanup
...
gst_object_replace() takes a reference so no need to dup object.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8978 >
2025-05-13 19:42:37 -04:00
Jakub Adam
9f4f543bf7
gldownload: improve logging of gl-dmabuf pool usage
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8938 >
2025-05-06 19:50:43 +00:00
Jakub Adam
f9941b135f
gldmabufferpool: disable "free cache" workaround in GstGLBufferPool
...
This pool isn't reusing its buffers, which makes it pointless to enable
the cache
Holding an extra buffer in free queue can also lead to a deadlock when
the pool's max buffer count is configured low (commonly 2).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8939 >
2025-05-06 18:22:19 +00:00
Alexander Slobodeniuk
a03c4de48f
elements: use set_static_metadata when it's allowed
...
Those strings are nice but CPU doesn't want to copy them
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8905 >
2025-04-26 19:30:15 +02:00
Hou Qi
bf24ca6d29
gldownload: unref glcontext after usage
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8807 >
2025-04-10 09:27:04 +00:00
Doug Nazar
3a20c0bca3
gl: Free various props during cleanup
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8648 >
2025-03-27 09:03:18 +00:00
Sebastian Dröge
4fb5784e53
gluploadelement: Fix typo in debug output
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8431 >
2025-02-14 18:44:33 +00:00
Alexander Slobodeniuk
33fc2d9c65
glvideomixer: fix missing GObject vtable chainups
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8452 >
2025-02-11 22:49:06 +01:00
Alexander Slobodeniuk
6016cdccf1
gl: fix chaining up GObject's constructed virtual method
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8416 >
2025-02-10 17:49:29 +00:00
Mathieu Duponchelle
3de86b2b97
docs: port plugins to explicit sources
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8273 >
2025-01-13 19:17:13 +01:00
Guillaume Desmottes
94253529c4
glmixerbin: derivate the mixer name from the bin name
...
Make it easier to identify a specific instance in logs in complex
pipelines.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8183 >
2025-01-06 07:50:43 +00:00
Jakub Adam
2209d4382f
gldownload: warn on fallback from DMABuf to system memory
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/8013 >
2024-12-02 20:25:37 +00:00
Philipp Zabel
c024c5e3bf
gstgldmabufbufferpool: use gsteglimagecache
...
Store the imported GstEGLImage in a GstEGLImageCache. Since this passes
ownership to the cache, stop unreffing the images from the GstMemory.
Free the cache when the buffer pool is stopped.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6792 >
2024-11-28 15:25:28 -05:00
Nicolas Dufresne
a18f1af1a4
gldownload: Implement importing RGBA with modifiers
...
For single plane RGBA based formats, implement support for modifiers.
This fixes issues where linear is actually configured in GL causing
visual artifacts.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6792 >
2024-11-28 15:25:28 -05:00
Jakub Adam
b7970a4d95
gldownload: enumerate emulated video formats
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6792 >
2024-11-28 15:25:28 -05:00
Nicolas Dufresne
5b55930db8
gldmabufbufferpool: allow the dmabuf_pool configuration to change
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6792 >
2024-11-28 15:25:27 -05:00
Jakub Adam
533d115659
downloadelement: support dma_drm caps in try_export_dmabuf
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6792 >
2024-11-28 15:25:27 -05:00
Jakub Adam
188b626ffc
gldownload: import DMABufs from downstream pool
...
* if downstream provides us with a pool that can allocate DMA buffers,
gldownload wraps it into a GL buffer pool that uses
glEGLImageTargetTexture2DOES() to import dmabuf into textures
* upstream GL elements can allocate from that pool
* gldownload unwraps DMA buffers from incoming GL buffers and passes
them downstream
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6792 >
2024-11-28 15:25:27 -05:00
Nirbheek Chauhan
c1a8ee9655
meson: Don't use libdrm_dep in cc.has_header()
...
It can't handle subproject dependencies. Pointed out in
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/4033#note_2665974
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7927 >
2024-11-20 17:47:01 +00:00
Sebastian Dröge
b7b24573ce
common: Use more efficient versions of GstCapsFeatures API where possible
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432 >
2024-09-26 19:26:18 +03:00
Sebastian Dröge
6233eb0ff3
common: Stop using GQuark-based GstStructure field name API
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7432 >
2024-09-26 19:21:29 +03:00
Chao Guo
c35687fcbf
glimagesink: resize viewport when video size changed in caps
...
When re-negotiation happends and caps is changed, resize the
viewport to the corresponding video size in changed caps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7341 >
2024-09-04 02:52:56 +00:00
Nirbheek Chauhan
2ee51bf6f6
glvideomixer: Fix critical when setting start-time-selection
...
It caused a critical, but did not affect functionality because the
GValue was passed as-is to the glvideomixerelement which actually does
something with the property.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/7204 >
2024-07-20 01:05:58 +00:00
Jakub Adam
c56a87b73d
gldownload: use gst_gl_sync_meta_wait_cpu()
...
Simple gst_gl_sync_meta_wait() is not sufficient to ensure GL commands
are executed before dma-buf devices get to see the buffer.
This is the first step that should make the code behave correctly for
everybody, although there may be performance penalty. In the future we
should introduce a more general sync meta that would allow to move the
waiting from gldownload (the producer) to the sink elements (the
consumers).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6968 >
2024-06-01 08:09:34 +00:00
Nirbheek Chauhan
fe1a7edda2
gl: Fix libdrm dependency detection and usage
...
drm_fourcc.h should be picked up via the pkgconfig dep, not the system
includedir directly. All this allows it to be picked up consistently
(via the subproject, for example).
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6932 >
2024-05-29 15:49:45 +00:00
Thibault Saunier
41f8276c2b
glvideomixer: Handle pads which have no caps set on mouse events
...
And directly use the pad vinfo instead of getting current caps
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6265 >
2024-05-05 12:37:05 +00:00
Shengqi Yu
a92167ea6e
glmixer: Add GL_SYNC_META option to bufferpool
...
when pipline is
glvideomixerelement->glcolorconvertelement->gldownloadelement and
glcolorconvertelement is not passthrough, the gl bufferpool between
glvideomixerelement and glcolorconvertelement will not add gl sync meta
during allocating buffer. This will cause that glcolorconvert's inbuf
has no sync meta to wait for.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6756 >
2024-04-29 19:15:39 +00:00
Matthew Waters
3f29c897f8
glimagesink: avoid a possible critical on shutdown
...
It is possible that the close callback can be called after glimagesink
is changing state to NULL. Protect against that by taking the glimagesink
lock and some NULL checking.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6504 >
2024-04-02 23:50:41 +00:00
Matthew Waters
d9b563e9b2
glimagesink: unref the potential last ref outside of the glimagesink lock
...
Avoids a deadlock between the state change removing the last ref and
the destructer calling the window's on_close handler and trying to
take the glimagesink lock.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/6504 >
2024-04-02 23:50:41 +00:00
Jan Schmidt
aadefa8aca
glvideoflip: fix setting of method property at construction time
...
A port of the same fix that
https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4536
did for the non-GL videoflip element
Fixes https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3245
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5966 >
2024-01-29 18:00:21 +00:00
Robert Mader
7495db8855
gl: colorbalance: Add DMA_DRM passthrough support
...
By adding them to additional caps that are only supported in passthrough
mode. They get filtered out otherwise.
This can easily extended to support other caps later.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5948 >
2024-01-25 20:39:37 +00:00
Tim-Philipp Müller
ceed3f9914
glimagesink: fix typo in docs
...
Fixes #3233
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5942 >
2024-01-19 07:41:48 +00:00
Damian Hobson-Garcia
fe64e68cc4
gloverlay: Apply updated overlay coordinates correctly
...
When overlay coordinates are updated, after the initial coordinates
are set, the shader indices are applied to the wrong buffer, resulting
in the background image appearing where the overlay should.
Bind the array buffer before applying subsequent coordinate
updates.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5901 >
2024-01-11 01:53:16 +00:00
Hosang Lee
2afe7cb97e
glstereomix: Fix typo
...
Fix typo in example. vid -> video
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5685 >
2023-11-17 04:42:32 +00:00
He Junyan
ea35adc55f
gl: upload: Implement the fixate_caps virtual function
...
We now prefer the 2D target than other targets when fixating src caps.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5468 >
2023-10-18 19:56:30 +00:00
Philippe Normand
ce7b2af414
glsinkbin: Check sink property exists before attempting to read it
...
The same is done in the set_property function. This was noticed when attempting
to dump a pipeline containing glsinkbin sink=gtk4paintablesink to dot format.
Critical warnings were raised due to the missing force-aspect-ratio property on
that sink.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5311 >
2023-09-11 07:36:21 +00:00
Matthew Waters
9d867356df
gl/bufferpool: add configuration to extend buffer lifetime before reuse
...
Fixes a potential GPU stall if an immediately freed texture/buffer is
attempted to be reused immediately by the CPU, e.g. when uploading.
Problematic scenario is this:
1. element does GPU processing reading from texture
2. frees the buffer back to the pool
3. pool acquire returns the just released buffer
4. GPU processing then has to wait for the previous GPU operation to
complete causing a stall
If there was a reliable way to know whether a buffer had been finished
with across all GPU drivers, we would use it. However as that does not
exist, this workaround is to keep the released buffer unusable until the
next released buffer.
This is the same approach as is used in the qml (Qt5) elements.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/5144 >
2023-08-31 01:24:38 +00:00
Matthew Waters
b291efe44b
gldownload: handle passthrough without a critical
...
With passthrough mode, gldownload/glbasefilter may not ever retrieve a
relevant GstGLContext as it doesn't actually query the surrounding
elements. Guard against that.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4791 >
2023-06-07 22:15:39 +00:00
Ruben Gonzalez
059965fe53
doc: Fix newline char between authors
...
Found running `gst-inspect-1.0 -a |& grep -v ":" | grep @`
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4682 >
2023-05-20 05:48:23 +00:00
Matthew Waters
e9bf1c79cc
glmixer: don't add rgba templates by default
...
Subclasses may want to override the pad template with different formats
or with a different pad subclass.
The original beahviour is still available by calling
gst_gl_mixer_class_add_rgba_pad_templates() in _class_init() of the
subclass.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4608 >
2023-05-18 19:34:15 +00:00
Matthew Waters
fc85b63c2b
glmixer: remove set_caps() vfunc
...
All of its implementors can be moved to gl_start/stop() from
GstGLBaseMixer instead.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4608 >
2023-05-18 19:34:14 +00:00
Matthew Waters
331b1af468
glmixer: remove reset vfunc
...
This functionality is covered by GstGLBaseMixer's gl_stop() vfunc.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4608 >
2023-05-18 19:34:14 +00:00
Matthew Waters
14e7e991d3
gl/mixer: make fbo instance field private and provide accessor function
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4608 >
2023-05-18 19:34:14 +00:00
Matthew Waters
007a602726
gl: move gl(base)mixer to library
...
For use by applications/libraries outside of the opengl plugin.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4608 >
2023-05-18 19:34:14 +00:00
Jan Schmidt
e1faaefea0
glvideomixer: Implement force-live and min-upstream-latency properties
...
Proxy the force-live and min-upstream-latency propertyies to the internal
glvideomixerelement at construction time. force-live has to be set
during construction of the glvideomixerelement, so that has to be
deferred until the _constructed() call. Make sure that all other
existing proxied properties will still get set once the element
is created.
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4494 >
2023-05-02 22:47:38 +00:00
Mathieu Duponchelle
15102e2eef
docs: mark GstGLSinkBin as plugin API
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4408 >
2023-04-13 21:46:59 +00:00
Matthias Fuchs
15b7c7ea25
glvideoflip: fix leaked caps
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4394 >
2023-04-11 21:31:45 +00:00
Sebastian Dröge
ccad9a7338
plugins: Fix various trivial clang compiler warnings
...
Part-of: <https://gitlab.freedesktop.org/gstreamer/gstreamer/-/merge_requests/4210 >
2023-03-18 16:16:55 +02:00