Jan Schmidt
f6a102c3e5
glsyncmeta: Set new sync point when copying
...
Set a new sync point when copying instead of
transferring the (non-refcounted) GL sync object
from the source meta.
https://bugzilla.gnome.org/show_bug.cgi?id=750279
2017-12-09 19:32:03 +00:00
Jan Schmidt
7a288b0189
glsyncmeta: Add some debug output
2017-12-09 19:32:03 +00:00
Matthew Waters
fd7348d064
glmemory: provide compatibility definition for GLES2 for GL_RGBA8
2017-12-09 19:32:03 +00:00
Matthew Waters
1e9f7b6303
gl: consolidate internal_rgba_format into glmemory
...
Expose some useful value format conversion functions available in
GstGLMemory.
2017-12-09 19:32:03 +00:00
Julien Isorce
f8ebadabcd
glcontext_gpu_process: close the window when done
2017-12-09 19:32:03 +00:00
Julien Isorce
62130b34ff
glwindow_gpu_process: avoid empty struct
2017-12-09 19:32:03 +00:00
Julien Isorce
210d2c2825
glwindow: move main loop/context creation back to init/finalize
...
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=750199
2017-12-09 19:32:03 +00:00
Sebastian Dröge
7ae1efa8b3
gl: Fix compiler warning
...
gstglwindow_wayland_egl.c:246:41: error: unused variable 'surface_listener' [-Werror,-Wunused-const-variable]
static const struct wl_surface_listener surface_listener = {
^
2017-12-09 19:32:03 +00:00
Matthew Waters
fea0b65eb5
glwindow: fix compiler error
...
gstglwindow.c:1118:544: error: 'return' with no value, in function returning non-void [-Werror]
g_return_if_fail (GST_GL_IS_WINDOW (window));
2017-12-09 19:32:03 +00:00
Matthew Waters
33d8bbaea4
gl/wayland: implement setting the render rectangle
...
Places our subsurface at the rectangle provided position
2017-12-09 19:32:03 +00:00
Matthew Waters
6c56aba687
glwindow: handle gst_video_overlay_set_render_rectangle
2017-12-09 19:32:03 +00:00
Matthew Waters
8332b1abe8
gl/wayland: don't block the event loop after poll
...
Use the dispatch_pending set of functions which just run the currently
queued up events instead of potentially waiting for an event to occur.
2017-12-09 19:32:03 +00:00
Matthew Waters
54199ea203
gl/wayland: implement basic video overlay support via subsurfaces
...
Currently does not position the subsurface relative to the parent surface at all
2017-12-09 19:32:03 +00:00
Matthew Waters
8404981dfb
gl/wayland: allow a NULL wl_event_queue
...
perform operations on the default wl_display event queue in that case
2017-12-09 19:32:03 +00:00
Matthew Waters
79f4a5fcf3
gl/utils: implement wayland display GstContext
...
requried for sharing GL contexts or subsurface support
2017-12-09 19:32:03 +00:00
Matthew Waters
00cff1f9e4
gl/wayland: run each window on a separate queue
...
Based on patch by Julien Isorce <julien.isorce@collabora.co.uk>
https://bugzilla.gnome.org/show_bug.cgi?id=709747
2017-12-09 19:32:03 +00:00
Jan Schmidt
0f6b04c91d
gl: Don't leak temp strings in _RGB_pixel_order()
...
Fix a memory leak of temporary strings when computing
swizzling of RGB formats.
2017-12-09 19:32:03 +00:00
Jan Schmidt
5007311198
glfilter: Add transform_internal_caps() vfunc
...
Add a vfunc that is called by glfilter before it sets
caps features and intersects with the peer caps, and
move removing the size from caps into its default
implementation. Allows sub-classes to do more
sophisticated management of the size fields in case they
don't support arbitrary resizing or have distinct
preferences.
2017-12-09 19:32:03 +00:00
Jan Schmidt
697107fe7d
glfilter: Don't remove size fields from caps
...
Instead of removing size fields, set them to the full range
like videoscale does, so the caps are clearly unfixed in
all cases.
2017-12-09 19:32:03 +00:00
Julien Isorce
238edceda4
gl: add GstGLContextGPUProcess backend
...
It builds its GL vtable from a proc address provided
by the application.
2017-12-09 19:32:02 +00:00
Julien Isorce
fce0e0ba3c
gl: add and use gst_gl_internal_format_rgba
...
Previously when compiling GstGL with both GL and GLES2,
GL_RGBA8 was picked from GL/gl.h. But a clash may happen at
runtime when one is selecting GLES2.
gst_gl_internal_format_rgba allows to check at runtime
if it should use GL_RGBA or GL_RGBA8.
2017-12-09 19:32:02 +00:00
Julien Isorce
2efeb71c83
glwindow_x11: use parent default implementation
2017-12-09 19:32:02 +00:00
Julien Isorce
fa7aafb4ff
glcontext_glx: rename variable from window to context
2017-12-09 19:32:02 +00:00
Julien Isorce
01961ec44d
glwindow: initialize debug in class_init
...
Useful if one uses gst_gl_window_x11_new directly
instead of gst_gl_window_new.
2017-12-09 19:32:02 +00:00
Julien Isorce
a81de2f282
glcontext: initialize debug in class_init
...
Useful if one uses gst_gl_context_egl_new directly
instead of gst_gl_context_new.
2017-12-09 19:32:02 +00:00
Julien Isorce
5849a9f657
glcontext: add gst_gl_context_set_display helper
2017-12-09 19:32:02 +00:00
Julien Isorce
bad3e16601
glcontext: add missing _CAST after G_TYPE_CHECK_CLASS
2017-12-09 19:32:02 +00:00
Julien Isorce
78ca5ce1c4
glwindow: add missing _CAST after G_TYPE_CHECK_CLASS
2017-12-09 19:32:02 +00:00
Julien Isorce
2472bcaaa6
glwindow: provides some default implementations to factorize with all backends
2017-12-09 19:32:02 +00:00
Xavier Claessens
840157230d
gl: propagate return value from filter and filter_texture
...
https://bugzilla.gnome.org/show_bug.cgi?id=749846
2017-12-09 19:32:02 +00:00
Matthew Waters
4e58ec83e0
gl/wayland: remove dead event source code
2017-12-09 19:32:02 +00:00
Matthew Waters
9f704d7c2d
gl/wayland: add GstGLDisplayWayland
...
Simple implementation split from GstGLWindowWayland
Can now have multiple glimagesink elements all displaying output
linked via GL or otherwise (barring GL platform limitations).
The intel driver is racy and can crash setting up the two glimagesink contexts.
e.g.
videotestsrc ! tee name=t ! queue ! glupload ! glimagesinkelement
t. ! queue ! gleffects_blur ! glimagesinkelement
videotestsrc ! glupload ! glfiltercube ! tee name=t ! queue ! glimagesinkelement
t. ! queue ! gleffects_blur ! glimagesinkelement
2017-12-09 19:32:02 +00:00
Matthew Waters
eba6f6b80f
gl/calayer: provide the exact GL api version for the wrapped context
...
Otherwise we could end up being mistaken for the diference between a
gl3 and a gl2 context resulting in a failure getting the list of
extensions from the wrapped context due to the difference between
glGetString and glGetStringi for the GL_EXTENSIONS token.
https://bugzilla.gnome.org/show_bug.cgi?id=749728
2017-12-09 19:32:02 +00:00
Xavier Claessens
6db457a7d9
gl: win32: do not call SetParent in release_parent_win_id()
...
When called from gst_gl_window_win32_close(), internal window
could not exist, and if it does it's going to be destroyed just
after that anyway. Also it causes window_proc() to be called
and crash because it gets a NULL context.
When called from gst_gl_window_win32_set_window_handle() we are
going to set another parent anyway, and it's probably better to
reparent directly instead of passing by a NULL parent which could
cause the internal window to popup briefly.
https://bugzilla.gnome.org/show_bug.cgi?id=749601
2017-12-09 19:32:02 +00:00
Xavier Claessens
1d9ccc2189
gl: win32: remove unused code
...
https://bugzilla.gnome.org/show_bug.cgi?id=749601
2017-12-09 19:32:02 +00:00
Xavier Claessens
77e1e70fdc
gl: win32: fix crash when finalizing GstGLContext
...
gst_gl_context_finalize() is calling gst_gl_window_win32_quit()
which was posting a message. But then window_proc takes window's
context and get a NULL.
Now that we've got a GMainLoop we can do like other backends and
simply call g_main_loop_quit().
This also remove duplicated code to release the parent window and
potential crash there because parent_proc could be NULL if we never
created the internal window. That could happen for example if setting
state to READY then setting a window_handle, and go back to NULL state.
https://bugzilla.gnome.org/show_bug.cgi?id=749601
2017-12-09 19:32:02 +00:00
Xavier Claessens
db0380a9ee
gl: win32: Fix leaked GstGLContext
...
https://bugzilla.gnome.org/show_bug.cgi?id=749601
2017-12-09 19:32:02 +00:00
Xavier Claessens
8f268785d6
gl: win32: set the parent window when creating internal window
...
When _set_window_handle() was called in READY state, it wasn't
set to the internal window created later.
https://bugzilla.gnome.org/show_bug.cgi?id=749601
2017-12-09 19:32:02 +00:00
Xavier Claessens
886ea15c52
gl: win32: use a GMainContext to dispatch win32 messages
...
gst_gl_window_win32_send_message_async() could be called before the
internal window is created so we cannot use PostMessage there.
x11 and wayland backends both create a custom GSource for this,
so there is no reason to not do that for win32.
https://bugzilla.gnome.org/show_bug.cgi?id=749601
2017-12-09 19:32:02 +00:00
Jan Schmidt
95b08b75ba
glupload: Don't leak all memory uploaded via raw uploads.
...
Remove an extra ref missed when switching over to not
reusing output textures
2017-12-09 19:32:02 +00:00
Matthew Waters
d4894caacf
glcontext: require a shader version to initialize.
...
It's very near pointless to try our GL implementation without shaders.
https://bugzilla.gnome.org/show_bug.cgi?id=749284
2017-12-09 19:32:02 +00:00
Xavier Claessens
80fab54c0a
gl: fix crash on windows with intel driver
...
https://bugzilla.gnome.org/show_bug.cgi?id=749430
2017-12-09 19:32:01 +00:00
Matthew Waters
e8e84cf6b3
gl/calayer: provide a current wrapped GstGLContext for callbacks
...
So that the draw and resize callbacks can get the current GstGLContext.
2017-12-09 19:32:01 +00:00
Matthew Waters
18b9519a66
glsyncmeta: ensure that the Fence is going to be executed
...
Otherwise it could stay client side without being submitted to the GL
server resulting in another context waiting on a Fence that will never
become signalled causing a deadlock.
2017-12-09 19:32:01 +00:00
Matthew Waters
62c2d98c52
glupload: don't reuse output textures for raw data upload
...
Causes stale textures to be used further down the chain.
2017-12-09 19:32:01 +00:00
Matthew Waters
d5e0d435e4
glframebuffer: don't clear the framebuffer
...
Breaks attempting to blend with the destination buffer and should be done
explicitly by the callback anyway.
2017-12-09 19:32:01 +00:00
Matthew Waters
5a275c77eb
glbasefilter: track gl_start/stop correctly
...
Don't start multiple times without calling gl_stop.
2017-12-09 19:32:01 +00:00
Matthew Waters
5d8841c8e7
glcontext/cocoa: implement GL3 core context selection
2017-12-09 19:32:01 +00:00
Matthew Waters
72993f54fa
gl: remove useless gl{En,Dis}able (GL_TEXTURE_*) calls
...
We are using shaders everywhere and so they are not needed
2017-12-09 19:32:01 +00:00
Matthew Waters
675f789871
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.
2017-12-09 19:32:01 +00:00
Matthew Waters
2b4ce9435d
glshader: remove references to gl3 specific shaders
...
We rely specifically on gles2 shaders being supported by the GL
implementation with GL3 core profile.
2017-12-09 19:32:01 +00:00
Matthew Waters
65c57b77ff
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.
2017-12-09 19:32:01 +00:00
Matthew Waters
cc587ce1f1
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
2017-12-09 19:32:01 +00:00
Matthew Waters
16522a737c
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
2017-12-09 19:32:01 +00:00
Matthew Waters
50d3161ac5
gl: don't deadlock on context creation failure
...
https://bugzilla.gnome.org/show_bug.cgi?id=749284
2017-12-09 19:32:01 +00:00
Sebastian Dröge
51d3a0a059
Revert "gl: readd glupload/download onto element pads"
...
This reverts commit 87d8270f30
.
2017-12-09 19:32:00 +00:00
Matthew Waters
5216434678
glsyncmeta: fixup size declaration
2017-12-09 19:32:00 +00:00
Jan Schmidt
c2450a28f5
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.
2017-12-09 19:32:00 +00:00
Matthew Waters
343947f383
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
2017-12-09 19:32:00 +00:00
Jan Schmidt
9958df5dd1
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.
2017-12-09 19:32:00 +00:00
Matthew Waters
84b61ad4d5
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
2017-12-09 19:32:00 +00:00
Matthew Waters
c902a6f525
glupload: provide the sink template caps that could be used
...
https://bugzilla.gnome.org/show_bug.cgi?id=746399
2017-12-09 19:32:00 +00:00
Xavier Claessens
403ee23de1
egl: Use maximum bits per color instead of minimum
...
https://bugzilla.gnome.org/show_bug.cgi?id=748425
2017-12-09 19:32:00 +00:00
Matthew Waters
f4f3284161
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
2017-12-09 19:32:00 +00:00
Sebastian Dröge
ee6bfe0127
glfilter: De-camelcase onInitFBO() vfunc
2017-12-09 19:31:59 +00:00
Sebastian Dröge
3613ecfd0a
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.
2017-12-09 19:31:59 +00:00
Matthew Waters
db3bd840b9
glbasefilter: Unref other context in finalize, and display in READY->NULL
...
https://bugzilla.gnome.org/show_bug.cgi?id=748405
2017-12-09 19:31:59 +00:00
Matthew Waters
6445569abf
glwindow: track context activation properly
...
We only need to deactivate/reactivate the context iff it was already
active.
2017-12-09 19:31:59 +00:00
Matthew Waters
03908c679e
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.
2017-12-09 19:31:59 +00:00
Matthieu Bouron
d20af8338a
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
2017-12-09 19:31:59 +00:00
Matthieu Bouron
87a336350d
glcontext: Make gst_gl_context_egl_activate fail if the surface could not be created
...
Also add some error logging.
2017-12-09 19:31:59 +00:00
Sebastian Dröge
659477c7c7
glcolorconvert: Fix last commit
2017-12-09 19:31:59 +00:00
Sebastian Dröge
4a8001e683
gl: Remove iOS/EAGL workaround for R/RG textures
...
This should be unneeded now after https://bugzilla.gnome.org/show_bug.cgi?id=732507
2017-12-09 19:31:58 +00:00
Sebastian Dröge
bd2821982f
glcolorconvert: Add correct check for RG/R textures in glcolorconvert too
...
https://bugzilla.gnome.org/show_bug.cgi?id=732507
2017-12-09 19:31:58 +00:00
Anton Obzhirov
c45072ae86
glbasefilter: avoid segfault when gl platform is not available
...
https://bugzilla.gnome.org/show_bug.cgi?id=747124
2017-12-09 19:31:58 +00:00
Alessandro Decina
83990b491e
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
2017-12-09 19:31:58 +00:00
Edward Hervey
0f4c79099e
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
2017-12-09 19:31:58 +00:00
Philippe Normand
79d340004d
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
2017-12-09 19:31:58 +00:00
Julien Isorce
0142f551f8
glwindow: remove unused gl_thread field
2017-12-09 19:31:58 +00:00
Julien Isorce
a71d479cc3
gldisplay: fix GThread leak
...
https://bugzilla.gnome.org/show_bug.cgi?id=746541
2017-12-09 19:31:58 +00:00
Matthew Waters
0b5c7e8b49
gl/docs: update some doc comments
2017-12-09 19:31:58 +00:00
Matthew Waters
1c51ba395a
gldisplay: tentative proper context collision detection
...
Fixes
tee name=t ! queue ! gliamgesink t. ! queue ! glimagesink
2017-12-09 19:31:58 +00:00
Víctor Manuel Jáquez Leal
55dbb25dcc
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
2017-12-09 19:31:58 +00:00
Matthew Waters
420cdf9cf6
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
2017-12-09 19:31:58 +00:00
Matthew Waters
93968916a4
glsyncmeta: make context to wait and set sync explicit
...
otherwise we may wait on a sync object in same context by accident
2017-12-09 19:31:58 +00:00
Julien Isorce
63366be8ad
gl: add GstGLDisplayCocoa
...
https://bugzilla.gnome.org/show_bug.cgi?id=746012
2017-12-09 19:31:58 +00:00
Julien Isorce
d3b3887c52
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
2017-12-09 19:31:58 +00:00
Julien Isorce
a51680b1b3
gl: avoid overwriting display and context to NULL
...
It happens when the application provides display
and/or context.
2017-12-09 19:31:57 +00:00
Matthew Waters
15fd4e164a
glshader: attribute locations are -1 on error
2017-12-09 19:31:57 +00:00
Neos3452
7d83351172
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
2017-12-09 19:31:57 +00:00
Matthew Waters
7b9d70944b
glupload: unref the bufferpool
2017-12-09 19:31:57 +00:00
Matthew Waters
92f0aa9bd8
gl: get the context from basemixer/basefilter
2017-12-09 19:31:57 +00:00
Matthew Waters
51620950e4
gl: retreive the gldisplay/app gl context as soon as possible
...
fixes the usage of gst_gl_display_filter_gl_api
2017-12-09 19:31:57 +00:00
Julien Isorce
d6e460095f
glcolorconvert: cache indices in a buffer object
2017-12-09 19:31:57 +00:00
Matthew Waters
35476a4cb4
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.
2017-12-09 19:31:57 +00:00
Matthew Waters
813fb633b4
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.
2017-12-09 19:31:57 +00:00
Matthew Waters
d44594c622
glcontext: store the thread current context
2017-12-09 19:31:57 +00:00
Matthew Waters
3e608bcce7
glfilter: don't use the library upload/convert objects
2017-12-09 19:31:57 +00:00
Matthew Waters
1ba38bc10a
glupload: implement propose_allocation pool handling for glmemory upload
2017-12-09 19:31:56 +00:00
Matthew Waters
2ead0d97ed
gl: add a new glbasefilter class below glfilter
...
It deals with propagating the gl display/contexts throughout the
application/pipeline
2017-12-09 19:31:56 +00:00
Matthew Waters
6d4cca89ef
glutils: expose running a query on a set of src/sink pads
2017-12-09 19:31:56 +00:00
Matthew Waters
f9ac4984eb
glfilter: advertise resize in the caps negotiation properly
2017-12-09 19:31:56 +00:00
Matthew Waters
1d4b82d5f8
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.
2017-12-09 19:31:56 +00:00
Matthew Waters
39eb34eb43
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
2017-12-09 19:31:56 +00:00
Matthew Waters
9968b512c5
gl/window: hopefully fixup compile warnings on android/ios
2017-12-09 19:31:56 +00:00
Jan Schmidt
ebbdf29a24
glfilter: Remove redundant check for clearing context on reset.
...
The context is already cleared a few lines above.
2017-12-09 19:31:56 +00:00
Jan Schmidt
6350c35352
Remove a bunch of silly ';;' typos at the end of lines
2017-12-09 19:31:56 +00:00
Matthew Waters
5b8f3e7870
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
2017-12-09 19:31:56 +00:00
Nicolas Dufresne
da41207841
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
2017-12-09 19:31:56 +00:00
Sebastian Dröge
eeab6e881f
gldownload: Simplify caps feature setting code
2017-12-09 19:31:56 +00:00
Sebastian Dröge
cb59ace574
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.
2017-12-09 19:31:56 +00:00
Sebastian Dröge
86d1280f2c
glupload: Simplify caps feature setting code
2017-12-09 19:31:56 +00:00
Edward Hervey
285afe0861
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
2017-12-09 19:31:56 +00:00
Nicolas Dufresne
c9ee5a4b87
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
2017-12-09 19:31:56 +00:00
Edward Hervey
961e847433
gl: Fix context leaks
...
Introduced by a12ca13750
2017-12-09 19:31:56 +00:00
Julien Isorce
befc24469c
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.
2017-12-09 19:31:56 +00:00
Julien Isorce
075a4ffaff
gl/cocoa: instead of class_init use g_once to setup nsapp
2017-12-09 19:31:56 +00:00
Julien Isorce
9599b46416
gl/cocoa: check for deprecated constants prior to OSX 10.10
2017-12-09 19:31:56 +00:00
Nicolas Dufresne
50c491dd36
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
2017-12-09 19:31:56 +00:00
Nicolas Dufresne
b2aea709d0
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.
2017-12-09 19:31:55 +00:00
Nicolas Dufresne
0cbe42af24
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
2017-12-09 19:31:55 +00:00
Nicolas Dufresne
3405eec996
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
2017-12-09 19:31:55 +00:00
Nicolas Dufresne
33050939ff
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
2017-12-09 19:31:55 +00:00
Nicolas Dufresne
de79830b05
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
2017-12-09 19:31:55 +00:00
Matthew Waters
05a4c89f25
glupload: perform egl upload on the gl thread
...
Fixes EGLImage usage on raspberry pi
https://bugzilla.gnome.org/show_bug.cgi?id=743914
2017-12-09 19:31:55 +00:00
Víctor Manuel Jáquez Leal
e3d457ec8e
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
2017-12-09 19:31:55 +00:00
Edward Hervey
081f101f56
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
2017-12-09 19:31:55 +00:00
Edward Hervey
4fa2ddda96
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
2017-12-09 19:31:55 +00:00
Luis de Bethencourt
6a515ab278
gl: remove docbook related warnings
2017-12-09 19:31:55 +00:00
Matthew Waters
fba2a2093f
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
2017-12-09 19:31:55 +00:00
Matthew Waters
5acb75cdf4
glsyncmeta: add compat definition for gles2
2017-12-09 19:31:55 +00:00
Matthew Waters
1cf843292b
gl/calayer: don't use the async callback to render
...
not until we can provide equivalent functionality for other window
implementations.
2017-12-09 19:31:55 +00:00
Matthew Waters
844c0e77ee
glsyncmeta: also supported with gles3
2017-12-09 19:31:55 +00:00
Alessandro Decina
464b9e7680
libgstgl: eagl: handle CALayer resize
2017-12-09 19:31:55 +00:00
Vasilis Liaskovitis
e10a2f8922
glmemory: Fix transfer_pbo memory leak
...
https://bugzilla.gnome.org/show_bug.cgi?id=744977
2017-12-09 19:31:55 +00:00
Julien Isorce
0ad168a258
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).
2017-12-09 19:31:55 +00:00
Mathieu Duponchelle
50ae80e0e6
gstglmemory: Remove now unused transfer_upload function.
2017-12-09 19:31:55 +00:00
Matthew Waters
2af5a108f1
glmemory: disable automatic pbo upload
...
until we can track where the data is/or is going to be.
2017-12-09 19:31:55 +00:00
Matthew Waters
af023d7c95
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
2017-12-09 19:31:55 +00:00
Matthew Waters
3f32b45769
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.
2017-12-09 19:31:55 +00:00
Matthew Waters
9938fe7fa9
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
2017-12-09 19:31:54 +00:00
Matthew Waters
742e4a10a2
gl/cocoa: small refactor of layer/view creation into the window
2017-12-09 19:31:54 +00:00
Sebastian Dröge
c4e75844a8
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.
2017-12-09 19:31:54 +00:00
Edward Hervey
f56c4c541a
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
2017-12-09 19:31:54 +00:00
Edward Hervey
6d6c7f1f19
gl: Make glcontext debug category used in more places
...
As a bonus it makes the egl context debug messages visible now :)
2017-12-09 19:31:54 +00:00
Alessandro Decina
c24f0f49a8
libgstgl: set user data and GDestroyNotify for wrapped textures
2017-12-09 19:31:54 +00:00
Matthew Waters
2ad315b9e9
glproto/vao: only supported in core for ES 3.0+
...
Was causing horizontally flipped video for frame 2 onward on android
2017-12-09 19:31:54 +00:00
Matthew Waters
ff4951fe85
glfilter: ensure that the input upload/colorconvert are always available
2017-12-09 19:31:54 +00:00
Matthew Waters
608a3ddc7b
glupload: restrict EGL and UploadMeta to RGBA
...
other formats are highly untested.
2017-12-09 19:31:54 +00:00
Matthew Waters
ae14797982
glcolorconvert: don't intersect with the input caps
...
that limits our formats to whatever is in the input caps
2017-12-09 19:31:54 +00:00
Luis de Bethencourt
f524507659
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
2017-12-09 19:31:54 +00:00
Matthew Waters
17dba52ff3
gl: remove the egl caps from the src pads
...
we don't actually support producing EGLImage buffers anywhere.
2017-12-09 19:31:54 +00:00
Matthew Waters
68dc0fef6d
glcolorconvert: put GstGLSyncMeta on output buffers
...
allows thread safely using the provided output buffer in a separate
thread
2017-12-09 19:31:54 +00:00
Matthew Waters
f180fe8dc8
glupload: only try the glmemory upload for sysmem/glmemory caps features
...
Allows selecting/testing the upload path with explicit caps features.
2017-12-09 19:31:54 +00:00
Matthew Waters
c2149ec12c
glmemory: add missing initilisation of tex_target when copying
...
fixes:
glcolorscale ! video/x-raw\(meta:GstVideoGLTextureUploadMeta\) !
glimagesink
2017-12-09 19:31:54 +00:00
Matthew Waters
29ca0e8a44
glupload: allow NULL buffer for accept vfunc
2017-12-09 19:31:54 +00:00
Matthew Waters
45e6e77ff0
glupload: remove unsed convert field in private struct
2017-12-09 19:31:54 +00:00
Matthew Waters
530ae2cbb0
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.
2017-12-09 19:31:54 +00:00
Alessandro Decina
0c459222f8
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.
2017-12-09 19:31:54 +00:00
Matthew Waters
f3beaecfa0
gstglcaopengllayer: use the correct rectangle type for iOS and OS X
2017-12-09 19:31:54 +00:00
Matthew Waters
dac1e577e7
glcolorconvert: use the correct caps feature for supported caps
...
glcolorconvert currently only supports converting between GLMemory
targets.
2017-12-09 19:31:54 +00:00
Matthew Waters
572265206c
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.
2017-12-09 19:31:54 +00:00
Alessandro Decina
1c1084881b
Revert "libgstgl: gstglcaopengllayer: set the layer as opaque"
...
This reverts commit 6f152d381c
.
The layer shouldn't be always opaque, it should be made a property.
2017-12-09 19:31:54 +00:00
Alessandro Decina
9f2f3fec17
libgstgl: gstglcaopengllayer: set the layer as opaque
2017-12-09 19:31:54 +00:00
Sebastian Dröge
78aaa6b1de
glcolorconvert: Add FIXME comment about possibility of non-Apple YCbCr422 rectangular textures
2017-12-09 19:31:53 +00:00
Sebastian Dröge
46086ac1fe
glcolorconvert: Only use GL_TEXTURE_RECTANGLE with OpenGL
...
It's not defined for GLES.
2017-12-09 19:31:53 +00:00
Alessandro Decina
9f1cb84523
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
2017-12-09 19:31:53 +00:00
Alessandro Decina
966cad27d7
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
2017-12-09 19:31:53 +00:00
Alessandro Decina
f31ba88835
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.
2017-12-09 19:31:53 +00:00
Alessandro Decina
5c81a68eb1
gstglcolorconvert: relax caps features check
...
Require caps to have the GST_CAPS_FEATURE_MEMORY_GL_MEMORY feature but allow
them to have more features.
2017-12-09 19:31:53 +00:00
Matthew Waters
66cec1c47a
gl/win32: fixup compilation
2017-12-09 19:31:53 +00:00
Matthew Waters
598715fc4b
glwindow: make showing a window explicit
...
Also fixes the cgl context always displaying a window to render to for
every GstGLContextCocoa created
2017-12-09 19:31:53 +00:00
Matthew Waters
200842b3f8
gl/calayer: add resize callback based on the bounds rectangle
2017-12-09 19:31:53 +00:00
Matthew Waters
e8878507cb
gl/caopengllayer: draw asynchronously
...
This essentially makes the CAOpenGLLayer draw every refresh cycle.
2017-12-09 19:31:53 +00:00
Matthew Waters
c5bc8663ae
gl/cocoa: don't segfault if we have a NULL draw/resize/close callback
2017-12-09 19:31:53 +00:00
Matthew Waters
698f1236a4
cgl/calayer: use a callback instead of hardcoding the draw functionality
2017-12-09 19:31:53 +00:00
Matthew Waters
0cfeddbd05
cgl: install the gl context and gl layer headers
2017-12-09 19:31:53 +00:00
Matthew Waters
e57fb35bc0
cgl: add a header for the CAOpenGLLayer support
2017-12-09 19:31:53 +00:00
Philippe Normand
81f768be3e
gl/dispmanx: fix build
...
Commit ab48bb6f0f
changed the API of
GstGLWindow.
2017-12-09 19:31:53 +00:00
Matthew Waters
3f52b33c7a
glmemory: more compatibility defines for gles2 systems
2017-12-09 19:31:53 +00:00
Matthew Waters
03135a2238
glmemory: add some thread safety for gl operations
2017-12-09 19:31:53 +00:00
Matthew Waters
d8cc4cfc47
glmemory: use pbo's for download
...
In order to use pbo's efficiently, the transfer operation has to
be separated from the use of the downloaded data which requires some
rearchitecturing around glcolorconvert/gldownload and elements
2017-12-09 19:31:53 +00:00
Matthew Waters
230d19e172
glprototypes: add some (un)map buffer variants for GL/GLES
2017-12-09 19:31:53 +00:00
Matthew Waters
580c144fd7
gl/window/eagl: fix a couple of typos
2017-12-09 19:31:53 +00:00
Matthew Waters
fb103253d7
glwindow: cleanup/reorganize functions/members into logical groups
2017-12-09 19:31:53 +00:00
Matthew Waters
019367c128
glwindow: remove width/height from _draw()
...
Depending on the platform, it was only ever implemented to 1) set a
default surface size, 2) resize based on the video frame or 3) nothing.
Instead, provide a set_preferred_size () that elements/applications
can use to request a certain size which may be ignored for
videooverlay/other cases.
2017-12-09 19:31:53 +00:00
Matthew Waters
01248b1864
glcontext/cocoa: avoid destroying a possibly 0 GSource id
2017-12-09 19:31:53 +00:00
Matthew Waters
0e835bc374
gl/cocoa: move to CGL and CAOpenGLLayer for rendering
...
Removes the use of NSOpenGL* variety and functions. Any Cocoa
specific functions that took/returned a NSOpenGL* object now
take/return the CGL equivalents.
2017-12-09 19:31:53 +00:00
Matthew Waters
971e9e3128
glcontext/cocoa: add debug category
2017-12-09 19:31:53 +00:00
Sebastian Dröge
39e719fb33
Constify some static arrays everywhere
2017-12-09 19:31:53 +00:00
Lasse Laursen
2e3d26192f
glapi: fix compilation with latest MSVC
...
https://bugzilla.gnome.org/show_bug.cgi?id=743041
2017-12-09 19:31:52 +00:00
Matthew Waters
e3d3049641
glmemory: use the correct size for the pbo
...
It was missing the GstVideoAlignment padding which could cause GL
errors related to overrunning the size of the pbo.
2017-12-09 19:31:52 +00:00
Matthew Waters
aedfadd972
glmemory: remove spurious gst_video_info_align
...
That will be taken care of by the calling code (typically a bufferpool).
The GstVideoAlignment is purely informational to compute plane data sizes.
2017-12-09 19:31:52 +00:00
Matthew Waters
1dfeae2c42
gl: split glcolorconvert usage from glupload
...
the separation allows the transfer operation to occur in a separate
thread/time which may increase performance in specific circumstances.
2017-12-09 19:31:52 +00:00
Matthew Waters
19fbe2afbc
glmemory: offset the data pointer for upload for GstVideoAlignment
...
otherwise we attempt to read from the padding data
2017-12-09 19:31:52 +00:00
Matthew Waters
a2af67aef0
glmemory: use pbo's for upload
2017-12-09 19:31:52 +00:00
Matthew Waters
4288866e55
glupload: relax the GLMemory uploader check for input caps features
...
As there may be a sysmem caps features with GLMemory filled buffers.
e.g.
videotestsrc ! glimagesink
2017-12-09 19:31:52 +00:00
Nicola Murino
ef987be337
glcolorconvert: fix memleak
...
https://bugzilla.gnome.org/show_bug.cgi?id=741943
2017-12-09 19:31:52 +00:00
Nicola Murino
209fbd950f
glupload: fix some memory leaks
...
https://bugzilla.gnome.org/show_bug.cgi?id=741943
2017-12-09 19:31:52 +00:00
Matthew Waters
bef3f020a6
glcontext: allow wrapped contexts to be utilised like non-wrapped contexts
...
Fill in the missing pieces like get_proc_address, the gl function vtable
2017-12-09 19:31:52 +00:00
Sebastian Dröge
50a11e4a77
gl/cocoa: Disable hack for NSApp iteration with a special #define
...
The hack causes deadlocks and other interesting problems and it really
can only be fixed properly inside GLib. We will include a patch for
GLib in our builds for now that handles this, and hopefully at some
point GLib will also merge a proper solution.
A proper solution would first require to refactor the polling in
GMainContext to only provide a single fd, e.g. via epoll/kqueue
or a thread like the one added by our patch. Then this single
fd could be retrieved from the GMainContext and directly integrated
into a NSRunLoop.
https://bugzilla.gnome.org/show_bug.cgi?id=741450
https://bugzilla.gnome.org/show_bug.cgi?id=704374
2017-12-09 19:31:52 +00:00
Sebastian Dröge
c3f86ece48
gl/cocoa: Don't init and clear static GMutex / GCond
...
We would potentially use it from the main loop later in
gst_gl_window_cocoa_init_nsapp() if it timed out before.
2017-12-09 19:31:52 +00:00
Luis de Bethencourt
9d9d07168f
glfilter: remove logically dead code
...
Soon after setting two variables to 1, the code checks if their values are
different from each other. This would never be true. Removing this.
CID 1226443
2017-12-09 19:31:52 +00:00
Nicolas Dufresne
eeda7a29ce
glbufferpool: Always recalculate buffer size
...
Actually we should always recalculate buffer size since our buffer size
even when not-padded is smaller for many sub-sampled formats. This is
because we don't add padding between the planes.
https://bugzilla.gnome.org/show_bug.cgi?id=740900
2017-12-09 19:31:52 +00:00
Nicolas Dufresne
04cd97ae59
glmemory: No need for padding
...
A memory object cannot be put on stack, so no need for padding.
2017-12-09 19:31:52 +00:00
Nicolas Dufresne
a1e02726ee
gl: Add support for GstVideoAlignment
...
This allow saving a copy with libav video decoders or decoders with
similar padding requirement.
https://bugzilla.gnome.org/show_bug.cgi?id=740900
2017-12-09 19:31:52 +00:00
Nicolas Dufresne
45ac36ca26
glmemory: Handle upload/download flags from map
...
Problem was that if buffer was mapped READWRITE (state of buffers from
libav right now), mapping it READ/GL will not upload. This is because the
flag is only set when the buffer is unmapped. We can fix this by setting
the flags in map. This result in already mapped buffer that get mapped
to be read in GL will be uploaded. The problem is that if the write
mapper makes modification afterward, the modification will never get
uploaded.
https://bugzilla.gnome.org/show_bug.cgi?id=740900
2017-12-09 19:31:52 +00:00
Nicolas Dufresne
197e8de6e6
glmemory: Handle custom stride with OPENGL3
...
https://bugzilla.gnome.org/show_bug.cgi?id=740900
2017-12-09 19:31:52 +00:00
Wang Xin-yu (王昕宇)
fc09b8b93c
glfilter: fix position/texcoord attrib index usage
...
https://bugzilla.gnome.org/show_bug.cgi?id=741231
2017-12-09 19:31:52 +00:00
Matthew Waters
ba3a3cd783
gl: fixup vao and vbo usage for legacy GL
2017-12-09 19:31:52 +00:00
Philippe Normand
7c6d9b4c59
glsyncmeta: add G_END_DECLS
2017-12-09 19:31:51 +00:00
Julien Isorce
690b20b9f4
glcontext: try cgl before glx
...
It was already done by commit
f506e80686
but it has been broken by commit
45ec777cea
2017-12-09 19:31:51 +00:00
Matthew Waters
bbac8bf8d0
glcontext: require GL_ARB_ES2_compatibility for opengl3
...
until we generate gl3 compliant shaders
https://bugzilla.gnome.org/show_bug.cgi?id=740012
2017-12-09 19:31:51 +00:00
Matthew Waters
0af6dcfa23
gl: fixup compat definition for GLuint64 for OS X
2017-12-09 19:31:51 +00:00
Matthew Waters
462a202427
gl: add compat definition for GLuint64 for android
...
../../../../gst-libs/gst/gl/glprototypes/sync.h:41:23: error: unknown type name 'GLuint64'
GLuint64 timeout))
2017-12-09 19:31:51 +00:00
Matthew Waters
81a470905b
glsync: fix build with desktop gl
2017-12-09 19:31:51 +00:00
Matthew Waters
3be1edc634
gl: fix various build errors without desktop gl
2017-12-09 19:31:51 +00:00
Matthew Waters
a2a8059daf
gldisplay: fix build error
...
gstgldisplay.c:234:541: error: 'return' with no value, in function returning non-void [-Werror]
g_return_if_fail (GST_IS_GL_DISPLAY (display));
2017-12-09 19:31:51 +00:00
Matthew Waters
4bd62ebb03
gldisplay: implement runtime GL api filtering
...
Needed so that the pipeline/application can limit the choice of GL api
to what it supports
2017-12-09 19:31:51 +00:00
Matthew Waters
892d056a44
gl: remove the use of glu
2017-12-09 19:31:51 +00:00
Matthew Waters
6bb113f685
gl: add a sync meta for synchronizing across GL contexts
...
A context can create a GLsync object that can be waited on in order
to ensure that GL resources created in one context are able to be
used in another shared context without any chance of reading invalid
data.
This meta would be placed on buffers that are known to cross from
one context to another. The receiving element would then wait
on the sync object to ensure that the data to be used is complete.
2017-12-09 19:31:51 +00:00
Matthew Waters
f4dbfec17b
glprototypes: add sync function definitions
2017-12-09 19:31:51 +00:00
Matthew Waters
8e98591153
glfilter: add a gl3 code path using vao's and vbo's
2017-12-09 19:31:51 +00:00
Matthew Waters
414a319f03
glframebuffer: add support for gl3
2017-12-09 19:31:50 +00:00
Matthew Waters
b6fc74c9b8
glcolorconvert: add support for gl3
2017-12-09 19:31:50 +00:00
Matthew Waters
dcd5fce8fb
glshader add support for gl3
2017-12-09 19:31:50 +00:00
Matthew Waters
86c084f1af
glx: ask for a GL3 core context
2017-12-09 19:31:50 +00:00
Sebastian Dröge
a6f02d4b29
glcolorconvert: Unref buffer with the correct function
2017-12-09 19:31:50 +00:00
Sebastian Dröge
5b13dca0ce
glmemory: Handle failure of memory allocation gracefully
2017-12-09 19:31:50 +00:00
Sebastian Dröge
47a8242399
glmemory: Use g_try_malloc() in the appropriate places
...
g_malloc() aborts if allocation fails, it's pointless to check against NULL
afterwards. That's why g_try_malloc() exists.
2017-12-09 19:31:50 +00:00
Wang Xin-yu (王昕宇)
45db2931c8
glcolorconvert: support RGB16/BGR16 video format download
...
https://bugzilla.gnome.org/show_bug.cgi?id=740801
2017-12-09 19:31:50 +00:00
Matthew Waters
e32c4a62c2
gl/wayland: implement resizing the window using the right mouse button
2017-12-09 19:31:50 +00:00
Matthew Waters
e252c908e7
glfilter: support fixed dimensions on both sides of the element
...
Fixes:
width=320,height=240 ! glfilter ! width=800,height=600
width=230,height=240 ! glfilter ! width=600
... ! glfilter ! width=800
2017-12-09 19:31:50 +00:00
Ramprakash Jelari
c5804b9af5
glcontext: Fix unused variable warning by moving declaration where it is actually used
2017-12-09 19:31:50 +00:00
Sebastian Dröge
3c7095e5ad
glupload: Fix valid compiler warning
...
gstglupload.c:442:32: error: if statement has empty body [-Werror,-Wempty-body]
if (upload->texture_ids[i]);
^
2017-12-09 19:31:50 +00:00
Philippe Normand
ce58219124
gl: ship the gstglcontext_egl.h header
...
It is required by gsteglimagememory.h.
https://bugzilla.gnome.org/show_bug.cgi?id=740611
2017-12-09 19:31:50 +00:00
Tim-Philipp Müller
13706c2c05
gl: shadervariables: make parsing of floats locale-independent
...
Floating point numbers are written differently in different
locales, e.g. in many countries 1/2 = 0,5 instead of 0.5, and
strtod will not be able to parse "0.5" correctly in such a
locale.
2017-12-09 19:31:50 +00:00
Matthew Waters
97607a0d50
glshadervariables: also trim \r as well as \n
2017-12-09 19:31:50 +00:00
Matthew Waters
00506bf183
glupload: rearchitecture for non GLMemory inputs/outputs
...
Allows other memory types to be implemented/returned/used by the caller.
2017-12-09 19:31:50 +00:00
Vineeth T M
d747c65d4c
glcontext: build errors when GST_GL_HAVE_OPENGL is 0
...
Moving variables within #if GST_GL_HAVE_OPENGL, which are not going to be used otherwise.
and which are needed only when OpenGl is present
https://bugzilla.gnome.org/show_bug.cgi?id=740235
2017-12-09 19:31:50 +00:00
Matthew Waters
e731762984
glfilter: add read-only context property
2017-12-09 19:31:50 +00:00
Sebastian Dröge
8f5faa3872
gl/cocoa: Only use convertRectToBacking on OSX >= 10.7
...
It does not exist before and older versions also don't have
support for HiDPI displays anyway.
https://bugzilla.gnome.org/show_bug.cgi?id=740201
2017-12-09 19:31:50 +00:00
Sebastian Dröge
d70f6a9b5e
gl: Use numeric OSX version instead of the macro
...
The macro is not defined on older OSX versions and evaluates to 0.
https://bugzilla.gnome.org/show_bug.cgi?id=740201
2017-12-09 19:31:50 +00:00
Sebastian Dröge
3fe5be7c9a
gl/cocoa: Don't override the application delegate
...
Otherwise interesting things will happen in Cocoa applications, like
infinite event loops that block the NSApplication loop forever.
This was only needed for GNUStep and thus can safely be removed now.
2017-12-09 19:31:50 +00:00
Sebastian Dröge
673b0190af
gl/cocoa: Remove GNUStep support
...
Until gcc and GNUStep properly support Objective-C blocks and other
"new" features of Objective-C we can't properly support them without
making the code much more ugly.
https://bugzilla.gnome.org/show_bug.cgi?id=739152
2017-12-09 19:31:50 +00:00
Hyunjun Ko
db6ea1b3bd
gl: Correct invalid comment text
2017-12-09 19:31:49 +00:00
Julien Isorce
af59b771fd
gl: do not raise a critical msg if the backend does not handle window events
...
Fix "assertion 'window_class->handle_events != NULL' failed"
if not using a X11 window.
2017-12-09 19:31:49 +00:00
Matthew Waters
af9b73043e
gl: remove the width/height fields from the caps to support frame resizing
...
It was previously only occuring with sysmem caps features
https://bugzilla.gnome.org/show_bug.cgi?id=739334
2017-12-09 19:31:49 +00:00
Sebastian Dröge
90022c451c
gstglconfig: Put gstglconfig.h into $(libdir)/gstreamer-1.0/include
...
It's architecture dependent and should not be placed into the include
directory as the assumption is that all those headers are architecture
independent.
https://bugzilla.gnome.org/show_bug.cgi?id=739767
2017-12-09 19:31:49 +00:00
Matthew Waters
d738b78229
glutils: only attempt getting the app context when we don't already have a display
...
avoids querying/messaging the world on each frame
2017-12-09 19:31:49 +00:00
Matthew Waters
e2f61d20a2
glcontext: fail context creation if glGetString returns NULL
2017-12-09 19:31:49 +00:00
Lubosz Sarnecki
64dd17bde6
glimagesink: implement gst_video_overlay_handle_events
...
https://bugzilla.gnome.org/show_bug.cgi?id=736035
2017-12-09 19:31:49 +00:00
Julien Isorce
f1365f1051
gl/cocoa: use NSAutoreleasePool to free resize data
...
Otherwise when resizing the window you will also get messages like:
class NSConcreteMapTable autoreleased with no pool in place - just leaking
class NSConcreteValue autoreleased with no pool in place - just leaking
class NSConcreteValue autoreleased with no pool in place - just leaking
class __NSCFDictionary autoreleased with no pool in place - just leaking
2017-12-09 19:31:49 +00:00
Julien Isorce
ef707ee9d5
gl/cocoa: include gl3.h to have GL_CONTEXT_PROFILE_MASK
2017-12-09 19:31:49 +00:00
Julien Isorce
f44b430bc7
gl/cocoa: make sure to turn on frame rectangle changes notifications
...
Default value of property postsFrameChangedNotifications is YES
but it is worth to explicitly enable it.
2017-12-09 19:31:49 +00:00
Julien Isorce
4a736caded
gl/cocoa: fix uncaught exception 'unrecognized selector sent to instance'
...
Need to set the ':' as the reshape method now takes one parameter.
For the story, the GstGLNSView was previously inheriting from
NSOpenGLView which has a reshape function without any parameter.
Now the GstGLNSView inherits from NSView and we re-use the reshape
function manually.
2017-12-09 19:31:49 +00:00
Julien Isorce
a581d479ff
gl/cocoa: fix compiler warning
...
Use the reshape function after being defined. The other way
would have been to declare the reshape function in the header.
gstglwindow_cocoa.m: In function '-[GstGLNSView drawRect:]':
gstglwindow_cocoa.m:555: warning: 'GstGLNSView' may not respond to '-reshape'
gstglwindow_cocoa.m:555: warning: (Messages without a matching method signature
gstglwindow_cocoa.m:555: warning: will be assumed to return 'id' and accept
gstglwindow_cocoa.m:555: warning: '...' as arguments.)
2017-12-09 19:31:49 +00:00
Tim-Philipp Müller
653c04b121
gl: fix Since marker for gst_gl_window_run_navigation()
2017-12-09 19:31:49 +00:00
Luis de Bethencourt
f16b75aa49
glshader: Fix memory leak
...
Memory is only freed in the TRUE clause of the if conditional. Free in the else
clause as well.
Also, consolidate g_malloc + sprintf into a g_strdup_printf().
CID #1212171
https://bugzilla.gnome.org/show_bug.cgi?id=739368
2017-12-09 19:31:49 +00:00
Luis de Bethencourt
eabcf66f2f
glcolorconvert: fix comments that confuse gtk-doc
...
GTK-Doc uses a special syntax for code documentation. A multiline comment that
starts with an additional '*' marks a documentation block that will be processed
by the GTK-Doc tools. So GTK-Doc is confused if a comment block starts with that
additional '*' but isn't meant to be processed. Removing this additional '*'.
https://bugzilla.gnome.org/show_bug.cgi?id=739444
2017-12-09 19:31:49 +00:00
Matthew Waters
35e9b5ab8b
gl: sprinkle some Since markers
2017-12-09 19:31:49 +00:00
Matthew Waters
6811c39ff9
gl/examples: update for other-context property removal
2017-12-09 19:31:49 +00:00
Matthew Waters
7d97a35139
glcontext: add more functionality to wrapped contexts
...
Implements get_current_context() and get_proc_address() for wrapped
contexts.
2017-12-09 19:31:49 +00:00
Matthew Waters
366eaea6d2
glshader: advertise the default vertex and fragment shaders on desktop GL
2017-12-09 19:31:49 +00:00
Matthew Waters
59e4a039c9
glfilter: get the config from the correct pool
2017-12-09 19:31:48 +00:00
Matthew Waters
cc2e0a7288
glfilter: avoid uninitialized variable size when chaining multiple glfilters
...
https://bugzilla.gnome.org/show_bug.cgi?id=739277
2017-12-09 19:31:48 +00:00
Matthew Waters
f1dddf4f6b
glfilter: gst-indent file
2017-12-09 19:31:48 +00:00
Matthew Waters
be5d0d81e4
glcontext: add api for retreiving the current context and api
...
that is current in the calling thread.
2017-12-09 19:31:48 +00:00
Matthew Waters
91a7bd0d9a
glprototypes: add vertex attribute array definitions
2017-12-09 19:31:48 +00:00
Matthew Waters
62e3c40d97
gl: propogate other-context using GstContext
2017-12-09 19:31:48 +00:00
Sebastian Dröge
3d7a6c8db6
gl/cocoa: Fix compiler warning
...
gstglwindow_cocoa.m: In function '-[GstGLNSView drawRect:]':
gstglwindow_cocoa.m:555: warning: 'GstGLNSView' may not respond to '-reshape'
gstglwindow_cocoa.m:555: warning: (Messages without a matching method signature
gstglwindow_cocoa.m:555: warning: will be assumed to return 'id' and accept
gstglwindow_cocoa.m:555: warning: '...' as arguments.)
2017-12-09 19:31:48 +00:00
Matthew Waters
0806de5c75
glbufferpool: add the GstVideoGLTextureUploadMeta buffer pool option
2017-12-09 19:31:48 +00:00
Wang Xin-yu (王昕宇)
77682a51e6
glcolorconvert: support RGB16/BGR16 video format upload
...
https://bugzilla.gnome.org/show_bug.cgi?id=738842
2017-12-09 19:31:48 +00:00
Brion Vibber
02a0b92d9d
gl/cocoa: Fix for building on Mac OS X 10.10
...
Using NSApp directly seems to confuse something, as the compiler
was expecting an id<NSFileManagerDelegate>. Switched to using
[NSApplication sharedApplication], and specified the delegate
protocol on the window class as well.
https://bugzilla.gnome.org/show_bug.cgi?id=738740
2017-12-09 19:31:48 +00:00
Matthew Waters
6663967994
glfilter: add uploaded_buffer field
2017-12-09 19:31:48 +00:00
Sebastian Dröge
6d273084eb
gl/cocoa: Add support for HiDPI displays
...
Without this our GL surface would be upscaled after rendering
by Cocoa, which would reduce image quality.
2017-12-09 19:31:48 +00:00
Matthew Waters
3439402164
glcolorconvert: output why we cannot convert a buffer
2017-12-09 19:31:48 +00:00
Matthew Waters
df6967c274
glcolorconvert: fix planar YUV download
...
- sample the u and v planes properly
- output the correctly scaled u and v planes for different chroma block sizes
2017-12-09 19:31:48 +00:00
Matthew Waters
a771b40474
glcolorconvert: fix UYVY download green screen
2017-12-09 19:31:47 +00:00
Matthew Waters
ea711807d8
glcolrconvert: fix YUY2 download
...
- The shader was outputing the wrong values compared with raw
videotestsrc.
- deal with the texture edge properly.
- properly sample the 2x1 rectangle for the u and v values
- don't double sample the y value
2017-12-09 19:31:47 +00:00
Sebastian Dröge
435810b238
gl/cocoa: Always update our viewport if Cocoa tells us something has changed
...
The visible rect and bounds might be the same as before, but Cocoa
might've changed our viewport without us nothing. This happens if
you hide the view and show it again.
2017-12-09 19:31:47 +00:00
Sebastian Dröge
b44798d549
gl/cocoa: Handle NSView::renewGState() properly
...
Don't update the screen until we redraw, this prevents flickering during
scrolling, clipping, resizing, etc
2017-12-09 19:31:47 +00:00
Matthew Waters
e6bd70d580
glcolorconvert: convert xRGB into ARGB properly
...
The alpha channel might not be the last component so check which one
it is in and clobber that one instead.
2017-12-09 19:31:47 +00:00
Matthew Waters
5c7b5e0210
glmemory: unset the opposite corresponding transfer flags when mapped with write
...
fixes consistency with consecutive gst_memory_map()'s with
flags & GST_MAP_WRITE
2017-12-09 19:31:47 +00:00
Sebastian Dröge
b1a5ae7c0d
gl/cocoa: Update viewport according to the current clipping
...
We have to update the GL viewport if the NSView is only partially
visible. Otherwise the content of the frame will be visibly offset.
2017-12-09 19:31:47 +00:00
Sebastian Dröge
9ff86a3c54
gl/cocoa: Improve the NSApplication initialization
...
This is only for non-Cocoa apps but previously caused a 2 second
waiting during startup for Cocoa apps. This is unacceptable.
Instead we now check a bit more extensive if something actually
runs on the GLib default main context, and if not don't even
bother waiting for something to happen from there.
2017-12-09 19:31:47 +00:00
Sebastian Dröge
7cf214796a
gl/cocoa: NSView::drawRect() should call into reshape too
...
We a) need to render again because part of the window was
obscured and b) might need to reshape because of clipping
changes.
2017-12-09 19:31:47 +00:00
Sebastian Dröge
32b23a340e
gl/cocoa: Call UI related API from the application main thread
2017-12-09 19:31:47 +00:00
Sebastian Dröge
02b3e26854
gl/cocoa: Switch to a plain NSView subclass instead of NSOpenGLView
...
We don't and can't use NSOpenGLView as it's supposed to be used and
it gets into our way by being to clever in various situations.
2017-12-09 19:31:47 +00:00
Edward Hervey
ef00d85f16
glcontext: Initialize variable
...
Avoids the following warning:
gstglcontext.c:647:58: error: 'prev' may be used uninitialized in
this function [-Werror=maybe-uninitialized]
2017-12-09 19:31:47 +00:00
Matthew Waters
ca476f03a8
glcontext: fixup error in sharegroup comment
2017-12-09 19:31:47 +00:00
Matthew Waters
817417c005
glcontext: detect the sharegroup case where the context are in different chains
...
In the end they will lead to the same root context in the tree so check that
for equality.
2017-12-09 19:31:47 +00:00
Matthew Waters
80be2d046b
glfilter: silence a warning with empty input caps
...
discovered with the doublecube example
gst_caps_get_features: assertion 'index < GST_CAPS_LEN (caps)' failed
2017-12-09 19:31:47 +00:00
Sebastian Dröge
ec0d04acec
gl/cocoa: Switch from our custom main loop to a GMainLoop
...
Simplifies code a lot and makes it more similar to the other backends.
2017-12-09 19:31:46 +00:00
Sebastian Dröge
6c8f7f9dd5
gl/cocoa: Clear the current GL context when it should happen
2017-12-09 19:31:46 +00:00
Matthew Waters
ae919f4475
gl: download whenever we have sysmem capsfeatures
...
Otherwise we could pass on a RGBA formatted buffer and downstream would
misinterpret that as some other video format.
Fixes pipelines of the form
gleffects ! tee ! xvimagesink
2017-12-09 19:31:46 +00:00
Matthew Waters
ccf8f014f0
glupload: fallback to upload if contexts cannot share GL resources
...
Fixes pipelines of the form
gleffects ! tee ! glimagesink
as tee does not pass on the allocation query.
2017-12-09 19:31:46 +00:00
Matthew Waters
14630fac38
glcontext: add gst_gl_context_can_share
...
Which determines whether two GstGLContext's can share sharable
OpenGL resources.
2017-12-09 19:31:46 +00:00
Sebastian Dröge
9dd4f40ad6
gl: Let gst_gl_context_get_thread() return a new reference to the GThread
...
Otherwise it might go away in the meantime and the caller has some random pointer.
2017-12-09 19:31:46 +00:00
Anuj Jaiswal
e9e84da30a
gl: consecutive return, break statement
...
Signed-off-by: Anuj Jaiswal <anuj.jaiswal@samsung.com>
https://bugzilla.gnome.org/show_bug.cgi?id=736939
2017-12-09 19:31:46 +00:00