John Ludwig [Tue, 23 Jun 2015 08:31:44 +0000 (10:31 +0200)]
gl: Include texParameterf in the GL function table
https://bugzilla.gnome.org/show_bug.cgi?id=751228
Julien Isorce [Mon, 22 Jun 2015 13:06:04 +0000 (14:06 +0100)]
glmemory: fix consistency about pbo availability.
https://bugzilla.gnome.org/show_bug.cgi?id=751165
Julien Isorce [Mon, 15 Jun 2015 15:09:54 +0000 (16:09 +0100)]
gldisplay: add gst_gl_display_create_context
It also emits a create-context signal so that an application
can provide an external GstGLContext backend.
https://bugzilla.gnome.org/show_bug.cgi?id=750310
Julien Isorce [Mon, 15 Jun 2015 15:36:26 +0000 (16:36 +0100)]
glcontext: move display from priv
https://bugzilla.gnome.org/show_bug.cgi?id=750310
Julien Isorce [Thu, 18 Jun 2015 09:55:28 +0000 (10:55 +0100)]
Revert "glcontext: add gst_gl_context_set_display helper"
This reverts commit
71b8103cbd16fff9cf5a65cf517083cb794aa3b5.
Julien Isorce [Thu, 18 Jun 2015 09:52:18 +0000 (10:52 +0100)]
Revert "gl: add GstGLContextGPUProcess backend"
This reverts commit
b377112ee38912d316e77b4e2102041389dc0051.
Jan Schmidt [Fri, 19 Jun 2015 04:35:37 +0000 (14:35 +1000)]
glimagesink: Remove duplicate, useless line of code
Nicolas Dufresne [Fri, 19 Jun 2015 02:11:05 +0000 (22:11 -0400)]
opengl: glstero* are only built with full OpenGL
Don't try to register the elements unless they are built.
Nicolas Dufresne [Thu, 18 Jun 2015 22:09:55 +0000 (18:09 -0400)]
glviewconvert: Fix GLES2 compatibility
Nicolas Dufresne [Thu, 18 Jun 2015 22:02:21 +0000 (18:02 -0400)]
glviewconvert: Fix broken validity check
Jan Schmidt [Fri, 29 May 2015 17:09:17 +0000 (03:09 +1000)]
3dvideo: Add simple gtk example stereoscopic video player
https://bugzilla.gnome.org/show_bug.cgi?id=611157
Jan Schmidt [Fri, 29 May 2015 16:29:04 +0000 (02:29 +1000)]
gl: Add glviewconvert, glstereomix and glstereosplit elements
Conversion elements for transforming multiview/stereoscopic video
https://bugzilla.gnome.org/show_bug.cgi?id=611157
Jan Schmidt [Fri, 29 May 2015 16:26:32 +0000 (02:26 +1000)]
glimagesink: Support multiview/stereoscopic video
Support video with multiview info in the caps, transform
it to mono anaglyph by default, but allow for configuring
other output modes and handoff to the app via
the draw signal.
https://bugzilla.gnome.org/show_bug.cgi?id=611157
Jan Schmidt [Fri, 29 May 2015 16:21:43 +0000 (02:21 +1000)]
gl libs: Add glviewconvert helper object
Add API for a helper object that can convert between different
stereoscopic video representations, and later do filtering
of multiple view streams.
https://bugzilla.gnome.org/show_bug.cgi?id=611157
Matthew Waters [Mon, 15 Jun 2015 12:43:54 +0000 (22:43 +1000)]
glimagesink: add missing handle-events/ignore-alpha property to the bin
Matthew Waters [Mon, 15 Jun 2015 06:47:15 +0000 (16:47 +1000)]
gl/examples: update qt examples for api changes
Matthew Waters [Sat, 13 Jun 2015 08:43:04 +0000 (18:43 +1000)]
glmixerbin: implement proper dynamic pad removal
https://bugzilla.gnome.org/show_bug.cgi?id=750881
Nicolas Dufresne [Sat, 13 Jun 2015 00:14:37 +0000 (20:14 -0400)]
glimagesink: Don't do pool caching
We now know that pool caching can cause renegotiation issues
when an element in the pipeline change from passthrough to not
passthrough. As it's not needed, don't cache existing pools.
https://bugzilla.gnome.org/show_bug.cgi?id=748344
Matthew Waters [Thu, 11 Jun 2015 08:26:50 +0000 (18:26 +1000)]
glmemory: separate pbo transfer from texture transfers
When supported, the potentially longer pbo upload/download can be
initiated before the texture upload/download, potentially increasing
throughput.
Matthew Waters [Wed, 10 Jun 2015 06:36:15 +0000 (16:36 +1000)]
glmemory: implement on top of glbasebuffer
Provides convenient access to PBO usage.
Currently texture updates are coupled tightly to data transfers.
Matthew Waters [Wed, 10 Jun 2015 06:24:59 +0000 (16:24 +1000)]
gl: new glbasebuffer GstMemory object
Provides generic handling of GL buffer objects accessible using
the GL bind points (GL_ARRAY_BUFFER, GL_PIXEL_*_BUFFER).
Implementation based off the current GstGLMemory.
Matthew Waters [Wed, 10 Jun 2015 06:23:36 +0000 (16:23 +1000)]
gl/prototypes: add some buffer function prototypes
Matthew Waters [Fri, 12 Jun 2015 03:14:57 +0000 (13:14 +1000)]
gl/window/x11: only listen on the X Display when needed
5697b6b89b4b2a15c45bd47be940a17f4412ea11 causes us to possibly listen
on a toolkit provided Display connection. We thus could eat their
precious winsys events. Only listen if we need to
(!foreign_display or videooverlay).
Jan Schmidt [Fri, 29 May 2015 16:15:51 +0000 (02:15 +1000)]
gl: Add support for multiple views in upload, colour convert and download
Support multiple attached views on input/output buffers
by processing each one, not just the first.
Matthew Waters [Thu, 11 Jun 2015 14:32:00 +0000 (00:32 +1000)]
gl/window/x11: don't create our own X11 display
It's not needed anymore with most window operations occuring in the
GL thread.
Matthew Waters [Thu, 11 Jun 2015 14:30:58 +0000 (00:30 +1000)]
gl/window/x11: handle_events() may be called before the window has been created
Fixes an XIO fatal error
Matthew Waters [Thu, 11 Jun 2015 14:29:23 +0000 (00:29 +1000)]
gl: move basesink properties from glimagesinkbin to glsinkbin
Sebastian Dröge [Thu, 11 Jun 2015 13:22:04 +0000 (15:22 +0200)]
gl: Use gst_object_ref_sink() for gl{filter,mixer,src}bin too
Sebastian Dröge [Thu, 11 Jun 2015 13:17:02 +0000 (15:17 +0200)]
glsinkbin: Use gst_object_ref_sink() for consistency with the video-sink property on playbin
Sebastian Dröge [Wed, 10 Jun 2015 09:42:06 +0000 (11:42 +0200)]
gl: OES_vertex_array_object is improperly implemented on PowerVR SGX 544MP
https://bugzilla.gnome.org/show_bug.cgi?id=750185
Thiago Santos [Fri, 5 Jun 2015 12:35:39 +0000 (09:35 -0300)]
Fix a common typo: retreive -> retrieve
Seems to have been copy pasted around a few places
Philippe Normand [Thu, 4 Jun 2015 07:40:19 +0000 (09:40 +0200)]
gl/dispmanx: Fix build
Julien Isorce [Wed, 3 Jun 2015 21:21:30 +0000 (22:21 +0100)]
gl/example: fix build error when compiling cocoa-videooverlay
libtool: error: ignoring unknown tag OBJC
and
clang: error: argument unused during compilation: '-pthread'
Matthew Waters [Thu, 4 Jun 2015 05:01:16 +0000 (15:01 +1000)]
gl/window/dispmanx: fix compiler warning
Matthew Waters [Thu, 4 Jun 2015 02:16:35 +0000 (12:16 +1000)]
gl/window: use the default main loop implementation for all backends
fixes glimagsink being unable to display.
https://bugzilla.gnome.org/show_bug.cgi?id=750337
Julien Isorce [Wed, 3 Jun 2015 20:22:09 +0000 (21:22 +0100)]
glwindow_cocoa: use parent default implementation
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=750337
Jan Schmidt [Tue, 2 Jun 2015 14:31:42 +0000 (00:31 +1000)]
glsyncmeta: Set new sync point when copying
Set a new sync point when copying instead of
transferring the (non-refcounted) GL sync object
from the source meta.
https://bugzilla.gnome.org/show_bug.cgi?id=750279
Jan Schmidt [Tue, 2 Jun 2015 13:59:50 +0000 (23:59 +1000)]
glsyncmeta: Add some debug output
Matthew Waters [Tue, 2 Jun 2015 07:24:18 +0000 (17:24 +1000)]
glmemory: provide compatibility definition for GLES2 for GL_RGBA8
Matthew Waters [Tue, 2 Jun 2015 06:32:03 +0000 (16:32 +1000)]
gl: consolidate internal_rgba_format into glmemory
Expose some useful value format conversion functions available in
GstGLMemory.
Julien Isorce [Mon, 1 Jun 2015 13:07:37 +0000 (14:07 +0100)]
glcontext_gpu_process: close the window when done
Julien Isorce [Mon, 1 Jun 2015 13:05:58 +0000 (14:05 +0100)]
glwindow_gpu_process: avoid empty struct
Julien Isorce [Mon, 1 Jun 2015 11:58:11 +0000 (12:58 +0100)]
glwindow: move main loop/context creation back to init/finalize
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=750199
Edward Hervey [Mon, 1 Jun 2015 12:05:06 +0000 (14:05 +0200)]
examples: Fix gl usage without wayland support
Not all platforms have wayland support. Handle that gracefully at
compile time
Sebastian Dröge [Sun, 31 May 2015 19:30:23 +0000 (21:30 +0200)]
gl: Fix compiler warning
gstglwindow_wayland_egl.c:246:41: error: unused variable 'surface_listener' [-Werror,-Wunused-const-variable]
static const struct wl_surface_listener surface_listener = {
^
Matthew Waters [Sun, 31 May 2015 06:53:14 +0000 (16:53 +1000)]
glwindow: fix compiler error
gstglwindow.c:1118:544: error: 'return' with no value, in function returning non-void [-Werror]
g_return_if_fail (GST_GL_IS_WINDOW (window));
Matthew Waters [Sun, 31 May 2015 05:42:48 +0000 (15:42 +1000)]
gl/examples: update gtk examples for glupload
Matthew Waters [Sun, 31 May 2015 05:40:15 +0000 (15:40 +1000)]
gl/examples: update gtk examples for wayland
Matthew Waters [Fri, 29 May 2015 08:06:27 +0000 (18:06 +1000)]
gl/wayland: implement setting the render rectangle
Places our subsurface at the rectangle provided position
Matthew Waters [Fri, 29 May 2015 08:03:52 +0000 (18:03 +1000)]
glwindow: handle gst_video_overlay_set_render_rectangle
Matthew Waters [Fri, 29 May 2015 08:01:29 +0000 (18:01 +1000)]
gl/wayland: don't block the event loop after poll
Use the dispatch_pending set of functions which just run the currently
queued up events instead of potentially waiting for an event to occur.
Matthew Waters [Wed, 27 May 2015 06:42:55 +0000 (16:42 +1000)]
tests/gl/gtk: implement setting a wayland display/surface
Matthew Waters [Wed, 27 May 2015 06:39:06 +0000 (16:39 +1000)]
gl/wayland: implement basic video overlay support via subsurfaces
Currently does not position the subsurface relative to the parent surface at all
Matthew Waters [Wed, 27 May 2015 05:44:33 +0000 (15:44 +1000)]
gl/wayland: allow a NULL wl_event_queue
perform operations on the default wl_display event queue in that case
Matthew Waters [Wed, 27 May 2015 05:43:06 +0000 (15:43 +1000)]
gl/utils: implement wayland display GstContext
requried for sharing GL contexts or subsurface support
Matthew Waters [Fri, 22 May 2015 06:07:49 +0000 (16:07 +1000)]
gl/wayland: run each window on a separate queue
Based on patch by Julien Isorce <julien.isorce@collabora.co.uk>
https://bugzilla.gnome.org/show_bug.cgi?id=709747
Jan Schmidt [Fri, 29 May 2015 16:19:25 +0000 (02:19 +1000)]
gl: Don't leak temp strings in _RGB_pixel_order()
Fix a memory leak of temporary strings when computing
swizzling of RGB formats.
Jan Schmidt [Fri, 29 May 2015 16:29:47 +0000 (02:29 +1000)]
glfilter: Add transform_internal_caps() vfunc
Add a vfunc that is called by glfilter before it sets
caps features and intersects with the peer caps, and
move removing the size from caps into its default
implementation. Allows sub-classes to do more
sophisticated management of the size fields in case they
don't support arbitrary resizing or have distinct
preferences.
Jan Schmidt [Fri, 29 May 2015 16:23:44 +0000 (02:23 +1000)]
glfilter: Don't remove size fields from caps
Instead of removing size fields, set them to the full range
like videoscale does, so the caps are clearly unfixed in
all cases.
Julien Isorce [Wed, 27 May 2015 09:58:10 +0000 (10:58 +0100)]
gl: add GstGLContextGPUProcess backend
It builds its GL vtable from a proc address provided
by the application.
Julien Isorce [Wed, 27 May 2015 15:28:39 +0000 (16:28 +0100)]
gl: add and use gst_gl_internal_format_rgba
Previously when compiling GstGL with both GL and GLES2,
GL_RGBA8 was picked from GL/gl.h. But a clash may happen at
runtime when one is selecting GLES2.
gst_gl_internal_format_rgba allows to check at runtime
if it should use GL_RGBA or GL_RGBA8.
Julien Isorce [Wed, 27 May 2015 13:10:16 +0000 (14:10 +0100)]
glwindow_x11: use parent default implementation
Julien Isorce [Wed, 27 May 2015 10:16:32 +0000 (11:16 +0100)]
glcontext_glx: rename variable from window to context
Julien Isorce [Wed, 27 May 2015 10:11:55 +0000 (11:11 +0100)]
glwindow: initialize debug in class_init
Useful if one uses gst_gl_window_x11_new directly
instead of gst_gl_window_new.
Julien Isorce [Wed, 27 May 2015 10:07:38 +0000 (11:07 +0100)]
glcontext: initialize debug in class_init
Useful if one uses gst_gl_context_egl_new directly
instead of gst_gl_context_new.
Julien Isorce [Wed, 27 May 2015 09:55:20 +0000 (10:55 +0100)]
glcontext: add gst_gl_context_set_display helper
Julien Isorce [Wed, 27 May 2015 14:25:40 +0000 (15:25 +0100)]
glcontext: add missing _CAST after G_TYPE_CHECK_CLASS
Julien Isorce [Wed, 27 May 2015 09:51:54 +0000 (10:51 +0100)]
glwindow: add missing _CAST after G_TYPE_CHECK_CLASS
Julien Isorce [Tue, 26 May 2015 17:38:39 +0000 (18:38 +0100)]
glwindow: provides some default implementations to factorize with all backends
Luis de Bethencourt [Wed, 27 May 2015 12:05:11 +0000 (13:05 +0100)]
gleffects: 'for' loop initial declaration
'for' loop initial declarations are not allowed in C89, moving the declarations
to before the 'for' loops.
Xavier Claessens [Tue, 26 May 2015 20:47:47 +0000 (16:47 -0400)]
gloverlay: fix a leak
https://bugzilla.gnome.org/show_bug.cgi?id=749846
Xavier Claessens [Tue, 26 May 2015 19:10:28 +0000 (15:10 -0400)]
gloverlay: properly handle errors while loading file
Post an error on the bus if anything bad happens while reading
and parsing the image file.
https://bugzilla.gnome.org/show_bug.cgi?id=749846
Xavier Claessens [Tue, 26 May 2015 19:04:34 +0000 (15:04 -0400)]
gloverlay: remove unused type_file field
https://bugzilla.gnome.org/show_bug.cgi?id=749846
Xavier Claessens [Tue, 26 May 2015 19:01:37 +0000 (15:01 -0400)]
gl: propagate return value from filter and filter_texture
https://bugzilla.gnome.org/show_bug.cgi?id=749846
Matthew Waters [Tue, 26 May 2015 02:47:40 +0000 (12:47 +1000)]
gleffects: properly initialize the shaders across contexts implementing multiple API's
Matthew Waters [Tue, 26 May 2015 02:44:47 +0000 (12:44 +1000)]
gleffects_laplacian: fix shader compilation in gl3/gles2
https://bugzilla.gnome.org/show_bug.cgi?id=748393
Matthew Waters [Fri, 22 May 2015 03:12:09 +0000 (13:12 +1000)]
gl/wayland: remove dead event source code
Matthew Waters [Thu, 21 May 2015 07:48:31 +0000 (17:48 +1000)]
gl/wayland: add GstGLDisplayWayland
Simple implementation split from GstGLWindowWayland
Can now have multiple glimagesink elements all displaying output
linked via GL or otherwise (barring GL platform limitations).
The intel driver is racy and can crash setting up the two glimagesink contexts.
e.g.
videotestsrc ! tee name=t ! queue ! glupload ! glimagesinkelement
t. ! queue ! gleffects_blur ! glimagesinkelement
videotestsrc ! glupload ! glfiltercube ! tee name=t ! queue ! glimagesinkelement
t. ! queue ! gleffects_blur ! glimagesinkelement
Matthew Waters [Mon, 25 May 2015 07:27:58 +0000 (17:27 +1000)]
gltransformation: fix DrawElements call for element array buffers
https://bugzilla.gnome.org/show_bug.cgi?id=749734
Matthew Waters [Fri, 22 May 2015 15:00:18 +0000 (01:00 +1000)]
gl/calayer: provide the exact GL api version for the wrapped context
Otherwise we could end up being mistaken for the diference between a
gl3 and a gl2 context resulting in a failure getting the list of
extensions from the wrapped context due to the difference between
glGetString and glGetStringi for the GL_EXTENSIONS token.
https://bugzilla.gnome.org/show_bug.cgi?id=749728
Xavier Claessens [Thu, 21 May 2015 19:30:34 +0000 (15:30 -0400)]
gl: win32: do not call SetParent in release_parent_win_id()
When called from gst_gl_window_win32_close(), internal window
could not exist, and if it does it's going to be destroyed just
after that anyway. Also it causes window_proc() to be called
and crash because it gets a NULL context.
When called from gst_gl_window_win32_set_window_handle() we are
going to set another parent anyway, and it's probably better to
reparent directly instead of passing by a NULL parent which could
cause the internal window to popup briefly.
https://bugzilla.gnome.org/show_bug.cgi?id=749601
Xavier Claessens [Thu, 21 May 2015 19:30:00 +0000 (15:30 -0400)]
gl: win32: remove unused code
https://bugzilla.gnome.org/show_bug.cgi?id=749601
Xavier Claessens [Wed, 20 May 2015 21:09:21 +0000 (17:09 -0400)]
gl: win32: fix crash when finalizing GstGLContext
gst_gl_context_finalize() is calling gst_gl_window_win32_quit()
which was posting a message. But then window_proc takes window's
context and get a NULL.
Now that we've got a GMainLoop we can do like other backends and
simply call g_main_loop_quit().
This also remove duplicated code to release the parent window and
potential crash there because parent_proc could be NULL if we never
created the internal window. That could happen for example if setting
state to READY then setting a window_handle, and go back to NULL state.
https://bugzilla.gnome.org/show_bug.cgi?id=749601
Xavier Claessens [Wed, 20 May 2015 21:06:42 +0000 (17:06 -0400)]
gl: win32: Fix leaked GstGLContext
https://bugzilla.gnome.org/show_bug.cgi?id=749601
Xavier Claessens [Wed, 20 May 2015 19:30:49 +0000 (15:30 -0400)]
gl: win32: set the parent window when creating internal window
When _set_window_handle() was called in READY state, it wasn't
set to the internal window created later.
https://bugzilla.gnome.org/show_bug.cgi?id=749601
Xavier Claessens [Wed, 20 May 2015 19:29:50 +0000 (15:29 -0400)]
gl: win32: use a GMainContext to dispatch win32 messages
gst_gl_window_win32_send_message_async() could be called before the
internal window is created so we cannot use PostMessage there.
x11 and wayland backends both create a custom GSource for this,
so there is no reason to not do that for win32.
https://bugzilla.gnome.org/show_bug.cgi?id=749601
Jan Schmidt [Thu, 21 May 2015 14:27:36 +0000 (00:27 +1000)]
glupload: Don't leak all memory uploaded via raw uploads.
Remove an extra ref missed when switching over to not
reusing output textures
Sebastian Dröge [Thu, 21 May 2015 13:24:48 +0000 (16:24 +0300)]
compositor/glvideomixer: Don't calculate PAR/DAR with unset GstVideoInfos
Otherwise we divide by zero.
Matthew Waters [Thu, 21 May 2015 05:05:33 +0000 (15:05 +1000)]
glcontext: require a shader version to initialize.
It's very near pointless to try our GL implementation without shaders.
https://bugzilla.gnome.org/show_bug.cgi?id=749284
Jan Schmidt [Tue, 19 May 2015 16:38:53 +0000 (02:38 +1000)]
Fix flags order in GL examples for uninstalled build
Matthew Waters [Wed, 20 May 2015 14:56:01 +0000 (00:56 +1000)]
compositor/glvideomixer: fix up par handling
We were using the wrong formula
https://bugzilla.gnome.org/show_bug.cgi?id=749634
Xavier Claessens [Tue, 19 May 2015 14:43:28 +0000 (10:43 -0400)]
gl: fix crash on windows with intel driver
https://bugzilla.gnome.org/show_bug.cgi?id=749430
Matthew Waters [Tue, 19 May 2015 14:50:37 +0000 (00:50 +1000)]
caopengllayersink: static const the indices array
the contents will never change anyway.
Matthew Waters [Tue, 19 May 2015 14:28:52 +0000 (00:28 +1000)]
caopengllayersink: correctly use the sync meta across multiple contexts
1. Set the sync point after the (possible) upload has occured
2. Wait in the correct GL context (the draw context)
Note: We don't add the GL sync meta to the input buffer as it's not
writable and a copy would be expensive.
Similar to the change with the same name for glimagesink
Matthew Waters [Tue, 19 May 2015 14:28:07 +0000 (00:28 +1000)]
caopengllayersink: update for GL3 element array buffer usage
fixes blank output
Matthew Waters [Tue, 19 May 2015 06:22:00 +0000 (16:22 +1000)]
glimagesink: correctly use the sync meta across multiple contexts
1. Set the sync point after the (possible) upload has occured
2. Wait in the correct GL context (the draw context)
Note: We don't add the GL sync meta to the input buffer as it's not
writable and a copy would be expensive.
Matthew Waters [Tue, 19 May 2015 06:19:41 +0000 (16:19 +1000)]
gl/calayer: provide a current wrapped GstGLContext for callbacks
So that the draw and resize callbacks can get the current GstGLContext.
Matthew Waters [Tue, 19 May 2015 06:14:39 +0000 (16:14 +1000)]
glsyncmeta: ensure that the Fence is going to be executed
Otherwise it could stay client side without being submitted to the GL
server resulting in another context waiting on a Fence that will never
become signalled causing a deadlock.
Matthew Waters [Tue, 19 May 2015 01:47:23 +0000 (11:47 +1000)]
glupload: don't reuse output textures for raw data upload
Causes stale textures to be used further down the chain.
Matthew Waters [Tue, 19 May 2015 01:11:02 +0000 (11:11 +1000)]
glframebuffer: don't clear the framebuffer
Breaks attempting to blend with the destination buffer and should be done
explicitly by the callback anyway.