Matthew Waters
3ba30d42a4
gl: use gles2 shaders everywhere
...
This effectively limits a glfilter subclass to be > GL(ES) 2.0.
rather than a possible GL 1.4.
2017-12-09 19:32:07 +00:00
Matthew Waters
6589c38d1a
glcontext/wgl: implement gl3 core profile context selection
2017-12-09 19:32:07 +00:00
Nicolas Dufresne
d576a71e9a
gloverlaycompositor: Add shader to convert BGRA/ARGB -> RGBA
...
Depending on the bytes order we will get BGRA (little) and ARGB (big)
from the composition overlay buffer while our GL code expects RGBA. Add
a fragment shader that do this conversion.
https://bugzilla.gnome.org/show_bug.cgi?id=752842
2017-12-09 19:32:07 +00:00
Matthew Waters
9f9e0e87cf
gl/syncmeta: implement synchronisation without glFenceSync
...
Uses glFinish as that's the best we have for lesser OpenGL versions.
2017-12-09 19:32:07 +00:00
Matthew Waters
2034f78617
context/glx: only use glXCreateContextAttribs for OpenGL 3 contexts
...
mesa for example when creating a GL 3.1 compatibility context
overrides our context profile selection to create a core context.
2017-12-09 19:32:07 +00:00
Sebastian Dröge
260104e485
glupload: Remove debug output from gst_gl_upload_transform_caps()
...
We can't know if the GstGLUpload type is initialized at this point already,
and thus our debug category might not be initialized yet... and cause an
assertion here.
As we don't print debug output for any of the other transform functions, let's
defer this problem for now.
2017-12-09 19:32:07 +00:00
Nicolas Dufresne
f8dbf10e9e
glupload: Add fixme about using bufferpool for raw
...
http://bugzilla.gnome.org/show_bug.cgi?id=752937
2017-12-09 19:32:07 +00:00
Nicolas Dufresne
2b2048d601
glupload: Keep input frame mapped as long as needed
...
When performing a raw upload, we need to keep the raw data mapped as
long as needed.
https://bugzilla.gnome.org/show_bug.cgi?id=752937
2017-12-09 19:32:07 +00:00
Nicolas Dufresne
37cc53d26f
Revert "glupload: memcpy on raw data upload"
...
This reverts commit 82c0189b28
.
https://bugzilla.gnome.org/show_bug.cgi?id=752937
2017-12-09 19:32:07 +00:00
Matthew Waters
ab142b2671
glcontext/wgl: fix defenition of gst_gl_context_wgl_new
...
gstglcontext_wgl.c: In function 'gst_gl_context_wgl_new':
gstglcontext_wgl.c:83:40: error: 'display' undeclared (first use in this function)
2017-12-09 19:32:07 +00:00
Matthew Waters
0ac95e3243
gl/cocoa: fix definition of gst_gl_context_new
...
gstglcontext_cocoa.m:75:1: error: conflicting types for 'gst_gl_context_cocoa_new'
2017-12-09 19:32:07 +00:00
Matthew Waters
7acca333fe
gl/win32: fix definition of gst_gl_window_win32_new
2017-12-09 19:32:07 +00:00
Matthew Waters
70184c52f0
wayland: fail window open if the display is the correct type
...
Errors out cleanly if a wayland compositor is not running
2017-12-09 19:32:07 +00:00
Matthew Waters
6ccaafc0f3
glwindow: pass display to implementation's _new()
...
So they have to opportunity to fail if they cannot handle the
display connection.
https://bugzilla.gnome.org/show_bug.cgi?id=752743
2017-12-09 19:32:07 +00:00
Matthew Waters
9587eb477d
glcontext: pass display to implentation's _new()
...
This allows the context to fail creation based on incompatible
display type's. e.g. glx context with an wayland display handle.
https://bugzilla.gnome.org/show_bug.cgi?id=752743
2017-12-09 19:32:06 +00:00
Julien Isorce
738ed418ad
gl: support cgl, egl and glx within a same build
...
On osx, with the same build,
gst-launch-1.0 videotestsrc ! glimagesink works with:
GST_GL_PLATFORM=egl GST_GL_WINDOW=x11 GST_GL_API=gles2
GST_GL_PLATFORM=egl GST_GL_WINDOW=x11 GST_GL_API=opengl
GST_GL_PLATFORM=glx GST_GL_WINDOW=x11 GST_GL_API=opengl
GST_GL_PLATFORM=cgl GST_GL_WINDOW=cocoa GST_GL_API=opengl
GST_GL_PLATFORM=cgl GST_GL_WINDOW=cocoa GST_GL_API=opengl3
https://bugzilla.gnome.org/show_bug.cgi?id=752743
2017-12-09 19:32:06 +00:00
Jan Schmidt
3bacd64bf1
glupload: Check that caps contain desired caps features
...
Use 'contains' checks instead of equality checks on caps features
to allow for uploading when caps also contain GstVideoOverlayComposition
meta.
https://bugzilla.gnome.org/show_bug.cgi?id=752912
2017-12-09 19:32:06 +00:00
Julien Isorce
ac469a0d28
gl: move GL_NUM_EXTENSIONS definition after gl.h
...
https://bugzilla.gnome.org/show_bug.cgi?id=752743
2017-12-09 19:32:06 +00:00
Luis de Bethencourt
1eeeadb24e
glupload: fix memory leak
...
GstCapsFeatures need to be freed with gst_caps_features_free() after use.
CID #1312136 , CID #1312136
2017-12-09 19:32:06 +00:00
Nicolas Dufresne
df7bcb6ba7
gloverlaycompositor: Keep memory pointer alive
...
Keep the composition memory pointer alive while it's being
wrapped inside a GstGLMemory object.
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2017-12-09 19:32:06 +00:00
Nicolas Dufresne
8884aeba87
gloverlaycompositor: Pass buffer stride
...
The overlay pixel buffer stride was not given back
to the GL image.
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2017-12-09 19:32:06 +00:00
Nicolas Dufresne
b0546f9bfa
gloverlaycompositor: Hide GstCompsitionOverlay object
...
This object is only used inside the compositor and does not
need to be expose in libgstgl API.
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2017-12-09 19:32:06 +00:00
Nicolas Dufresne
9caaf9eb63
libgstgl: Makefile style fix
2017-12-09 19:32:06 +00:00
Nicolas Dufresne
1812c19291
composition-overlay: Positions are relative to texture
...
The coordinate are relative to the texture dimension and not
the window dimension now. There is no need to pass the window
dimension or to update the overlay if the dimension changes.
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2017-12-09 19:32:06 +00:00
Lubosz Sarnecki
8abd2bbe35
gloverlaycompositor: Create own shader object
...
Make gloverlaycompositor independent of the shader used in the sink.
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2017-12-09 19:32:06 +00:00
Luis de Bethencourt
3199b1b4a8
gloverlaycompositor: for loop initial declarations are only allowed in C99 mode
...
Fixes compiler warnings
2017-12-09 19:32:06 +00:00
Julien Isorce
f068020645
gl: use gst_gl_display_create_context in more elements.
...
glbasefilter, glbasemixer and gltestsrc.
https://bugzilla.gnome.org/show_bug.cgi?id=750310
2017-12-09 19:32:06 +00:00
Matthew Waters
11f058b1ca
gl/build: fix typo in _HEADERS resulting in installing the wrong file
...
/usr/include/gstreamer-1.0/gst/gl/gl.h:51:43: fatal error:
gst/gl/gstgloverlaycompositor.h: No such file or directory
2017-12-09 19:32:06 +00:00
Matthew Waters
41aeadc36e
glcolorconvert: add RGB to NV12/NV21 conversion
2017-12-09 19:32:06 +00:00
Lubosz Sarnecki
26e6be8fad
glcolorconvert: Apply GstVideoOverlayCompositionMeta buffer to converted buffer
...
Since glcolorconvert creates a new GstBuffer,
without the GstVideoOverlayCompositionMeta data,
it needs to be copied to not be dropped.
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2017-12-09 19:32:06 +00:00
Lubosz Sarnecki
076d0517c8
glupload: Detect overlay meta buffers correctly
...
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2017-12-09 19:32:06 +00:00
Lubosz Sarnecki
dc47e6d3c0
glimagesinkbin: Add GstVideoOverlayCompositionMeta caps features
...
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2017-12-09 19:32:06 +00:00
Lubosz Sarnecki
4d010efea1
gloverlaycompositor: Add GstGLOverlayCompositor class
...
Manages the GstGLCompositionOverlay objects,
caches already uploaded overlays and draws them.
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2017-12-09 19:32:06 +00:00
Lubosz Sarnecki
170ac41a87
glcompositionoverlay: Add compatibility for GL contexts without glGenVertexArrays
...
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2017-12-09 19:32:06 +00:00
Lubosz Sarnecki
279c2b07b4
glcompositionoverlay: Add class for managing GstVideoOverlayCompositionOverlay buffers
...
Add a class to store and manage the OpenGL texture,
vertex buffer and GstVideoOverlayRectangle.
Transforms overlay coordinate space to vertex buffer space with aspect ratios in mind.
= Example Pipelines =
Simple pipeline
gst-launch-1.0 videotestsrc ! \
textoverlay text="Hello World" font-desc="sans bold 30" ! \
glimagesink
Display 3 static overlays at different positions
gst-launch-1.0 videotestsrc ! \
textoverlay text="text1" valignment="top" font-desc="sans bold 30" ! \
textoverlay text="text2" halignment="right" font-desc="sans bold 30" ! \
textoverlay text="text3" halignment="left" font-desc="sans bold 30" ! \
glimagesink
Display subtitle file over testsrc
gst-launch-1.0 videotestsrc ! \
textoverlay name=foo filesrc location=foo.srt ! subparse ! queue ! foo. foo. ! \
glimagesink
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2017-12-09 19:32:05 +00:00
Lubosz Sarnecki
eb618aaac7
glupload: Move debug init to top of the file
...
https://bugzilla.gnome.org/show_bug.cgi?id=745107
2017-12-09 19:32:05 +00:00
Matthew Waters
1b4f99856f
glmemory: check for pbo availability before attempting pbo download
...
https://bugzilla.gnome.org/show_bug.cgi?id=751165
2017-12-09 19:32:05 +00:00
Matthew Waters
66407b9877
glcontext: fix get_current_gl_api on x11/nvidia drivers
...
They require to get_proc_address some functions through the
platform specific {glX,egl}GetProcAddress rather than the default
GL library symbol lookup.
2017-12-09 19:32:05 +00:00
Matthew Waters
cfa9b94045
glcontext: consolidate get_proc_address function definition
...
Pass the GstGLAPI directly.
2017-12-09 19:32:05 +00:00
Matthew Waters
3343e2dccd
glcontext/glx: try creating a context with the highest version
...
nvidia drivers return the exact version in glGstString (GL_VERSION)
we request on creation so start with the highest known version and
work our way down.
2017-12-09 19:32:05 +00:00
Matthew Waters
78957c45c2
glcontext: track sharedness with a cookie
...
The previous approach of traversing the other_context weak ref tree was
1. Less performant
2. Incorrect for context destruction removing a link in the tree
Example of 2:
c1 = context_create (NULL)
c2 = context_create (c1)
c3 = context_create (c2)
context_can_share (c1, c3) == TRUE
context_destroy (c2)
unref (c2)
context_can_share (c1, c3) returns FALSE when it should be TRUE!
This does not remove the restriction that context sharedness can only
be tracked between GstGLContext's.
2017-12-09 19:32:05 +00:00
Matthew Waters
2df7e0f9de
glcontext: use the debug object variant for completeness
2017-12-09 19:32:05 +00:00
Matthew Waters
5043800a1d
glupload: memcpy on raw data upload
...
Anything else requires keeping track of the GstVideoFrame mapping
across possible multiple buffers to ensure correct data pointer
usage.
2017-12-09 19:32:05 +00:00
Matthew Waters
841380e022
glbasebuffer: add some debug and zero the data pointers on init
2017-12-09 19:32:05 +00:00
Sebastian Dröge
cff2d74cd4
gl/eagl: Don't call anything synchronously from the main thread
...
This will deadlock if the main thread is the one who creates the GstGLContext.
All things we call from the main thread should be possible from any thread.
https://bugzilla.gnome.org/show_bug.cgi?id=751101
2017-12-09 19:32:05 +00:00
Matthew Waters
b7a3b54b2a
download: only start a download transfer for sysmem caps features
2017-12-09 19:32:05 +00:00
Hyunjun Ko
f67eb2571d
glsyncmeta: transform func: return FALSE if not supported or failed
...
https://bugzilla.gnome.org/show_bug.cgi?id=751778
2017-12-09 19:32:05 +00:00
Matthew Waters
6a7bb242f9
android: add missing egl.h include
2017-12-09 19:32:05 +00:00
Matthew Waters
afcb6aa1da
gl: consolidate egl header includes to egl-only headers
...
They may conflict with other headers.
2017-12-09 19:32:05 +00:00
Julien Isorce
9b1eb32c49
gl: initialize output params to 0 before calling gl functions
...
The client side API of the Chromium's GPU Process has asserts
in debug mode that check that output params are initialized to 0.
2017-12-09 19:32:05 +00:00