platform/upstream/gstreamer.git
6 years agogl: new element glfilterbin
Matthew Waters [Thu, 19 Feb 2015 02:33:28 +0000 (13:33 +1100)]
gl: new element glfilterbin

It encapsulates a confiurable GL processing element in the
upload/colorconvert/download dance required to transparently process
the majority of GstBuffer's.

6 years agogl: add new gldownloadelement
Matthew Waters [Thu, 19 Feb 2015 02:24:59 +0000 (13:24 +1100)]
gl: add new gldownloadelement

Simply transforms caps to/from raw/glmemory capsfeatures

6 years agogl: add a new glcolorconvert element based on the glcolorconvert library object
Matthew Waters [Thu, 12 Feb 2015 06:59:27 +0000 (17:59 +1100)]
gl: add a new glcolorconvert element based on the glcolorconvert library object

6 years agoglupload: implement propose_allocation pool handling for glmemory upload
Matthew Waters [Wed, 11 Mar 2015 16:56:16 +0000 (16:56 +0000)]
glupload: implement propose_allocation pool handling for glmemory upload

6 years agogl: add a new glupload element based on the glupload library object
Matthew Waters [Wed, 11 Feb 2015 12:29:01 +0000 (23:29 +1100)]
gl: add a new glupload element based on the glupload library object

6 years agogl: add a new glbasemixer class below glmixer
Matthew Waters [Wed, 11 Feb 2015 03:48:45 +0000 (14:48 +1100)]
gl: add a new glbasemixer class below glmixer

It deals with propagating the gl display/contexts throughout the
application/pipeline

6 years agogl: add a new glbasefilter class below glfilter
Matthew Waters [Tue, 10 Feb 2015 14:48:11 +0000 (01:48 +1100)]
gl: add a new glbasefilter class below glfilter

It deals with propagating the gl display/contexts throughout the
application/pipeline

6 years agoglutils: expose running a query on a set of src/sink pads
Matthew Waters [Tue, 10 Feb 2015 14:27:28 +0000 (01:27 +1100)]
glutils: expose running a query on a set of src/sink pads

6 years agoglfilter: advertise resize in the caps negotiation properly
Matthew Waters [Thu, 12 Mar 2015 10:14:50 +0000 (10:14 +0000)]
glfilter: advertise resize in the caps negotiation properly

6 years agoglcolorconvert: we don't do resizing of the video frames
Matthew Waters [Thu, 12 Mar 2015 09:46:02 +0000 (09:46 +0000)]
glcolorconvert: we don't do resizing of the video frames

As we cannot do accurate texel sampling then due to the texture
coordinates being interpolated based on the output frame size.

6 years agogl/x11: don't XGetWindowAttributes every XEvent
Matthew Waters [Wed, 11 Mar 2015 18:49:22 +0000 (18:49 +0000)]
gl/x11: don't XGetWindowAttributes every XEvent

fixes a deadlock in xcb where the X window may not exist.

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

6 years agogl/window: hopefully fixup compile warnings on android/ios
Matthew Waters [Wed, 11 Mar 2015 14:50:28 +0000 (14:50 +0000)]
gl/window: hopefully fixup compile warnings on android/ios

6 years agoglfilter: Remove redundant check for clearing context on reset.
Jan Schmidt [Wed, 11 Mar 2015 06:19:17 +0000 (17:19 +1100)]
glfilter: Remove redundant check for clearing context on reset.

The context is already cleared a few lines above.

6 years agoRemove a bunch of silly ';;' typos at the end of lines
Jan Schmidt [Wed, 11 Mar 2015 05:55:14 +0000 (16:55 +1100)]
Remove a bunch of silly ';;' typos at the end of lines

6 years agogl/window: create the main loop/context on init/finalize
Matthew Waters [Fri, 6 Mar 2015 04:31:18 +0000 (15:31 +1100)]
gl/window: create the main loop/context on init/finalize

Avoids races setting the window handle from the main thread.

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

6 years agotests: glcontext: remove unnecessary semicolon
hoonhee.lee [Mon, 9 Mar 2015 03:41:59 +0000 (12:41 +0900)]
tests: glcontext: remove unnecessary semicolon

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

6 years agoglmixer: Don't share our downstream pool with upstream
Nicolas Dufresne [Sat, 7 Mar 2015 01:11:00 +0000 (20:11 -0500)]
glmixer: Don't share our downstream pool with upstream

Pool cannot have multiple owner. This can lead to spurious
pool was flushing error.

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

6 years agoglfilter: Don't chain downstream pool
Nicolas Dufresne [Thu, 5 Mar 2015 21:28:36 +0000 (16:28 -0500)]
glfilter: Don't chain downstream pool

Chaining a downstream pool would lead to two owner of the same
pool. In dynamic pipeline, if one owner is removed from the pipeline
the pool will be stopped, and the rest of the pipeline will fail
since the pool will now be flushing. Also fix proposed pool caching,
filter->pool was never set, never unrefed.

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

6 years agoglimagesink: Only cache pool, don't manage it
Nicolas Dufresne [Thu, 5 Mar 2015 20:49:50 +0000 (15:49 -0500)]
glimagesink: Only cache pool, don't manage it

GLImage does not use any kind of internal pool. There was some
remaining code and comment stating that it was managing the
pool, and it was in fact setting the active state when doing
to ready state.

* Only create the pool if requested and in propose_allocation
* Cache the pool to avoid reallocation on spurious reconfigure
* Don't try to deactivate the pool (we don't own it)

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

6 years agogldownload: Simplify caps feature setting code
Sebastian Dröge [Fri, 6 Mar 2015 17:54:24 +0000 (18:54 +0100)]
gldownload: Simplify caps feature setting code

6 years agogl: Remove format info in glcolorconvert's transform_caps function instead of on...
Sebastian Dröge [Fri, 6 Mar 2015 17:15:11 +0000 (18:15 +0100)]
gl: Remove format info in glcolorconvert's transform_caps function instead of on every caller

... and let glmixer actually transform the caps it is supposed to transform
instead of inventing new caps.

6 years agoglupload: Simplify caps feature setting code
Sebastian Dröge [Fri, 6 Mar 2015 17:36:12 +0000 (18:36 +0100)]
glupload: Simplify caps feature setting code

6 years agogldisplay: Only use debugging if we have valid values
Edward Hervey [Thu, 5 Mar 2015 18:09:49 +0000 (19:09 +0100)]
gldisplay: Only use debugging if we have valid values

The debug category won't have been created/activated if it's not a
valid display

6 years agogloverlay: Fix upside down and miss-aligned JPEG
Nicolas Dufresne [Tue, 3 Mar 2015 20:22:38 +0000 (15:22 -0500)]
gloverlay: Fix upside down and miss-aligned JPEG

LibJPEG uses macroblock of 8x8 sample. In this element we use RGB and
Y444, two 24bit formats that are stored in 32bit pixels. This mean we
have 32x32 bytes macroblocks. For this reason, we need to allocate
our buffer slightly larger. We also need to pass the line pointer in
the right order, otherwise the image endup upside-down.

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

6 years agogltransformation: normalize translations
Xavier Claessens [Thu, 19 Feb 2015 02:21:01 +0000 (21:21 -0500)]
gltransformation: normalize translations

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

* Lubosz: use maxfloat for transformation range

6 years agogltransformation: Fix doc typo
Xavier Claessens [Thu, 19 Feb 2015 01:41:14 +0000 (20:41 -0500)]
gltransformation: Fix doc typo

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

6 years agoglfilter: Get rid of uploader if caps have changed
Nicolas Dufresne [Tue, 3 Mar 2015 18:45:46 +0000 (13:45 -0500)]
glfilter: Get rid of uploader if caps have changed

We need to update the uploader format if that caps have changed.

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

6 years agogl: Fix context leaks
Edward Hervey [Tue, 3 Mar 2015 15:55:26 +0000 (16:55 +0100)]
gl: Fix context leaks

Introduced by a12ca13750a15300ab3c718ebde2984dc3d587b3

6 years agogl/cocoa: register only one custom nsapp loop
Julien Isorce [Sun, 1 Mar 2015 19:57:23 +0000 (19:57 +0000)]
gl/cocoa: register only one custom nsapp loop

Otherwise the pipeline stalls when running
more than one glimagesink with gst-launch.

Also only register the custom nsapp loop
when setting up the nsapp from gstgl.

6 years agogl/cocoa: instead of class_init use g_once to setup nsapp
Julien Isorce [Sun, 1 Mar 2015 16:54:10 +0000 (16:54 +0000)]
gl/cocoa: instead of class_init use g_once to setup nsapp

6 years agogl/cocoa: check for deprecated constants prior to OSX 10.10
Julien Isorce [Thu, 26 Feb 2015 23:04:09 +0000 (23:04 +0000)]
gl/cocoa: check for deprecated constants prior to OSX 10.10

6 years agoglbufferpool: Fix offset for odd height
Nicolas Dufresne [Sun, 1 Mar 2015 14:43:32 +0000 (09:43 -0500)]
glbufferpool: Fix offset for odd height

We also need to recalculate the offset, since otherwise the frame
mapping will be forward two lines in the U and V planes (I420) due
to gst_video_info_align() round up the Y plane to a even number of
lines.

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

6 years agogl-test: Port unit tests to new API
Nicolas Dufresne [Sun, 1 Mar 2015 05:08:42 +0000 (00:08 -0500)]
gl-test: Port unit tests to new API

6 years agoglmemory: Support offset when downloading
Nicolas Dufresne [Sat, 28 Feb 2015 20:00:13 +0000 (15:00 -0500)]
glmemory: Support offset when downloading

Make sure we support offset and video alignment when downloading too.
This is currently not used (plane_start is always 0), but it makes
the code correct if we want to use that later.

6 years agoglmemory: Provide correct size on upload
Nicolas Dufresne [Sat, 28 Feb 2015 18:01:16 +0000 (13:01 -0500)]
glmemory: Provide correct size on upload

Provide the right size to GL when uploading. Using maxsize is wrong
since we offset the data point with the memory offset and video
alignement offset.

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

6 years agoglmemory: Provide correct size on download
Nicolas Dufresne [Sat, 28 Feb 2015 17:48:03 +0000 (12:48 -0500)]
glmemory: Provide correct size on download

Provide the right size to GL when downloading. This fixes downloading
from GLMemory that where created for libav.

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

6 years agoglmemory: Use fallback for partial copy
Nicolas Dufresne [Sat, 28 Feb 2015 16:55:26 +0000 (11:55 -0500)]
glmemory: Use fallback for partial copy

When the memory is partial copy, the texture size and videoinfo no
longer make sense. As we cannot guess what the application wants, we
safely copy into a sysmem memory.

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

6 years agoglmemory: Add GstAllocationParams and alignment support
Nicolas Dufresne [Wed, 25 Feb 2015 23:07:03 +0000 (18:07 -0500)]
glmemory: Add GstAllocationParams and alignment support

This implements support for GstAllocationParams and memory alignments.
The parameters where simply ignored which could lead to crash on
certain platform when used with libav and no luck.

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

6 years agoglupload: perform egl upload on the gl thread
Matthew Waters [Sat, 28 Feb 2015 07:21:33 +0000 (18:21 +1100)]
glupload: perform egl upload on the gl thread

Fixes EGLImage usage on raspberry pi

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

6 years agoglupload: Set freed method implementation to NULL
Víctor Manuel Jáquez Leal [Thu, 26 Feb 2015 12:20:26 +0000 (13:20 +0100)]
glupload: Set freed method implementation to NULL

When trying to render buffers with meta:GLTextureUpload the glimagesink crashes
with a segmentation fault.

This patch workarounds this crash setting to NULL the method implementation
after free.

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

6 years agoopengl: Clean Makefile.am
Nicolas Dufresne [Wed, 25 Feb 2015 00:01:45 +0000 (19:01 -0500)]
opengl: Clean Makefile.am

+ Split headers from source
+ Remove uneeded AM_CFLAGS, AM_LDFLAGS
+ Always set OBJCFLAGS

Due to the presence of a .m and regardless of the conditional values,
automake will promote the link command to OBJC using OBJCFLAGS. Only
the basic flags (like warnings and optimization) are going to make a
difference though.

This cleanup builds up the makefile with less specific files first
toward more specific file. FLAGS are built with the basic that unused
flags will have empty variable.

6 years agoglimagesink: cosmetic cleanup
Xavier Claessens [Tue, 24 Feb 2015 17:54:54 +0000 (12:54 -0500)]
glimagesink: cosmetic cleanup

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

6 years agoopengl: don't add --tag=CC twice to LIBTOOLFLAGS
Tim-Philipp Müller [Tue, 24 Feb 2015 19:52:59 +0000 (19:52 +0000)]
opengl: don't add --tag=CC twice to LIBTOOLFLAGS

6 years agoopengl: Add --tag=CC to LIBTOOLCLFAGS
Nicolas Dufresne [Tue, 24 Feb 2015 19:35:37 +0000 (14:35 -0500)]
opengl: Add --tag=CC to LIBTOOLCLFAGS

This is required for static build.

6 years agoglwindow: Deactivate window before changing handle
Edward Hervey [Tue, 24 Feb 2015 13:01:04 +0000 (14:01 +0100)]
glwindow: Deactivate window before changing handle

When setting a new window handle, we need to ensure all implementations
will detect the change.

For that we deactivate the context before setting the window handle, then
reactivate the context

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

6 years agogl/egl: Detect window handle changes
Edward Hervey [Tue, 24 Feb 2015 12:58:26 +0000 (13:58 +0100)]
gl/egl: Detect window handle changes

When (re)activating the context, the backing window handle might have changed.
If that happened, destroy the previous surface and create a new one

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

6 years agogl: remove docbook related warnings
Luis de Bethencourt [Tue, 24 Feb 2015 14:20:42 +0000 (14:20 +0000)]
gl: remove docbook related warnings

6 years agocaopengllayersink: render black when we don't have a texture to display
Matthew Waters [Tue, 24 Feb 2015 12:52:39 +0000 (23:52 +1100)]
caopengllayersink: render black when we don't have a texture to display

Like when the winsys asks us to redraw before the pipeline has started

6 years agoglmemory: allow sharing between buffers
Matthew Waters [Tue, 24 Feb 2015 13:00:48 +0000 (00:00 +1100)]
glmemory: allow sharing between buffers

There was no real reason why the flag was set.  We should be able
to handle it.  Fixes last-sample handling on gl sinks

6 years agoglsyncmeta: add compat definition for gles2
Matthew Waters [Tue, 24 Feb 2015 09:34:35 +0000 (20:34 +1100)]
glsyncmeta: add compat definition for gles2

6 years agonew caopengllayersink element
Matthew Waters [Thu, 29 Jan 2015 06:41:19 +0000 (17:41 +1100)]
new caopengllayersink element

renders gstreamer gl scene/video frames to a caopengllayer retreivable
from the "layer" property.

6 years agogl/calayer: don't use the async callback to render
Matthew Waters [Tue, 24 Feb 2015 08:06:18 +0000 (19:06 +1100)]
gl/calayer: don't use the async callback to render

not until we can provide equivalent functionality for other window
implementations.

6 years agoglsyncmeta: also supported with gles3
Matthew Waters [Mon, 23 Feb 2015 14:20:23 +0000 (01:20 +1100)]
glsyncmeta: also supported with gles3

6 years agolibgstgl: eagl: handle CALayer resize
Alessandro Decina [Tue, 24 Feb 2015 03:23:49 +0000 (14:23 +1100)]
libgstgl: eagl: handle CALayer resize

6 years agoglmemory: Fix transfer_pbo memory leak
Vasilis Liaskovitis [Mon, 23 Feb 2015 15:13:31 +0000 (16:13 +0100)]
glmemory: Fix transfer_pbo memory leak

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

6 years agogl/cocoa: reduce custom main loop latency
Julien Isorce [Sun, 22 Feb 2015 10:03:54 +0000 (10:03 +0000)]
gl/cocoa: reduce custom main loop latency

This fix a very slow rendering rate regression that only
happens when using gst-launch, i.e. in the case where
the main thread does not run any NSApp loop.

Git bisect reported it has been introduced by the commit
e10d2417e2fe7aa4733c076984339b0d61caa169:
"move to CGL and CAOpenGLLayer for rendering".

Then the commit 7d463576271e5a4cc1070780ba1a69c971e8be1d:
"gstglwindow_cocoa: fix slow render rate" attempted to fix
the slow rendering rate problem when using gst-launch.

At least for me it does not work. I tried several
combinations, for example to flush CA transactions in the
custom app loop, as mentioned in the doc, but the only solution
that fixes the slow rendering is by reducing the loop latency.
From what I tested, no need to put less than 60ms, even if the
framerate has an interval much lower (16.6ms for 60 fps).

6 years agoglmixer: fix some compiler warnings
Julien Isorce [Tue, 17 Feb 2015 23:50:51 +0000 (23:50 +0000)]
glmixer: fix some compiler warnings

i686-apple-darwin11-llvm-gcc-4.2

gstglmixer.h:43: error: redefinition of typedef ‘GstGLMixer’
gstglmixerpad.h:32: error: previous declaration of ‘GstGLMixer’ was here
gstglmixer.h:46: error: redefinition of typedef ‘GstGLMixerFrameData’
gstglmixerpad.h:33: error: previous declaration of ‘GstGLMixerFrameData’ was here

6 years agogstglmemory: Remove now unused transfer_upload function.
Mathieu Duponchelle [Sat, 21 Feb 2015 13:42:05 +0000 (14:42 +0100)]
gstglmemory: Remove now unused transfer_upload function.

6 years agoglmemory: disable automatic pbo upload
Matthew Waters [Sat, 21 Feb 2015 12:29:22 +0000 (23:29 +1100)]
glmemory: disable automatic pbo upload

until we can track where the data is/or is going to be.

6 years agoglememory: only store and act on the map flags on first/last map/unmap
Matthew Waters [Fri, 20 Feb 2015 07:42:23 +0000 (18:42 +1100)]
glememory: only store and act on the map flags on first/last map/unmap

Anytime else, we have no idea how to match up map and unmaps.
We also don't know exactly how the calling code is using us.
Also fixes the case where we're trying to transfer while someone else
is accessing our data pointer or texture resulting in mismatched video
frames.

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

6 years agogltransform: Fix includes of graphene headers
Nicolas Dufresne [Wed, 18 Feb 2015 22:10:48 +0000 (17:10 -0500)]
gltransform: Fix includes of graphene headers

The graphene-1.0 part should not be in the source code. This directory
is part of the cflags include. This is similar to gstreamer-1.0/
directory. This break compilation if the include directory where
graphene is installed is not in your include path.

6 years agogl/cocoa: don't deadlock if the dispatch_sync is called from the main thread
Matthew Waters [Tue, 17 Feb 2015 07:17:59 +0000 (18:17 +1100)]
gl/cocoa: don't deadlock if the dispatch_sync is called from the main thread

Provide a helper function to check whether we are being called from
the main thread and act appropriately.

6 years agogl/calayer: only start drawing if the parent gl context is ready
Matthew Waters [Tue, 17 Feb 2015 05:41:17 +0000 (16:41 +1100)]
gl/calayer: only start drawing if the parent gl context is ready

otherwise we may try to use GstGLFuncs * that hasn't been set yet

6 years agogl/cocoa: small refactor of layer/view creation into the window
Matthew Waters [Tue, 17 Feb 2015 05:39:56 +0000 (16:39 +1100)]
gl/cocoa: small refactor of layer/view creation into the window

6 years agoglwindow: Remove assertion in gst_gl_window_show() for subclasses not implementing it
Sebastian Dröge [Mon, 16 Feb 2015 23:04:38 +0000 (01:04 +0200)]
glwindow: Remove assertion in gst_gl_window_show() for subclasses not implementing it

On Android and iOS we can't create a window ourselves, so also can't just show
one. That's not a problem and an assertion is not really needed here.

6 years agoglimagesink: Fix debug statement
Edward Hervey [Thu, 12 Feb 2015 16:33:50 +0000 (17:33 +0100)]
glimagesink: Fix debug statement

6 years agogl: Add/Update more debug statements
Edward Hervey [Thu, 12 Feb 2015 14:02:31 +0000 (15:02 +0100)]
gl: Add/Update more debug statements

Where possible, use the _OBJECT variants in order to track better from
which object the debug statement is coming from

Define (and use) GST_CAT_DEFAULT where applicable

Use GST_PTR_FORMAT where applicable

6 years agogl: Make glcontext debug category used in more places
Edward Hervey [Thu, 12 Feb 2015 13:58:14 +0000 (14:58 +0100)]
gl: Make glcontext debug category used in more places

As a bonus it makes the egl context debug messages visible now :)

6 years agoglimagesink: Sprinkle more debug
Edward Hervey [Thu, 12 Feb 2015 13:56:12 +0000 (14:56 +0100)]
glimagesink: Sprinkle more debug

6 years agolibgstgl: set user data and GDestroyNotify for wrapped textures
Alessandro Decina [Mon, 9 Feb 2015 09:44:50 +0000 (20:44 +1100)]
libgstgl: set user data and GDestroyNotify for wrapped textures

6 years agoglproto/vao: only supported in core for ES 3.0+
Matthew Waters [Fri, 6 Feb 2015 01:53:15 +0000 (12:53 +1100)]
glproto/vao: only supported in core for ES 3.0+

Was causing horizontally flipped video for frame 2 onward on android

6 years agoglfilter: ensure that the input upload/colorconvert are always available
Matthew Waters [Thu, 5 Feb 2015 05:46:32 +0000 (16:46 +1100)]
glfilter: ensure that the input upload/colorconvert are always available

6 years agoglimagesink: log the converted caps
Matthew Waters [Thu, 5 Feb 2015 00:06:10 +0000 (11:06 +1100)]
glimagesink: log the converted caps

6 years agoglupload: restrict EGL and UploadMeta to RGBA
Matthew Waters [Thu, 5 Feb 2015 00:05:02 +0000 (11:05 +1100)]
glupload: restrict EGL and UploadMeta to RGBA

other formats are highly untested.

6 years agoglcolorconvert: don't intersect with the input caps
Matthew Waters [Thu, 5 Feb 2015 00:04:05 +0000 (11:04 +1100)]
glcolorconvert: don't intersect with the input caps

that limits our formats to whatever is in the input caps

6 years agogl: fix memory leak
Luis de Bethencourt [Wed, 4 Feb 2015 14:10:13 +0000 (14:10 +0000)]
gl: fix memory leak

In gst_gl_filter_fixate_caps () it can goto done without freeing the memory of
the tmp GstStructure. This makes it go out of scope and leak.

CID #1265765

6 years agogl: remove the egl caps from the src pads
Matthew Waters [Tue, 3 Feb 2015 04:30:08 +0000 (15:30 +1100)]
gl: remove the egl caps from the src pads

we don't actually support producing EGLImage buffers anywhere.

6 years agoglcolorconvert: put GstGLSyncMeta on output buffers
Matthew Waters [Tue, 3 Feb 2015 02:32:47 +0000 (13:32 +1100)]
glcolorconvert: put GstGLSyncMeta on output buffers

allows thread safely using the provided output buffer in a separate
thread

6 years agoglupload: only try the glmemory upload for sysmem/glmemory caps features
Matthew Waters [Mon, 2 Feb 2015 13:35:26 +0000 (00:35 +1100)]
glupload: only try the glmemory upload for sysmem/glmemory caps features

Allows selecting/testing the upload path with explicit caps features.

6 years agoglmemory: add missing initilisation of tex_target when copying
Matthew Waters [Mon, 2 Feb 2015 13:26:20 +0000 (00:26 +1100)]
glmemory: add missing initilisation of tex_target when copying

fixes:

glcolorscale ! video/x-raw\(meta:GstVideoGLTextureUploadMeta\) !
glimagesink

6 years agoglupload: allow NULL buffer for accept vfunc
Matthew Waters [Mon, 2 Feb 2015 13:15:30 +0000 (00:15 +1100)]
glupload: allow NULL buffer for accept vfunc

6 years agoglupload: remove unsed convert field in private struct
Matthew Waters [Mon, 2 Feb 2015 13:13:07 +0000 (00:13 +1100)]
glupload: remove unsed convert field in private struct

6 years agoglupload/download/convert: provide transform_caps functions
Matthew Waters [Mon, 2 Feb 2015 13:11:06 +0000 (00:11 +1100)]
glupload/download/convert: provide transform_caps functions

Allows finer grain decisions about formats and features at each
stage of the pipeline.
Also provide propose_allocation for glupload besed on the supported
methods.

6 years agogstglwindow_cocoa: fix slow render rate
Alessandro Decina [Tue, 3 Feb 2015 00:07:58 +0000 (11:07 +1100)]
gstglwindow_cocoa: fix slow render rate

In gst_gl_window_cocoa_draw we used to just call setNeedsDisplay:YES. That was
creating an implicit CA transaction which was getting committed at the next
runloop iteration. Since we don't know how often the main runloop is running,
and when we run it implicitly (from gst_gl_window_cocoa_nsapp_iteration) we only
do so every 200ms, use an explicit CA transaction instead and commit it
immediately. CA transactions nest and debounce automatically so this will never
result in extra work.

6 years agogstglcaopengllayer: use the correct rectangle type for iOS and OS X
Matthew Waters [Mon, 2 Feb 2015 12:40:16 +0000 (23:40 +1100)]
gstglcaopengllayer: use the correct rectangle type for iOS and OS X

6 years agoglcolorconvert: use the correct caps feature for supported caps
Matthew Waters [Mon, 2 Feb 2015 10:07:48 +0000 (21:07 +1100)]
glcolorconvert: use the correct caps feature for supported caps

glcolorconvert currently only supports converting between GLMemory
targets.

6 years agoglsyncmeta: don't use the gst debug object variants
Matthew Waters [Mon, 2 Feb 2015 09:51:31 +0000 (20:51 +1100)]
glsyncmeta: don't use the gst debug object variants

We are not a GObject or any inferable GstMiniObject supported by
the gst debug system.  Also fixes a segfault.

6 years agogl: update unit test for glmemory api change
Matthew Waters [Fri, 30 Jan 2015 07:51:17 +0000 (18:51 +1100)]
gl: update unit test for glmemory api change

6 years agoglimagesink: clobber the alpha channel by default
Matthew Waters [Fri, 30 Jan 2015 04:13:27 +0000 (15:13 +1100)]
glimagesink: clobber the alpha channel by default

this can be disabled with the ignore-alpha property

6 years agoRevert "libgstgl: gstglcaopengllayer: set the layer as opaque"
Alessandro Decina [Fri, 30 Jan 2015 01:32:17 +0000 (12:32 +1100)]
Revert "libgstgl: gstglcaopengllayer: set the layer as opaque"

This reverts commit 6f152d381ca21595cdc823f32341c8f2fe71b9c7.

The layer shouldn't be always opaque, it should be made a property.

6 years agolibgstgl: gstglcaopengllayer: set the layer as opaque
Alessandro Decina [Fri, 30 Jan 2015 01:22:25 +0000 (12:22 +1100)]
libgstgl: gstglcaopengllayer: set the layer as opaque

6 years agoglcolorconvert: Add FIXME comment about possibility of non-Apple YCbCr422 rectangular...
Sebastian Dröge [Thu, 29 Jan 2015 15:30:34 +0000 (16:30 +0100)]
glcolorconvert: Add FIXME comment about possibility of non-Apple YCbCr422 rectangular textures

6 years agoglcolorconvert: Only use GL_TEXTURE_RECTANGLE with OpenGL
Sebastian Dröge [Thu, 29 Jan 2015 15:26:26 +0000 (16:26 +0100)]
glcolorconvert: Only use GL_TEXTURE_RECTANGLE with OpenGL

It's not defined for GLES.

6 years agolibgstgl: run a custom shader to convert YUV to RGB on mac and ios
Alessandro Decina [Tue, 27 Jan 2015 13:48:27 +0000 (00:48 +1100)]
libgstgl: run a custom shader to convert YUV to RGB on mac and ios

When GL_APPLE_ycbcr_422 is available, run a custom shader to convert
GL_TEXTURE_RECTANGLE textures from YUV to RGB.

See https://www.opengl.org/registry/specs/APPLE/ycbcr_422.txt

6 years agogl: initial support for texture targets other than GL_TEXTURE_2D
Alessandro Decina [Tue, 27 Jan 2015 13:13:46 +0000 (00:13 +1100)]
gl: initial support for texture targets other than GL_TEXTURE_2D

Make GstGLMemory hold the texture target (tex_target) the texture it represents
(tex_id) is bound to. Modify gst_gl_memory_wrapped_texture and
gst_gl_download_perform_with_data to take the texture target as an argument.

This change is needed to support wrapping textures created outside libgstgl,
which might be bound to a target other than GL_TEXTURE_2D. For example on OSX
textures coming from VideoToolbox have target GL_TEXTURE_RECTANGLE.

With this change we still keep (and sometimes imply) GL_TEXTURE_2D as the
target of textures created with libgstgl.

API: modify GstGLMemory
API: modify gst_gl_memory_wrapped_texture
API: gst_gl_download_perform_with_data

6 years agogstglcolorconvert: micro optimization
Alessandro Decina [Thu, 22 Jan 2015 02:18:23 +0000 (13:18 +1100)]
gstglcolorconvert: micro optimization

Don't call glClear && glClearColor at each draw since we're going to draw the
whole viewport anyway. Gets rid of a glFlush triggered by glClear on OSX.

6 years agogstglcolorconvert: relax caps features check
Alessandro Decina [Thu, 22 Jan 2015 02:11:46 +0000 (13:11 +1100)]
gstglcolorconvert: relax caps features check

Require caps to have the GST_CAPS_FEATURE_MEMORY_GL_MEMORY feature but allow
them to have more features.

6 years agogl/win32: fixup compilation
Matthew Waters [Thu, 29 Jan 2015 12:45:15 +0000 (23:45 +1100)]
gl/win32: fixup compilation

6 years agoglwindow: make showing a window explicit
Matthew Waters [Thu, 29 Jan 2015 11:25:00 +0000 (22:25 +1100)]
glwindow: make showing a window explicit

Also fixes the cgl context always displaying a window to render to for
every GstGLContextCocoa created

6 years agogl/calayer: add resize callback based on the bounds rectangle
Matthew Waters [Thu, 29 Jan 2015 06:31:09 +0000 (17:31 +1100)]
gl/calayer: add resize callback based on the bounds rectangle