Matthew Waters
ddc4f1ffbd
glbasefilter: track gl_start/stop correctly
...
Don't start multiple times without calling gl_stop.
2015-05-19 11:09:54 +10:00
Matthew Waters
1e9c30223e
glcontext/cocoa: implement GL3 core context selection
2015-05-14 20:35:18 +10:00
Matthew Waters
0870e8785e
gl: remove useless gl{En,Dis}able (GL_TEXTURE_*) calls
...
We are using shaders everywhere and so they are not needed
2015-05-14 16:42:09 +10:00
Matthew Waters
e1b077d6af
glshader: attempt to detect the gles2 inside opengl3 case
...
This is necessary to use gles2 shaders in a GL 3 core context on
OS X which fails without a proper #version being set on the shaders.
2015-05-14 14:58:07 +10:00
Matthew Waters
3d0bc93edc
glshader: remove references to gl3 specific shaders
...
We rely specifically on gles2 shaders being supported by the GL
implementation with GL3 core profile.
2015-05-14 14:58:07 +10:00
Matthew Waters
7f7a9dd3ec
gl: element buffers are part of vao state
...
Use them as such. They are also required for GL3 core profile support
with glDrawElements on OS X.
2015-05-14 14:58:07 +10:00
Matthew Waters
ba5130fe01
glmemory: properly detect (hopefully) the correct ext_rg/arb_rg variant
...
GL_EXT_texture_rg is only valid for GLES2. GLES3 uses similar wording to
the GL_ARB_texture_rg which requires a sized internal format that the
GL_EXT_texture_rg does not require.
https://www.khronos.org/registry/gles/extensions/EXT/EXT_texture_rg.txt
https://www.opengl.org/registry/specs/ARB/texture_rg.txt
2015-05-14 14:58:07 +10:00
Matthew Waters
07dffe9e5b
glcontext: propagate the version/extension failure upwards
...
Otherwise the calling code has no idea that the context failed to
be created fully.
https://bugzilla.gnome.org/show_bug.cgi?id=749284
2015-05-13 23:56:48 +10:00
Matthew Waters
1853e455ac
gl: don't deadlock on context creation failure
...
https://bugzilla.gnome.org/show_bug.cgi?id=749284
2015-05-13 23:56:48 +10:00
Sebastian Dröge
53c79cbf86
Revert "gl: readd glupload/download onto element pads"
...
This reverts commit 87d8270f30
.
2015-05-06 15:46:49 +02:00
Matthew Waters
6f85a17ab3
glsyncmeta: fixup size declaration
2015-05-05 14:46:17 +10:00
Jan Schmidt
2ed71bee3b
glcolorconvert: Improve passthrough check when no conversion is needed.
...
Make the passthrough check contingent on only the fields we
can modify being unchanged, and pre-compute it when caps
change instead of checking on each buffer. Makes the passthrough
more lenient if consumers are lax about making input and output
caps complete.
2015-05-04 13:30:13 +10:00
Matthew Waters
87d8270f30
gl: readd glupload/download onto element pads
...
Allows insertion of gl elements into non-gl pipelines without converter
(upload/download) elements.
https://bugzilla.gnome.org/show_bug.cgi?id=743974
2015-04-30 11:26:33 +10:00
Jan Schmidt
1de2e2bc39
glupload: Make upload method static caps non-const.
...
Retrieving a GstStaticCaps does a one time internal
initialisation and caches it - they can't be stored as
const structures.
2015-04-29 02:52:40 +10:00
Matthew Waters
17084a4608
glmemory: remove uneeded unref
...
The call to _gl_mem_alloc_data will unref and NULLify 'dest' for us.
We just need to return.
https://bugzilla.gnome.org/show_bug.cgi?id=744246
2015-04-28 20:47:55 +10:00
Matthew Waters
0b7f65bbc3
glupload: provide the sink template caps that could be used
...
https://bugzilla.gnome.org/show_bug.cgi?id=746399
2015-04-28 20:13:48 +10:00
Xavier Claessens
5bfaaf4c74
egl: Use maximum bits per color instead of minimum
...
https://bugzilla.gnome.org/show_bug.cgi?id=748425
2015-04-27 10:45:48 -04:00
Matthew Waters
bd940327ef
gl: unref display/other-context in the correct place
...
Otherwise state changes from PLAYING->READY->PAUSED will cause there to
to be no display configured on the element.
https://bugzilla.gnome.org/show_bug.cgi?id=748405
2015-04-27 15:20:56 +10:00
Sebastian Dröge
e7aa25ca6f
glfilter: De-camelcase onInitFBO() vfunc
2015-04-26 21:42:03 +02:00
Sebastian Dröge
c638477c48
glfilter: Remove onStart/onStop vfuncs, and unused onReset()
...
onStart/onStop are just duplicates of the basetransform ones, onReset
was never called but was used everywhere when stop should've been used.
2015-04-26 21:39:06 +02:00
Matthew Waters
1fce7dc228
glbasefilter: Unref other context in finalize, and display in READY->NULL
...
https://bugzilla.gnome.org/show_bug.cgi?id=748405
2015-04-26 20:33:41 +02:00
Matthew Waters
ab9eb432fb
glwindow: track context activation properly
...
We only need to deactivate/reactivate the context iff it was already
active.
2015-04-21 12:55:24 +10:00
Matthew Waters
6cb6d8f9e8
gldisplay: synchronize the searching and creation of GstGLContext's
...
Ootherwise we could end up with multiple elements in different chains
each creating a context. Fixes context creation with glvideomixer.
2015-04-21 12:55:24 +10:00
Matthieu Bouron
93d2e67cbc
glcontext: Make gst_gl_context_egl_activate fail if the old surface could not be destroyed
...
https://bugzilla.gnome.org/show_bug.cgi?id=746251
2015-04-17 14:39:11 +02:00
Matthieu Bouron
8ebc715fbf
glcontext: Make gst_gl_context_egl_activate fail if the surface could not be created
...
Also add some error logging.
2015-04-16 11:47:00 +02:00
Sebastian Dröge
2fe6fe12cf
glcolorconvert: Fix last commit
2015-04-11 19:35:48 +02:00
Sebastian Dröge
a557a546ac
gl: Remove iOS/EAGL workaround for R/RG textures
...
This should be unneeded now after https://bugzilla.gnome.org/show_bug.cgi?id=732507
2015-04-11 19:17:00 +02:00
Sebastian Dröge
b10cdc8536
glcolorconvert: Add correct check for RG/R textures in glcolorconvert too
...
https://bugzilla.gnome.org/show_bug.cgi?id=732507
2015-04-11 19:14:34 +02:00
Anton Obzhirov
6a2e986f07
glbasefilter: avoid segfault when gl platform is not available
...
https://bugzilla.gnome.org/show_bug.cgi?id=747124
2015-04-10 12:15:29 -03:00
Alessandro Decina
6981a8d15b
libgstgl: fix rendering on iOS
...
Stop assuming that the handle has been set by the time ->create_context is
called. After bc7a7259f3
set_window_handle always
happens after ->create_context in fact.
See also https://bugzilla.gnome.org/show_bug.cgi?id=745090
2015-04-02 18:29:39 +11:00
Edward Hervey
0360a62135
introspection: Don't use g-ir-scanner cache at compile time
...
It pollutes user directories and we don't need to cache it
https://bugzilla.gnome.org/show_bug.cgi?id=747095
2015-03-31 15:42:03 +02:00
Philippe Normand
14ac40f106
gl/dispmanx: surfaceless EGL context support
...
Show the DispmanX window only if there's no shared external GL context
set up. When a window is required by the context a transparent
DispmanX element is created and later on made visible by the ::show
method.
https://bugzilla.gnome.org/show_bug.cgi?id=746632
2015-03-24 11:12:05 +00:00
Julien Isorce
e1e17dcadb
glwindow: remove unused gl_thread field
2015-03-22 19:12:15 +01:00
Julien Isorce
d35e3b8481
gldisplay: fix GThread leak
...
https://bugzilla.gnome.org/show_bug.cgi?id=746541
2015-03-22 19:03:19 +01:00
Matthew Waters
0ee027b6ee
gl/docs: update some doc comments
2015-03-18 10:13:25 -07:00
Matthew Waters
78c82328ee
gldisplay: tentative proper context collision detection
...
Fixes
tee name=t ! queue ! gliamgesink t. ! queue ! glimagesink
2015-03-15 14:43:10 +00:00
Víctor Manuel Jáquez Leal
d925e7fd19
glupload: move meta-data copy into gst-gl library
...
In some upload implementations the out buffer has more than one references,
turning the buffer not writable, so it won't be possible to modify its
meta-data.
This patch moves the meta-data copy before increasing the reference of the out
buffer.
https://bugzilla.gnome.org/show_bug.cgi?id=746173
2015-03-14 19:53:02 +00:00
Matthew Waters
48f8b5b46b
glmemory: fix the slight difference between EXT_rg and ARB_rg
...
GL_EXT_texture_rg doesn't take sized formats for the internalformat
parameter of TexImage* but GL_ARB_texture_rg and GL(ES)3 do.
https://bugzilla.gnome.org/show_bug.cgi?id=732507
2015-03-14 18:59:27 +00:00
Matthew Waters
fa61e8e4ce
glsyncmeta: make context to wait and set sync explicit
...
otherwise we may wait on a sync object in same context by accident
2015-03-14 16:53:46 +00:00
Julien Isorce
802bf79998
gl: add GstGLDisplayCocoa
...
https://bugzilla.gnome.org/show_bug.cgi?id=746012
2015-03-14 08:38:03 +00:00
Julien Isorce
90f0cfceb7
gl/cocoa: do not terminate loop in gst_gl_window_cocoa_close
...
It is now done in _finalize.
Fix regression introduced by
"gl/window: create the main loop/context on init/finalize"
bc7a7259f3
2015-03-14 07:49:14 +00:00
Julien Isorce
2d593b4c26
gl: avoid overwriting display and context to NULL
...
It happens when the application provides display
and/or context.
2015-03-13 18:30:30 +00:00
Matthew Waters
a29a18cc3a
glshader: attribute locations are -1 on error
2015-03-13 17:41:17 +00:00
Neos3452
40a4530c5d
glshader: prevent from getting attributes without vertex shader
...
It doesn't make sense to query for vertex attributes without a vertex
shader. Moreover this is causing a crash on OSX.
https://bugzilla.gnome.org/show_bug.cgi?id=746168
2015-03-13 17:35:18 +00:00
Matthew Waters
773f9fa6ff
glupload: unref the bufferpool
2015-03-13 12:40:04 +00:00
Matthew Waters
34485c9976
gl: get the context from basemixer/basefilter
2015-03-13 12:30:20 +00:00
Matthew Waters
91b7642c48
gl: retreive the gldisplay/app gl context as soon as possible
...
fixes the usage of gst_gl_display_filter_gl_api
2015-03-13 12:30:20 +00:00
Julien Isorce
daef98e3e6
glcolorconvert: cache indices in a buffer object
2015-03-12 18:19:57 +00:00
Matthew Waters
66ccdab09a
gl/cocoa: avoid deadlock when creating context on the main thread.
...
Make window/view creation async so that it is possible to
gst_gl_context_create from the main thread.
2015-03-12 16:45:51 +00:00
Matthew Waters
ef0bd30c87
gl: store the list of contexts within gldisplay
...
Removes the reliance on the allocation query to propogate GL contexts.
Allows thread safely getting a context for the a specific thread.
2015-03-12 16:45:51 +00:00
Matthew Waters
cebdf84c81
glcontext: store the thread current context
2015-03-12 16:45:51 +00:00
Matthew Waters
5a867ddc47
glfilter: don't use the library upload/convert objects
2015-03-12 16:45:50 +00:00
Matthew Waters
0c800027ba
glupload: implement propose_allocation pool handling for glmemory upload
2015-03-12 16:45:50 +00:00
Matthew Waters
ecdc5568c4
gl: add a new glbasefilter class below glfilter
...
It deals with propagating the gl display/contexts throughout the
application/pipeline
2015-03-12 16:45:50 +00:00
Matthew Waters
41e3b32866
glutils: expose running a query on a set of src/sink pads
2015-03-12 16:45:50 +00:00
Matthew Waters
56253d8dce
glfilter: advertise resize in the caps negotiation properly
2015-03-12 10:16:15 +00:00
Matthew Waters
e3723cbde8
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.
2015-03-12 09:47:31 +00:00
Matthew Waters
49b00e44ed
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
2015-03-11 18:56:06 +00:00
Matthew Waters
efe0564f22
gl/window: hopefully fixup compile warnings on android/ios
2015-03-11 14:51:15 +00:00
Jan Schmidt
13ed5ab3c8
glfilter: Remove redundant check for clearing context on reset.
...
The context is already cleared a few lines above.
2015-03-12 01:33:03 +11:00
Jan Schmidt
f150cf2d2e
Remove a bunch of silly ';;' typos at the end of lines
2015-03-12 01:33:03 +11:00
Matthew Waters
bc7a7259f3
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
2015-03-11 13:52:15 +00:00
Nicolas Dufresne
7a3b34de79
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
2015-03-06 19:25:16 -05:00
Sebastian Dröge
938d172fc2
gldownload: Simplify caps feature setting code
2015-03-06 18:54:24 +01:00
Sebastian Dröge
b81823e7db
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.
2015-03-06 18:53:13 +01:00
Sebastian Dröge
90967b3d45
glupload: Simplify caps feature setting code
2015-03-06 18:53:13 +01:00
Edward Hervey
1172e2875d
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
2015-03-05 19:09:49 +01:00
Nicolas Dufresne
34402920d2
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
2015-03-03 14:05:21 -05:00
Edward Hervey
4220fe41be
gl: Fix context leaks
...
Introduced by a12ca13750
2015-03-03 17:36:06 +01:00
Julien Isorce
74c294892d
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.
2015-03-02 07:49:26 +00:00
Julien Isorce
4801db552d
gl/cocoa: instead of class_init use g_once to setup nsapp
2015-03-02 07:44:52 +00:00
Julien Isorce
8a0a71ff03
gl/cocoa: check for deprecated constants prior to OSX 10.10
2015-03-02 07:44:25 +00:00
Nicolas Dufresne
283aca3b51
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
2015-03-01 09:43:32 -05:00
Nicolas Dufresne
04377cfc5e
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.
2015-02-28 15:01:59 -05:00
Nicolas Dufresne
8c0fcef818
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
2015-02-28 14:32:40 -05:00
Nicolas Dufresne
e9bec9ec0e
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
2015-02-28 14:32:40 -05:00
Nicolas Dufresne
4db0ef5789
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
2015-02-28 14:32:40 -05:00
Nicolas Dufresne
b8f168cd65
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
2015-02-28 14:32:39 -05:00
Matthew Waters
03b5288f64
glupload: perform egl upload on the gl thread
...
Fixes EGLImage usage on raspberry pi
https://bugzilla.gnome.org/show_bug.cgi?id=743914
2015-02-28 18:29:52 +11:00
Víctor Manuel Jáquez Leal
75e875b022
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
2015-02-26 14:39:32 +02:00
Edward Hervey
a12ca13750
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
2015-02-24 17:42:13 +01:00
Edward Hervey
7075b25288
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
2015-02-24 17:42:13 +01:00
Luis de Bethencourt
0b1d11b2b6
gl: remove docbook related warnings
2015-02-24 14:30:44 +00:00
Matthew Waters
08b1d27e14
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
2015-02-25 00:00:48 +11:00
Matthew Waters
21e95ef9fd
glsyncmeta: add compat definition for gles2
2015-02-24 20:35:32 +11:00
Matthew Waters
beac141057
gl/calayer: don't use the async callback to render
...
not until we can provide equivalent functionality for other window
implementations.
2015-02-24 19:12:10 +11:00
Matthew Waters
7691d2c4e7
glsyncmeta: also supported with gles3
2015-02-24 19:12:10 +11:00
Alessandro Decina
2a430872ed
libgstgl: eagl: handle CALayer resize
2015-02-24 14:23:49 +11:00
Vasilis Liaskovitis
c55689ad16
glmemory: Fix transfer_pbo memory leak
...
https://bugzilla.gnome.org/show_bug.cgi?id=744977
2015-02-23 18:44:39 +02:00
Julien Isorce
4c4eec61e6
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
e10d2417e2
:
"move to CGL and CAOpenGLLayer for rendering".
Then the commit 7d46357627
:
"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).
2015-02-22 10:37:39 +00:00
Mathieu Duponchelle
3baa710638
gstglmemory: Remove now unused transfer_upload function.
2015-02-21 14:42:05 +01:00
Matthew Waters
c6f548326d
glmemory: disable automatic pbo upload
...
until we can track where the data is/or is going to be.
2015-02-21 23:32:41 +11:00
Matthew Waters
a4040f2ee9
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
2015-02-20 18:48:15 +11:00
Matthew Waters
0fd6872f7d
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.
2015-02-17 19:45:35 +11:00
Matthew Waters
96398e5bac
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
2015-02-17 19:45:35 +11:00
Matthew Waters
ccf8b69a67
gl/cocoa: small refactor of layer/view creation into the window
2015-02-17 19:45:35 +11:00
Sebastian Dröge
475dfaedc1
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.
2015-02-17 01:04:38 +02:00
Edward Hervey
f09272f434
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
2015-02-12 15:57:55 +01:00
Edward Hervey
929a6a75d2
gl: Make glcontext debug category used in more places
...
As a bonus it makes the egl context debug messages visible now :)
2015-02-12 15:57:55 +01:00
Alessandro Decina
ad08cdf8e1
libgstgl: set user data and GDestroyNotify for wrapped textures
2015-02-09 20:46:51 +11:00