Lubosz Sarnecki [Mon, 20 Jul 2015 18:24:22 +0000 (14:24 -0400)]
glimagesinkbin: Add allocation query for GstVideoOverlayComposition
Adds an GST_VIDEO_OVERLAY_COMPOSITION_META_API_TYPE query to glupload
and glimagesink. Detects the query from the downstream elements, so
it is executed only when downstream supports the overlay API.
This makes pipelines with textoverlay ! glupload ! gldownload ! xvimagesink possible.
Uses allocation meta struct for passing the window size upstream.
https://bugzilla.gnome.org/show_bug.cgi?id=745107
Lubosz Sarnecki [Mon, 20 Apr 2015 11:17:09 +0000 (13:17 +0200)]
glcolorconvert: Apply GstVideoOverlayCompositionMeta buffer to converted buffer
Since glcolorconvert creates a new GstBuffer,
without the GstVideoOverlayCompositionMeta data,
it needs to be copied to not be dropped.
https://bugzilla.gnome.org/show_bug.cgi?id=745107
Lubosz Sarnecki [Thu, 18 Jun 2015 11:34:58 +0000 (13:34 +0200)]
glupload: Detect overlay meta buffers correctly
https://bugzilla.gnome.org/show_bug.cgi?id=745107
Lubosz Sarnecki [Thu, 18 Jun 2015 03:43:50 +0000 (05:43 +0200)]
glimagesinkbin: Add GstVideoOverlayCompositionMeta caps features
https://bugzilla.gnome.org/show_bug.cgi?id=745107
Lubosz Sarnecki [Thu, 18 Jun 2015 04:04:37 +0000 (06:04 +0200)]
glimagesink: Upload and draw overlays with GstGLOverlayCompositor
Receives the GstOverlayComposition buffer in the glimagesink and draws them.
https://bugzilla.gnome.org/show_bug.cgi?id=745107
Lubosz Sarnecki [Tue, 30 Jun 2015 15:59:12 +0000 (17:59 +0200)]
gloverlaycompositor: Add GstGLOverlayCompositor class
Manages the GstGLCompositionOverlay objects,
caches already uploaded overlays and draws them.
https://bugzilla.gnome.org/show_bug.cgi?id=745107
Lubosz Sarnecki [Thu, 18 Jun 2015 12:15:01 +0000 (14:15 +0200)]
glcompositionoverlay: Add compatibility for GL contexts without glGenVertexArrays
https://bugzilla.gnome.org/show_bug.cgi?id=745107
Lubosz Sarnecki [Sat, 13 Jun 2015 13:35:47 +0000 (15:35 +0200)]
glcompositionoverlay: Add class for managing GstVideoOverlayCompositionOverlay buffers
Add a class to store and manage the OpenGL texture,
vertex buffer and GstVideoOverlayRectangle.
Transforms overlay coordinate space to vertex buffer space with aspect ratios in mind.
= Example Pipelines =
Simple pipeline
gst-launch-1.0 videotestsrc ! \
textoverlay text="Hello World" font-desc="sans bold 30" ! \
glimagesink
Display 3 static overlays at different positions
gst-launch-1.0 videotestsrc ! \
textoverlay text="text1" valignment="top" font-desc="sans bold 30" ! \
textoverlay text="text2" halignment="right" font-desc="sans bold 30" ! \
textoverlay text="text3" halignment="left" font-desc="sans bold 30" ! \
glimagesink
Display subtitle file over testsrc
gst-launch-1.0 videotestsrc ! \
textoverlay name=foo filesrc location=foo.srt ! subparse ! queue ! foo. foo. ! \
glimagesink
https://bugzilla.gnome.org/show_bug.cgi?id=745107
Lubosz Sarnecki [Thu, 18 Jun 2015 09:33:29 +0000 (11:33 +0200)]
glupload: Move debug init to top of the file
https://bugzilla.gnome.org/show_bug.cgi?id=745107
Matthew Waters [Mon, 20 Jul 2015 08:19:02 +0000 (18:19 +1000)]
glmemory: check for pbo availability before attempting pbo download
https://bugzilla.gnome.org/show_bug.cgi?id=751165
Matthew Waters [Sat, 18 Jul 2015 07:19:18 +0000 (17:19 +1000)]
glcontext: fix get_current_gl_api on x11/nvidia drivers
They require to get_proc_address some functions through the
platform specific {glX,egl}GetProcAddress rather than the default
GL library symbol lookup.
Matthew Waters [Sat, 18 Jul 2015 07:08:36 +0000 (17:08 +1000)]
glcontext: consolidate get_proc_address function definition
Pass the GstGLAPI directly.
Matthew Waters [Fri, 17 Jul 2015 07:47:37 +0000 (17:47 +1000)]
glcolorconvertelement: propagate failure to convert buffer upstream
Rather than just silently continuing
Matthew Waters [Fri, 17 Jul 2015 03:48:00 +0000 (13:48 +1000)]
glcontext/glx: try creating a context with the highest version
nvidia drivers return the exact version in glGstString (GL_VERSION)
we request on creation so start with the highest known version and
work our way down.
Matthew Waters [Wed, 15 Jul 2015 14:37:58 +0000 (00:37 +1000)]
glcontext: track sharedness with a cookie
The previous approach of traversing the other_context weak ref tree was
1. Less performant
2. Incorrect for context destruction removing a link in the tree
Example of 2:
c1 = context_create (NULL)
c2 = context_create (c1)
c3 = context_create (c2)
context_can_share (c1, c3) == TRUE
context_destroy (c2)
unref (c2)
context_can_share (c1, c3) returns FALSE when it should be TRUE!
This does not remove the restriction that context sharedness can only
be tracked between GstGLContext's.
Matthew Waters [Wed, 15 Jul 2015 14:33:17 +0000 (00:33 +1000)]
glcontext: use the debug object variant for completeness
Nicolas Dufresne [Thu, 16 Jul 2015 20:47:05 +0000 (16:47 -0400)]
uploadelement: Protect against NULL pointer
I notice that if you stop the pipeline during a renegotiation
the upload may be NULL while an allocation query is being run.
In that scenario, returning FALSE to the allocation query is the
best thing.
Matthew Waters [Tue, 14 Jul 2015 07:40:32 +0000 (17:40 +1000)]
glupload: memcpy on raw data upload
Anything else requires keeping track of the GstVideoFrame mapping
across possible multiple buffers to ensure correct data pointer
usage.
Matthew Waters [Tue, 14 Jul 2015 07:39:59 +0000 (17:39 +1000)]
glbasebuffer: add some debug and zero the data pointers on init
Sebastian Dröge [Mon, 6 Jul 2015 10:28:05 +0000 (13:28 +0300)]
gl/eagl: Don't call anything synchronously from the main thread
This will deadlock if the main thread is the one who creates the GstGLContext.
All things we call from the main thread should be possible from any thread.
https://bugzilla.gnome.org/show_bug.cgi?id=751101
Matthew Waters [Tue, 7 Jul 2015 12:35:47 +0000 (22:35 +1000)]
download: only start a download transfer for sysmem caps features
Hyunjun Ko [Tue, 7 Jul 2015 01:57:26 +0000 (10:57 +0900)]
glsyncmeta: transform func: return FALSE if not supported or failed
https://bugzilla.gnome.org/show_bug.cgi?id=751778
Matthew Waters [Tue, 7 Jul 2015 06:39:09 +0000 (16:39 +1000)]
android: add missing egl.h include
Matthew Waters [Tue, 7 Jul 2015 05:30:17 +0000 (15:30 +1000)]
gltransformation: correct vao usage
keep the vao bound after uploading the new vertex data
fixes a mesa GL error "no vertex array object bound" on caps changes
Matthew Waters [Tue, 16 Jun 2015 07:49:34 +0000 (07:49 +0000)]
gl: consolidate egl header includes to egl-only headers
They may conflict with other headers.
Olivier Crête [Fri, 3 Jul 2015 16:17:42 +0000 (12:17 -0400)]
glvideomixer, glmixer: Add description and klass
Julien Isorce [Thu, 2 Jul 2015 09:26:18 +0000 (10:26 +0100)]
gl: initialize output params to 0 before calling gl functions
The client side API of the Chromium's GPU Process has asserts
in debug mode that check that output params are initialized to 0.
Nicolas Dufresne [Fri, 26 Jun 2015 19:34:35 +0000 (15:34 -0400)]
gl: Don't leak pool if set_config failed
Nicolas Dufresne [Fri, 26 Jun 2015 19:33:33 +0000 (15:33 -0400)]
glfilter: Don't cache buffer pool
Caching and sharing to multiple element the same pool prevents
renegotiation from passthrough to not passthrough.
Vineeth TM [Thu, 2 Jul 2015 08:08:26 +0000 (17:08 +0900)]
glimagesink: use g_clear_error instead of g_error_free
replace g_error_free with g_clear_error, as it internally
checks if error variable is valid or not.
https://bugzilla.gnome.org/show_bug.cgi?id=751823
Luis de Bethencourt [Mon, 29 Jun 2015 15:10:39 +0000 (16:10 +0100)]
gl: add missing break
gst_gl_view_convert_element_set_property() is missing a break at the end
of the PROP_OUTPUT_DOWNMIX_MODE case. Adding it.
CID #1308949
Nicolas Dufresne [Fri, 26 Jun 2015 18:12:22 +0000 (14:12 -0400)]
glimagesink: Don't leak pool
gst_query_add_allocation_pool is transfer none. Also unref
if there was a configuration error.
Sebastian Dröge [Tue, 23 Jun 2015 14:46:39 +0000 (16:46 +0200)]
Revert "gl/window/x11: don't create our own X11 display"
This reverts commit
5697b6b89b4b2a15c45bd47be940a17f4412ea11.
https://bugzilla.gnome.org/show_bug.cgi?id=751003
Sebastian Dröge [Tue, 23 Jun 2015 12:16:39 +0000 (14:16 +0200)]
Revert "eagl: Don't dispatch_sync() to the main thread if we are on the main thread"
This reverts commit
0bff481011cf74c59869b511393d1696b570e3d5.
It wasn't supposed to be merged and also doesn't fix the problem.
Sebastian Dröge [Tue, 23 Jun 2015 09:05:06 +0000 (11:05 +0200)]
eagl: Don't dispatch_sync() to the main thread if we are on the main thread
This will otherwise deadlock.
https://bugzilla.gnome.org/show_bug.cgi?id=751101
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.