platform/upstream/gst-plugins-base.git
6 years agoglmemory: unset GL_UNPACK_ROW_LENGTH in opengl3
Matthew Waters [Thu, 17 Mar 2016 11:43:12 +0000 (22:43 +1100)]
glmemory: unset GL_UNPACK_ROW_LENGTH in opengl3

If the user uploads their own texture without setting the unpack length, then
then the result will have the appearance of stride mismanagement due to
an incorrect row length.

6 years agogl/examples/qt: restrict the GL API to opengl where needed
Matthew Waters [Thu, 17 Mar 2016 05:34:42 +0000 (16:34 +1100)]
gl/examples/qt: restrict the GL API to opengl where needed

Until the examples are ported to opengl3/gles2, they will not work with any
other GL api.

6 years agogl/examples/gtk: call XInitThreads
Matthew Waters [Thu, 17 Mar 2016 05:31:52 +0000 (16:31 +1100)]
gl/examples/gtk: call XInitThreads

Fixes some sporadic X11 threading assertions.

6 years agoglutils: remove custom code for setting caps features
Matthew Waters [Wed, 16 Mar 2016 16:06:05 +0000 (03:06 +1100)]
glutils: remove custom code for setting caps features

Just use gst_caps_set_features() instead.

6 years agoglfilter: only allow the same src/sink caps when we are in passthrough mode
Matthew Waters [Wed, 16 Mar 2016 14:52:00 +0000 (01:52 +1100)]
glfilter: only allow the same src/sink caps when we are in passthrough mode

If we are given caps with extra features (like the overlay composition
features), we can only deal with that when we are in passthrough mode.

Previously we were bailing entirely and not allowing passthrough filter elements
with things like textoverlay.

Fixes the following pipeline (assuming glfilter supports passthrough):
gl ! textoverlay ! glfilter ! ... ! glimagesinkelement

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

6 years agoglupload: deal with the ANY caps feature correctly
Matthew Waters [Wed, 16 Mar 2016 11:48:00 +0000 (22:48 +1100)]
glupload: deal with the ANY caps feature correctly

When transforming, xplode it out into the necessary caps features both
with and without the passthough features.

Fixes negotiation in the following class of pipelines:

gl ! textoverlay ! glupload ! glimagesinkelement

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

6 years agoglstereo{mix,split}: allow running on GLES 2/3
Matthew Waters [Wed, 16 Mar 2016 11:16:34 +0000 (22:16 +1100)]
glstereo{mix,split}: allow running on GLES 2/3

It's mostly supported for GLES 2.x, fully supported on GLES 3.x

6 years agogleffects; give each effect a unique long name and description
Matthew Waters [Thu, 10 Mar 2016 14:40:39 +0000 (01:40 +1100)]
gleffects; give each effect a unique long name and description

Gives applications that scrape the factory details more detailed and unique
details on the exact element.

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

6 years agoglshader: some compatibility changes for GL 1.4
Matthew Waters [Thu, 10 Mar 2016 06:46:05 +0000 (17:46 +1100)]
glshader: some compatibility changes for GL 1.4

GL 1.4 (with GL_ARB_shader_objects) doesn't have glIsProgram or glIsShader
equivalents.  As they are simply assertions, skip them when there isn't a
valid function pointer.

6 years agoglfilterapp: update for the use of shaders
Matthew Waters [Wed, 9 Mar 2016 13:29:41 +0000 (00:29 +1100)]
glfilterapp: update for the use of shaders

Fixes black output when placed in pipelines (using the default drawing).

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

6 years agoglfilter: retrieve the shader attributes from the GL thread
Matthew Waters [Wed, 9 Mar 2016 13:27:53 +0000 (00:27 +1100)]
glfilter: retrieve the shader attributes from the GL thread

Otherwise we will receive bogus values

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

6 years agogl/examples/cube*: choose opengl by default
Matthew Waters [Wed, 9 Mar 2016 13:24:48 +0000 (00:24 +1100)]
gl/examples/cube*: choose opengl by default

The examples don't work with any other GL API.

Also fix the yuv example to not translate the cube out of the clipping area.

6 years agogl/examples/fxtest: add needed glupload to the pipeline
Matthew Waters [Wed, 9 Mar 2016 13:23:14 +0000 (00:23 +1100)]
gl/examples/fxtest: add needed glupload to the pipeline

Fixes a negotiation failure in the example

6 years agoglimagesink: Fix window memory leak
Vineeth TM [Wed, 9 Mar 2016 02:58:43 +0000 (11:58 +0900)]
glimagesink: Fix window memory leak

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

6 years agoglvideomixer: signal continuation in reset
Matthew Waters [Mon, 7 Mar 2016 15:06:46 +0000 (02:06 +1100)]
glvideomixer: signal continuation in reset

We want to iterate over all the pads, not just the first one.  Fix by returning
TRUE in the GstAggregatorPadForeachFunc.

Removes a GST_IS_GL_CONTEXT() assertion on shutdown with >2 inputs
using gst-launch.

6 years agogldisplay: make readding the same context a no-op
Matthew Waters [Mon, 7 Mar 2016 13:35:22 +0000 (00:35 +1100)]
gldisplay: make readding the same context a no-op

With e38af2304427db908a16bbae0e60aa68be1ba5b5 returning the correct contexts,
gst_gl_display_add_context() was susceptible to causing infinte loops when
adding the same GstGLContext more than once.  Fix and add a test for
gst_gl_display_add_context().

Fixes glvideomixer gst-validate tests.

6 years agoRevert "libgstgl: cocoa, eagl: don't marshal GL calls to the context thread"
Sebastian Dröge [Mon, 7 Mar 2016 06:52:54 +0000 (08:52 +0200)]
Revert "libgstgl: cocoa, eagl: don't marshal GL calls to the context thread"

This reverts commit 797d6415dfd6e111efb2cab544958a67cbf22b17.

We're frozen for 1.8.0 release and this change might have bigger impact.

6 years agolibgstgl: cocoa, eagl: don't marshal GL calls to the context thread
Alessandro Decina [Mon, 7 Mar 2016 05:03:25 +0000 (16:03 +1100)]
libgstgl: cocoa, eagl: don't marshal GL calls to the context thread

Execute GL calls without marshalling them to the context thread. In the cocoa
and eagl backends calling gst_gl_context_activate is cheap and therefore calling
it on the current thread and serializing GL calls with a per-context lock is
more efficient (faster and has less overhead) than marshalling everything to the
context thread.

This optimization cuts a large overhead in g_poll (continuously waking up the
context thread) and in g_mutex_*/g_cond_* (waiting for results from the context
thread).

6 years agogldisplay: really retrieve glcontext for a specific thread
Mark Nauwelaerts [Sat, 5 Mar 2016 16:16:24 +0000 (17:16 +0100)]
gldisplay: really retrieve glcontext for a specific thread

When requesting a glcontext (regardless of thread), the result was correct.
However, when requesting current glcontext on a specific thread, it could
come up with a glcontext active on another thread.

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

6 years agogl: misc docs fixes/additions
Matthew Waters [Sun, 6 Mar 2016 08:35:38 +0000 (19:35 +1100)]
gl: misc docs fixes/additions

6 years agogl*memory: document new functionality and objects
Matthew Waters [Sun, 6 Mar 2016 08:32:21 +0000 (19:32 +1100)]
gl*memory: document new functionality and objects

6 years agoglfilter: handle some more unfixed fields when fixating caps
Mark Nauwelaerts [Sat, 5 Mar 2016 18:48:45 +0000 (19:48 +0100)]
glfilter: handle some more unfixed fields when fixating caps

6 years agoglbasememory: Don't change maxsize at run-time
Nicolas Dufresne [Fri, 4 Mar 2016 00:45:43 +0000 (19:45 -0500)]
glbasememory: Don't change maxsize at run-time

Maxsize is initialized once and should never change. Allocating data
should have no impact on the selected max size for this memory. This
causing memory map failure as the maxsize would become smaller then
size. This happened when using direct rendering in avviddec on GL that
does not support PBO transfer.

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

6 years agoeglimagememory: add compatibility definitions for EGL dmabuf
Matthew Waters [Wed, 17 Feb 2016 09:13:21 +0000 (20:13 +1100)]
eglimagememory: add compatibility definitions for EGL dmabuf

e.g. the RPi doesn't have them defined

6 years agoglcontext: add a method to add a context to another share group
Matthew Waters [Thu, 25 Feb 2016 21:34:11 +0000 (08:34 +1100)]
glcontext: add a method to add a context to another share group

Intended for use with wrapped contexts that are created shared with gst's
gl contexts in order to manage the internal sharegroup state correctly.

e.g. with caopengllayer (which is used in glimagesink and caopengllayersink
on OS X), we create a CGL context from the gst context and the sharing state
was not being correctly set on either GL context and gst_gl_context_is_shared()
was always returning FALSE.

With 11fb4fff80b63b9d67a731d4bb238b6c0a29d774 only flushing with multiple
shared contexts, the required flush was not occuring causing screen
corruption or stuttering.

Note: this didn't affect GST_GL_API=opengl pipelines

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

6 years agoglmixer: iterator didn't advance in continue statement
Wang Xin-yu (王昕宇) [Wed, 24 Feb 2016 02:45:17 +0000 (10:45 +0800)]
glmixer: iterator didn't advance in continue statement

Leading to a deadlock.

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

6 years agogl: fix the build
Matthew Waters [Mon, 22 Feb 2016 10:03:14 +0000 (21:03 +1100)]
gl: fix the build

2d287812 was incomplete

6 years agogl: error out if the configured GL API is unsupported by our element
Matthew Waters [Mon, 22 Feb 2016 09:49:52 +0000 (20:49 +1100)]
gl: error out if the configured GL API is unsupported by our element

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

6 years agouninstalled.pc: add support for non libtool build systems
Julien Isorce [Thu, 18 Feb 2016 14:32:23 +0000 (14:32 +0000)]
uninstalled.pc: add support for non libtool build systems

Currently the .la path is provided which requires to use libtool as
mentioned in the GStreamer manual section-helloworld-compilerun.html.
It is fine as long as the application is built using libtool.

So currently it is not possible to compile a GStreamer application
within gst-uninstalled with CMake or other build system different
than autotools.

This patch allows to do the following in gst-uninstalled env:
gcc test.c -o test $(pkg-config --cflags --libs gstreamer-1.0 \
    gstreamer-gl-1.0)
Previously it required to prepend libtool --mode=link

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

6 years agogldebug: make sure debug is initialized when calling gst_gl_insert_debug_marker
Julien Isorce [Thu, 18 Feb 2016 16:21:38 +0000 (16:21 +0000)]
gldebug: make sure debug is initialized when calling gst_gl_insert_debug_marker

Usually gl debug is initialized in gst_gl_context_create_thread.
But this function is not used when using the GstGLContextGPUProcess
from ChromiumGStreamerBackend.

Received signal 11 SEGV_MAPERR 000000000000
gst_debug_category_get_threshold
gst_gl_insert_debug_marker
gst_gl_base_filter_gl_start

6 years agogl: Fix compiler warning about unused const variable with gcc 6
Sebastian Dröge [Thu, 18 Feb 2016 08:33:20 +0000 (10:33 +0200)]
gl: Fix compiler warning about unused const variable with gcc 6

  CC       libgstgl_x11_la-gstglcontext_glx.lo
In file included from gstglcontext_glx.c:39:0:
../utils/opengl_versions.h:52:43: error: ‘gles2_versions’ defined but not used [-Werror=unused-const-variable]
 static const struct { int major, minor; } gles2_versions[] = {
                                           ^~~~~~~~~~~~~~

6 years agogl: Move private headers from SOURCES to noinst_HEADERS
Sebastian Dröge [Thu, 18 Feb 2016 08:29:21 +0000 (10:29 +0200)]
gl: Move private headers from SOURCES to noinst_HEADERS

6 years agoglfilter: insert the debug marker from the GL thread
Matthew Waters [Wed, 17 Feb 2016 02:00:46 +0000 (13:00 +1100)]
glfilter: insert the debug marker from the GL thread

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

6 years agoglimagesink: remove unsed reconfigure variable
Matthew Waters [Wed, 17 Feb 2016 00:42:23 +0000 (11:42 +1100)]
glimagesink: remove unsed reconfigure variable

6 years agoglimagesink: don't push a reconfigure event from the GL thread
Matthew Waters [Wed, 13 Jan 2016 02:17:56 +0000 (13:17 +1100)]
glimagesink: don't push a reconfigure event from the GL thread

Doing so may cause deadlocks when other elements attempt destroy or created
GL resources.

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

6 years agoglvideomixer: don't leak pad's vertex buffer on release_pad
Wang Xin-yu (王昕宇) [Thu, 21 Jan 2016 02:40:36 +0000 (10:40 +0800)]
glvideomixer: don't leak pad's vertex buffer on release_pad

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

6 years agoglmixer: Remove usage of GstGLMixerFrameData
Matthew Waters [Tue, 16 Feb 2016 14:08:18 +0000 (01:08 +1100)]
glmixer: Remove usage of GstGLMixerFrameData

Subclasses can just iterate over the list of pads themselves

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

6 years agoglmixer: don't hold the object lock while calling into GL
Matthew Waters [Wed, 13 Jan 2016 03:41:22 +0000 (14:41 +1100)]
glmixer: don't hold the object lock while calling into GL

Doing so can deadlock between the GL thread and the object lock e.g.
when performing reconfigure events in glimagesink on a resize event.

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

6 years agogl: Remove leftover g_prints
Sebastian Dröge [Tue, 16 Feb 2016 06:48:23 +0000 (08:48 +0200)]
gl: Remove leftover g_prints

One was commented out, but we also don't use // comments :)

6 years agogldebug: use the correct spelling for behavior
Matthew Waters [Tue, 16 Feb 2016 03:41:37 +0000 (14:41 +1100)]
gldebug: use the correct spelling for behavior

The headers use the american spelling of behavior not the UK/AUS version with
the extra U.

6 years agoglcontext: don't enable GL debug for messages that won't be logged
Matthew Waters [Tue, 16 Feb 2016 02:58:42 +0000 (13:58 +1100)]
glcontext: don't enable GL debug for messages that won't be logged

This is an optimization to avoid pointless string processing.

6 years agoglvideoflip: don't ignore method changes when caps aren't set (yet)
Alessandro Decina [Tue, 16 Feb 2016 02:01:20 +0000 (13:01 +1100)]
glvideoflip: don't ignore method changes when caps aren't set (yet)

6 years agogl: syncmeta: define GL_TIMEOUT_IGNORED in more portable way
Tim-Philipp Müller [Wed, 10 Feb 2016 10:31:19 +0000 (10:31 +0000)]
gl: syncmeta: define GL_TIMEOUT_IGNORED in more portable way

6 years agogstglshader: cache uniform locations
Alessandro Decina [Wed, 10 Feb 2016 05:37:22 +0000 (16:37 +1100)]
gstglshader: cache uniform locations

Avoid redundant calls to glGetUniformLocation. The results can be cached once
the shader has been linked.

6 years agogstglcontext: micro optimization to gst_gl_context_thread_add
Alessandro Decina [Wed, 10 Feb 2016 02:08:43 +0000 (13:08 +1100)]
gstglcontext: micro optimization to gst_gl_context_thread_add

Invoke the callback right away when called on the context thread. Removes
overhead when nesting libgstgl calls (for example when working with the sync
meta).

6 years agoglsyncmeta: add compatibility definition for GL_TIMEOUT_IGNORED
Matthew Waters [Tue, 9 Feb 2016 02:08:21 +0000 (13:08 +1100)]
glsyncmeta: add compatibility definition for GL_TIMEOUT_IGNORED

6 years agoglsyncmeta: separate out gpu/cpu waits.
Matthew Waters [Tue, 9 Feb 2016 01:14:04 +0000 (12:14 +1100)]
glsyncmeta: separate out gpu/cpu waits.

CPU waits are more expensive and are only required if the CPU is ever going to
access the data. GPU waits perform inter-context synchronisation and are cheaper
as they don't require CPU intervention.

6 years agogleffects: identity: add the shader to the hash table
Matthew Waters [Mon, 8 Feb 2016 01:23:12 +0000 (12:23 +1100)]
gleffects: identity: add the shader to the hash table

So that we don't recreate it every frame and leak memory.

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

6 years agogl: add .def file for msvc builds
Matthew Waters [Thu, 4 Feb 2016 23:43:49 +0000 (10:43 +1100)]
gl: add .def file for msvc builds

Also internalize some API from being exported.

6 years agoglquery: remove unnecessary pointer check
Luis de Bethencourt [Thu, 4 Feb 2016 12:17:31 +0000 (12:17 +0000)]
glquery: remove unnecessary pointer check

All uses of query->context in gstglquery.c assume it exists. We can assume
this as well before unrefing it. Furthermore, gst_object_unref() will just
silently return if it ever were to not exist.

6 years agoglbasefilter: enable qos by default
Matthew Waters [Thu, 4 Feb 2016 06:31:03 +0000 (17:31 +1100)]
glbasefilter: enable qos by default

Improves the responsiveness of the pipeline when resources are close/above the
limitations of the hardware.

Any subclass that wishes not to enable qos can do so themselves.

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

6 years agogltransformation: reconfigure the src when changing to/from passthrough
Matthew Waters [Tue, 2 Feb 2016 23:59:23 +0000 (10:59 +1100)]
gltransformation: reconfigure the src when changing to/from passthrough

Otherwise it's very possible that any GL resources have not been created yet.

6 years agoglvideoflip: correctly update the output caps on method changes
Matthew Waters [Tue, 2 Feb 2016 23:52:08 +0000 (10:52 +1100)]
glvideoflip: correctly update the output caps on method changes

When changing methods we may need different output caps.

6 years agoRevert "gl/eagl: try getting a gles3 context"
Matthew Waters [Tue, 2 Feb 2016 07:36:34 +0000 (18:36 +1100)]
Revert "gl/eagl: try getting a gles3 context"

This reverts commit 96b9666d596be115fd4b446ef846508b7fd05c24.
This reverts commit d11385d167d8843604ea23a05e2dea40b8bbac35.

This breaks the texture sharing with the applemedia elements as
CVOpenGLESTextureCache seems to have an arbitrary restriction on GLES2 only.

6 years agoglcolorconvert: don't skip subset structures
Matthew Waters [Tue, 2 Feb 2016 05:21:14 +0000 (16:21 +1100)]
glcolorconvert: don't skip subset structures

We may need them to transform into a different set of formats.

Fixes YUV->YUV with two glcolorconverts, e.g:

format=I420 ! glcolorconvert ! glcolorconvert ! format=NV12

6 years agoglbasefilter: always call gl_start when not called already
Matthew Waters [Tue, 2 Feb 2016 05:19:54 +0000 (16:19 +1100)]
glbasefilter: always call gl_start when not called already

Fixes elements transitioning out of passthrough mode using GL resources that
hadn'e been allocated yet.

6 years agoglcolorconvert: fix RGB,rectangle->planar YUV conversion
Matthew Waters [Tue, 2 Feb 2016 04:14:25 +0000 (15:14 +1100)]
glcolorconvert: fix RGB,rectangle->planar YUV conversion

Converting to GRAY is no fun.  Another case of normalized vs unnormalized
texture coordinates.

6 years agoglcolorconvert: fix YUY2/UYVY,rectangle->RGB conversion
Matthew Waters [Tue, 2 Feb 2016 02:51:18 +0000 (13:51 +1100)]
glcolorconvert: fix YUY2/UYVY,rectangle->RGB conversion

1.0 / width does not offset by one pixel in rectangular textures (which use
unnormalized coordinates).

Provide the actual pixel offset as a uniform to the shader.

6 years agoglcolorconvert: perform better negotiation
Matthew Waters [Tue, 2 Feb 2016 01:50:26 +0000 (12:50 +1100)]
glcolorconvert: perform better negotiation

1. Correctly describe what we can caps we can transform to/from.
   i.e. no YUV->YUV or GRAY->YUV or YUV->GRAY (except for passthrough).
2. Prefer similar formats and ignore incompatible formats on fixation.

6 years agogstglwindow: initialize navigation_loop to NULL
Julien Isorce [Mon, 1 Feb 2016 12:23:32 +0000 (12:23 +0000)]
gstglwindow: initialize navigation_loop to NULL

Useful when gst_gl_window.c::gst_gl_window_new is not used.
This is the case when using a custom GstGLWindow.
(ex: GstGLWindowGPUProcess from Chromium)

6 years agogl: eagl: fix build
Tim-Philipp Müller [Mon, 1 Feb 2016 09:26:37 +0000 (09:26 +0000)]
gl: eagl: fix build

gstglcontext_eagl.m:238:45: error: too few arguments to function call,
expected at least 4, have 3

6 years agogldownload: allow video/x-raw as input
Alessandro Decina [Mon, 1 Feb 2016 04:13:03 +0000 (15:13 +1100)]
gldownload: allow video/x-raw as input

...and just passthrough. This is useful for pipelines where downstream must be
non-GL but upstream can optionally be GL.

6 years agogl/eagl: try getting a gles3 context
Matthew Waters [Mon, 1 Feb 2016 01:57:32 +0000 (12:57 +1100)]
gl/eagl: try getting a gles3 context

Fallback to a gles2 context if that fails

6 years agoglvideomixer: fix checker vbo leak
Wang Xin-yu (王昕宇) [Thu, 21 Jan 2016 08:10:48 +0000 (16:10 +0800)]
glvideomixer: fix checker vbo leak

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

6 years agoglprototypes: fix parameter type of glGenBuffers
Wang Xin-yu (王昕宇) [Fri, 29 Jan 2016 02:35:15 +0000 (10:35 +0800)]
glprototypes: fix parameter type of glGenBuffers

The number of buffers should be GLsizei instead of GLuint.

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

6 years agogleffects: fix gleffects fisheye shader compile error
Haihua Hu [Tue, 8 Dec 2015 06:09:58 +0000 (14:09 +0800)]
gleffects: fix gleffects fisheye shader compile error

On some embedded systems, sqrt() is not supported in the shader,
use the actual value of sqrt(2) instead.

Signed-off-by: Haihua Hu <b55597@freescale.com>
Bugzilla: https://bugzilla.gnome.org/show_bug.cgi?id=761271

6 years agoglvideomixer: par may not exist in the caps
Matthew Waters [Fri, 29 Jan 2016 03:03:26 +0000 (14:03 +1100)]
glvideomixer: par may not exist in the caps

Fixes a critical in the gst-validate tests:

gst_structure_fixate_field_nearest_fraction: assertion 'gst_structure_has_field
(structure, field_name)

6 years agoglcontext: back out unintended lost_context changes
Matthew Waters [Fri, 29 Jan 2016 01:45:57 +0000 (12:45 +1100)]
glcontext: back out unintended lost_context changes

6 years agoegl: implement selecting opengl3 contexts
Matthew Waters [Thu, 28 Jan 2016 05:39:07 +0000 (16:39 +1100)]
egl: implement selecting opengl3 contexts

6 years agogl/egl: pass the error value to get_error_string()
Matthew Waters [Thu, 28 Jan 2016 03:31:33 +0000 (14:31 +1100)]
gl/egl: pass the error value to get_error_string()

6 years agopkg-config: Don't generate and install pkg-config with relative paths
Jan Schmidt [Thu, 28 Jan 2016 17:50:42 +0000 (04:50 +1100)]
pkg-config: Don't generate and install pkg-config with relative paths

Don't put relative paths in pkg-config files, including uninstalled
ones. For those, use @abs_topbuilddir@ and @abs_topsrcdir@ as we
do elsewhere.

Remove libraries= directives, which doesn't seem to be a pkg-config
variable that actually exists, but has been in all our pkg-config
files for as long as they've existed.

6 years agovideoaggregator: don't do caps processing that is not overridable
Matthew Waters [Wed, 14 Oct 2015 10:13:57 +0000 (21:13 +1100)]
videoaggregator: don't do caps processing that is not overridable

Allows the subclass to completely override the chosen src caps.

This is needed as videoaggregator generally has no idea exactly
what operation is being performed.

- Adds a fixate_caps vfunc for fixation
- Merges gst_video_aggregator_update_converters() into
  gst_videoaggregator_update_src_caps() as we need some of its info
  for proper caps handling.
- Pass the downstream caps to the update_caps vfunc

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

6 years agoglcolorbalance: return HARDWARE from get_balance_type
Matthew Waters [Wed, 27 Jan 2016 09:23:21 +0000 (20:23 +1100)]
glcolorbalance: return HARDWARE from get_balance_type

6 years agoglsinkbin: add glcolorbalance element
Matthew Waters [Wed, 27 Jan 2016 09:04:00 +0000 (20:04 +1100)]
glsinkbin: add glcolorbalance element

This makes playbin not plug videobalance as glcolorbalance already exists and
implements the GstColorBalance interface.

6 years agogl: move control binding proxy implementation from glvideomixer
Matthew Waters [Wed, 27 Jan 2016 08:56:36 +0000 (19:56 +1100)]
gl: move control binding proxy implementation from glvideomixer

Other elements may need to use it's functionality

6 years agoglcolorbalance: create the shader if it doesn't exist in the render callback
Matthew Waters [Wed, 27 Jan 2016 07:17:06 +0000 (18:17 +1100)]
glcolorbalance: create the shader if it doesn't exist in the render callback

Changing the properties may result in glcolorbalance moving from passthrough to
non-passthrough and we weren't creating the shader in that case.

6 years agoglvideoflip: incorporate the aspect ratio into the scale_x calculations
Matthew Waters [Mon, 25 Jan 2016 08:11:38 +0000 (19:11 +1100)]
glvideoflip: incorporate the aspect ratio into the scale_x calculations

1. Otherwise rotating the video will clip and show black bars due to
   gltransformation's implementation.
2. The other option of make gltransformation aspect-agnostic produces
   incorrect output with perspective transformations.

6 years agoglwindow: Fix android build
Holger Kaelberer [Thu, 21 Jan 2016 22:13:36 +0000 (23:13 +0100)]
glwindow: Fix android build

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

6 years agogl: fix compiler warnings with gcc-6
Tim-Philipp Müller [Tue, 19 Jan 2016 13:20:23 +0000 (13:20 +0000)]
gl: fix compiler warnings with gcc-6

In file included from effects/gstgleffectrgbtocurve.c:25:0:
effects/gstgleffectscurves.h:174:32: error: 'xray_curve' defined but not used
 static const GstGLEffectsCurve xray_curve = {
...

6 years agolibs: g-i: fix init section to avoid compiler warnings
Tim-Philipp Müller [Tue, 19 Jan 2016 08:39:58 +0000 (08:39 +0000)]
libs: g-i: fix init section to avoid compiler warnings

..GstPlayer-1.0.c: In function ‘main’:
..GstPlayer-1.0.c:587:3: warning: implicit declaration of function ‘gst_init’

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

6 years agoglfilter: First make caps writable in fixate_caps(), then truncate them
Sebastian Dröge [Sat, 16 Jan 2016 15:14:54 +0000 (17:14 +0200)]
glfilter: First make caps writable in fixate_caps(), then truncate them

Truncating requires writable caps.

6 years agoglcolorconvert: Caps passed to fixate_caps() are not owned by us and guaranteed to...
Sebastian Dröge [Sat, 16 Jan 2016 15:12:29 +0000 (17:12 +0200)]
glcolorconvert: Caps passed to fixate_caps() are not owned by us and guaranteed to be fixed

So don't try to fixate them, which takes ownership and steals them from
basetransform.

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

6 years agoRevert "glpool: fix caps refcount issue"
Sebastian Dröge [Sat, 16 Jan 2016 14:55:42 +0000 (16:55 +0200)]
Revert "glpool: fix caps refcount issue"

This reverts commit 3bdcdedfa00b87f1db505218789178318a16c743.

gst_caps_replace() takes a new reference already, if there is a problem then
it is elsewhere. And there are a few problems, see
https://bugzilla.gnome.org/show_bug.cgi?id=760696

6 years agoglquery: provide compat definition for GL_QUERY_RESULT
Matthew Waters [Fri, 15 Jan 2016 06:00:55 +0000 (17:00 +1100)]
glquery: provide compat definition for GL_QUERY_RESULT

e.g. android doesn't have it

While we're here move a state specific assertion after the supported check.
Removes an assertion on GLES

6 years agogl: add compatibility definition of GLint64
Matthew Waters [Fri, 15 Jan 2016 05:07:27 +0000 (16:07 +1100)]
gl: add compatibility definition of GLint64

e.g. anrdoid doesn't have it

6 years agoglpool: fix caps refcount issue
Matthew Waters [Fri, 15 Jan 2016 03:00:56 +0000 (14:00 +1100)]
glpool: fix caps refcount issue

The caps are from an allocation query which are transfer none but were being
treated as transfer full.

6 years agoglmemory: log the time for glTexSubImage/glReadPixels
Matthew Waters [Mon, 11 Jan 2016 02:30:05 +0000 (13:30 +1100)]
glmemory: log the time for glTexSubImage/glReadPixels

6 years agogl: add a gstglquery object for arbitrary GL queries
Matthew Waters [Fri, 8 Jan 2016 07:36:54 +0000 (18:36 +1100)]
gl: add a gstglquery object for arbitrary GL queries

Currently only GL_TIME_ELAPSED and GL_TIMESTAMP are supported

6 years agogldebug: implement a delayed debug system
Matthew Waters [Mon, 11 Jan 2016 06:22:26 +0000 (17:22 +1100)]
gldebug: implement a delayed debug system

The messages are stored by gst_gl_async_debug_store_log_msg() and output later
by a corresponding store(), output() or an unset()/free().

Some wrapper macros are provided to avoid callers explicitly using __FILE__,
GST_FUNCTION and __LINE__

6 years agogldebug: use gst_info_vasprintf in insert_debug_marker()
Matthew Waters [Mon, 11 Jan 2016 06:26:08 +0000 (17:26 +1100)]
gldebug: use gst_info_vasprintf in insert_debug_marker()

Allows expansion of GST_PTR_FORMAT and GST_SEGMENT_FORMAT arguments.

6 years agogl: add a videoflip element
Matthew Waters [Fri, 15 Jan 2016 00:22:40 +0000 (11:22 +1100)]
gl: add a videoflip element

Behaves exactly the same as the non-GL videoflip element

6 years agoglfilter: recreate the fbo on caps changes
Matthew Waters [Thu, 14 Jan 2016 13:04:20 +0000 (00:04 +1100)]
glfilter: recreate the fbo on caps changes

The width/height may change which requires recreating the depth buffer.

6 years agoglbasefilter: add a class function on set_caps (from GL)
Matthew Waters [Thu, 14 Jan 2016 13:02:43 +0000 (00:02 +1100)]
glbasefilter: add a class function on set_caps (from GL)

This is simply a convenience to avoid duplicating the thread marshalling on
set_caps.

6 years agogltransformation: always build a valid mvp matrix
Matthew Waters [Thu, 14 Jan 2016 13:00:29 +0000 (00:00 +1100)]
gltransformation: always build a valid mvp matrix

The default case is to build an identity matrix.

6 years agogltransformation: support negative scales
Matthew Waters [Thu, 14 Jan 2016 08:03:04 +0000 (19:03 +1100)]
gltransformation: support negative scales

A scale of -1.0 means to flip the video.

6 years agogltransformation: implement passthrough handling
Matthew Waters [Thu, 14 Jan 2016 07:42:05 +0000 (18:42 +1100)]
gltransformation: implement passthrough handling

6 years agogltransformation: implement navigation events
Matthew Waters [Thu, 14 Jan 2016 06:45:03 +0000 (17:45 +1100)]
gltransformation: implement navigation events

Reverses the transformation applied through the properties and forwards the
event.

The process for finding the coordinates on the video are as follows:
1. Convert the given pointer_x and pointer_y to model space at the near and far planes
2. Get the equation of the video plane
3. Find where the ray in 1 intersects the plane
4. Profit!

6 years agoglimagesink: remove reduntant glimagesink from debug logging
Matthew Waters [Thu, 14 Jan 2016 05:59:12 +0000 (16:59 +1100)]
glimagesink: remove reduntant glimagesink from debug logging

6 years agogl/x11/navigation: add button press to the selected event mask
Matthew Waters [Thu, 14 Jan 2016 05:57:40 +0000 (16:57 +1100)]
gl/x11/navigation: add button press to the selected event mask

Otherwise we won't get the button press events and GstNavigation fails.

6 years agoglcolorconvert: try harder to passthrough
Alessandro Decina [Thu, 14 Jan 2016 05:00:00 +0000 (16:00 +1100)]
glcolorconvert: try harder to passthrough

This makes a pipeline like:

... ! video/x-raw(memory:GLMemory),format=UYVY ! glcolorconvert !
video/x-raw(memory:GLMemory),format={UYVY, NV12} ! ...

passthrough instead of converting UYVY => NV12. The conversion would happen
before this change since the element (and basetransform) transform the src caps
to format={NV12, UYVY} (since NV12 comes first in the glcolorconvert:src
template) and then the default caps fixate func would fixate to NV12. Blah.

Also there's no need to intersect against the template caps in ::transform_caps
since basetransform does that right after calling the vfunc.