Matthew Waters
32b71bd48d
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.
2017-12-09 19:32:16 +00:00
Julien Isorce
f2cfa7fb51
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)
2017-12-09 19:32:16 +00:00
Tim-Philipp Müller
a0d62ce32c
gl: eagl: fix build
...
gstglcontext_eagl.m:238:45: error: too few arguments to function call,
expected at least 4, have 3
2017-12-09 19:32:16 +00:00
Matthew Waters
de5f87e72b
gl/eagl: try getting a gles3 context
...
Fallback to a gles2 context if that fails
2017-12-09 19:32:15 +00:00
Wang Xin-yu (王昕宇)
1e4c9c1688
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
2017-12-09 19:32:15 +00:00
Matthew Waters
d41c132dfa
glcontext: back out unintended lost_context changes
2017-12-09 19:32:15 +00:00
Matthew Waters
5d2ddf7664
egl: implement selecting opengl3 contexts
2017-12-09 19:32:15 +00:00
Matthew Waters
786b2fb9f1
gl/egl: pass the error value to get_error_string()
2017-12-09 19:32:15 +00:00
Matthew Waters
2cef90184e
gl: move control binding proxy implementation from glvideomixer
...
Other elements may need to use it's functionality
2017-12-09 19:32:15 +00:00
Holger Kaelberer
944923080b
glwindow: Fix android build
...
https://bugzilla.gnome.org/show_bug.cgi?id=760972
2017-12-09 19:32:15 +00:00
Tim-Philipp Müller
370a151ee2
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
2017-12-09 19:32:15 +00:00
Sebastian Dröge
72afdda3b3
glfilter: First make caps writable in fixate_caps(), then truncate them
...
Truncating requires writable caps.
2017-12-09 19:32:15 +00:00
Sebastian Dröge
f05da0fef7
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
2017-12-09 19:32:15 +00:00
Sebastian Dröge
a208624354
Revert "glpool: fix caps refcount issue"
...
This reverts commit 3bdcdedfa0
.
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
2017-12-09 19:32:15 +00:00
Matthew Waters
554b23ae48
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
2017-12-09 19:32:15 +00:00
Matthew Waters
fc882653b6
gl: add compatibility definition of GLint64
...
e.g. anrdoid doesn't have it
2017-12-09 19:32:15 +00:00
Matthew Waters
06d8000708
glpool: fix caps refcount issue
...
The caps are from an allocation query which are transfer none but were being
treated as transfer full.
2017-12-09 19:32:15 +00:00
Matthew Waters
575974aeaf
glmemory: log the time for glTexSubImage/glReadPixels
2017-12-09 19:32:15 +00:00
Matthew Waters
65533b807c
gl: add a gstglquery object for arbitrary GL queries
...
Currently only GL_TIME_ELAPSED and GL_TIMESTAMP are supported
2017-12-09 19:32:15 +00:00
Matthew Waters
a41f91253e
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__
2017-12-09 19:32:15 +00:00
Matthew Waters
b804aa2399
gldebug: use gst_info_vasprintf in insert_debug_marker()
...
Allows expansion of GST_PTR_FORMAT and GST_SEGMENT_FORMAT arguments.
2017-12-09 19:32:15 +00:00
Matthew Waters
b56d9bd57b
glfilter: recreate the fbo on caps changes
...
The width/height may change which requires recreating the depth buffer.
2017-12-09 19:32:15 +00:00
Matthew Waters
cb9463d1a2
glbasefilter: add a class function on set_caps (from GL)
...
This is simply a convenience to avoid duplicating the thread marshalling on
set_caps.
2017-12-09 19:32:14 +00:00
Matthew Waters
d5913f3048
gl/x11/navigation: add button press to the selected event mask
...
Otherwise we won't get the button press events and GstNavigation fails.
2017-12-09 19:32:14 +00:00
Alessandro Decina
c2a6c97a1d
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.
2017-12-09 19:32:14 +00:00
Matthew Waters
1e94a8f0fb
gldebug: add a specific category for the debug spam from the driver
2017-12-09 19:32:14 +00:00
Matthew Waters
0cf1eaf71a
glbasememory: Free the actual memory object when requested
...
Otherwise we are leaking ~400B on each GstMemory allocation.
Freeing in the base class matches the GObject semantics.
2017-12-09 19:32:14 +00:00
Matthew Waters
880d2798b0
glmemorypbo: don't double read pixels
...
The optimistic download_transfer was not setting the required flag to not
perform glReadPixels on subsequent map (READ). resulting in glReadPixels
happening twice.
2017-12-09 19:32:14 +00:00
Matthew Waters
5ba0ab3da9
glmemory: expose gst_gl_memory_texsubimage
...
Removes extremely similar code from glmemorypbo.
2017-12-09 19:32:14 +00:00
Matthew Waters
1b49603d78
glfeature add a specific debug category
...
Saves having to trawl through the 'default' category when function retrieval
goes wrong.
2017-12-09 19:32:14 +00:00
Matthew Waters
6667408cb5
glsyncmeta: only flush with a shared context
...
The wait code will flush for us for single context pipelines.
2017-12-09 19:32:14 +00:00
Matthew Waters
472970324c
glcontext: implement checking whether a context has been shared
...
Some operations are unnecessary when running with only a single GL
context.
e.g. glFlush when setting a fence object as the flush happens on wait.
API: gst_gl_context_is_shared
2017-12-09 19:32:14 +00:00
Matthew Waters
a0a0e51249
glcolorconvert: implement usage of a buffer pool
...
Saves unnecessary glGenTextures and glDeleteTextures which may have a
non-trivial cost.
2017-12-09 19:32:14 +00:00
Matthew Waters
3cefdd6673
glbasememory: fix copying GstGLAllocationParams
...
Fixes a GST_IS_GL_CONTEXT critical
2017-12-09 19:32:14 +00:00
Matthew Waters
48fbc9e096
glmemorypbo: remove unused code
...
https://bugzilla.gnome.org/show_bug.cgi?id=759679
2017-12-09 19:32:14 +00:00
Matthew Waters
86110c4765
glupload: always add texture-target field to GL caps
...
1. Various elements/base classes only perform a subset check on accept-caps
2. Some GL elements have texture-target in their pad template
3. When checking subsets, only the caps to check are allowed to contain extra
fields. If the 'template' caps have extra fields, the subset fails.
Thus without texture-target on the caps, various accept-caps implementations
were failing.
Also, add some convenience functions for setting and retrieving
texture targets to/from GValue.
https://bugzilla.gnome.org/show_bug.cgi?id=759860
2017-12-09 19:32:14 +00:00
Matthew Waters
ec5eb678d0
glupload: passthrough composition caps features
...
Don't unconditionally add it to any and all caps transformations.
https://bugzilla.gnome.org/show_bug.cgi?id=759860
2017-12-09 19:32:14 +00:00
Jan Schmidt
d7f508acbb
glviewconvert: Fix stereoscopic handling w/ texture-target
...
The addition of texture-target negotiation broke stereoscopic
handling when not in passthrough mode, so fix that.
2017-12-09 19:32:14 +00:00
Matthew Waters
633c26884e
glmemorypbo: fix wrapping data on GL 2.1
...
GL 2.1 only supports pbo upload.
The wrapped data pointer was only being set on the pbo memory and on the
glmemory so when a download was requested (in GL 2.1), glmemory was
allocating a new data pointer and thus not returning the wrapped data.
2017-12-09 19:32:14 +00:00
Matthew Waters
5aca58ce86
glmemorypbo: only create a pbo memory if the context actually supports it
...
e.g. GL <= 2.0 does not support pbo usage and GL 2.1 only supports pbo upload.
2017-12-09 19:32:14 +00:00
Matthew Waters
3695ab353d
glmemory: small code reformat
...
makes the alloc_params selections fit on a single line.
2017-12-09 19:32:14 +00:00
Sebastian Dröge
0aa1373a61
glbasememory: Remove bogus NULL check
...
CID 1346534
2017-12-09 19:32:14 +00:00
Sebastian Dröge
04d5db14be
gl: Add \0 terminators for the Apple sync extension
...
Otherwise GL initialization might check for extensions forever and never finishes.
2017-12-09 19:32:13 +00:00
Sebastian Dröge
5d38c24aaa
glcontext: Add some debug output when the GL thread is actually running
2017-12-09 19:32:13 +00:00
Vineeth TM
8917f84993
glbufferpool: Fix build error
...
When GST_GL_HAVE_PLATFORM_EGL is not defined, then info variable
will not be used and this results in build error
https://bugzilla.gnome.org/show_bug.cgi?id=759913
2017-12-09 19:32:13 +00:00
Sebastian Dröge
45d7796949
glmemorypbo: Comment out unused functions to fix compilation with clang
...
It's not clear if these are intentionally unused or the code should be
changed, but this fixes compilation for the time being at least.
See https://bugzilla.gnome.org/show_bug.cgi?id=759679
2017-12-09 19:32:13 +00:00
Sebastian Dröge
039865fc03
glcontext: Signal context creation from inside the context loop and use g_thread_join() instead of a custom condition variable
...
Also protect against spurious condition variable wakeups during context
creation.
2017-12-09 19:32:13 +00:00
Sebastian Dröge
1403a6871f
glwindow: Hide navigation specific internal API and add API to asynchronously send navigation events
...
Exposing the navigation thread's main context, GSourceFuncs and structs called
key_event and mouse_event is exposing a bit too much of the internals. Let's
just go with two functions to asynchronously send navigation events on the
window with the same API as the synchronous ones.
2017-12-09 19:32:13 +00:00
Sebastian Dröge
8b00b1347e
glwindow: Use g_thread_join() instead of a custom condition variable for waiting for the navigation thread to finish
...
Also hide some internal functions and fields while we're at it and fix
a race condition with the startup condition variable.
2017-12-09 19:32:13 +00:00
Haihua Hu
9fcf5500b2
glwindow: Fix memory leak of navigation thread
...
When stopping the navigation thread, call g_thread_join() to release
the resources hold by it.
https://bugzilla.gnome.org/show_bug.cgi?id=758820
2017-12-09 19:32:13 +00:00