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
Matthew Waters [Sun, 15 Jun 2014 05:17:07 +0000 (15:17 +1000)]
gldownload: plug a memory leak
Matthew Waters [Sun, 15 Jun 2014 03:59:07 +0000 (13:59 +1000)]
glvideomixer: wire up the alpha pad property
Matthew Waters [Sun, 15 Jun 2014 03:44:04 +0000 (13:44 +1000)]
glvideomixer: support input frame scaling
Matthew Waters [Sun, 15 Jun 2014 02:26:21 +0000 (12:26 +1000)]
glvideomixer: add positioning of input streams
https://bugzilla.gnome.org/show_bug.cgi?id=729798
Matthew Waters [Sun, 15 Jun 2014 02:24:38 +0000 (12:24 +1000)]
glmixer: allow the subclass to choose the sink pad type
Allows custom properties to be placed on the sink pads by subclasses
Matthew Waters [Thu, 12 Jun 2014 13:14:45 +0000 (23:14 +1000)]
glfilterapp: actually emit the client-draw signal
Matthew Waters [Thu, 12 Jun 2014 13:13:11 +0000 (23:13 +1000)]
gl/examples: update for TEXTURE_2D change
Matthew Waters [Thu, 12 Jun 2014 04:58:47 +0000 (14:58 +1000)]
glmixer: send the stream-start event
and the caps event after.
https://bugzilla.gnome.org/show_bug.cgi?id=730944
Matthew Waters [Thu, 12 Jun 2014 03:37:51 +0000 (13:37 +1000)]
gl/examples: add GST_PLUGINS_BASE_CFLAGS
Matthew Waters [Thu, 12 Jun 2014 03:15:10 +0000 (13:15 +1000)]
gl/examples: remove spurious include for doublecube example
Matthew Waters [Thu, 12 Jun 2014 03:06:31 +0000 (13:06 +1000)]
gl/examples: add the srcdir and builddir includes
And remove references to $(GST_PLUGINS_GL_*)
Matthew Waters [Thu, 12 Jun 2014 02:49:42 +0000 (12:49 +1000)]
glfilterapp: remove the reshape/draw properties
The reshape property was never used.
Replace the draw property with a signal.
Based on patch by Mathieu Duponchelle <mathieu.duponchelle@epitech.eu>
https://bugzilla.gnome.org/show_bug.cgi?id=704507
Matthew Waters [Thu, 12 Jun 2014 02:14:35 +0000 (12:14 +1000)]
glmixer: lock the size of mix->frames to the number of pads
Fixes a segfault with decodebin ! glmixer where the request pads on
both sides were being requested after the state change to PAUSED.
Also fixes dynamically adding and removing pads while glmixer is
in a state >= PAUSED.
Matthew Waters [Thu, 12 Jun 2014 02:09:56 +0000 (12:09 +1000)]
gl/examples: Port to using signals instead of properties
Based on patch by Mathieu Duponchelle <mathieu.duponchelle@epitech.eu>
https://bugzilla.gnome.org/show_bug.cgi?id=704507
Matthew Waters [Sun, 1 Jun 2014 05:02:52 +0000 (15:02 +1000)]
glimagesink: replace pointer properties with signals
Based on patch by Mathieu Duponchelle <mathieu.duponchelle@epitech.eu>
https://bugzilla.gnome.org/show_bug.cgi?id=704507
Matthew Waters [Thu, 5 Jun 2014 08:43:30 +0000 (18:43 +1000)]
gl/wayland: create a dummy display instead of an EGLDisplay
Currently, GstGLWindowWaylandEGL holds the wayland display connection
If we create the EGLDisplay at the GstDisplay creation time, then
libEGL will internally open another connection to the wayland server.
These two display connections are unable to communicate resulting in
no window output/display and hangs inside libEGL.
Eventually we will move the wl_display from GstGLWindow to GstGLDisplay.
Matthieu Bouron [Sun, 25 May 2014 20:43:22 +0000 (21:43 +0100)]
glimagesink: improve state change debug message
Matthew Waters [Tue, 3 Jun 2014 03:59:51 +0000 (13:59 +1000)]
glupload: always release the previous buffer
Fixes the case where _perform_with_buffer() is called without
intervening calls to _release_buffer() as is the case on start up
with glimagesink.
Also release the buffer when reseting the upload.
https://bugzilla.gnome.org/show_bug.cgi?id=731107
Sebastian Dröge [Mon, 2 Jun 2014 07:23:39 +0000 (09:23 +0200)]
glcontext: Handle (unlikely) NULL return of gl->GetString (GL_VERSION) more gracefully
CID 1219858
Matthew Waters [Fri, 30 May 2014 02:23:09 +0000 (12:23 +1000)]
glmemory: remove uneeded gl api ifdefs
Matthew Waters [Fri, 30 May 2014 01:51:01 +0000 (11:51 +1000)]
glwindow_x11: allow expose events to redraw our window
otherwise we will not update the window contents on low framerate
streams until the next buffer
https://bugzilla.gnome.org/show_bug.cgi?id=723529
Matthew Waters [Fri, 30 May 2014 01:46:00 +0000 (11:46 +1000)]
glimagesink: unref the old buffer outside the lock
it could very well deadlock
https://bugzilla.gnome.org/show_bug.cgi?id=723529
Matthew Waters [Fri, 30 May 2014 01:35:04 +0000 (11:35 +1000)]
Revert "[880/906] glimagesink: remove unused stored_buffer field"
This reverts commit
af3a68db7dc473fb6903c18966b39e4c3f1464d7.
Conflicts:
ext/gl/gstglimagesink.c
https://bugzilla.gnome.org/show_bug.cgi?id=723529
Matthew Waters [Fri, 30 May 2014 00:46:25 +0000 (10:46 +1000)]
glcontext: fix up assertion
error: 'return' with no value, in function returning non-void
Matthew Waters [Fri, 30 May 2014 00:27:14 +0000 (10:27 +1000)]
glfeature: remove GST_GL_API_GLES3
instead check the gl version using gst_gl_context_check_gl_version()
Matthew Waters [Fri, 30 May 2014 00:25:18 +0000 (10:25 +1000)]
glcontext: check for GLES versions
Matthew Waters [Thu, 29 May 2014 10:35:48 +0000 (20:35 +1000)]
gl/context: add check_gl_version
Edward Hervey [Thu, 29 May 2014 15:09:26 +0000 (17:09 +0200)]
glcontext: Try GLX support before EGL support
If available, glx has got a better chance of being the Gl platform
we want to use compared to EGL
Edward Hervey [Thu, 29 May 2014 14:59:28 +0000 (16:59 +0200)]
glcontext: Try to open lib{EGL|GL|GLESv2}.so.1 before lib{EGL|GL|GLESv2}
Fixes issues with .so (without numbering) being installed for development
(such as from mesa-dev) but actual driver (with numbering) coming from
some other place (like nvidia drivers)
Sebastian Dröge [Thu, 29 May 2014 08:37:02 +0000 (10:37 +0200)]
glupload: Fix assertion after API changes
Matthew Waters [Thu, 29 May 2014 08:33:10 +0000 (18:33 +1000)]
gl/colorconvert: keep our private pointer
again, avoid to much trigger
Matthew Waters [Thu, 29 May 2014 08:32:48 +0000 (18:32 +1000)]
tests: update for glupload changes
Matthew Waters [Thu, 29 May 2014 07:29:41 +0000 (17:29 +1000)]
gl/colorconvert: use GstObject's lock instead of our own
Matthew Waters [Thu, 29 May 2014 07:12:03 +0000 (17:12 +1000)]
gl/colorconvert: remove unnecassary pointer inderection
Matthew Waters [Thu, 29 May 2014 06:45:37 +0000 (16:45 +1000)]
gl/upload: re add the upload meta to the private struct
try and avoid being to trigger happy
Matthew Waters [Thu, 29 May 2014 06:29:09 +0000 (16:29 +1000)]
gl/upload: small code cleanup and gst-indent
Matthew Waters [Thu, 29 May 2014 06:22:52 +0000 (16:22 +1000)]
gl/download: use GstObject's lock instead of out own
Matthew Waters [Thu, 29 May 2014 06:20:30 +0000 (16:20 +1000)]
gl/upload: use GstObject's lock instead of our own
Matthew Waters [Thu, 29 May 2014 06:18:08 +0000 (16:18 +1000)]
gl/filter: also remove the width/height in transform_caps
allows scaling in the filters
Matthew Waters [Thu, 29 May 2014 06:11:20 +0000 (16:11 +1000)]
gl/colorconvert: optimise the same format case
simply return the input buffer unchanged
Matthew Waters [Thu, 29 May 2014 06:07:40 +0000 (16:07 +1000)]
gl/colorconvert: fix YUY2/UYVY download for RG/LA textures
Matthew Waters [Thu, 29 May 2014 05:50:56 +0000 (15:50 +1000)]
gl/colorconvert: allocate output buffers
Allows the nop optimisation by simply reffing the input buffer.
Matthew Waters [Wed, 28 May 2014 13:21:07 +0000 (23:21 +1000)]
tests: update for recent glupload changes
GstGLUploadMeta object is now the GstVideoGLTextureUploadMeta
provider.
Matthew Waters [Wed, 28 May 2014 04:43:43 +0000 (14:43 +1000)]
gl/upload: fix incorrect type in macros
Matthew Waters [Wed, 28 May 2014 04:40:10 +0000 (14:40 +1000)]
gl/upload: add GstGLUploadMeta object
That simply deals with the provider aspect of GstVideoGLTextureUploadMeta.
Matthew Waters [Tue, 27 May 2014 14:56:05 +0000 (00:56 +1000)]
gl/win32: make send_message reentrant
I could not find a comparable win32API function so keep the running
thread pointer to compare against.
https://bugzilla.gnome.org/show_bug.cgi?id=730782
Tim-Philipp Müller [Tue, 27 May 2014 12:56:34 +0000 (13:56 +0100)]
glcolorconvert: fix compiler warning
gstglcolorconvert.c:1133:11: error: 'j' may be used uninitialized in this function
Was used uninitialized when jumping to out label
in error case.
Matthew Waters [Tue, 27 May 2014 08:20:29 +0000 (18:20 +1000)]
gl/colorconvert: operate on buffers instead of memories
Julien Isorce [Tue, 27 May 2014 10:28:27 +0000 (11:28 +0100)]
glimagesink: make it actually honor show-preroll-frame property
https://bugzilla.gnome.org/show_bug.cgi?id=730802
Julien Isorce [Tue, 27 May 2014 07:54:20 +0000 (08:54 +0100)]
gl: add missing cgl and eagl context type
https://bugzilla.gnome.org/show_bug.cgi?id=729245
Julien Isorce [Tue, 27 May 2014 07:46:16 +0000 (08:46 +0100)]
gl: rename platform cocoa to cgl
Before:
GST_GL_PLATFORM=cocoa GST_GL_WINDOW=cocoa
gst-launch-1.0 videotestsrc ! glimagesink
After:
GST_GL_PLATFORM=cgl GST_GL_WINDOW=cocoa
gst-launch-1.0 videotestsrc ! glimagesink
but still pass --enable-cocoa to configure script
because currently it can only be used with cocoa API.
We could later have cgl/gstglcontext_cgl.h that manages
a CGLContextObj directly and cocoa/gstglcontext_cocoa.h
would just wrap it.
So that it could be used with other Apple's window APIs.
https://bugzilla.gnome.org/show_bug.cgi?id=729245
Matthew Waters [Tue, 27 May 2014 03:55:15 +0000 (13:55 +1000)]
gl/mixer: don't segfault when we don't have a buffer
https://bugzilla.gnome.org/show_bug.cgi?id=729257
Matthew Waters [Tue, 27 May 2014 03:04:39 +0000 (13:04 +1000)]
gl/window_x11: avoid BadDrawable error on shutdown
Matthew Waters [Tue, 27 May 2014 00:47:25 +0000 (10:47 +1000)]
gl/context_egl: pass the vars in the right order to DestroySurface
https://bugzilla.gnome.org/show_bug.cgi?id=728514
Nicolas Dufresne [Sun, 25 May 2014 13:03:32 +0000 (09:03 -0400)]
glfilter: Remove format information to allow color convert again
We also need to remove the format information, as glfilter can do
color convertion. This code was imported from videoconvert.
https://bugzilla.gnome.org/show_bug.cgi?id=729861
Matthew Waters [Sun, 25 May 2014 01:44:57 +0000 (11:44 +1000)]
gl/memory: allocate the correct memory size
and avoid wasting resources we will never need
https://bugzilla.gnome.org/show_bug.cgi?id=730703
Nicolas Dufresne [Sat, 24 May 2014 03:02:32 +0000 (23:02 -0400)]
glcolorconvert: Fix YUY2 and UYVY support with luminance_alpha
https://bugzilla.gnome.org/show_bug.cgi?id=730666
Matthew Waters [Fri, 23 May 2014 02:07:50 +0000 (12:07 +1000)]
gl/memory: provide compatability defines
fixes build on android/OS X
Matthew Waters [Fri, 23 May 2014 01:01:06 +0000 (11:01 +1000)]
gl/colorconvert: remove scratch texture for YUY2/UYVY
We can get all our data from the one RG/LA texture with some shader magic.
https://bugzilla.gnome.org/show_bug.cgi?id=728890
Matthew Waters [Fri, 23 May 2014 00:59:05 +0000 (10:59 +1000)]
gl/memory: RGBA/UNSIGNED_BYTE only format supported by ReadPixels GLES2
Error out in case we attempt to read with any other invalid format.
Matthew Waters [Fri, 23 May 2014 00:57:24 +0000 (10:57 +1000)]
gl/memory: generate textures with a sized internal format
Required in order to generate RG and RED textured with GLES3.
Matthew Waters [Wed, 21 May 2014 11:47:45 +0000 (21:47 +1000)]
gl/memory: implement GL_EXT_texture_rg support
Which is used by default over the Luminance formats due to it
being color renderable with fbos (and deprecation/removal with
GL 3.x).
https://bugzilla.gnome.org/show_bug.cgi?id=729750
https://bugzilla.gnome.org/show_bug.cgi?id=704222
https://bugzilla.gnome.org/show_bug.cgi?id=728890
Matthew Waters [Wed, 21 May 2014 11:44:40 +0000 (21:44 +1000)]
gl/context: add gl extension checking to check_feature()
Useful for extensions that do not define any new GL API entrypoints
but can still modify behaviour when used.
Matthew Waters [Wed, 21 May 2014 10:36:37 +0000 (20:36 +1000)]
gl/download: fixup YUY2/UYVY download
Regression from
2da979831ec3b1a8d993eb6f2d3999c5810c4d67 as it did
not update the download code to reflect the change in texture format.
Matthew Waters [Wed, 21 May 2014 09:47:22 +0000 (19:47 +1000)]
gl/filter: fixup passthrough bufferpool
In a pipeline like so:
videotestsrc ! gleffects ! videoconvert ! sink
gleffects was simply passing the videoconvert bufferpool to videotestsrc
and not creating a glbufferpool. videobufferpool would then fail
to allocate from the glallocator.
Matthew Waters [Wed, 21 May 2014 00:26:21 +0000 (10:26 +1000)]
gl/upload: switch the 'master' texture for YUY2, UYVY
From
d4bcef3204709159713ff1630978ecac0bd91dc9 on, using a RGBA
texture to hold the data causes the glmemory to have half width
and a scaling of [2, 1]. Using a LA texture solves this problem
however cannot be attached to the framebuffer for copying into
a RGBA texture. Which will be solved by moving to EXT_texture_rg.
https://bugzilla.gnome.org/show_bug.cgi?id=728890
Matthew Waters [Wed, 14 May 2014 07:59:52 +0000 (17:59 +1000)]
gl/eglimage: add eglimage context feature
Allows us to selectively use EGLImages only when available
https://bugzilla.gnome.org/show_bug.cgi?id=728234
Matthew Waters [Wed, 14 May 2014 07:33:21 +0000 (17:33 +1000)]
gl/context: add generic feature checking
At the moment it simply delegates to the subclass.
Sebastian Dröge [Mon, 19 May 2014 10:25:51 +0000 (12:25 +0200)]
glimagesink: Check if context creation failed before trying to use it
Otherwise we will cause assertions everywhere by passing NULL to functions
and eventually crash when dereferencing a NULL pointer.
https://bugzilla.gnome.org/show_bug.cgi?id=730069
Sebastian Dröge [Mon, 19 May 2014 10:21:13 +0000 (12:21 +0200)]
glcontext: Add more assertions to make sure that everything sets the GError during context creation if something fails
Matthew Waters [Tue, 13 May 2014 04:13:57 +0000 (14:13 +1000)]
gl/download: update to be similar to the glupload semantics
Matthew Waters [Tue, 13 May 2014 04:07:39 +0000 (14:07 +1000)]
gl/colorconvert: fix up alpha clobbering
Previously it would only work if the alpha value was in the last
component (RGBx, BGRx). Now it works wherever the alpha value may
be (xRGB, xBGR, etc).
Nicolas Dufresne [Tue, 13 May 2014 17:16:34 +0000 (13:16 -0400)]
glfilter: Fix building without EGL support
This fixes the OSX build and any builds with --disable-egl. That issue
was introduced in "glfilter: rewrite transform_caps to preserve caps fields".
https://bugzilla.gnome.org/show_bug.cgi?id=729861