platform/upstream/gst-plugins-base.git
6 years agoglsl: fix check for glsl version against GL context inversion
Matthew Waters [Tue, 10 Nov 2015 09:13:53 +0000 (20:13 +1100)]
glsl: fix check for glsl version against GL context inversion

Any GLSL version that was less than the provided GL version would fail

6 years agogl: forward declare some enums
Matthew Waters [Tue, 10 Nov 2015 02:13:50 +0000 (13:13 +1100)]
gl: forward declare some enums

Specifically the GstGLTextureTarget enum

6 years agoglslstage: expose the default shader strings as public
Matthew Waters [Tue, 10 Nov 2015 02:11:37 +0000 (13:11 +1100)]
glslstage: expose the default shader strings as public

Add some other simple strings for external-oes textures or transforming
the texture coordinates with a transformation matrix

6 years agoglcolorconvert: wait on the sync meta for input buffers
Matthew Waters [Thu, 5 Nov 2015 16:05:31 +0000 (03:05 +1100)]
glcolorconvert: wait on the sync meta for input buffers

6 years agoglimagesink: wait on the provided sync meta provided to glimagesink
Matthew Waters [Wed, 4 Nov 2015 13:13:01 +0000 (00:13 +1100)]
glimagesink: wait on the provided sync meta provided to glimagesink

6 years agoglcolorconvert: use the correct oes target string in the template caps
Matthew Waters [Sun, 8 Nov 2015 11:14:01 +0000 (22:14 +1100)]
glcolorconvert: use the correct oes target string in the template caps

6 years agoglshader, tsdemux: simplify code
Tim-Philipp Müller [Fri, 6 Nov 2015 12:31:09 +0000 (12:31 +0000)]
glshader, tsdemux: simplify code

Jus use _delete_link() instead of _remove_link() + _free1()

6 years agoglmixerbin: fix minor leak
Tim-Philipp Müller [Fri, 6 Nov 2015 12:30:12 +0000 (12:30 +0000)]
glmixerbin: fix minor leak

Don't leak removed list node.

6 years agogstglutils: fix shader compilation on Mountain Lion
Alessandro Decina [Mon, 2 Nov 2015 01:10:44 +0000 (12:10 +1100)]
gstglutils: fix shader compilation on Mountain Lion

Make gst_gl_context_gen_shader/_compile_shader assume GST_GLSL_PROFILE_ES |
GST_GLSL_PROFILE_COMPATIBILITY as the profile. Without this, the shader compiler
doesn't inject the #version tag resulting in a compilation error on Mountain
Lion.

This is a workaround for old code using gst_gl_context_gen_shader. New code
should use the gst_glsl_stage_* API directly which allows the caller to
explicitly specify version/profile.

6 years agoglbufferpool: explicitly initialize a possibly uninitialized variable
Matthew Waters [Sat, 31 Oct 2015 12:28:20 +0000 (23:28 +1100)]
glbufferpool: explicitly initialize a possibly uninitialized variable

The ret variable may be uninitialized and so its contents were undefined and
the results were erratic (failing with glvideomixer, succeeding in other cases)

P.S. No idea why gcc/clang et al never picked up on this like they normally do
(probably due to some optimisation pass figuring out it's only set once...)

6 years agogl/tests: update for glmemory api changes
Matthew Waters [Fri, 30 Oct 2015 04:00:23 +0000 (15:00 +1100)]
gl/tests: update for glmemory api changes

6 years agoglcolorconvert: remove unused ret variable
Matthew Waters [Fri, 30 Oct 2015 03:43:23 +0000 (14:43 +1100)]
glcolorconvert: remove unused ret variable

6 years agoglslstage: remove typedefs from the header
Matthew Waters [Fri, 30 Oct 2015 03:40:35 +0000 (14:40 +1100)]
glslstage: remove typedefs from the header

They are already defined in the forward decleration header and defining them
more than once will give an error with OSX's clang about typedef redefinition
being a C11 feature.

6 years agoglcolorconvert: follow the correct texture target names
Matthew Waters [Fri, 30 Oct 2015 03:38:05 +0000 (14:38 +1100)]
glcolorconvert: follow the correct texture target names

6 years agoglupload: explicitly configure the texture target on the gl buffer pool
Matthew Waters [Thu, 29 Oct 2015 14:42:42 +0000 (01:42 +1100)]
glupload: explicitly configure the texture target on the gl buffer pool

If we don't, then the pool could end up allocating 2D textures when the
caps explictly state they should be rectangle textures.

6 years agoglbufferpool: add bufferpool options for the various texture targets
Matthew Waters [Thu, 29 Oct 2015 14:27:36 +0000 (01:27 +1100)]
glbufferpool: add bufferpool options for the various texture targets

This was chosen over relying solely on the caps as glupload needs to propose an
allocation and set the texture target based on the output caps.  Setting the
caps in the config is currently pointless as they are overwritten in a lot of
element's decide_allocation functions.

This provides a mechanism for the buffer pool to be configured for a certain
texture target when none has been configured.

6 years agoglcolorconvert: add support for converting texture targets
Matthew Waters [Thu, 29 Oct 2015 02:04:31 +0000 (13:04 +1100)]
glcolorconvert: add support for converting texture targets

Solved with a simple shader templating mechanism and string replacements
of the necessary sampler types/texture accesses and texture coordinate
mangling for rectangular and external-oes textures.

6 years agoglmemory: add support for rectangle textures
Matthew Waters [Wed, 28 Oct 2015 13:44:26 +0000 (00:44 +1100)]
glmemory: add support for rectangle textures

Add the various tokens/strings for the differnet texture types (2D, rect, oes)

Changes the GLmemory api to include the GstGLTextureTarget in all relevant
functions.

Update the relevant caps/templates for 2D only textures.

6 years agoglcolorconvert: order the caps template so that RGBA is first
Matthew Waters [Thu, 29 Oct 2015 14:45:13 +0000 (01:45 +1100)]
glcolorconvert: order the caps template so that RGBA is first

glcolorconvert ! glcolorconvert would sometimes negotiated RGB
(the first list entry) otherwise.

6 years agoglbufferpool: move typedef's into the forward decleration file
Matthew Waters [Thu, 29 Oct 2015 14:16:02 +0000 (01:16 +1100)]
glbufferpool: move typedef's into the forward decleration file

Otherwise, for example, clang will warn about typedef redefinitions
being a C11 feature.

6 years agoglslstage: initialize output params to 0 before calling gl functions
Julien Isorce [Wed, 28 Oct 2015 14:41:54 +0000 (14:41 +0000)]
glslstage: initialize output params to 0 before calling gl functions

The client side API of the Chromium's GPU Process has asserts
in debug mode that check that output params are initialized to 0.

6 years agoopengl: build/provide glstereomix/split on gles only systems
Matthew Waters [Mon, 26 Oct 2015 13:36:41 +0000 (00:36 +1100)]
opengl: build/provide glstereomix/split on gles only systems

6 years agoglcolorconvert: allow outputting multiple textures for gles3 contexts
Matthew Waters [Mon, 26 Oct 2015 07:26:18 +0000 (18:26 +1100)]
glcolorconvert: allow outputting multiple textures for gles3 contexts

the USING_GLES2 includes all GLES3 contexts as well which does support
drawing to multiple buffers.  Instead make or decision solely based on
whether glDrawBuffers is available or not.

6 years agoglviewconvert: expose the element on gles2 platforms
Matthew Waters [Mon, 26 Oct 2015 06:36:21 +0000 (17:36 +1100)]
glviewconvert: expose the element on gles2 platforms

We can do everything with gles3 however gles2 restricts us not allowing
separated or frame-by-frame multiview modes due to multiple draw buffers.

6 years agoglshaderelement: free the vertex and fragment strings on finalize
Matthew Waters [Tue, 20 Oct 2015 18:34:18 +0000 (05:34 +1100)]
glshaderelement: free the vertex and fragment strings on finalize

Fixes a memory leak when using the vertex/fragment properties.

6 years agoglshaderelement: remove unneeded reference to <gst/gl/gstglshadervariables.h>
Matthew Waters [Tue, 20 Oct 2015 18:00:11 +0000 (05:00 +1100)]
glshaderelement: remove unneeded reference to <gst/gl/gstglshadervariables.h>

6 years agogl: fix usage of string.h and stdio.h functions without including the headers
Matthew Waters [Tue, 20 Oct 2015 17:44:50 +0000 (04:44 +1100)]
gl: fix usage of string.h and stdio.h functions without including the headers

e.g:
gstglcontext_egl.c:613:7: error: implicit declaration of function 'strcmp'
[-Werror=implicit-function-declaration]
   if (strcmp (G_MODULE_SUFFIX, "so") == 0)

6 years agoglimagesink: create a context in NULL_READY
Matthew Waters [Thu, 15 Oct 2015 20:03:06 +0000 (07:03 +1100)]
glimagesink: create a context in NULL_READY

So that it's possible for decoders et al. to request the OpenGL context
in their READY_PAUSED transition with decodebin/playbin.

6 years agogl: remove unneeded shader variable parsing code
Matthew Waters [Tue, 20 Oct 2015 16:59:33 +0000 (03:59 +1100)]
gl: remove unneeded shader variable parsing code

6 years agoglshaderelement: implement setting arbitrary uniforms
Matthew Waters [Tue, 20 Oct 2015 16:23:30 +0000 (03:23 +1100)]
glshaderelement: implement setting arbitrary uniforms

Currently float and int are supported by default. vec2, vec3, vec4
and mat4 are supported if graphene is used.  Of course if one wants
to set custom uniforms they can also be set using the create-shader
signal.

6 years agogl: be consistent in gobject boilerpate
Matthew Waters [Mon, 19 Oct 2015 04:15:30 +0000 (15:15 +1100)]
gl: be consistent in gobject boilerpate

GST_GL_IS_* vs GST_IS_GL_*

git grep -l 'GST_GL_IS_' | xargs sed -i 's/GST_GL_IS_/GST_IS_GL_/g'

6 years agoglshaderelement: implement on-demand create-shader signalling
Matthew Waters [Sat, 17 Oct 2015 04:26:46 +0000 (15:26 +1100)]
glshaderelement: implement on-demand create-shader signalling

One may not have an GstGLContext available or current in the thread where one
would need to update the shader.  Support this by signalling create-shader
whenever the one-shot 'update-shader' is set to TRUE.

6 years agogl/calayer: don't leak a gl shader object
Matthew Waters [Fri, 16 Oct 2015 15:42:47 +0000 (02:42 +1100)]
gl/calayer: don't leak a gl shader object

We will always overwrite the ca_sink->redisplay_shader without freeing the
object.

6 years agoglslstage: add brackets around pointer dereference referencing an array
Matthew Waters [Thu, 15 Oct 2015 15:57:19 +0000 (02:57 +1100)]
glslstage: add brackets around pointer dereference referencing an array

While technically, i is always 0 and *vertex_sources[i++] is equivalant
to (*vertex_sources)[i++].  Be future-proof in the case of code
moves/changes/etc.

CID 1327406

6 years agogl/caopengllayersink: port to new GstGLShader API
Matthew Waters [Thu, 15 Oct 2015 12:47:11 +0000 (23:47 +1100)]
gl/caopengllayersink: port to new GstGLShader API

fixes build error:
"undefined symbols for architecture:
gst_gl_shader_compile_with_default_vf_and_check"

6 years agogl/tests: port glcontext test to opengl
Matthew Waters [Thu, 15 Oct 2015 11:42:26 +0000 (22:42 +1100)]
gl/tests: port glcontext test to opengl

Now uses vao's and vbo's when possible like the rest of the gstgl library.

6 years agoglshader: port element to GstGLSLStage
Matthew Waters [Fri, 4 Sep 2015 06:16:51 +0000 (16:16 +1000)]
glshader: port element to GstGLSLStage

- Provide a shader property to set the full shader pipeline
- Provide vertex and fragment properties for just providing simple
  shader sources.

6 years agoglshader: port to using GstGLSLStage objects for string management
Matthew Waters [Fri, 4 Sep 2015 06:02:32 +0000 (16:02 +1000)]
glshader: port to using GstGLSLStage objects for string management

A GstGLShader is now simply a collection of stages that are
compiled and linked together into a program.  The uniform/attribute
interface has remained the same.

6 years agoglsl: add a shader stage object GstGLSLStage
Matthew Waters [Fri, 4 Sep 2015 04:36:47 +0000 (14:36 +1000)]
glsl: add a shader stage object GstGLSLStage

Represents a stage (vertex, geometry, fragment, etc) in the shader
pipeline.

6 years agogl/shader/variables: include generic gl.h header
Matthew Waters [Thu, 3 Sep 2015 14:09:09 +0000 (00:09 +1000)]
gl/shader/variables: include generic gl.h header

Otherwise we may miss some forward declarations

Fixes build error: undefined reference to GstGLSLStage

6 years agogl: add some GLSL utility functions
Matthew Waters [Thu, 20 Aug 2015 05:11:06 +0000 (15:11 +1000)]
gl: add some GLSL utility functions

Specifically parsing/setting GLSL versions and the shader related
function table.

6 years agogl: fix leak in gst_gl_insert_debug_marker()
Guillaume Desmottes [Tue, 13 Oct 2015 10:40:04 +0000 (12:40 +0200)]
gl: fix leak in gst_gl_insert_debug_marker()

The string allocated by g_vasprintf() was leaked.

Reproduced using the
validate.file.compositor.simple.play_15s.synchronized validate scenario.

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

6 years agoglvideomixer: Proxy the ignore-eos videoaggregator property as well
Nirbheek Chauhan [Tue, 6 Oct 2015 15:53:11 +0000 (21:23 +0530)]
glvideomixer: Proxy the ignore-eos videoaggregator property as well

Identical to how the z-order property is proxied

6 years agogstreamer: bad: Fix memory leaks when context parse fails
Vineeth TM [Thu, 20 Aug 2015 07:03:29 +0000 (16:03 +0900)]
gstreamer: bad: Fix memory leaks when context parse fails

When g_option_context_parse fails, context and error variables are not getting free'd
which results in memory leaks. Free'ing the same.

And replacing g_error_free with g_clear_error, which checks if the error being passed
is not NULL and sets the variable to NULL on free'ing.

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

6 years agogl: move debugging related functions to their own file
Matthew Waters [Thu, 1 Oct 2015 15:01:42 +0000 (01:01 +1000)]
gl: move debugging related functions to their own file

6 years agoglcolorscale: use glbasefilter vfuncs
Matthew Waters [Thu, 1 Oct 2015 13:20:19 +0000 (23:20 +1000)]
glcolorscale: use glbasefilter vfuncs

Uses less code \o/
Fixes legacy opengl rendering \o/

6 years agogl: Pass GL_CFLAGS to g-ir-scanner
Antoine Jacoutot [Wed, 30 Sep 2015 06:36:15 +0000 (08:36 +0200)]
gl: Pass GL_CFLAGS to g-ir-scanner

This unbreaks building when some headers are under a non-standard path.
e.g. /usr/X11R6/include as on OpenBSD.

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

6 years agoglcontext: fixup strstr lengths so we don't overrun
Matthew Waters [Wed, 30 Sep 2015 05:17:38 +0000 (15:17 +1000)]
glcontext: fixup strstr lengths so we don't overrun

6 years agoglupload: remove useless release_buffer
Matthew Waters [Wed, 30 Sep 2015 03:31:50 +0000 (13:31 +1000)]
glupload: remove useless release_buffer

It's a leftover from when we weren't outputting GstBuffer's and
returning raw texture id's.

6 years agoglutils: use gst_element_set_context for setting display/other_context
Matthew Waters [Tue, 29 Sep 2015 15:53:53 +0000 (01:53 +1000)]
glutils: use gst_element_set_context for setting display/other_context

1. So we get tracking inside GstElement properly when e.g. adding to a bin
2. Removes redundant code.  Now only one place where
   GstContext->GstGLDisplay/GstGLContext transformation occurs
3. Fixes a memory leak in the process
4. Make the retrieval of debug categories thread safe

6 years agogl/eagl: use the default GL context debug category
Matthew Waters [Thu, 17 Sep 2015 06:59:16 +0000 (16:59 +1000)]
gl/eagl: use the default GL context debug category

6 years agogl: set the context on the element on a context query
Matthew Waters [Mon, 28 Sep 2015 12:31:09 +0000 (22:31 +1000)]
gl: set the context on the element on a context query

Otherwise it's possible to lose the context information if the
context is only propagated through queries.

6 years agogl: chain up to the parent class for GstElement::set_context
Matthew Waters [Mon, 28 Sep 2015 12:20:29 +0000 (22:20 +1000)]
gl: chain up to the parent class for GstElement::set_context

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

6 years agogl: sprinkle some debug markers to ease debugging
Matthew Waters [Mon, 31 Aug 2015 09:21:54 +0000 (19:21 +1000)]
gl: sprinkle some debug markers to ease debugging

6 years agogl/utils: add a function to insert a debug marker
Matthew Waters [Mon, 31 Aug 2015 09:18:23 +0000 (19:18 +1000)]
gl/utils: add a function to insert a debug marker

These markers are visible in tools that record the GL function calls
such as apitrace, et al.

Makes it easier to match up GL draw commands with specific elements.

6 years agogl: add some debugging prototypes
Matthew Waters [Mon, 31 Aug 2015 09:17:21 +0000 (19:17 +1000)]
gl: add some debugging prototypes

6 years agoglwindow: remove unused draw_unlocked function
Matthew Waters [Sat, 26 Sep 2015 09:19:50 +0000 (19:19 +1000)]
glwindow: remove unused draw_unlocked function

The functionality is provided by draw anyway and is leftover from
X11's specific threading requirements that no longer apply.

6 years agoglfilter: use GL_ELEMENT_ARRAY_BUFFER for vbo indices
Julien Isorce [Fri, 25 Sep 2015 09:32:00 +0000 (10:32 +0100)]
glfilter: use GL_ELEMENT_ARRAY_BUFFER for vbo indices

Fixes this error with chromium gpu process:
GL_INVALID_OPERATION, glBindBuffer: buffer bound to more than 1 target

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

6 years agoglmemory: fix texture leak in _gl_mem_copy
Julien Isorce [Thu, 17 Sep 2015 13:17:09 +0000 (14:17 +0100)]
glmemory: fix texture leak in _gl_mem_copy

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

6 years agogl/dispmanx: fix rendering with recent resize state tracking
Matthew Waters [Mon, 21 Sep 2015 08:04:40 +0000 (08:04 +0000)]
gl/dispmanx: fix rendering with recent resize state tracking

557ca6fda5f831be4aba5819bf7b30b296e575cd didn't change to the
necessary gst_gl_window_resize() call for the dispmanx backend.

6 years agoDon't throw compiler warnings with G_DISABLE_ASSERT
Jan Schmidt [Thu, 17 Sep 2015 14:20:13 +0000 (00:20 +1000)]
Don't throw compiler warnings with G_DISABLE_ASSERT

Disable code that warns about unused variables when G_DISABLE_ASSERT
is defined, as it is in tarballs and pre-releases.

6 years agogl/caopengllayer: fix non-existent selector warning
Matthew Waters [Thu, 17 Sep 2015 12:17:24 +0000 (22:17 +1000)]
gl/caopengllayer: fix non-existent selector warning

557ca6fda5f831be4aba5819bf7b30b296e575cd introduced the queueResize
call without implementing the selector

6 years agoglwindow: Fix g_return_val_if_fail in a void function
Jan Schmidt [Thu, 17 Sep 2015 11:31:39 +0000 (21:31 +1000)]
glwindow: Fix g_return_val_if_fail in a void function

6 years agoglimagesink: request a resize on caps/3d mode changes
Matthew Waters [Thu, 17 Sep 2015 07:22:47 +0000 (17:22 +1000)]
glimagesink: request a resize on caps/3d mode changes

Fixes incorrect aspect ratio on OSX when changing caps or the 3d
output mode.

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

6 years agoglwindow: add API to request a resize event on the next draw
Matthew Waters [Thu, 17 Sep 2015 07:06:37 +0000 (17:06 +1000)]
glwindow: add API to request a resize event on the next draw

- glimagesink needs to be able to resize the viewport on aspect ratio
  changes resulting from either caps changes or 3d output mode changes.
- Performing a glViewport outside the GstGLWindow::resize callback
  will not have the winsys' stack of viewports required to correctly
  place the output frame.

Provide a function to request a resize on the next draw event from the
winsys.

Also track size changes inside the base GstGLWindow class rather
than in each subclass.

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

6 years agogl/uploadelement: fail earlier if we could not upload the buffer
Matthew Waters [Thu, 17 Sep 2015 06:55:11 +0000 (16:55 +1000)]
gl/uploadelement: fail earlier if we could not upload the buffer

6 years agogl/x11: store the correct dimension from the resize events
Matthew Waters [Thu, 17 Sep 2015 06:05:21 +0000 (16:05 +1000)]
gl/x11: store the correct dimension from the resize events

small typo s/width/height/

6 years agogl: Fix GError leaks during failures
Vineeth T M [Thu, 17 Sep 2015 04:35:02 +0000 (13:35 +0900)]
gl: Fix GError leaks during failures

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

6 years agoglimagesink: avoid updating the viewport in the draw loop
Matthew Waters [Wed, 16 Sep 2015 07:28:05 +0000 (17:28 +1000)]
glimagesink: avoid updating the viewport in the draw loop

Fixes flashes/incorrect aspect ratio when resizing glimagesink on OSX.

6 years agogl: bufferpool take into account video stride alignment requirements
Tim-Philipp Müller [Tue, 15 Sep 2015 10:34:12 +0000 (11:34 +0100)]
gl: bufferpool take into account video stride alignment requirements

when allocating memory. Fixes crashes with avdec_h265 in the AVX2
code path which requires 32-byte stride alignment, but the
GstAllocationParams only specified a 16-byte alignment.

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

6 years agogl/api: use public rather than private define
Matthew Waters [Wed, 9 Sep 2015 13:53:57 +0000 (23:53 +1000)]
gl/api: use public rather than private define

HAVE_IOS is only defined for the build of this module so
attempting to use gstgl in iOS would result in incorrect GL
includes.
Use GST_GL_HAVE_PLATFORM_EAGL instead for choosing the iOS GL
header.

6 years agogl/eagl: Also unbind renderbuffer after setting up framebuffer
Sebastian Dröge [Wed, 9 Sep 2015 06:33:01 +0000 (09:33 +0300)]
gl/eagl: Also unbind renderbuffer after setting up framebuffer

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

6 years agogl/eagl: Don't make context uncurrent just to make it current again in the next line
Sebastian Dröge [Wed, 9 Sep 2015 06:27:17 +0000 (09:27 +0300)]
gl/eagl: Don't make context uncurrent just to make it current again in the next line

Also binding the framebuffer again is unnecessary then as it was just bound a
few lines before while the context was current.

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

6 years agogtk, qt, gl: fix typo in debug and error messages
Tim-Philipp Müller [Mon, 31 Aug 2015 17:06:31 +0000 (18:06 +0100)]
gtk, qt, gl: fix typo in debug and error messages

6 years agoglupload: Use base class metadata copy function
Nicolas Dufresne [Mon, 24 Aug 2015 23:47:01 +0000 (19:47 -0400)]
glupload: Use base class metadata copy function

This allow properly copying selected meta, like the composition
overlay. Note that output buffer need to be readable, but GlUpload
keeps a ref. For now, simply drop GlUpload ref after perform,
leaving that ref has no purpose. The method shall be removed
in the future.

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

6 years agoglcolorconvert: Use base transform metadata copy
Nicolas Dufresne [Mon, 24 Aug 2015 23:28:10 +0000 (19:28 -0400)]
glcolorconvert: Use base transform metadata copy

Use base class default method instead of only copying flags and
timestamp. This way, selected meta's like compostion overlay will
be passed downstream as expected.

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

6 years agogl/eagl: Unref context after setting a window handle
Sebastian Dröge [Tue, 25 Aug 2015 07:09:14 +0000 (10:09 +0300)]
gl/eagl: Unref context after setting a window handle

gst_gl_window_get_context() returns a new reference.

Hopefully fixes https://bugzilla.gnome.org/show_bug.cgi?id=753758

6 years agoglimagesink: update display size before sending event
Nicolas Dufresne [Fri, 21 Aug 2015 20:42:18 +0000 (13:42 -0700)]
glimagesink: update display size before sending event

This is minor issue, as the reconfigure event is asynchronous.
Basically, update width/height before sending the event.

6 years agogl: Let base transform relay the meta api for us
Nicolas Dufresne [Fri, 21 Aug 2015 00:27:34 +0000 (17:27 -0700)]
gl: Let base transform relay the meta api for us

During allocation query, when this element is not passthrough, it must
relay the overlay compostion meta and it's parameters. Fortunatly, base
transform can do this for us.

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

6 years agoglcontext: add specific error message when missing GL_SHADING_LANGUAGE_VERSION
Justin Kim [Fri, 21 Aug 2015 05:07:32 +0000 (14:07 +0900)]
glcontext: add specific error message when missing GL_SHADING_LANGUAGE_VERSION

GL_SHADING_LANGUAGE_VERSION was introduced since ES 2.0, but in some
android emulator doesn't support this feature. To prevent confusion for
developer, the error message need to be more clear.

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

6 years agocaopengllayersink: Don't chain up to parent's query handling twice for DRAIN query
hoonhee.lee [Fri, 21 Aug 2015 07:31:41 +0000 (16:31 +0900)]
caopengllayersink: Don't chain up to parent's query handling twice for DRAIN query

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

6 years agoglbasefilter: only call gl_{stop,start} if the context changed
Matthew Waters [Mon, 17 Aug 2015 16:35:58 +0000 (18:35 +0200)]
glbasefilter: only call gl_{stop,start} if the context changed

Removes the redundant GL object creation/deletion on every
decide_allocation call which is being called for every caps change.

Thus reduces the required GL state changes on reconfigure events
which are being sent by glimagesink/xvimagesink

6 years agoglupload: Recalculate offset and size in raw upload
Nicolas Dufresne [Sun, 16 Aug 2015 16:13:12 +0000 (18:13 +0200)]
glupload: Recalculate offset and size in raw upload

As we only expose the mapped portion of the frame into the GL
memory object (and not the original padding) we need to
re-calculate the size and offset.

6 years agochecks: Ensure thread-safe libX11/GL when running tests
Edward Hervey [Fri, 14 Aug 2015 10:25:19 +0000 (12:25 +0200)]
checks: Ensure thread-safe libX11/GL when running tests

6 years agogloverlaycompositor: Also disable the blend when done
Nicolas Dufresne [Sat, 15 Aug 2015 13:02:33 +0000 (15:02 +0200)]
gloverlaycompositor: Also disable the blend when done

6 years agoglsink: Enable sync meta on pools we offer
Nicolas Dufresne [Sat, 15 Aug 2015 12:31:15 +0000 (14:31 +0200)]
glsink: Enable sync meta on pools we offer

As the upload is asynchronous, we need to enable the sync meta to
gain correct rendering. The buffer pool receiver don't know about
that.

6 years agoglimagesink: Move overlay rendering after video rendering
Nicolas Dufresne [Fri, 14 Aug 2015 15:36:48 +0000 (17:36 +0200)]
glimagesink: Move overlay rendering after video rendering

This is mostly cosmetic, but heoretically it reduces the amount of
required object in the context at one point. It also avoids potential
conflicts.

6 years agoopengl: Change GLclampd to double
Sebastian Dröge [Sat, 15 Aug 2015 08:03:07 +0000 (10:03 +0200)]
opengl: Change GLclampd to double

GLclampd does not exist on GLES, only desktop GL.

6 years agoopengl: add missing ClearDepth prototype
Martin Kelly [Fri, 14 Aug 2015 17:32:14 +0000 (10:32 -0700)]
opengl: add missing ClearDepth prototype

The ClearDepth call is missing.

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

6 years agoglimagesink: take into account non 1/1 par for navigation
Matthew Waters [Tue, 11 Aug 2015 22:20:10 +0000 (00:20 +0200)]
glimagesink: take into account non 1/1 par for navigation

The current code was ignoring the par/dar aspect when transforming
from window coordinates to stream coordinates resulting in incorrect
coordinates being sent upstream in the navigation events.

6 years agogl: Add opengl_version.h to the list of sources
Nicolas Dufresne [Mon, 10 Aug 2015 18:48:58 +0000 (14:48 -0400)]
gl: Add opengl_version.h to the list of sources

Adding this private header to the list of sources. We don't want to make
this header public, but we need it in the list of sources otherwise it
won't be included in the tarball. This fixes make distcheck.

This regression was introduced by commit 1a6fe3db

6 years agogl: use gles2 shaders everywhere
Matthew Waters [Mon, 10 Aug 2015 14:38:32 +0000 (16:38 +0200)]
gl: use gles2 shaders everywhere

This effectively limits a glfilter subclass to be > GL(ES) 2.0.
rather than a possible GL 1.4.

6 years agoglcontext/wgl: implement gl3 core profile context selection
Matthew Waters [Mon, 10 Aug 2015 13:44:54 +0000 (15:44 +0200)]
glcontext/wgl: implement gl3 core profile context selection

6 years agogltransformation: implement pivot point for rotation and scale
Lubosz Sarnecki [Sat, 28 Feb 2015 00:07:44 +0000 (01:07 +0100)]
gltransformation: implement pivot point for rotation and scale

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

Add a pivot vector for setting the origin of rotations and scales.

With the pivot point the rotation and scale operations can have
different origins. This adds the ability to rotate around different points.
Currently the default (0, 0) pivot point is possible,
a rotation around the center, and zooming into and out of the center.

With an pivot point this is optional.
I defined the following image coordinates for the pivot point:

 (-1,1) ------------------------- (1,1)
| |
| |
| |
|   (0,0) |
| |
| |
| |
(-1,-1) ------------------------- (1,-1)

Example:

Rotate the video at the bottom left corner

gst-launch-1.0 videotestsrc \
! gltransformation \
  scale-x=0.5 \
scale-y=0.5 \
rotation-z=25.0 \
pivot-x=-1.0 \
pivot-y=-1.0 \
! glimagesink

The pivot-z option defines the pivot point in 3D space.
This only affects rotation, since we have no Z data to scale.
With this option a video can be rotated around a point in 3D space.

Example:

Rotate around point behind the video:

     gst-launch-1.0 videotestsrc \
! gltransformation \
rotation-x=10.0 \
pivot-z=-4.0 \
! glimagesink

6 years agogloverlaycompositor: Add shader to convert BGRA/ARGB -> RGBA
Nicolas Dufresne [Sat, 8 Aug 2015 18:45:42 +0000 (14:45 -0400)]
gloverlaycompositor: Add shader to convert BGRA/ARGB -> RGBA

Depending on the bytes order we will get BGRA (little) and ARGB (big)
from the composition overlay buffer while our GL code expects RGBA. Add
a fragment shader that do this conversion.

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

6 years agogl/syncmeta: implement synchronisation without glFenceSync
Matthew Waters [Sat, 8 Aug 2015 15:22:05 +0000 (17:22 +0200)]
gl/syncmeta: implement synchronisation without glFenceSync

Uses glFinish as that's the best we have for lesser OpenGL versions.

6 years agotests/glcontext: fix INVALID_ENUM GL error in test
Matthew Waters [Sat, 8 Aug 2015 13:30:43 +0000 (15:30 +0200)]
tests/glcontext: fix INVALID_ENUM GL error in test

6 years agocontext/glx: only use glXCreateContextAttribs for OpenGL 3 contexts
Matthew Waters [Sat, 8 Aug 2015 13:21:03 +0000 (15:21 +0200)]
context/glx: only use glXCreateContextAttribs for OpenGL 3 contexts

mesa for example when creating a GL 3.1 compatibility context
overrides our context profile selection to create a core context.

6 years agoglvideomixer: swap control binding proxy
Matthew Waters [Mon, 3 Aug 2015 09:48:16 +0000 (19:48 +1000)]
glvideomixer: swap control binding proxy

The ref_object and object parameters were the wrong way around.

For the typical use case where an application is setting a
GstControlBinding on the returned ghost pad:
1. our control binding would be removed when the new one was set
2. sync_values calls were not being forwarded from the internal
   pad to the ghost pad.

If an application attempts to perform other control binding
operations (get_* family of functions) on the internal pad, they
will also be forwarded to the ghost pad where a possible
GstControlBinding will provide the necessary values.

6 years agogstglfilterbin: remove unused variable
Luis de Bethencourt [Thu, 30 Jul 2015 10:12:21 +0000 (11:12 +0100)]
gstglfilterbin: remove unused variable

res is set multiple times but never used or returned. Removing it.