Jan Schmidt
76bf415a96
glfilter: Remove hard-coded pad templates
...
Add a function to install the default RGBA pad templates,
but don't make them required so that there can be
GstGLFilter sub-classes with different input/output
caps if they want. Remove the hard-coded RGBA restriction in
the set_caps_features call, as it will be taken care
of by intersecting with the pad templates.
Update all the sub-classes to match
2017-12-09 19:32:29 +00:00
Jan Schmidt
79f52a4943
glupload: Don't throw assertions on invalid allocation query
...
basesrc can send an allocation query with no caps, in which
case we should just fail it without throwing assertions.
2017-12-09 19:32:29 +00:00
Julien Isorce
575c7bca40
glupload: add GST_CAPS_FEATURE_MEMORY_DMABUF
...
Insert before SystemMemory to advice upstream elements that it is
preferable for them to push dmabuf with the caps feature.
Examples:
/* Discard memory:DMABuf caps feature */
GST_GL_PLATFORM=egl GST_GL_API=gles2 GST_GL_WINDOW=x11 gst-launch-1.0 \
filesrc location=test.mp4 ! qtdemux ! h264parse ! vaapih264dec ! \
capsfilter caps="video/x-raw(memory:SystemMemory)" ! glimagesink
/* Force memory:DMABuf caps feature. */
GST_GL_PLATFORM=egl GST_GL_API=gles2 GST_GL_WINDOW=x11 gst-launch-1.0 \
filesrc location=test.mp4 ! qtdemux ! h264parse ! vaapih264dec ! \
capsfilter caps="video/x-raw(memory:DMABuf)" ! glimagesink
/* Auto select memory:DMABuf caps feature. */
GST_GL_PLATFORM=egl GST_GL_API=gles2 GST_GL_WINDOW=x11 gst-launch-1.0 \
filesrc location=test.mp4 ! qtdemux ! h264parse ! vaapih264dec ! \
glimagesink
https://bugzilla.gnome.org/show_bug.cgi?id=774649
2017-12-09 19:32:29 +00:00
Matthew Waters
715639f78c
gl: reset gl->DrawBuffer to the necessary values
...
GL_COLOR_ATTACHMENT0 when a framebuffer is bound
GL_BACK if no framebuffer is bound
https://bugzilla.gnome.org/show_bug.cgi?id=784210
2017-12-09 19:32:29 +00:00
Hyunjun Ko
402d805c90
glmemory: reset the draw buffer to GL_BACK
...
The draw buffer should be reset to GL_BACK since the framebuffer is already
unbound.
https://bugzilla.gnome.org/show_bug.cgi?id=784210
2017-12-09 19:32:29 +00:00
Nicolas Dufresne
92537b1364
meson: Re-add pkg-config support for bcm_host
...
Now we just fallback to find_library for Rasbian jessy and older.
https://bugzilla.gnome.org/show_bug.cgi?id=784026
2017-12-09 19:32:29 +00:00
Guillaume Desmottes
581161ecd7
gl: meson: use cc.find_library() to detect 'bcm_host'
...
On the raspberry pi no pkg-config file is provided for the bcm_host
library. We are using AC_CHECK_LIB to detect this lib with autotools,
cc.find_library() library is a closer meson equivalent.
https://bugzilla.gnome.org/show_bug.cgi?id=784026
2017-12-09 19:32:28 +00:00
Sebastian Dröge
70715b5181
gl/cocoa: Put gstglwindow_cocoa.h into noinst_HEADERS again
...
And remove gstgldisplay_cocoa.h instead, which got moved to the
installed headers earlier.
2017-12-09 19:32:28 +00:00
Sebastian Dröge
59db0ee4e1
glupload: Fix DirectVIV uploader for formats with a single plane
...
We have to pass the "height" as height = vmeta->offset[1] / width to the
API, which of course does not work well for formats with only a single
plane. Use the whole memory size instead of the offset in that case.
2017-12-09 19:32:28 +00:00
Jeremy Hiatt
4511b34e00
glutils: Fix GValue leak in gst_gl_value_set_texture_target_from_mask()
2017-12-09 19:32:28 +00:00
Sebastian Dröge
0572c41c28
gl: Fix indentation
2017-12-09 19:32:28 +00:00
Sebastian Dröge
4cac59d222
glframebuffer: #define GL_READ_FRAMEBUFFER / GL_DRAW_FRAMEBUFFER if not defined yet
...
Just like we do elsewhere already.
2017-12-09 19:32:28 +00:00
Haihua Hu
ea6bed111b
glformat: fix the usage of GST_GL_RGB565
...
GL_RGB565 is sized internal glformat, the corresponding glformat
should be GL_RGB and type is GL_UNSIGNED_SHORT_565. Otherwise will
return GL_INVALID_ENUM when creating texture.
https://bugzilla.gnome.org/show_bug.cgi?id=783066
2017-12-09 19:32:28 +00:00
Haihua Hu
2fc05e90d8
glframebuffer: check frame buffer status need use specific fbo target
...
https://bugzilla.gnome.org/show_bug.cgi?id=783065
2017-12-09 19:32:28 +00:00
Carlos Rafael Giani
cdd4f4532c
gl/viv-fb: Fix user-choice string comparisons
...
https://bugzilla.gnome.org/show_bug.cgi?id=782921
2017-12-09 19:32:28 +00:00
Tim-Philipp Müller
70e2b4b416
gl: x11: fix compiler warning
2017-12-09 19:32:28 +00:00
Matthew Waters
4c75bab70d
glcontext: add public swap_buffers function
...
That simply calls the implementation
2017-12-09 19:32:28 +00:00
fvanzile
178bbc253d
glcontext: keep a ref to the active thread
...
With the macOS/iOS implementations, the active thread can change
multiple times over the life of a pipeline which would expose a race in
the thread tracking.
Fix by taking a ref on the active thread while the context is active.
https://bugzilla.gnome.org/show_bug.cgi?id=779202
2017-12-09 19:32:28 +00:00
Josep Torra
ffb9559849
cocoa: fix a recently introduced typo
...
Fixes gstgldisplay_cocoa.m:175:26: error: use of undeclared identifier 'singletone'.
2017-12-09 19:32:28 +00:00
Josep Torra
88a4d06735
cocoa: fix macOS 10.12 deprecation warnings
...
Add #defines to allow older versions of macOS to use the new constant names.
2017-12-09 19:32:28 +00:00
Haihua Hu
479b95205f
glformat: Add missing GST_GL_RGB565 in some switch statement
...
https://bugzilla.gnome.org/show_bug.cgi?id=782736
2017-12-09 19:32:28 +00:00
Sebastian Dröge
f32e8bc4b2
cocoa: Install gstgldisplay_cocoa.h
...
It's needed by e.g. qmlglsink.
2017-12-09 19:32:28 +00:00
Sebastian Dröge
a9a05c01a9
gst: Clear floating flag in constructor of all GstObject subclasses that are not owned by any parent
...
https://bugzilla.gnome.org/show_bug.cgi?id=743062
2017-12-09 19:32:28 +00:00
Nicolas Dufresne
e004cfd6fe
Remove plugin specific static build option
...
Static and dynamic plugins now have the same interface. The standard
--enable-static/--enable-shared toggle are sufficient.
2017-12-09 19:32:27 +00:00
Sebastian Dröge
6b1fa09077
glshader: Make reference counting of attach() consistent
...
https://bugzilla.gnome.org/show_bug.cgi?id=747990
https://bugzilla.gnome.org/show_bug.cgi?id=702960
2017-12-09 19:32:27 +00:00
Matthew Waters
d47a515315
build/gl/meson: check for GLES3/gl3ext.h existence
...
791e7522eb
for meson
https://bugzilla.gnome.org/show_bug.cgi?id=781885
2017-12-09 19:32:27 +00:00
Jens Georg
73af514e1a
build: Check for GLES3/gl3ext.h existence
...
Some OpenGL drivers do not ship this but use GLES2/gl2ext.h instead.
This is also in line with Khronos's recommendations
https://bugzilla.gnome.org/show_bug.cgi?id=781885
2017-12-09 19:32:27 +00:00
Sebastian Dröge
aef461d4a0
glmemory: Only use glDrawBuffer if available
...
Otherwise fall back to glDrawBuffers. Also check if glReadBuffer exists
before using it.
glDrawBuffer does not exist for GLES, only glDrawBuffers does.
https://bugzilla.gnome.org/show_bug.cgi?id=782376
2017-12-09 19:32:27 +00:00
Haihua Hu
e2ff120d97
glupload: passthrough composition caps features in directviv upload
...
https://bugzilla.gnome.org/show_bug.cgi?id=782046
2017-12-09 19:32:27 +00:00
Thibault Saunier
95ac4d5175
docs: Port all docstring to gtk-doc markdown
2017-12-09 19:32:27 +00:00
Thibault Saunier
b11df33ee2
docs: Stop linking to inexistant symbols
2017-12-09 19:32:27 +00:00
Claudio Saavedra
7566c43130
meson: add missing gstglrenderbuffer.h header
...
https://bugzilla.gnome.org/show_bug.cgi?id=781179
2017-12-09 19:32:27 +00:00
Scott D Phillips
995d110fe6
meson: gl: set default value of 0 for glconf vars
...
meson's configure_file emits only a comment like /* #undef ... */
for values which are unset in the configuration_data. For
gstglconfig.h, this differs from the autotools build where the
preprocessor definitions are always either 0 or 1. So loop over a
list of variables to set to zero as default.
Also sync up the gstglconfig.h.meson file with the additional
macros defined by the autotools build.
https://bugzilla.gnome.org/show_bug.cgi?id=781043
2017-12-09 19:32:27 +00:00
Vincent Penquerc'h
326b8763de
glcontext: fix display leak
...
https://bugzilla.gnome.org/show_bug.cgi?id=781019
2017-12-09 19:32:27 +00:00
Vincent Penquerc'h
697cd40ee4
gldisplay: fix list leak
...
Windows aren't always removed in time, and it turns out to be
very, very hard to remove a window in a way that's not racy and
not deadlocky. Since the window itself doesn't leak, freeing
the list on object destruction is enough.
https://bugzilla.gnome.org/show_bug.cgi?id=781018
2017-12-09 19:32:27 +00:00
Jan Schmidt
920d295c97
gl: Remove duplicate typedef of GstGLFramebufferClass
...
The GstGLFramebufferClass struct is typedeffed in
gstgl_fwd.h, and having a duplicate elsewhere is
breaking the cerbero build on my OSX machine,
even though it seems to be working in CI.
2017-12-09 19:32:27 +00:00
Josep Torra
2cdce1d75f
glwindow/cocoa: fix warnings reported by XCode 8.1.0
...
gstglwindow_cocoa.m:345:16: error: unused variable 'window' [-Werror,-Wunused-variable]
GstGLWindow *window = GST_GL_WINDOW (window_cocoa);
^
gstglwindow_cocoa.m:445:11: error: unused variable 'external_view' [-Werror,-Wunused-variable]
NSView *external_view = (__bridge NSView *)priv->external_view;
^
2017-12-09 19:32:27 +00:00
Nicolas Dufresne
ae30818f7b
gldisplay: Fix assert caused by missing debug category
2017-12-09 19:32:27 +00:00
Scott D Phillips
8d3d6d3595
gl/format: correct return enums in gst_gl_format_from_video_info
...
In commit
> 956c4d0
gl/format: use our own GL format enum's instead of gstvideo's
the name and return type of gst_gl_format_from_video_info changed,
but some returns of the old type were missed. Here they are
updated to the correct type.
https://bugzilla.gnome.org/show_bug.cgi?id=780064
2017-12-09 19:32:27 +00:00
George Kiagiadakis
6b6a8a46b5
glupload: adjust memory offset calculation for dmabuf buffers
...
The data in the dmabuf fd may not start from byte 0, therefore
we need to inform EGL about this additional offset.
https://bugzilla.gnome.org/show_bug.cgi?id=779790
2017-12-09 19:32:27 +00:00
Matthew Waters
61ee2685c0
gl: GL_ARRAY_BUFFER is not a part of VAO state
...
As a result we need to bind it on every draw in order to have the
correct state in the GL state machine.
2017-12-09 19:32:27 +00:00
Matthew Waters
66468b4245
gl/format: use our own GL format enum's instead of gstvideo's
...
They can describe in more detail (such as component sizes) the requested format.
2017-12-09 19:32:27 +00:00
Vincent Penquerc'h
b71e104d00
glupload: fix GValue leak
...
https://bugzilla.gnome.org/show_bug.cgi?id=779869
2017-12-09 19:32:27 +00:00
Sebastian Dröge
e976c200b0
gl/eagl: It's -fobjc-arc not -fobj-arc
2017-12-09 19:32:27 +00:00
Nick Kallen
7b42f26b80
applemedia/gl: Update code to use ARC
...
All code interacting with Objective-C objects should now use Automated
Reference Counting rather than manual memory management or Garbage
Collection. Because ARC prohibits C-structs from containing
references to Objective-C objects, all such fields are now typed
'gpointer'. Setting and gettings Objective-C fields on such a
struct now uses explicit __bridge_* calls to tell ARC about
object lifetimes.
https://bugzilla.gnome.org/show_bug.cgi?id=777847
2017-12-09 19:32:27 +00:00
Arun Raghavan
ee49afed97
gl: Missed one backwards compat define in GST_GL_TYPE_CONTEXT
...
Continued from 296b4251e3
2017-12-09 19:32:27 +00:00
Sebastian Dröge
a4a8ef5507
gl: Fixup for last commit
2017-12-09 19:32:27 +00:00
Sebastian Dröge
de16dc2555
gl: Fix backwards compat GST_GL_TYPE_* functions/macros
...
These have to be macros instead of inline function as they must behave
more or less like an integer literal, i.e. include the function call.
2017-12-09 19:32:26 +00:00
Sebastian Dröge
dde95e8270
gl/viv-fb: Don't use deprecated symbols and make macros more consistent
...
https://bugzilla.gnome.org/show_bug.cgi?id=778825
2017-12-09 19:32:26 +00:00
Sebastian Dröge
f5ea12a471
glcolorconvert: Check return value of gst_gl_context_check_framebuffer_status()
...
CID 1401588
2017-12-09 19:32:26 +00:00
Sebastian Dröge
6a32795949
gl: Add viv-fb to DIST_SUBDIRS to fix "make distcheck"
2017-12-09 19:32:26 +00:00
Sebastian Dröge
108eef7ac7
glutils: Mark private functions as G_GNUC_INTERNAL
2017-12-09 19:32:26 +00:00
Sebastian Dröge
1c1094e4e7
glupload: Add support for Vivante DirectTexture uploads
...
Together with the upcoming gstreamer-imx patch, this allows zerocopy
between imxvpudec and other elements and glimagesink.
This is losely based on a patch by Haihua Hu <b55597@freescale.com>
from https://github.com/Freescale/meta-freescale/blob/master/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/
https://bugzilla.gnome.org/show_bug.cgi?id=779067
2017-12-09 19:32:26 +00:00
Sebastian Dröge
ed7c9f70d9
gl: Add support for Vivante EGL FB windowing system
...
This is very similar to how dispmanx on the Raspberry Pi works.
Based on a patch by Haihua Hu <b55597@freescale.com> from
https://github.com/Freescale/meta-freescale/tree/master/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad
https://bugzilla.gnome.org/show_bug.cgi?id=778825
2017-12-09 19:32:26 +00:00
Sebastian Dröge
a6cbe2a2cb
glmemory: Use glBlitFramebuffer() instead of glCopyTexImage2D() if available
...
glBlitFramebuffer() is new GLES3/GL3 API. They are probably often
implemented in terms of each other, and glBlitFramebuffer() can
potentially be implemented more flexible. Let's use it if available.
Also it actually works on imx6 with DirectVIV textures.
Based on a patch by Haihua Hu <jared.hu@nxp.com> from
https://github.com/Freescale/meta-freescale/blob/master/recipes-multimedia/gstreamer/gstreamer1.0-plugins-bad/
https://bugzilla.gnome.org/show_bug.cgi?id=779070
2017-12-09 19:32:26 +00:00
Sebastian Dröge
48f79e9f60
configure: Remove unused Mali EGL/fbdev_window support
...
This existed a long time ago but there's no actual code for this
anymore.
2017-12-09 19:32:26 +00:00
Thibault Saunier
cdec2d0181
meson: Build GIR files
2017-12-09 19:32:26 +00:00
Matthew Waters
ad20a945de
gl: update sys dependants for function removals
...
4315a4b54d
forgot to change the androidmedia/videotoolbox/caopengllayer
sources as required.
2017-12-09 19:32:26 +00:00
Juan Pablo Ugarte
c469827ddb
glslstage: define GL constants if needed instead of using #ifdef
...
https://bugzilla.gnome.org/show_bug.cgi?id=777144
2017-12-09 19:32:26 +00:00
Matthew Waters
69da104456
glutils: document functions
2017-12-09 19:32:26 +00:00
Matthew Waters
de6c39189f
glutils: privatise matrix multiplication/videoaffinetransformation retrieval
2017-12-09 19:32:26 +00:00
Matthew Waters
ceda9dc1aa
gl/utils: also take care of the local GL context in query functions
...
Simplifies a deduplicates a lot of code in elements retrieving/setting
the local OpenGL context.
2017-12-09 19:32:26 +00:00
Matthew Waters
d00a13f01d
glutils: remove trivial helper function
...
gst_gl_caps_replace_all_caps_features() is only used in two places and can
be trivially reproduced.
2017-12-09 19:32:26 +00:00
Matthew Waters
0348225001
gl/docs: add symbols from -unused.txt
2017-12-09 19:32:26 +00:00
Matthew Waters
0a0a45fefd
gl/docs: some type fixes of type names
2017-12-09 19:32:26 +00:00
Matthew Waters
cbc7efdcb6
glwindow: use the same parameter names between vfuncs and functions of the same name
...
Silences GI warnings about symbol's not being used from source code
comment block
2017-12-09 19:32:26 +00:00
Matthew Waters
e4c7f28bf7
glbasememory: type fix for GstGLBaseMemoryAllocatorAllocFunction
2017-12-09 19:32:26 +00:00
Matthew Waters
738cd580c9
gldisplay: add missing transfer annotations
2017-12-09 19:32:26 +00:00
Matthew Waters
87a4eafaf9
gl: add skip annotations to non-GI possible struct constructors
2017-12-09 19:32:26 +00:00
Matthew Waters
f7d300b28e
glbasememory: remove unused and #if 0'ed function definitions
2017-12-09 19:32:26 +00:00
Matthew Waters
31b38a5f54
gl: add necessary get_type() functions for allocation params structures
...
All using the existing GstGLAllocationParams infrastructure
2017-12-09 19:32:26 +00:00
Matthew Waters
53cc73b5f4
gldisplay: some annotation updates/typo fixes
2017-12-09 19:32:25 +00:00
Matthew Waters
2fa355c761
gl: remove reference to non-existant header
...
../../../../gst-libs/gst/gl/gl.h:57:45: fatal error: gst/gl/gstglcontrolbindingproxy.h: No such file or directory
#include <gst/gl/gstglcontrolbindingproxy.h>
^
2017-12-09 19:32:25 +00:00
Matthew Waters
cfc16f6dae
gl: remove custom control binding proxy
...
Use the existing GstProxyControlBinding instead.
2017-12-09 19:32:25 +00:00
Matthew Waters
a3e593d2a9
gl: remove unneeded gst_gl_buffer_alloc from header file
...
There's no implementation anymore!
2017-12-09 19:32:25 +00:00
Matthew Waters
e80337e374
gl/egl: remove use of texture orientation
2017-12-09 19:32:25 +00:00
Matthew Waters
cec46fc75e
glcontext/egl: don't overwrite set GError
...
Doing so is an error and will cause a glib warning to be printed.
https://bugzilla.gnome.org/show_bug.cgi?id=776722
2017-12-09 19:32:25 +00:00
Matthew Waters
054b26411a
gl/format: use the unsized format for RGB on GLES2
...
In GLES2 GL_RGB8 doesn't exist so we cannot use it, use GL_RGB
instead.
https://bugzilla.gnome.org/show_bug.cgi?id=776141
2017-12-09 19:32:25 +00:00
Matthew Waters
fe3298993b
gl/window: remove unused priv variable
...
https://ci.gstreamer.net/job/GStreamer-master/7989/console
2017-12-09 19:32:25 +00:00
Matthew Waters
f532e699df
gl/window: remove use of main_context_push/pop_thread_default()
...
No-one's using/depending on it (it would have criticalled and not worked)
and it's causing more problems than it's solving. Store the GMainContext
in the public struct instead for subclasses to optionally use instead of
relying on the push/pop state to be correct.
https://bugzilla.gnome.org/show_bug.cgi?id=775970
2017-12-09 19:32:25 +00:00
Sebastian Dröge
aeb5d4edaf
gst: Don't declare variables inside the for loop header
...
This is a C99 feature.
2017-12-09 19:32:25 +00:00
Julien Isorce
7da132c327
gstglupload: relax EGL context check
...
Check for GST_GL_PLATFORM_EGL enum instead of type GstGLContextEGL.
https://bugzilla.gnome.org/show_bug.cgi?id=774518
2017-12-09 19:32:25 +00:00
Julien Isorce
22e78529dd
gstglcontext: is_shared should return FALSE if no group
...
If a sub class of GstGLContext does not create a group
then it currently crashes:
0 g_atomic_int_get (&share->refcount)
1 _context_share_group_is_shared (context->priv->sharegroup)
2 gst_gl_context_is_shared
3 _default_set_sync_gl
https://bugzilla.gnome.org/show_bug.cgi?id=774518
2017-12-09 19:32:25 +00:00
Matthew Waters
bf7b608728
glmemoryegl: remove spurious #if GST_GL_HAVE_DMABUF conditions
...
8c2118823b
had some incorrect preprocessor
conditions that aren't actually needed. Remove them.
https://bugzilla.gnome.org/show_bug.cgi?id=775248
2017-12-09 19:32:25 +00:00
Matthew Waters
7306f2de2c
glwindow: move g_main_context_push/pop_thread_default() to run()
...
Calling g_main_context_push_thread and then g_main_context_invoke()
(used by gst_gl_window_send_message_async()) in the same thread will
cause the invoked function to run immediately instead of being delayed.
This had implications for the creation of the OpenGL context not waiting
until the main loop had completely started up and as a result would
sometimes deadlock in short create/destroy scenarios.
https://bugzilla.gnome.org/show_bug.cgi?id=775171
2017-12-09 19:32:25 +00:00
Matthew Waters
f22390e46e
glcontext: fix race between creation/shutdown
...
626bcccff9
removed some locks that
allowed the main loop quit to occur before the context was fully
created.
2776cef25d
attempted to readd them but
missed the scop of the quit() call.
Also remove the use of g_thread_join() as that's not safe to use when
it's possible to lose the last reference from the GL thread.
https://bugzilla.gnome.org/show_bug.cgi?id=775171
2017-12-09 19:32:25 +00:00
Sebastian Dröge
46e71e095f
gl/x11: Remove unused static function
2017-12-09 19:32:25 +00:00
Matthew Waters
86a9499d5e
gl/contextglx: error out on more invalid display/window combinations
...
https://bugzilla.gnome.org/show_bug.cgi?id=774851
2017-12-09 19:32:25 +00:00
Matthew Waters
afbca8576e
gl: add necessary context_egl.h #includes to the source files
2017-12-09 19:32:25 +00:00
Matthew Waters
6992e16d4d
gl/memoryegl: remove access to private header gstglcontext_egl.h
...
It's been removed and thus compiling anything against GstGLMemoryEGL
would error with:
In file included from gstomxvideodec.c:41:0:
usr/include/gstreamer-1.0/gst/gl/egl/gstglmemoryegl.h:32:41: fatal error: gst/gl/egl/gstglcontext_egl.h: No such file or directory
#include <gst/gl/egl/gstglcontext_egl.h>
^
https://bugzilla.gnome.org/show_bug.cgi?id=774886
2017-12-09 19:32:25 +00:00
David Evans
7d034ba2d9
gl: add gstreamer-video to pkg-config path
...
https://bugzilla.gnome.org/show_bug.cgi?id=774624
2017-12-09 19:32:25 +00:00
Matthew Waters
dd31f7934c
meson: gl/egl: add missing source file
...
d42145e8c1
didn't add the necessary
meson build changes.
2017-12-09 19:32:25 +00:00
Matthew Waters
59b65373b0
gl/egl: remove EGLImage functions from egl context
...
By adding the necessary GstEGLImage entry points to create a GstEGLImage
from a GstGLMemory.
https://bugzilla.gnome.org/show_bug.cgi?id=774518
2017-12-09 19:32:25 +00:00
Matthew Waters
39e75767fb
glcontext: add vfunc to retrieve the OpenGL platform version
...
i.e. the version of EGL, GLX, etc implemented.
https://bugzilla.gnome.org/show_bug.cgi?id=774518
2017-12-09 19:32:25 +00:00
Matthew Waters
6703641734
gl/egl: move get_error_string() into gstegl
...
So others can use it without #include-ing a private header
https://bugzilla.gnome.org/show_bug.cgi?id=774518
2017-12-09 19:32:24 +00:00
Matthew Waters
415ce6c96a
display/egl: implement getting the EGLDisplay of a specific platform
...
https://bugzilla.gnome.org/show_bug.cgi?id=774518
2017-12-09 19:32:24 +00:00
Víctor Manuel Jáquez Leal
ddf7fe0e80
gl/egl: check the feature in the extensions list
...
https://bugzilla.gnome.org/show_bug.cgi?id=774518
2017-12-09 19:32:24 +00:00
Matthew Waters
6e409db6e0
glcontext/cocoa: implement empty swap_buffers
...
Fixes some GL tests on OS X.
2017-12-09 19:32:24 +00:00
Matthew Waters
569fa380e5
glwindow/cocoa: remove unneeded window code in NSWindow
...
This is all taken care of by GstGLWindowCocoa/GstGLNSView now.
2017-12-09 19:32:24 +00:00
Matthew Waters
66619ed690
glwindow/cocoa: remove our view from the parent when closing
...
Otherwise, when the application reuses the same UIView, we were getting
draw notifications on the previous view/layer's which weren't valid anymore
and were referencing pointers that had been freed.
https://bugzilla.gnome.org/show_bug.cgi?id=753003
2017-12-09 19:32:24 +00:00
Matthew Waters
b19e74e02d
gl/caopengllayer: add a debug category
2017-12-09 19:32:24 +00:00
Matthew Waters
28d3ab2922
glbufferpool: introduce check for GLMemory allocators
...
The last missing piece of EGLImage support has been pushed.
2017-12-09 19:32:24 +00:00
Tim-Philipp Müller
0aae67d261
gl: x11-xcb is not a required dependency
...
Don't fail if it's not found..
2017-12-09 19:32:24 +00:00
Matthew Waters
8a1d31f6ab
gl/utils: move gen_shader() to the plugin and remove del_shader()
...
gst_gl_context_del_shader() can be replaced by a g_object_unref().
gst_gl_context_gen_shader() should be replaced by using GstGLSLStage.
2017-12-09 19:32:24 +00:00
Matthew Waters
e483b092f1
glwindow: remove unused field in public struct
2017-12-09 19:32:24 +00:00
Matthew Waters
2b89a2c348
glwindow: remove is_running() function
...
It isn't necessary in correctly written programs.
2017-12-09 19:32:24 +00:00
Nirbheek Chauhan
204e68a5b1
meson/gl: XCB changes also need x11-xcb as a dependency
...
https://ci.gstreamer.net/job/GStreamer-master-meson/380/console
[...]
gst-libs/gst/gl/x11/xcb_event_source.c:98: undefined reference to `xcb_get_file_descriptor'
2017-12-09 19:32:24 +00:00
Philippe Normand
3aee8b8b23
gl/x11: fix meson build
...
The x11_event_source.[ch] files were renamed in
4f6c226bd2
.
2017-12-09 19:32:24 +00:00
Matthew Waters
4abca9f5d0
glwindow: remove the navigation thread
...
This functionality can now effectively be implemented with the display event
thread.
2017-12-09 19:32:24 +00:00
Matthew Waters
0e56bead42
gl/x11: use xcb instead of libX11
...
- xcb is supposedly thread-safe!
videotestsrc ! glimagesink now doesn't spuriously result in a
'call XInitThreads()' error however if anybody else is using X11,
then XInitThreads() still needs to be called and multiple glimagesink's
still need XInitThreads().
Everything still takes libX11 handles as they are compatible with the xcb
variants. Unfortunately we cannot move fully over to xcb due to GLX being
entirely based on Xlib. It's also impossible to transform a xcb_connection
to a Display which means we require X11 handles.
2017-12-09 19:32:24 +00:00
Matthew Waters
af493eb6b2
gldisplay: add a list of glwindow's
...
With the event thread on the display, for a particular winsys event
we need to be able to retreive the window that the event matches.
2017-12-09 19:32:24 +00:00
Matthew Waters
3870012f18
gldisplay: add a dedicated event thread
...
Will take the place of the navigation event thread for dealing with
winsys events.
2017-12-09 19:32:24 +00:00
Matthew Waters
ef70a7beae
gl: don't expose OpenGL prototypes
...
We roll our own to avoid depending a certain OpenGL header version
2017-12-09 19:32:24 +00:00
Matthew Waters
4a1d23ea85
gl/cocoa: don't install the gstglcontext_cocoa.h header
...
It's not needed to be exposed
2017-12-09 19:32:24 +00:00
Matthew Waters
50f60c9ae9
gl/android: don't install the android window header
...
It's not needed
2017-12-09 19:32:24 +00:00
Matthew Waters
d0b8f7c002
gl: add padding to all exposed winsys/platform-specific structs
2017-12-09 19:32:24 +00:00
Matthew Waters
d7d42971ab
gl/wayland: install the gstgldisplay_wayland.h header
...
As it is used by other OpenGL sinks (gtkglsink, qmlglsink)
2017-12-09 19:32:24 +00:00
Matthew Waters
9d295ed19b
gl/egl: don't install the gstglcontext_egl.h header
...
It's not needed to be exposed and there are no users of the API.
2017-12-09 19:32:24 +00:00
Matthew Waters
181dacc77e
glfilter: remove display_init/reset
...
They are mirrors of GstGLBaseFilter's gl_start() and gl_stop() virtual methods
so use them instead.
2017-12-09 19:32:23 +00:00
Matthew Waters
873466a1f1
gldisplay: Fix inverted precondition
...
A GError argument must either be null or point to a NULL GError.
https://developer.gnome.org/glib/stable/glib-Error-Reporting.html
2017-12-09 19:32:23 +00:00
Matthew Waters
62d0bac993
gl/gi: some annotation updates for called functions
...
With scope, closure, destroy annotations
2017-12-09 19:32:23 +00:00
Matthew Waters
3ef6af7b0f
gl/gi: also include GstVideo
...
Removes all the unknown type GstVideo* warnings while building the GIR
file.
2017-12-09 19:32:23 +00:00
Matthew Waters
c6c7f421e3
glfeature: move internal functions into a private header
...
Don't expose them to the outside world
2017-12-09 19:32:23 +00:00
Matthew Waters
18ac98c58b
gl: GST_GL_TYPE -> GST_TYPE_GL
...
Some deprecated symbols are kept for backwards compatibility
2017-12-09 19:32:23 +00:00
Matthew Waters
9bafa08a5d
gl/docs: massive update
...
- add Since: markers where necessary.
- document structs
- add documentation headers for each module (short_description,
see_also, etc)
- reduce the number of warnings gtk-doc outputs
- fix spelling mistakes
2017-12-09 19:32:23 +00:00
Matthew Waters
51a6f47bf8
gl/docs: document new API added in 1.10
...
GstGLRenderbuffer
GstGLFramebuffer
GstGLQuery
GstEGLImage
GstGLMemoryEGL
2017-12-09 19:32:23 +00:00
Matthew Waters
8faebcf915
glsl: fix #version 150 not working with profiles
...
The spec allows the core/compatibility profiles to be used
with #version 150.
Also tighten up the tests to check for default profiles being chosen
correctly.
2017-12-09 19:32:23 +00:00
Nirbheek Chauhan
a3968fa896
build: Also need to define GST_EXPORTS for Autotools
...
The change to use GST_EXPORT for symbols under Windows requires
GST_EXPORTS for internal use, and that is also needed under Autotools.
The same thing is done for gstreamer-1.0.dll in -core.
2017-12-09 19:32:23 +00:00
Nirbheek Chauhan
d57808385c
gstgl: Re-enable WINAPI on _MSC_VER
...
The calling convention may be deprecated, but we still need it for
OpenGL. The build issue was caused by an incorrect syntax being used for
the WINAPI (__stdcall) prototype in function pointers which was accepted
by GCC but is rejected by MSVC.
2017-12-09 19:32:23 +00:00
Nirbheek Chauhan
503822eb20
Explicitly define float constants as float
...
With MSVC, this gives the following warning:
warning C4305: 'function': truncation from 'double' to 'gfloat'
Apparently, MSVC does not figure out what type to use for constants
based on the assignment. This warning is very spammy, so let's try to
fix it.
2017-12-09 19:32:23 +00:00
Nirbheek Chauhan
6106816f50
gstgl: Add GST_EXPORT to all symbols used on Windows
...
This is a requirement for those symbols to be exported in gstgl-1.0.dll
when building with the MSVC compiler
2017-12-09 19:32:23 +00:00
Nirbheek Chauhan
c7c2a68de2
meson: Add support for building WGL on Windows
...
Currently only tested with MSVC.
2017-12-09 19:32:23 +00:00
Nirbheek Chauhan
45ad33c94c
gstgl: Porting fixes for MSVC with Meson
...
GL/gl.h needs windows.h on MSVC
WINAPI should not be used with MSVC. It also causes a build error.
2017-12-09 19:32:23 +00:00
Matthew Waters
08e20ff131
glsyncmeta: don't glFinish() everytime a sync point is set
...
At minimum, we only need to glFlush() if we are in a shared GL context
environment. Move the glFinish() to when the actual wait is requested
which may be never. Improves the throughput on older GL systems without
GL3/GLES3 and/or fence sync objects.
2017-12-09 19:32:23 +00:00
Matthew Waters
99f5ac40db
meson: gl: add support for building with dispmanx on the rpi
2017-12-09 19:32:23 +00:00
Matthew Waters
36b8ed8712
gl/eglimage: Fix passing the destroy function to gst_egl_image_new_wrapped
...
The function pointer and the user data arguments were swapped in both
uses.
https://bugzilla.gnome.org/show_bug.cgi?id=769382
2017-12-09 19:32:23 +00:00
Munez
e49f723a07
Implemented gst_video_overlay_set_window_handle()
...
https://bugzilla.gnome.org/show_bug.cgi?id=772608
2017-12-09 19:32:23 +00:00
Matthew Waters
78d8e895df
meson: gl: fix detection of glx without gl
...
We need to check for libGL if we may use desktop OpenGL *or* GLX.
2017-12-09 19:32:23 +00:00
Matthew Waters
f70d4ec22d
meson: gl: fix incorrect error string
...
Use the winsys variable for an incorrect winsys provided
2017-12-09 19:32:23 +00:00
Munez
0207ce9818
gl/dispmanx: egl_show should resize the window only if there is no render rectangle set
...
https://bugzilla.gnome.org/show_bug.cgi?id=772699
2017-12-09 19:32:23 +00:00
Munez
7a41cbd599
gl/dispmanx: Fix set_render_rectangle typo
...
https://bugzilla.gnome.org/show_bug.cgi?id=772698
2017-12-09 19:32:23 +00:00
Matthew Waters
126ee924c0
glwindow: don't use g_thread_join() to join the navigation thread
...
Using g_thread_join() in _finalize() handlers may result in a deadlock
joining the current thread when the last reference is held by a signal
handler.
e.g.:
error 'Resource deadlock avoided' during 'pthread_join (pt->system_thread, NULL)'
The backtrace looks like this:
[...]
g_thread_join ()
gst_gl_window_finalize ()
gst_gl_window_x11_finalize ()
g_object_unref ()
g_value_unset ()
g_signal_emit_valist ()
g_signal_emit ()
gst_gl_window_send_mouse_event ()
gst_gl_window_mouse_event_cb ()
g_main_dispatch ()
[..]
g_main_loop_run ()
gst_gl_window_navigation_thread ()
g_thread_proxy ()
start_thread ()
clone ()
2017-12-09 19:32:23 +00:00
Matthew Waters
112f85a474
gl/win32: remove egl implementation
...
It hasn't been used in ages and is dead code.
2017-12-09 19:32:22 +00:00
Gwang Yoon Hwang
485dffa6d5
gl/dispmanx: Implements set_render_rectangle to adjust the position of window
...
We cannot set the x, y coordinate of the video frame at the dispmanx at
this point. We need to teach dispmanx backend to understand about
set_render_rectangle API to draw a video with other UI.
This patch keeps the current behavior which places video frame at the
center of the display if there is no set_render_rectangle call to the
dispmanx window.
https://bugzilla.gnome.org/show_bug.cgi?id=766018
2017-12-09 19:32:22 +00:00
Matthew Waters
1e8c7e0f31
gl: add necessary padding bytes to all public structs
2017-12-09 19:32:22 +00:00
Matthew Waters
7cbac97b94
gldisplay: also free the GWeakRef when removing dead contexts
...
Otherwise we leak GWeakRef's.
Found with make -C tests/check libs/gstglcontext.valgrind
2017-12-09 19:32:22 +00:00
Matthew Waters
f678dcaf2b
meson/gl: use separate deps for gl and glx
...
e.g. passing with_gl_api=gles2 would still build the glx code but not be
linking against the libGL library which is where the glX* functions are
located and would result in a linker error.
Solved by checking for the libGL library if either opengl or glx may be
needed and then disabling the corresponding deps as requested.
2017-12-09 19:32:22 +00:00
Matthew Waters
8d60fa2327
meson: add some starting build files for GL
...
Currently only works on linux with egl/glx + wayland/x11 but the general
principals have been layed out for adding the other GL platforms/winsys'.
2017-12-09 19:32:22 +00:00
Alistair Buxton
94f5fc5d83
gl: Remove duplicate GL_CFLAGS in Makefile.am.
...
https://bugzilla.gnome.org/show_bug.cgi?id=771021
2017-12-09 19:32:22 +00:00
Jan Schmidt
ae89055e67
gl: Remove extra duplicate typedef of GstGLFramebuffer
...
It's triggering a warning building git master on OSX
2017-12-09 19:32:22 +00:00