platform/upstream/gst-plugins-base.git
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

6 years agog-i: pass compiler env to g-ir-scanner
Tim-Philipp Müller [Mon, 23 May 2016 23:55:11 +0000 (00:55 +0100)]
g-i: pass compiler env to g-ir-scanner

It's what introspection.mak does as well. Should
fix spurious build failures on gnome-continuous.

6 years agogltestsrc: fix shaders ref counting
Guillaume Desmottes [Thu, 19 May 2016 14:05:33 +0000 (17:05 +0300)]
gltestsrc: fix shaders ref counting

The gltestsrc element uses two shaders: color_shader and snow_shader.
Those are alternatively assigned to the SrcShader->shader pointer and
their reference was transferred to it. Only the SrcShader->shader was
unreffed (in _src_shader_deinit()) so only one shader was properly
freed, the other one was leaked.

Fixed this by giving an extra ref to SrcShader->shader and unreffing the
2 shaders in _src_smpte_free().

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

6 years agoglmosaic: fix shader leak
Guillaume Desmottes [Thu, 19 May 2016 13:55:31 +0000 (16:55 +0300)]
glmosaic: fix shader leak

gst_gl_mosaic_init_shader() is called twice with test_glmosaic so the
first shader was leaked.

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

6 years agogl: win32: Unparent internal window before destroying it
Xavier Claessens [Mon, 16 May 2016 21:11:53 +0000 (17:11 -0400)]
gl: win32: Unparent internal window before destroying it

For some reason DestroyWindow() deadlock if it's called from
parent window's KeyPress event.

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

6 years agogl: win32: Don't steal parent focus when creating internal window
Xavier Claessens [Mon, 16 May 2016 19:26:53 +0000 (15:26 -0400)]
gl: win32: Don't steal parent focus when creating internal window

This fix regression introduced by 0acc18c60f6f962cc6553f6047fdb64891bab544.

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

6 years agogldisplay: demote no platform display debug to info
Matthew Waters [Sun, 15 May 2016 10:14:41 +0000 (13:14 +0300)]
gldisplay: demote no platform display debug to info

Avoids confusing everyone with a warning that's not always fatal.

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

6 years agogltransformation: use the affine transformation meta if available downstream
Matthew Waters [Sat, 14 May 2016 13:32:06 +0000 (16:32 +0300)]
gltransformation: use the affine transformation meta if available downstream

We can avoid a render pass if downstream supports the affine transformation meta
and increase the performance of some pipelines involving gltransformation.

Implemented by checking for the affine transformation in the allocation query
from downstream and combining our matrix with that of upstream's (or creating
our own).

6 years agogl: take the affine transformation in NDC
Matthew Waters [Sat, 14 May 2016 13:27:26 +0000 (16:27 +0300)]
gl: take the affine transformation in NDC

Provide a function to get the affine matrix in the meta in terms of NDC
coordinates and use as a standard opengl matrix.

Also advertise support for the affine transformation meta in the allocation
query.

6 years agoglbasemixer: actually attempt to propose an allocation upstream
Matthew Waters [Sat, 14 May 2016 12:50:57 +0000 (15:50 +0300)]
glbasemixer: actually attempt to propose an allocation upstream

We were always failing the allocation query as a flag was never being set to
signal a successful negotiation.  Fix by setting the required flag on a
successful caps event from upstream.

6 years agogl/egl: replace gsteglimagememory with an EGLImage wrapper
Matthew Waters [Wed, 4 May 2016 02:17:59 +0000 (12:17 +1000)]
gl/egl: replace gsteglimagememory with an EGLImage wrapper

That can be passed to GstGLMemoryEGL.

This also ports the dmabuf uploader to GstEGLImage and GstGLMemoryEGL.

6 years agogl: implement GstGLMemoryEGL
Gwang Yoon Hwang [Thu, 21 Jan 2016 13:18:17 +0000 (22:18 +0900)]
gl: implement GstGLMemoryEGL

Because current GstEGLImageMemory does not inherit GstGLMemory, GLUpload
allocates additional GLMemory and upload the decoded contents from the decoder
which uses EGLImage (e.g. gst-omx in RPi).

This work adds GstGLMemoryEGL to avoid this overhead. Decoders allocate
GstGLMemoryEGL and decode its contents to the EGLImage of GstGLMemoryEGL.  And
GLUpload uses this memory without allocation of additional textures and blit
operations.

[Matthew Waters]: gst-indent the sources and fix a critical retreiving the egl
display from the memory.

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

6 years agoglmemory: add wrapped data pointers to setup_buffer
Matthew Waters [Tue, 3 May 2016 15:16:51 +0000 (01:16 +1000)]
glmemory: add wrapped data pointers to setup_buffer

Allows creating wrapped memories with GstGLAllocationParams.

The wrapped pointers will be set in the parameters before being passed
to the memory allocation function.

6 years agoglbasememory: take a pointer as the wrapped gpu handle
Matthew Waters [Tue, 3 May 2016 14:19:44 +0000 (00:19 +1000)]
glbasememory: take a pointer as the wrapped gpu handle

Allows passing arbitrary data to wrap the the specific memory implementation
which is required for some memory implementations.

6 years agogl: fix gles3 header usage for older platforms
Matthew Waters [Tue, 3 May 2016 09:58:00 +0000 (19:58 +1000)]
gl: fix gles3 header usage for older platforms

Some platforms provide an old version of GLES2/gl2.h and GLES2/gl2ext.h that
will fail when including GLES3/gl3.h due to missing typedef's.

Seen on the RPi.

6 years agogl: enable gldeinterlace on OpenGL ES
Haihua Hu [Fri, 8 Apr 2016 08:47:15 +0000 (16:47 +0800)]
gl: enable gldeinterlace on OpenGL ES

1.Porting the exist deinterlace shader and OpenGL callback
  to be compatible with OpenGL ES.
2.Add a our blur vertical shader to gldeinterlace.
3.Add a property named “method” to let user choose which
  deinterlace function to use. Default to choose blur vertical
  method for better performance.

[Matthew Waters]: fix name of greedyh in method property (was greedhy) and port
to git master.

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

6 years agoglviewconvert: Port more things to GLES/GL 3 compatibility
Sebastian Dröge [Tue, 19 Apr 2016 16:43:03 +0000 (19:43 +0300)]
glviewconvert: Port more things to GLES/GL 3 compatibility

And move the shader mangling code into a single place instead of having a copy
in glcolorconvert and glviewconvert.

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

6 years agoglcolorconvert: GLES3 deprecates texture2D() and it does not work at all in newer...
Sebastian Dröge [Tue, 19 Apr 2016 16:27:33 +0000 (19:27 +0300)]
glcolorconvert: GLES3 deprecates texture2D() and it does not work at all in newer versions than 3.3

Use the newer texture() function instead. This fixes glimagesink and other
things on various Android devices.

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

6 years agogl: caopengllayersink: fix a minor warning
Hyunjun Ko [Wed, 20 Apr 2016 07:19:55 +0000 (16:19 +0900)]
gl: caopengllayersink: fix a minor warning

Fix "unused variable" warning

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

6 years agogl/cocoa: Fix incompatible type warning
Hyunjun Ko [Wed, 20 Apr 2016 07:00:36 +0000 (16:00 +0900)]
gl/cocoa: Fix incompatible type warning

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

6 years agoglimagesink: Fix indentation
Sebastian Dröge [Tue, 19 Apr 2016 06:30:39 +0000 (09:30 +0300)]
glimagesink: Fix indentation

6 years agoglimagesink: need to clean window_id when state change form READY to NULL
Haihua Hu [Tue, 19 Apr 2016 02:51:14 +0000 (10:51 +0800)]
glimagesink: need to clean window_id when state change form READY to NULL

When application change pipeline state NULL->READY and then READY->NULL,
glimagesink will not clear glsink->window_id. After that, when application
change state NULL->READY, the new_window_id is equal to window_id, glimagesink
will not set window handle. It will use the internal window but not the window
create by application.

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

6 years agogl/caopengllayersink: Actually unset caps_change flag after resize
Heinrich Fink [Sun, 17 Apr 2016 14:45:41 +0000 (15:45 +0100)]
gl/caopengllayersink: Actually unset caps_change flag after resize

Otherwise, the sink would execute "on_resize" for each frame.

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

6 years agogl/caopengllayer: Apply layer.contentsScale to viewport dims
Heinrich Fink [Sun, 17 Apr 2016 14:43:20 +0000 (15:43 +0100)]
gl/caopengllayer: Apply layer.contentsScale to viewport dims

Fixes blurry content on HiDPI screens

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

6 years agogl/cocoa/eagl: don't leak GThread's when dispatching messages
Matthew Waters [Tue, 12 Apr 2016 14:43:18 +0000 (00:43 +1000)]
gl/cocoa/eagl: don't leak GThread's when dispatching messages

gst_gl_context_get_thread() returns a refed pointer, we need to unref it.

6 years agogltestsrc: don't dereference null pointer
Luis de Bethencourt [Tue, 12 Apr 2016 10:14:22 +0000 (11:14 +0100)]
gltestsrc: don't dereference null pointer

funcs can be NULL, it is one of the two conditions of the OR statement
above, so confirm it isn't before dereferencing with funcs->free.

CID 1358388

6 years agoglupload: keep the parent buffer around when converting EGLImage to 2D textures
Matthew Waters [Wed, 6 Apr 2016 04:15:40 +0000 (04:15 +0000)]
glupload: keep the parent buffer around when converting EGLImage to 2D textures

e.g. receiving and releasing a buffer from OMX too early will potentially
cause textures to be overwritten while/before they are displayed.

6 years agoglbasemixer: chain up to the parent implementation
Matthew Waters [Mon, 11 Apr 2016 16:43:45 +0000 (16:43 +0000)]
glbasemixer: chain up to the parent implementation

6 years agolibgstgl: cocoa, eagl: use libdispatch to schedule GL calls
Alessandro Decina [Sun, 10 Apr 2016 22:34:00 +0000 (08:34 +1000)]
libgstgl: cocoa, eagl: use libdispatch to schedule GL calls

Use libdispatch instead of GMainLoop to dispatch GL calls. libdispatch is more
optimized and cuts a lot of poll()/pthread_* overhead.

6 years agoglwindow: reduce the number of GMutexes and GConds in send_message()
Alessandro Decina [Sun, 10 Apr 2016 22:02:45 +0000 (08:02 +1000)]
glwindow: reduce the number of GMutexes and GConds in send_message()

Don't create many short lived locks/conds in gst_gl_window_send_message. This is
a micro optimization to save a bunch of pthread_* calls which are expensive on
OSX/iOS and possibly other platforms.

6 years agovideoaggregator: repect the result of find_best_format in the default update_caps
Matthew Waters [Mon, 4 Apr 2016 10:55:51 +0000 (20:55 +1000)]
videoaggregator: repect the result of find_best_format in the default update_caps

We weren't using the result of find_best_format at all.

Also, move the find_best_format usage to the default update_caps() to make
sure that it is also overridable.

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

6 years agoglvideomixer: add support for the affine transformation meta
Matthew Waters [Wed, 23 Mar 2016 03:16:11 +0000 (03:16 +0000)]
glvideomixer: add support for the affine transformation meta

6 years agoglimagesink: support the affine transformation meta for any texture target
Matthew Waters [Wed, 23 Mar 2016 03:14:40 +0000 (03:14 +0000)]
glimagesink: support the affine transformation meta for any texture target

6 years agoglmixer: set the current texture to 0 before mapping
Matthew Waters [Tue, 5 Apr 2016 06:22:49 +0000 (16:22 +1000)]
glmixer: set the current texture to 0 before mapping

If we fail mapping, we don't want to use undefined video data in the subclass.

6 years agoglmixerbin: proxy the start-time-* properties from aggregator
Matthew Waters [Mon, 4 Apr 2016 03:43:30 +0000 (13:43 +1000)]
glmixerbin: proxy the start-time-* properties from aggregator

6 years agoeglimage: perform eglCreateImage in the gl thread
Matthew Waters [Tue, 22 Mar 2016 07:19:03 +0000 (07:19 +0000)]
eglimage: perform eglCreateImage in the gl thread

while calling eglCreateImage without a GL context current in the executing
thread works on the RPi, some other implementations will return errors.

Marshall the eglCreateImage to the GL thread to appease these implementations.

6 years agoglviewconvert: support outputting to multiple draw buffers on GLES3
Matthew Waters [Fri, 1 Apr 2016 03:58:56 +0000 (14:58 +1100)]
glviewconvert: support outputting to multiple draw buffers on GLES3

A similar change that was done to glcolorconvert adding the necessary shader
mangling.

6 years agoglcolorconvert: implement multiple render targets for GLES3
Matthew Waters [Thu, 31 Mar 2016 08:50:28 +0000 (19:50 +1100)]
glcolorconvert: implement multiple render targets for GLES3

There are numerous slight differences required between Desktop GL and GLES3 for
multiple render targets.

1. gl_FragData doesn't exist at all and one is required to use
   'layout (location = ?) out ...' instead.
2. gl_FragColor doesn't exist, same as 1
3. texture2D() has been deprecated

Fortunately most of these have been taken care of with GL3 and the shader
mangling already exists so just expand the conditions they are used in.  The
gl_FragData issue requires a new mangle pass though.  We also use this new
pass on desktop GL for consistency.

6 years agogl/build: add missing '\' at the end of the line in MakeFile.am
Matthew Waters [Thu, 31 Mar 2016 13:23:25 +0000 (00:23 +1100)]
gl/build: add missing '\' at the end of the line in MakeFile.am

Otherwise the following elements aren't included in the correct variable.

Fixes error in 'make distcheck' failing to find gstgltestsrc.h

6 years agoglcolorconvert: don't use the predefined variable name sample
Matthew Waters [Thu, 31 Mar 2016 09:00:37 +0000 (20:00 +1100)]
glcolorconvert: don't use the predefined variable name sample

Using 'sample' as a variable name is an error in GLES3

6 years agogl/examples: fix switchvideooverlay for wayland
Matthew Waters [Tue, 22 Mar 2016 12:10:24 +0000 (23:10 +1100)]
gl/examples: fix switchvideooverlay for wayland

and call XInitThreads() for X11

6 years agogl/examples: remove duplicated videooverlay example
Matthew Waters [Mon, 21 Mar 2016 04:25:21 +0000 (15:25 +1100)]
gl/examples: remove duplicated videooverlay example

filtervideooverlay proved the exact same example (only with a extra glfiltercube).

6 years agogl/examples/3d: additions for wayland support
Matthew Waters [Mon, 21 Mar 2016 04:23:41 +0000 (15:23 +1100)]
gl/examples/3d: additions for wayland support

6 years agogldifferencematte: port to gl3/gles2
Matthew Waters [Thu, 17 Mar 2016 12:50:00 +0000 (23:50 +1100)]
gldifferencematte: port to gl3/gles2

6 years agogltestsrc: port to gles2/gl3
Matthew Waters [Fri, 26 Feb 2016 09:55:47 +0000 (20:55 +1100)]
gltestsrc: port to gles2/gl3

This makes gltestsrc work everywhere \o/

- workaround RPi returning invalid values for positive coords in the
  checker shader
- reduce the number of iterations in the mandelbrot shader for gles2

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

6 years agogltestsrc: port smpte pattern to shaders
Matthew Waters [Fri, 26 Feb 2016 05:57:47 +0000 (16:57 +1100)]
gltestsrc: port smpte pattern to shaders

Loosely based on patch by
Lubosz Sarnecki <lubosz.sarnecki@collabora.co.uk>

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

6 years agogltestsrc: implement the circular method
Matthew Waters [Fri, 26 Feb 2016 01:02:15 +0000 (12:02 +1100)]
gltestsrc: implement the circular method

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