Matthew Waters [Tue, 23 Sep 2014 02:02:18 +0000 (12:02 +1000)]
glupload: fallback to upload if contexts cannot share GL resources
Fixes pipelines of the form
gleffects ! tee ! glimagesink
as tee does not pass on the allocation query.
Matthew Waters [Tue, 23 Sep 2014 02:01:04 +0000 (12:01 +1000)]
glcontext: add gst_gl_context_can_share
Which determines whether two GstGLContext's can share sharable
OpenGL resources.
Matthew Waters [Mon, 22 Sep 2014 10:01:27 +0000 (20:01 +1000)]
gl/tests: update for upload API changes
Sebastian Dröge [Mon, 22 Sep 2014 07:08:17 +0000 (10:08 +0300)]
gl: Let gst_gl_context_get_thread() return a new reference to the GThread
Otherwise it might go away in the meantime and the caller has some random pointer.
Anuj Jaiswal [Mon, 22 Sep 2014 05:40:42 +0000 (11:10 +0530)]
gl: consecutive return, break statement
Signed-off-by: Anuj Jaiswal <anuj.jaiswal@samsung.com>
https://bugzilla.gnome.org/show_bug.cgi?id=736939
Matthew Waters [Mon, 22 Sep 2014 02:21:22 +0000 (12:21 +1000)]
gl/debug: desktop GL does not have the KHR suffixes
Matthew Waters [Mon, 22 Sep 2014 01:59:30 +0000 (11:59 +1000)]
examples/gl/gtk: use the sync bus callback to set the window handle
And output error messages.
Tim-Philipp Müller [Sun, 21 Sep 2014 12:32:29 +0000 (13:32 +0100)]
gl: add since markers for new API
Matthew Waters [Sun, 21 Sep 2014 11:42:41 +0000 (21:42 +1000)]
glmemory: add debug line for freeing textures
Matthew Waters [Sun, 21 Sep 2014 11:36:49 +0000 (21:36 +1000)]
glupload: provide the output buffer that is rendered into
Allows callers to properly reference count the buffers used for
rendering.
Fixes a redraw race in glimagesink where the previous buffer
(the one used for redraw operations) is freed as soon as the next
buffer is uploaded.
1. glimagesink uploads in _prepare() to texture n
1.1 glupload holds buffer n
2. glimagesink _render()s texture n
3. glimagesink uploads texture n+1
3.1 glupload free previous buffer which deletes texture n
3.2 glupload holds buffer n+1
4. glwindow resize/expose
5. glimagesink redraws with texture n
The race is that the buffer n (the one used for redrawing) is freed as soon as
the buffer n+1 arrives. There could be any amount of time and number of
redraws between this event and when buffer n+1 is actually rendered and thus
replaces buffer n as the redraw source.
https://bugzilla.gnome.org/show_bug.cgi?id=736740
Matthew Waters [Sun, 21 Sep 2014 11:30:58 +0000 (21:30 +1000)]
glcontext: add API to retreive the thread that context is active in
Sanjay NM [Fri, 19 Sep 2014 10:02:33 +0000 (15:32 +0530)]
gl: Removed unreachable break, unused variable
https://bugzilla.gnome.org/show_bug.cgi?id=736957
Ognyan Tonchev [Tue, 16 Sep 2014 09:42:34 +0000 (11:42 +0200)]
glfilter: do not leak pool in error cases
https://bugzilla.gnome.org/show_bug.cgi?id=736732
Ognyan Tonchev [Tue, 16 Sep 2014 09:41:43 +0000 (11:41 +0200)]
gltestsrc: do not leak pool in error cases
https://bugzilla.gnome.org/show_bug.cgi?id=736730
Ognyan Tonchev [Tue, 16 Sep 2014 09:41:16 +0000 (11:41 +0200)]
glmixer: do not leak pool in error cases
https://bugzilla.gnome.org/show_bug.cgi?id=736729
Vasilis Liaskovitis [Tue, 9 Sep 2014 10:01:47 +0000 (12:01 +0200)]
GstGLWindow: Introduce navigation thread
This thread dispatches navigation events. It is needed to avoid deadlocks
between window backend threads that emit navigation events (e.g. X11/GMainLoop
thread) and consumers of navigation events such as glimagesink, see
https://bugzilla.gnome.org/show_bug.cgi?id=733661
GstGlWindow_x11 thread is changed to invoke the navigation thread for navigation
dispatching, instead of emiting the event itself. Othe backends beside X11 do
not dispatch navigation events yet, but should use this thread when dispatching
these events in the future.
The navigation thread is currently part of GstGLWindow and not implemented in
separate subclasses / backends. This will be needed in the future.
gst_gl_window_x11_get_surface_dimensions is also changed to use a cached value
of the window's width, height. These values are now retrieved in the X11
thread, function gst_gl_window_x11_handle_event. This change is needed because
otherwise the XGetWindowAttributes gets called from the navigation thread,
leading to xlib aborting due to multithreaded access (if XInitThreads is not
called before, as is the case for gst-launch)
Lubosz Sarnecki [Mon, 7 Jul 2014 08:52:57 +0000 (10:52 +0200)]
gltransformation: fix issues and expose mvp matrix
* aspect should not be 0 on init
* rename fovy to fov
* add mvp to properties as boxed graphene type
* fix transformation order. scale first
* clear color with 1.0 alpha
https://bugzilla.gnome.org/show_bug.cgi?id=734223
Sebastian Dröge [Thu, 28 Aug 2014 13:42:30 +0000 (16:42 +0300)]
glimagesink: Add missing break to switch
CID 1232801
Wang Xin-yu (王昕宇) [Tue, 26 Aug 2014 08:21:42 +0000 (16:21 +0800)]
gl: qglwtextureshare demo fixes and cleanup
1. glcontextid function is replaced by gstreamer gst_gl_context_new_wrapped .
2. call gst_init before gst_gl_display_new , seems gst_gl_display_new depends
on gst_allocator_register , which only worked after gst_init called
3. flush gstreamer OpenGL context before using shared texture, fix
flicker problem.
https://bugzilla.gnome.org/show_bug.cgi?id=735566
Wang Xin-yu (王昕宇) [Wed, 27 Aug 2014 05:40:42 +0000 (13:40 +0800)]
gl: Add GSTGLAPI macro to the debug callback function
Fixes the Windows build.
https://bugzilla.gnome.org/show_bug.cgi?id=735565
Jan Schmidt [Tue, 26 Aug 2014 02:38:52 +0000 (12:38 +1000)]
egl: Wrap KHR_create_context flags in an ifdef
EGL_CONTEXT_FLAGS_KHR and EGL_CONTEXT_OPENGL_DEBUG_BIT_KHR
don't exist in the Android NDK. Wrap their usage in an #ifdef
EGL_KHR_create_context to fix the build there.
Matthew Waters [Fri, 22 Aug 2014 06:49:10 +0000 (16:49 +1000)]
egl: fallback to a non-debug context if a debug one fails
The text for EGL_KHR_create_context added the possiblity for ES
contexts to ask for a debug context however that has not been
fully realized by all implementations. Fallback to a non-debug
context when the implementation errors.
Lubosz Sarnecki [Wed, 2 Jul 2014 10:49:44 +0000 (12:49 +0200)]
gstopengl: add introspection support
https://bugzilla.gnome.org/show_bug.cgi?id=734482
Lubosz Sarnecki [Tue, 5 Aug 2014 10:07:08 +0000 (12:07 +0200)]
examples: fix gtk+ 3.14 deprecation error
https://developer.gnome.org/gtk3/3.13/GtkWidget.html#gtk-widget-set-double-buffered
https://bugzilla.gnome.org/show_bug.cgi?id=734482
Lubosz Sarnecki [Mon, 7 Jul 2014 08:52:06 +0000 (10:52 +0200)]
glimagesink: expose context
* expose context in draw / reshape callbacks
* add context property
https://bugzilla.gnome.org/show_bug.cgi?id=734482
Lubosz Sarnecki [Mon, 7 Jul 2014 08:51:28 +0000 (10:51 +0200)]
glshader: expose opengl handle in getter
https://bugzilla.gnome.org/show_bug.cgi?id=734482
Wang Xin-yu (王昕宇) [Wed, 20 Aug 2014 01:37:01 +0000 (09:37 +0800)]
gl: check null before unref GstGLDisplay
Matthew Waters [Thu, 21 Aug 2014 00:03:07 +0000 (10:03 +1000)]
gl: add prototype definition for KHR_debug
Matthew Waters [Wed, 20 Aug 2014 13:24:12 +0000 (23:24 +1000)]
glcontext: implement the debug callback
For both GL_KHR_debug and ARB_debug_output. This allows us to
receive errors and other hints from the GL instead of querying after
every GL operation.
Matthew Waters [Wed, 20 Aug 2014 13:23:06 +0000 (23:23 +1000)]
gl: add prototypes for KHR_debug/ARB_debug_output
Matthew Waters [Tue, 19 Aug 2014 10:14:22 +0000 (20:14 +1000)]
gl: don't take an extra ref on the display on set_context
gst_context_get_gl_display() returns a ref. Don't take another in
gst_object_replace().
Matthew Waters [Tue, 19 Aug 2014 07:01:36 +0000 (17:01 +1000)]
glmixer: unref the GstGLUpload in the pad if freed while running
Dynamic pipelines that get and release the sink pads will finalize
the pad without going through gst_gl_mixer_stop() which is where the
upload object is usually freed. Don't leak objects in such case.
Wang Xin-yu (王昕宇) [Fri, 15 Aug 2014 03:51:21 +0000 (23:51 -0400)]
glvideomixer: avoid gl resource race condition between different thread
https://bugzilla.gnome.org/show_bug.cgi?id=734830
Matthew Waters [Tue, 19 Aug 2014 04:44:29 +0000 (14:44 +1000)]
glvideomixer: don't clobber unnecessary GstVideoInfo fields
otherwise we might clobber other important fields such as the frame rate.
Matthew Waters [Tue, 19 Aug 2014 04:43:42 +0000 (14:43 +1000)]
glvideomixer: get the attribute from the correct shader
Matthew Waters [Tue, 19 Aug 2014 04:23:21 +0000 (14:23 +1000)]
glimagesink: unref the window on navigation event
plugs a memory leak
Tim-Philipp Müller [Sun, 10 Aug 2014 21:58:22 +0000 (22:58 +0100)]
glbufferpool: fix allocator leak in some cases
Spotted by Sebastian Rasmussen.
https://bugzilla.gnome.org/show_bug.cgi?id=734523
Sebastian Rasmussen [Sat, 9 Aug 2014 09:45:41 +0000 (11:45 +0200)]
examples/gl: unref bus and element after usage
gst_pipeline_get_bus() and gst_bin_get_by_interface() both
return references that need to be unreferenced after usage.
https://bugzilla.gnome.org/show_bug.cgi?id=734527
Tim-Philipp Müller [Sun, 10 Aug 2014 17:07:28 +0000 (18:07 +0100)]
opengl: update element docs for 1.x
Matthew Waters [Thu, 7 Aug 2014 09:18:49 +0000 (19:18 +1000)]
glvideomixer: add a background property
That's compatible with the compositor/videomixer property
https://bugzilla.gnome.org/show_bug.cgi?id=731954
Vasilis Liaskovitis [Wed, 6 Aug 2014 13:48:03 +0000 (16:48 +0300)]
GstGLWindow, GstGLImagesink, x11: Scale navigation events on resized windows
If window is resized, GstStructure pointer values have to be rescaled to
original geometry. A get_surface_dimensions GLWindow class method is added for
this purpose and used in the navigation send_event function.
https://bugzilla.gnome.org/show_bug.cgi?id=703486
Wang Xin-yu (王昕宇) [Wed, 6 Aug 2014 12:15:38 +0000 (08:15 -0400)]
glupload: don't determine if frame needs upload by pointer compare
https://bugzilla.gnome.org/show_bug.cgi?id=734269
Matthew Waters [Fri, 1 Aug 2014 07:51:08 +0000 (17:51 +1000)]
gl/docs: remove superflous 'the'
Matthew Waters [Fri, 1 Aug 2014 06:41:13 +0000 (16:41 +1000)]
gl: document GST_GL_* environment variables
https://bugzilla.gnome.org/show_bug.cgi?id=733245
Matthew Waters [Fri, 1 Aug 2014 00:01:18 +0000 (10:01 +1000)]
gl/tests: update for API changes
Matthew Waters [Thu, 31 Jul 2014 08:46:33 +0000 (18:46 +1000)]
glcontext: add a destroy function
that just calls the subclass
Matthew Waters [Thu, 31 Jul 2014 08:36:58 +0000 (18:36 +1000)]
gl/x11: silence runtime warning
g_main_loop_quit: assertion 'loop != NULL' failed
Matthew Waters [Thu, 31 Jul 2014 05:18:04 +0000 (15:18 +1000)]
glmemory: use the plane offsets to compute the size of the data pointer
Certain elements expect that there be a certain number of lines
that they can write into. e.g. for odd heights, I420, YV12, NV12,
NV21 (and others) Y lines are expected to have exactly twice the
number of U/UV lines.
https://bugzilla.gnome.org/show_bug.cgi?id=733717
Matthew Waters [Thu, 31 Jul 2014 04:07:29 +0000 (14:07 +1000)]
glmemory: use GstVideoInfo everywhere
Simplifies a lot of the calling code
https://bugzilla.gnome.org/show_bug.cgi?id=733717
Matthew Waters [Tue, 29 Jul 2014 03:25:22 +0000 (13:25 +1000)]
glimagesink: keep the uploaded buffer around on successful redisplay
We might need it later to perform a redisplay. GstGLUpload will take
of releasing the previous buffer when it receives a new buffer.
https://bugzilla.gnome.org/show_bug.cgi?id=733726
Matthew Waters [Tue, 29 Jul 2014 01:47:55 +0000 (11:47 +1000)]
glmemory: reenable the texture_rg support for !eagl
The GST_GL_HAVE_PLATFORM_EAGL is always defined we need to compare
against the value instead.
Matthew Waters [Sun, 27 Jul 2014 03:26:00 +0000 (13:26 +1000)]
glimagesink: silence gsignal warning
instance '0xblah' has no handler with id '13'
Vasilis Liaskovitis [Thu, 24 Jul 2014 09:25:36 +0000 (12:25 +0300)]
glwindow/11: Emit signals for mouse and key navigation events
https://bugzilla.gnome.org/show_bug.cgi?id=703486
Sebastian Dröge [Thu, 24 Jul 2014 10:23:03 +0000 (12:23 +0200)]
glwindow: Constify string parameters to the send_*_event() functions
Matthew Waters [Thu, 24 Jul 2014 03:05:00 +0000 (13:05 +1000)]
glimagesink: remove extra argument from debug call
Vasilis Liaskovitis [Sun, 6 Jul 2014 21:20:01 +0000 (00:20 +0300)]
glimagesink: Add navigation interface and callbacks for GstGLWindow mouse/key signals
https://bugzilla.gnome.org/show_bug.cgi?id=703486
Vasilis Liaskovitis [Sun, 6 Jul 2014 20:39:47 +0000 (23:39 +0300)]
GstGLWindow : Add mouse-event and key-event signals for navigation
https://bugzilla.gnome.org/show_bug.cgi?id=703486
Wang Xin-yu (王昕宇) [Wed, 23 Jul 2014 02:25:31 +0000 (10:25 +0800)]
gl: fix multi gl object leaks
1. fix FBO leaks in decide_allocation
2. fix texture leaks in decide_allocation and reset
3. fix texture leaks in FBO incomplete error path
Руслан Ижбулатов [Mon, 21 Jul 2014 11:07:28 +0000 (11:07 +0000)]
gl: Reorder CFLAGS to include in-source dirs first in examples
https://bugzilla.gnome.org/show_bug.cgi?id=733426
Tim-Philipp Müller [Thu, 17 Jul 2014 09:05:47 +0000 (10:05 +0100)]
examples: fix compilation of gl fxtest example on win32 with Gtk+ 3.0
https://bugzilla.gnome.org/show_bug.cgi?id=733063
Sebastian Dröge [Fri, 11 Jul 2014 11:58:55 +0000 (13:58 +0200)]
gl: Always build gstglmixer, not only when full OpenGL support is enabled
Sebastian Dröge [Fri, 11 Jul 2014 10:04:07 +0000 (12:04 +0200)]
gl: Link to all required libraries but not more
Sebastian Dröge [Fri, 11 Jul 2014 07:41:05 +0000 (09:41 +0200)]
gl: Move GstGLMixer to the plugin for now
It depends on GstAggregator and we don't want to install headers
for that yet.
https://bugzilla.gnome.org/show_bug.cgi?id=732207
Nicolas Dufresne [Wed, 9 Jul 2014 19:03:42 +0000 (15:03 -0400)]
glimagesink: Keep aspect ratio by default
The expected default behaviour for video sink is to maintain the
aspect ratio. Fix the default value to reflect this. The property
default was already TRUE, but the value was not initially TRUE.
Julien Isorce [Thu, 3 Jul 2014 08:00:32 +0000 (09:00 +0100)]
glcocoa: initalize NSApp asap when using gst-launch
See https://bugzilla.gnome.org/show_bug.cgi?id=732661
Matthew Waters [Wed, 2 Jul 2014 07:38:13 +0000 (17:38 +1000)]
gl/examples: gitignore generated files
Wang Xin-yu (王昕宇) [Tue, 1 Jul 2014 00:36:53 +0000 (08:36 +0800)]
gl : fix qglwtextureshare demo
Sebastian Dröge [Mon, 30 Jun 2014 17:15:01 +0000 (19:15 +0200)]
eagl: Disable usage of R and RG textures on iOS
They don't work currently and just render zeroes, while the
fallback code path with LUM and LUM_ALPHA textures still works.
https://bugzilla.gnome.org/show_bug.cgi?id=732390
Sebastian Dröge [Sun, 29 Jun 2014 20:26:47 +0000 (22:26 +0200)]
glimagesink: Chain up to the parent class' finalize function
Sebastian Dröge [Sun, 29 Jun 2014 20:25:43 +0000 (22:25 +0200)]
glimagesink: Make sure to always unref the display
Even if we didn't create a context yet.
Sebastian Dröge [Sun, 29 Jun 2014 19:57:32 +0000 (21:57 +0200)]
glupload: Fix memory leak in unit test
Sebastian Dröge [Sun, 29 Jun 2014 19:53:21 +0000 (21:53 +0200)]
glcontext: Fix memory leaks in unit test
Matthew Waters [Thu, 26 Jun 2014 01:25:37 +0000 (11:25 +1000)]
glcolorconvert: free pixel swizzling information
Matthew Waters [Thu, 26 Jun 2014 01:15:56 +0000 (11:15 +1000)]
glmixer: remove redundant/unused lock
Use the GstObject lock instead
Matthew Waters [Thu, 26 Jun 2014 01:12:49 +0000 (11:12 +1000)]
glmixer: remove redundant creation and free of GPtrArrays
Also plugs a memory leak
Matthew Waters [Thu, 26 Jun 2014 00:54:38 +0000 (10:54 +1000)]
glmixer: plug a memory leak for the caps
gst_query_set_caps_result() takes a ref on the caps
Matthew Waters [Thu, 26 Jun 2014 00:31:02 +0000 (10:31 +1000)]
glmixer: intersect with the filtercaps if available
Matthew Waters [Thu, 26 Jun 2014 00:30:41 +0000 (10:30 +1000)]
gl: update gles2 compatability header
Matthew Waters [Wed, 25 Jun 2014 12:05:37 +0000 (22:05 +1000)]
glfilter: pass through the allocation query when in passthrough mode
Otherwise two GL elements on either side will fail to use the same
GL context.
Matthew Waters [Wed, 25 Jun 2014 11:50:40 +0000 (21:50 +1000)]
glfilter: prefer passthrough for non-sysmem caps
Matthew Waters [Wed, 25 Jun 2014 08:23:52 +0000 (18:23 +1000)]
glshader: enable glshader on GLES2
Julien Isorce [Tue, 24 Jun 2014 18:37:17 +0000 (19:37 +0100)]
glcolorscale: do passthrough on same caps
See https://bugzilla.gnome.org/show_bug.cgi?id=732178
Julien Isorce [Tue, 24 Jun 2014 18:35:01 +0000 (19:35 +0100)]
glfilter: handle NULL decide_query which means passthrough
See https://bugzilla.gnome.org/show_bug.cgi?id=732178
Julien Isorce [Tue, 24 Jun 2014 18:23:01 +0000 (19:23 +0100)]
glfilter: prepend intersection to src caps
Prefer to stay in the same memory space if possible.
Also it let a chance to do passthrough.
See https://bugzilla.gnome.org/show_bug.cgi?id=732178
Julien Isorce [Sun, 22 Jun 2014 12:14:27 +0000 (13:14 +0100)]
gl: enable glvideomixer on GLES2
Matthew Waters [Wed, 25 Jun 2014 02:00:34 +0000 (12:00 +1000)]
glvideomixer: bas output width/height on the pad properties
Allows automatic negotiation of the size in the following case:
gst-launch-1.0 glvideomixer name=m sink_0::xpos=0 sink_1::xpos=320 ! glimagesink \
videotestsrc ! m. \
videotestsrc pattern=1 ! m.
https://bugzilla.gnome.org/show_bug.cgi?id=731878
Matthew Waters [Wed, 25 Jun 2014 00:18:48 +0000 (10:18 +1000)]
glvideomixer: don't clobber already allocated shader
Matthew Waters [Tue, 24 Jun 2014 13:51:24 +0000 (23:51 +1000)]
gl: XInitThreads when env variable is set
This is too allow gst-launch debugging with multiple GL contexts as
well as avoiding segfaulting innocent gtk+ apps that have not called
XInitThreads.
https://bugzilla.gnome.org/show_bug.cgi?id=731525
Matthew Waters [Tue, 24 Jun 2014 13:33:30 +0000 (23:33 +1000)]
gl: add a scary note about initializing thread support for the winsys
We cannot do it as the winsys may crash if we initialize too late.
Example, GLX contexts with Intel drivers:
Intel requires the X Display to be the same in order to share GL
resources across GL contexts. These GL contexts are generally
accessed from different threads. Without winsys support it is
nearly impossible to guarentee that concurrent access will not
occur. This concurrent access could result in crashes or abortion
by the winsys (xcb).
https://bugzilla.gnome.org/show_bug.cgi?id=731525
Matthew Waters [Mon, 23 Jun 2014 11:43:10 +0000 (21:43 +1000)]
gluploadmeta: reenable GLMemory upload path
Sebastian Dröge [Sun, 22 Jun 2014 16:58:51 +0000 (18:58 +0200)]
gl: Need to link to new badvideo library for the video aggregator base class
Matthew Waters [Sat, 21 Jun 2014 23:44:24 +0000 (09:44 +1000)]
gl: move gles2 compat header to glprototypes
Matthew Waters [Sat, 21 Jun 2014 23:36:34 +0000 (09:36 +1000)]
glbufferpool: provide a consistent API regardless of platform
Matthew Waters [Sat, 21 Jun 2014 23:22:23 +0000 (09:22 +1000)]
gl: mark library as API unstable
Thibault Saunier [Fri, 20 Jun 2014 09:10:45 +0000 (11:10 +0200)]
gl:glvideomixer: Add the Compositor in the element metadata class
So it is possible to pick one compositing element from the registry
Thibault Saunier [Tue, 10 Jun 2014 09:26:53 +0000 (11:26 +0200)]
gl: Port glmixer to the GstVideoAggregator baseclass
https://bugzilla.gnome.org/show_bug.cgi?id=731921
Lubosz Sarnecki [Tue, 27 May 2014 10:40:09 +0000 (12:40 +0200)]
opengl: add element for transforming video geometry
* add graphene as soft dependency for linear algebra
Matthew Waters [Tue, 17 Jun 2014 13:20:04 +0000 (23:20 +1000)]
glframebuffer: don't segfault needlessly with GLES2
gst_gl_framebuffer_use_v2 was using a function that is not available
with GLES2
Matthew Waters [Mon, 16 Jun 2014 10:36:09 +0000 (20:36 +1000)]
glfiltershader: port to GLES2
Provide a time variable
Matthew Waters [Sun, 15 Jun 2014 05:18:46 +0000 (15:18 +1000)]
glvideomixer: silence incorrect number of arguments in format warning