platform/upstream/gst-plugins-base.git
6 years agoplugins: Use explicit type conversion from enums
Nirbheek Chauhan [Thu, 27 Oct 2016 03:55:20 +0000 (09:25 +0530)]
plugins: Use explicit type conversion from enums

MSVC warns about this because it's a C++ compiler, and this actually
results in useful things such as the incorrect 'gboolean' return value
for functions that return GstFlowReturn, so let's do explicit
conversions to reduce the noise and increase its efficacy.

6 years agoExplicitly define float constants as float
Nirbheek Chauhan [Thu, 27 Oct 2016 03:41:26 +0000 (09:11 +0530)]
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.

6 years agoFix incorrect return type in several functions
Nirbheek Chauhan [Thu, 27 Oct 2016 03:38:41 +0000 (09:08 +0530)]
Fix incorrect return type in several functions

All these should return GstFlowReturn, not gboolean

6 years agogstgl: Add GST_EXPORT to all symbols used on Windows
Nirbheek Chauhan [Thu, 27 Oct 2016 02:47:58 +0000 (08:17 +0530)]
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

6 years agomeson: Add support for building WGL on Windows
Nirbheek Chauhan [Thu, 27 Oct 2016 01:59:36 +0000 (07:29 +0530)]
meson: Add support for building WGL on Windows

Currently only tested with MSVC.

6 years agoext/gl: Don't define boolean on Windows with MSVC
Nirbheek Chauhan [Thu, 27 Oct 2016 03:40:03 +0000 (09:10 +0530)]
ext/gl: Don't define boolean on Windows with MSVC

The headers we include already define boolean on Windows with MSVC, and
it leads to a typedef redefinition error with jpeglib.h which tries to
redefine it in jmorecfg.h

6 years agogstgl: Porting fixes for MSVC with Meson
Nirbheek Chauhan [Thu, 27 Oct 2016 02:00:19 +0000 (07:30 +0530)]
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.

6 years agoglsyncmeta: don't glFinish() everytime a sync point is set
Matthew Waters [Fri, 21 Oct 2016 02:10:47 +0000 (13:10 +1100)]
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.

6 years agomeson: gl: add support for building with dispmanx on the rpi
Matthew Waters [Wed, 19 Oct 2016 05:11:58 +0000 (16:11 +1100)]
meson: gl: add support for building with dispmanx on the rpi

6 years agogl/eglimage: Fix passing the destroy function to gst_egl_image_new_wrapped
Matthew Waters [Tue, 18 Oct 2016 11:29:19 +0000 (22:29 +1100)]
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

6 years agoImplemented gst_video_overlay_set_window_handle()
Munez [Tue, 11 Oct 2016 11:36:23 +0000 (17:06 +0530)]
Implemented gst_video_overlay_set_window_handle()

https://bugzilla.gnome.org/show_bug.cgi?id=772608

6 years agomeson: gl: fix detection of glx without gl
Matthew Waters [Tue, 18 Oct 2016 03:11:26 +0000 (14:11 +1100)]
meson: gl: fix detection of glx without gl

We need to check for libGL if we may use desktop OpenGL *or* GLX.

6 years agomeson: gl: fix incorrect error string
Matthew Waters [Tue, 18 Oct 2016 03:10:32 +0000 (14:10 +1100)]
meson: gl: fix incorrect error string

Use the winsys variable for an incorrect winsys provided

6 years agogl/dispmanx: egl_show should resize the window only if there is no render rectangle set
Munez [Tue, 11 Oct 2016 11:28:48 +0000 (16:58 +0530)]
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

6 years agogl/dispmanx: Fix set_render_rectangle typo
Munez [Tue, 11 Oct 2016 11:25:17 +0000 (16:55 +0530)]
gl/dispmanx: Fix set_render_rectangle typo

https://bugzilla.gnome.org/show_bug.cgi?id=772698

6 years agoglwindow: don't use g_thread_join() to join the navigation thread
Matthew Waters [Wed, 5 Oct 2016 07:32:09 +0000 (18:32 +1100)]
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 ()

6 years agogluploadelement: fix leak of upload library object
Matthew Waters [Wed, 5 Oct 2016 07:28:48 +0000 (18:28 +1100)]
gluploadelement: fix leak of upload library object

When only linking the element, the upload object will be created from
_transform_caps() but will never be unreffed as the only case is in _stop().

Add an unref if non-NULL to a new finalize handler for this case.

6 years agotests/gl: make sure all GL commands are executed on the GL thread
Matthew Waters [Thu, 29 Sep 2016 01:45:57 +0000 (11:45 +1000)]
tests/gl: make sure all GL commands are executed on the GL thread

e.g. the final glGetError() must also be completed on the GL thread

6 years agogl/win32: remove egl implementation
Matthew Waters [Wed, 28 Sep 2016 08:04:21 +0000 (18:04 +1000)]
gl/win32: remove egl implementation

It hasn't been used in ages and is dead code.

6 years agogl/dispmanx: Implements set_render_rectangle to adjust the position of window
Gwang Yoon Hwang [Thu, 5 May 2016 06:53:57 +0000 (15:53 +0900)]
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

6 years agogl: add necessary padding bytes to all public structs
Matthew Waters [Wed, 28 Sep 2016 05:20:25 +0000 (15:20 +1000)]
gl: add necessary padding bytes to all public structs

6 years agogldisplay: also free the GWeakRef when removing dead contexts
Matthew Waters [Thu, 22 Sep 2016 08:19:36 +0000 (18:19 +1000)]
gldisplay: also free the GWeakRef when removing dead contexts

Otherwise we leak GWeakRef's.

Found with make -C tests/check libs/gstglcontext.valgrind

6 years agoglcolorbalance: reconfigure on passthrough changes
Matthew Waters [Mon, 19 Sep 2016 06:54:43 +0000 (16:54 +1000)]
glcolorbalance: reconfigure on passthrough changes

Fixes an assertion when moving from passthrough to non-passthrough

Without an explicit reconfigure, glfiter won't have created the GL
resources such as the FBO, GL bufferpool, etc and basetransform will
allocate sysmem buffers instead.

6 years agomeson/gl: use separate deps for gl and glx
Matthew Waters [Fri, 9 Sep 2016 13:24:01 +0000 (23:24 +1000)]
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.

6 years agomeson: add some starting build files for GL
Matthew Waters [Fri, 9 Sep 2016 01:08:53 +0000 (11:08 +1000)]
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'.

6 years agogl/examples: Really remove references to $(GST_PLUGINS_GL_*).
Alistair Buxton [Wed, 7 Sep 2016 19:11:55 +0000 (20:11 +0100)]
gl/examples: Really remove references to $(GST_PLUGINS_GL_*).

These seem to have been missed in the previous commit to this file.

https://bugzilla.gnome.org/show_bug.cgi?id=771023

6 years agogl: Remove duplicate GL_CFLAGS in Makefile.am.
Alistair Buxton [Wed, 7 Sep 2016 19:07:26 +0000 (20:07 +0100)]
gl: Remove duplicate GL_CFLAGS in Makefile.am.

https://bugzilla.gnome.org/show_bug.cgi?id=771021

6 years agoglupload: create the GstGLUpload object in ::transform_caps
Alessandro Decina [Mon, 5 Sep 2016 04:44:24 +0000 (14:44 +1000)]
glupload: create the GstGLUpload object in ::transform_caps

Previously it was created in the init function and destroyed in ::stop, which
lead to segfaults when reusing the element.

Now the upload object is created in ::transform_caps if it is NULL, which is the
earliest we need it. The other vfuncs already bail out if the upload object is
NULL, which means that negotiation wasn't done.

6 years agogl: Remove extra duplicate typedef of GstGLFramebuffer
Jan Schmidt [Tue, 30 Aug 2016 18:26:43 +0000 (04:26 +1000)]
gl: Remove extra duplicate typedef of GstGLFramebuffer

It's triggering a warning building git master on OSX

6 years agotests/glupload: support opengl3 properly instead of spewing GL errors
Matthew Waters [Mon, 29 Aug 2016 06:57:42 +0000 (16:57 +1000)]
tests/glupload: support opengl3 properly instead of spewing GL errors

6 years agogl/pkgconfig: add the lib include dir to the list of includes
Matthew Waters [Mon, 29 Aug 2016 06:52:44 +0000 (16:52 +1000)]
gl/pkgconfig: add the lib include dir to the list of includes

714d8aa in core removed this include dir from it's pkgconfig file.

https://bugzilla.gnome.org/show_bug.cgi?id=770523

6 years agoglupload: fix tests and check for the new RECONFIGURE behaviour
Alessandro Decina [Mon, 29 Aug 2016 05:43:10 +0000 (15:43 +1000)]
glupload: fix tests and check for the new RECONFIGURE behaviour

The tests were broken since 91fea30, which changed glupload to return
GST_GL_UPLOAD_RECONFIGURE if the texture target in the input buffers doesn't
match the texture-target configured in the output caps.

This commit fixes that and adds more checks for the new behaviour.

6 years agogstglupload: make the GLMemoryUpload method output the correct texture-target
Alessandro Decina [Mon, 22 Aug 2016 07:18:27 +0000 (17:18 +1000)]
gstglupload: make the GLMemoryUpload method output the correct texture-target

Now when used with video/x-raw as input, the GLMemoryUpload method checks for
->tex_target in input GLMemory(es) and sets the output texture-target
accordingly.

Fixes video corruption with a pipeline like avfvideosrc ! video/x-raw !
glimagesink where on macos avfvideosrc pushes RECTANGLE textures but glupload
was configuring texture-target=2D as output.

6 years agogl: Update glvideomixer doc
Jan Schmidt [Thu, 25 Aug 2016 16:07:27 +0000 (02:07 +1000)]
gl: Update glvideomixer doc

6 years agogl: Add/update docs for glviewconvert, glstereomix
Jan Schmidt [Thu, 25 Aug 2016 16:06:00 +0000 (02:06 +1000)]
gl: Add/update docs for glviewconvert, glstereomix

Add some example pipelines for glstereomix, and fix up
the example pipelines for glviewconvert

6 years agoglstereomix: Fix caps negotiation
Jan Schmidt [Thu, 25 Aug 2016 14:29:34 +0000 (00:29 +1000)]
glstereomix: Fix caps negotiation

The videoaggregator negotiation sequence changed some time
back and broke glstereomix. Instead of doing nego incorrectly
in the find_best_format() vfunc, do it directly in the
update_caps() method.

6 years agoglviewconvert: Fix texture target fixation
Jan Schmidt [Thu, 25 Aug 2016 05:26:49 +0000 (15:26 +1000)]
glviewconvert: Fix texture target fixation

Don't set the chosen texture-target into the wrong structure.
The input caps may not be writable, and in any case - the
intention was to configure the othercaps. Also, remove an
extra unref - the othercaps ref is consumed by
gst_caps_make_writable already.

6 years agoglvideoflip: implement GstVideoDirection interface
Xabier Rodriguez Calvar [Tue, 26 Jul 2016 17:55:13 +0000 (19:55 +0200)]
glvideoflip: implement GstVideoDirection interface

It implements now this interface with its video-direction
property. Values are changed to GstVideoOrientationMethod but they have
the same value than the originals.

https://bugzilla.gnome.org/show_bug.cgi?id=768687

6 years agoAdd support for Meson as alternative/parallel build system
Nirbheek Chauhan [Fri, 12 Aug 2016 15:51:45 +0000 (21:21 +0530)]
Add support for Meson as alternative/parallel build system

https://github.com/mesonbuild/meson

With contributions from:

Tim-Philipp Müller <tim@centricular.com>
Matej Knopp <matej.knopp@gmail.com>
Jussi Pakkanen <jpakkane@gmail.com> (original port)

Highlights of the features provided are:
* Faster builds on Linux (~40-50% faster)
* The ability to build with MSVC on Windows
* Generate Visual Studio project files
* Generate XCode project files
* Much faster builds on Windows (on-par with Linux)
* Seriously fast configure and building on embedded

... and many more. For more details see:

http://blog.nirbheek.in/2016/05/gstreamer-and-meson-new-hope.html
http://blog.nirbheek.in/2016/07/building-and-developing-gstreamer-using.html

Building with Meson should work on both Linux and Windows, but may
need a few more tweaks on other operating systems.

6 years agogltransformation: rewrite the inverse transformation logic
Matthew Waters [Fri, 19 Aug 2016 05:35:49 +0000 (15:35 +1000)]
gltransformation: rewrite the inverse transformation logic

It now returns the correct values for both orthographic and perspective
projections and takes into account the aspect ratio of the video, handles
the Y-flipping in GL and by us and uses some more helpers from graphene.

6 years agoglwindow: marshal gst_gl_window_resize through the window loop
Matthew Waters [Fri, 1 Jul 2016 06:18:55 +0000 (16:18 +1000)]
glwindow: marshal gst_gl_window_resize through the window loop

saves having every caller do it themselves.

6 years agogl/wayland: use multi-threaded safe event wayland API
Matthew Waters [Thu, 30 Jun 2016 13:06:43 +0000 (23:06 +1000)]
gl/wayland: use multi-threaded safe event wayland API

Multiple threads may be accessing the wayland fd at the same time which
requires the use of special wayland API to deal with to ensure nobody
will steal reads and cause a stall for anyone else.

6 years agogl/examples/fxtest: fix up for wayland support
Matthew Waters [Thu, 30 Jun 2016 14:15:55 +0000 (00:15 +1000)]
gl/examples/fxtest: fix up for wayland support

- Pass the wayland display to gst
- Redrawing on resize is no longer needed.

6 years agogl/egl: fix inverted typedef
Matthew Waters [Tue, 16 Aug 2016 10:33:21 +0000 (20:33 +1000)]
gl/egl: fix inverted typedef

2b6841d had an inverted typedef defining ginptr and EGLAttrib.  Fix that.

6 years agogl/build: add configure check for possibly missing EGLAttrib
Matthew Waters [Tue, 16 Aug 2016 06:51:02 +0000 (16:51 +1000)]
gl/build: add configure check for possibly missing EGLAttrib

Fixes the build on older android targets.

6 years agogl/egl/dmabuf: Wrong attribute list type for EGL 1.5
Song Bing [Wed, 13 Jul 2016 09:15:44 +0000 (17:15 +0800)]
gl/egl/dmabuf: Wrong attribute list type for EGL 1.5

For EGL 1.5 spec, the attribute list type should be EGLAttrib.

https://bugzilla.gnome.org/show_bug.cgi?id=768602

6 years agoglcontext: fix race joining thread on finalize
Vincent Penquerc'h [Mon, 15 Aug 2016 15:14:25 +0000 (16:14 +0100)]
glcontext: fix race joining thread on finalize

https://bugzilla.gnome.org/show_bug.cgi?id=769939

6 years agoglcolorconvert: add missing rgb16 and bgr16 video formats in switch
Matthew Waters [Thu, 4 Aug 2016 13:14:41 +0000 (23:14 +1000)]
glcolorconvert: add missing rgb16 and bgr16 video formats in switch

Fixes an assertion that code should not be reached

https://bugzilla.gnome.org/show_bug.cgi?id=769462

6 years agoglwindow: Fix glimagesink cannot show frame when connect to qmlglsrc
Haihua Hu [Wed, 27 Jul 2016 02:55:01 +0000 (10:55 +0800)]
glwindow: Fix glimagesink cannot show frame when connect to qmlglsrc

When connect to qmlglsrc, x11 event loop will be replace by qt event loop
which will cause the window cannot receive event from xserver, such as resize

https://bugzilla.gnome.org/show_bug.cgi?id=768160

6 years agoglupload: Use bufferpool to allocate new buffer in GLTextureUploadMeta
Hyunjun Ko [Tue, 2 Aug 2016 08:21:20 +0000 (17:21 +0900)]
glupload: Use bufferpool to allocate new buffer in GLTextureUploadMeta

To improve performace of upload with GLTextureUploadMeta,
use bufferpool instead of allocating new buffer every time.

https://bugzilla.gnome.org/show_bug.cgi?id=769293

6 years agoglwindow: move unsetting queue_resize to _resize() instead of _draw()
Matthew Waters [Wed, 27 Jul 2016 04:48:50 +0000 (14:48 +1000)]
glwindow: move unsetting queue_resize to _resize() instead of _draw()

Makes infinitely more sense and implementation were expecting that behaviour
anyway and would enter a resize, draw, resize, draw, ... cycle instead of only
resizing once.

6 years agoglimagesink: Fix horizontal/vertical flip matrizes
Haihua Hu [Mon, 1 Aug 2016 06:12:35 +0000 (14:12 +0800)]
glimagesink: Fix horizontal/vertical flip matrizes

They were swapped.

https://bugzilla.gnome.org/show_bug.cgi?id=769371

6 years agocaopengllayersink: remove unused to_quit variable
Matthew Waters [Tue, 26 Jul 2016 06:01:19 +0000 (16:01 +1000)]
caopengllayersink: remove unused to_quit variable

It was always 0 and never set to anything meaningful.

6 years agoglframebuffer: add compatibility definition for GL_DEPTH_STENCIL_ATTACHMENT
Matthew Waters [Tue, 26 Jul 2016 05:57:54 +0000 (15:57 +1000)]
glframebuffer: add compatibility definition for GL_DEPTH_STENCIL_ATTACHMENT

GLES2 doesn't have it defined...

6 years agoglfilter: rewrite subclasses for filter_texture() occuring on GL thread
Matthew Waters [Fri, 15 Jul 2016 03:39:54 +0000 (13:39 +1000)]
glfilter: rewrite subclasses for filter_texture() occuring on GL thread

There's no need for the jump to an extra thread in most cases, especially
when relying solely on a shader to render.  We can use the provided
render_to_target() functions to simplify filter writing.

6 years agoglutils: remove unused GstGLDisplayProjection
Matthew Waters [Tue, 12 Jul 2016 05:34:24 +0000 (15:34 +1000)]
glutils: remove unused GstGLDisplayProjection

6 years agoglcontext: remove not thread-safe get/set_error()
Matthew Waters [Tue, 12 Jul 2016 05:29:29 +0000 (15:29 +1000)]
glcontext: remove not thread-safe get/set_error()

Use GError's instead if necessary.

6 years agoglframebuffer: rewrite for a more consistent API
Matthew Waters [Tue, 12 Jul 2016 02:59:57 +0000 (12:59 +1000)]
glframebuffer: rewrite for a more consistent API

Facilities are given to create fbo's and attach GL memory (renderbuffers
or textures).  It also keeps track of the renderable size for use with
effective use with glViewport().

6 years agogl: use GLMemory for accessing textures everywhere
Matthew Waters [Mon, 11 Jul 2016 14:30:22 +0000 (00:30 +1000)]
gl: use GLMemory for accessing textures everywhere

This simplifies and consolidates a lot of duplicated code creating
and modifying textures.

6 years agoglfilter: rename draw_texture to draw_fullscreen_quad
Matthew Waters [Mon, 11 Jul 2016 12:44:16 +0000 (22:44 +1000)]
glfilter: rename draw_texture to draw_fullscreen_quad

And remove unused arguments.

6 years agogl: add memory type for renderbuffer's
Matthew Waters [Mon, 11 Jul 2016 12:31:04 +0000 (22:31 +1000)]
gl: add memory type for renderbuffer's

Soon to be used for framebuffers for e.g. depth buffers or throwaway color
buffers.

6 years agoglformat: define our own set of formats from the GL defines
Matthew Waters [Mon, 11 Jul 2016 12:28:42 +0000 (22:28 +1000)]
glformat: define our own set of formats from the GL defines

also add some depth/stencil formats

6 years agogleffects: fix xray to use the correct function
Matthew Waters [Mon, 11 Jul 2016 12:24:43 +0000 (22:24 +1000)]
gleffects: fix xray to use the correct function

Instead of duplicating the sin effect

6 years agoglbasememory: assert for a valid allocator instead of segfaulting
Matthew Waters [Mon, 11 Jul 2016 11:29:10 +0000 (21:29 +1000)]
glbasememory: assert for a valid allocator instead of segfaulting

6 years agogl: wayland: improve debug message when connecting to display
Tim-Philipp Müller [Mon, 18 Jul 2016 16:43:23 +0000 (17:43 +0100)]
gl: wayland: improve debug message when connecting to display

And another copy'n'paste-o.

https://bugzilla.gnome.org/show_bug.cgi?id=768929

6 years agoglviewconvert: fix transformation matrix usage
Matthew Waters [Thu, 30 Jun 2016 11:50:12 +0000 (21:50 +1000)]
glviewconvert: fix transformation matrix usage

Calling glUniformMatrix before the shader is bound is invalid and
would result in errors like:

GL_INVALID_OPERATION in glUniformMatrix(program not linked)

Move glUniformMatrix() to after the gst_gl_shader_use() call.

6 years agoglupload: fix raw data uploader with addition of GstVideoGLTextureType
Matthew Waters [Thu, 30 Jun 2016 04:04:36 +0000 (14:04 +1000)]
glupload: fix raw data uploader with addition of GstVideoGLTextureType

Fixes regression from 989200820d43c78fb179d7984827800d83787390

https://bugzilla.gnome.org/show_bug.cgi?id=768217

6 years agoglvideoconvert: RG/LA is available in OpenGL ES 3, so let that through
Olivier Crête [Thu, 30 Jun 2016 03:55:18 +0000 (23:55 -0400)]
glvideoconvert: RG/LA is available in OpenGL ES 3, so let that through

6 years agoRevert "Revert "gl/eagl: try getting a gles3 context""
Matthew Waters [Fri, 24 Jun 2016 03:41:11 +0000 (13:41 +1000)]
Revert "Revert "gl/eagl: try getting a gles3 context""

This reverts commit eb142736318463e6e553c21707ba0d716f85a46f.

vtdec now successfully outputs textures that can be converted by
glcolorconvert in GLES3 contexts.

6 years agoglmemory: add the texture type to allocate to parameters
Matthew Waters [Tue, 28 Jun 2016 03:51:22 +0000 (13:51 +1000)]
glmemory: add the texture type to allocate to parameters

Rather than assuming something.  e.g. zerocopy on iOS with GLES3 requires
the use of Luminance/Luminance Alpha formats and does not work with
Red/RG textures.

6 years agoglcolorconvert: don't assume Red/RG textures will be used
Matthew Waters [Tue, 28 Jun 2016 03:09:51 +0000 (13:09 +1000)]
glcolorconvert: don't assume Red/RG textures will be used

Take the used texture type from the memory instead.

Fixes conversion from multi-planar YUV formats with two components per plane
(NV12, NV21, YUY2, UYVY, GRAY16_*, etc) with Luminance Alpha input textures.

This is also needed for zerocopy decoding on iOS with GLES 3.x.

6 years agoglcontext: correct precondition for get_gl_version
Matthew Waters [Tue, 28 Jun 2016 03:02:32 +0000 (13:02 +1000)]
glcontext: correct precondition for get_gl_version

The intention was to assert if both maj and min were NULL (as there would be no
point calling the function).  Instead if either maj or min were NULL, the assert
would occur.

Fix that.

6 years agoeglimage: Only register debug category if dmabuf support is enabled
Sebastian Dröge [Thu, 23 Jun 2016 12:57:58 +0000 (15:57 +0300)]
eglimage: Only register debug category if dmabuf support is enabled

It's not used otherwise currently and causes compiler warnings.

6 years agoglcontext/wgl: try wglCreateContextAttribsARB even not gl3 core profile
Wang Xin-yu (王昕宇) [Tue, 22 Mar 2016 08:51:53 +0000 (16:51 +0800)]
glcontext/wgl: try wglCreateContextAttribsARB even not gl3 core profile

https://bugzilla.gnome.org/show_bug.cgi?id=764018

6 years agoglcontext: fix get_current_gl_api() on win32
Matthew Waters [Tue, 21 Jun 2016 08:28:46 +0000 (18:28 +1000)]
glcontext: fix get_current_gl_api() on win32

Another case of incorrect calling conventions.

Using this function on win32 would corrupt the stack pointer and end in
massive hilarity.

6 years agoglsl: fixup external-oes shaders by mangling the required extension
Matthew Waters [Wed, 15 Jun 2016 02:47:05 +0000 (12:47 +1000)]
glsl: fixup external-oes shaders by mangling the required extension

Newer devices require using a different GLSL extension for accessing
external-oes textures in a shader using the texture() functions.

While the GL_OES_EGL_image_external_essl3 should supposedly be supported
on a any GLES3 android device, the extension was defined after a lot of the
older drivers were built so they will not know about it.  Thus there are two
possible interpretations of which of texture[2D]() should be supported for
external-oes textures.  Strict adherence to the GL_OES_EGL_image_external
extension spec which uses texture2D() or following GLES3's pattern, also
allowing texture() as a function for accessing external-oes textures

This adds another mangling pass to convert
 #extension GL_OES_EGL_image_external : ...
into
 #extension GL_OES_EGL_image_external_essl3 : ...
on GLES3 and when the GL_OES_EGL_image_external_essl3 extension is supported.

Only uses texture() when the GLES3 and the GL_OES_EGL_image_external_essl3
extension is supported for external-oes textures.
Uses GLES2 + texture2D() + GL_OES_EGL_image_external in all other external-oes
cases.

https://bugzilla.gnome.org/show_bug.cgi?id=766993

6 years agoglimagesink: fix query leak in test
Guillaume Desmottes [Thu, 19 May 2016 10:31:56 +0000 (13:31 +0300)]
glimagesink: fix query leak in test

https://bugzilla.gnome.org/show_bug.cgi?id=766663

6 years agoglimagesink: properly setup/teardown tests
Guillaume Desmottes [Thu, 19 May 2016 10:29:15 +0000 (13:29 +0300)]
glimagesink: properly setup/teardown tests

tcase_add_checked_fixture() is suppose to call the setup and teardown
functions so the tests don't have to do it manually.

https://bugzilla.gnome.org/show_bug.cgi?id=766663

6 years agoglupload: fix shader leak in test
Guillaume Desmottes [Thu, 19 May 2016 10:09:41 +0000 (13:09 +0300)]
glupload: fix shader leak in test

https://bugzilla.gnome.org/show_bug.cgi?id=766663

6 years agoqml: Enable qmlglsink for eglfs
Sergey Borovkov [Thu, 14 Apr 2016 15:14:32 +0000 (18:14 +0300)]
qml: Enable qmlglsink for eglfs

https://bugzilla.gnome.org/show_bug.cgi?id=763044

6 years agotests/glcontext: update test for gen,del_texture removal
Matthew Waters [Wed, 15 Jun 2016 14:46:57 +0000 (00:46 +1000)]
tests/glcontext: update test for gen,del_texture removal

6 years agogleffects: fix little rectangle that appears at the center of squeeze and tunnel...
Haihua Hu [Tue, 14 Jun 2016 05:48:09 +0000 (13:48 +0800)]
gleffects: fix little rectangle that appears at the center of squeeze and tunnel effects

These two shader will calculate the vector length and use it as denominator.
But length could be zero which will cause undefine behaviour. Add protection for
this condition

https://bugzilla.gnome.org/show_bug.cgi?id=767635

6 years agoglsl: add some debugging
Matthew Waters [Wed, 15 Jun 2016 08:10:59 +0000 (18:10 +1000)]
glsl: add some debugging

6 years agoglutils: remove unused functions for texture creation/deletion
Matthew Waters [Wed, 15 Jun 2016 06:08:57 +0000 (16:08 +1000)]
glutils: remove unused functions for texture creation/deletion

Everyone uses GstGLMemory now and any future code should as well.

6 years agoglfilter: remove unused class fields in/out_tex_id
Matthew Waters [Wed, 15 Jun 2016 05:47:47 +0000 (15:47 +1000)]
glfilter: remove unused class fields in/out_tex_id

The functionality is not used by any subclass nor are the values set anywhere.

6 years agogldeinterlace: remove dead code accessing filter->in_tex_id
Matthew Waters [Wed, 15 Jun 2016 05:08:39 +0000 (15:08 +1000)]
gldeinterlace: remove dead code accessing filter->in_tex_id

It's not set by anyone or anything and gldeinterlace is the only user of it now.

6 years agogl/upload/meta: remove unneeded texture deletion
Matthew Waters [Wed, 15 Jun 2016 04:40:40 +0000 (14:40 +1000)]
gl/upload/meta: remove unneeded texture deletion

The textures are managed by the GstGLMemory inside the output buffer.  Freeing
them prematurely may result in a use-after-free.

6 years agogst-libs: gl, video: use MAY_BE_LEAKED flag
Guillaume Desmottes [Tue, 17 May 2016 14:14:49 +0000 (17:14 +0300)]
gst-libs: gl, video: use MAY_BE_LEAKED flag

https://bugzilla.gnome.org/show_bug.cgi?id=767162

6 years agogl: glquery: cast to silence compiler warning
Havard Graff [Sat, 28 May 2016 19:36:04 +0000 (21:36 +0200)]
gl: glquery: cast to silence compiler warning

https://bugzilla.gnome.org/show_bug.cgi?id=766973

6 years agogltestsrc: gltestsrc.h already defines GstGLTestSrc
Havard Graff [Sat, 28 May 2016 19:35:37 +0000 (21:35 +0200)]
gltestsrc: gltestsrc.h already defines GstGLTestSrc

And redefinition is not allowed.

https://bugzilla.gnome.org/show_bug.cgi?id=766973

6 years agogldisplay: always unref the context on a collision
Matthew Waters [Thu, 26 May 2016 10:16:07 +0000 (20:16 +1000)]
gldisplay: always unref the context on a collision

Otherwise we will leak GstGLContext's when adding the same context more than
once.

Fixes a regression caused by 5f9d10f6036068502ad23e1ec86a73e341801ae1 in the
gstglcontext unit test that failed with:

Assertion 'tmp == NULL' failed

6 years agocaopengllayersink: Don't cache buffer pool
Nicolas Dufresne [Fri, 20 May 2016 18:34:37 +0000 (14:34 -0400)]
caopengllayersink: Don't cache buffer pool

Pools cannot be used by the two elements at the same time.

https://bugzilla.gnome.org/show_bug.cgi?id=766611

6 years agogl: win32: Add debug category in gstglcontext_wgl.c
Xavier Claessens [Wed, 25 May 2016 13:09:01 +0000 (09:09 -0400)]
gl: win32: Add debug category in gstglcontext_wgl.c

https://bugzilla.gnome.org/show_bug.cgi?id=766867

6 years agoglimagesink: support video rotation using transform matrix
Haihua Hu [Mon, 16 May 2016 12:02:28 +0000 (20:02 +0800)]
glimagesink: support video rotation using transform matrix

Add "rotate-method" to glimagesink and apply transform matrix
to vertex coordinate to control rotation.

https://bugzilla.gnome.org/show_bug.cgi?id=765795

6 years agoglvideomixer: fix race retrieving the GL context from the display
Matthew Waters [Tue, 24 May 2016 13:39:27 +0000 (23:39 +1000)]
glvideomixer: fix race retrieving the GL context from the display

_get_gl_context() can be called concurrently from either propose_allocation() or
decide_allocation().  If it so happens that this happens at the same time,
the check for whether we already had a GL context was outside the lock.  Inside
the lock and loop, the first thing that happens is that we unref the current GL
context (if valid) as if there was a conflict adding it to the display.  If the
timing was unlucky, subsequent use of the GL context would be referencing an
already unreffed GL context object resulting in a critical:

g_object_ref: assertion 'object->ref_count > 0' failed

https://bugzilla.gnome.org/show_bug.cgi?id=766703

6 years agogldisplay: add some debugging about retrieving GL contexts
Matthew Waters [Tue, 24 May 2016 13:38:22 +0000 (23:38 +1000)]
gldisplay: add some debugging about retrieving GL contexts

6 years agoeglimage: Re-add accidentially removed GST_DEFINE_MINI_OBJECT_TYPE()
Sebastian Dröge [Wed, 25 May 2016 07:01:38 +0000 (10:01 +0300)]
eglimage: Re-add accidentially removed GST_DEFINE_MINI_OBJECT_TYPE()

6 years agoeglimage: Ensure that the debug category is always initalized
Sebastian Dröge [Mon, 23 May 2016 17:11:17 +0000 (20:11 +0300)]
eglimage: Ensure that the debug category is always initalized

Before the initializer was only run if dmabuf support was used.

https://bugzilla.gnome.org/show_bug.cgi?id=766794

6 years agogltransformation: make the pivot-z property READWRITE
Arjen Veenhuizen [Tue, 24 May 2016 13:30:09 +0000 (23:30 +1000)]
gltransformation: make the pivot-z property READWRITE

Instead of just being READABLE.

https://bugzilla.gnome.org/show_bug.cgi?id=766818

6 years agogltestsrc: fix src_impl leak
Guillaume Desmottes [Mon, 23 May 2016 07:40:58 +0000 (10:40 +0300)]
gltestsrc: fix src_impl leak

https://bugzilla.gnome.org/show_bug.cgi?id=766661