Julien Isorce
76983d4454
gldisplay: add gst_gl_display_create_context
...
It also emits a create-context signal so that an application
can provide an external GstGLContext backend.
https://bugzilla.gnome.org/show_bug.cgi?id=750310
2017-12-09 19:32:04 +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
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
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
59592f9bfc
gl/display: clean up pre gstglcontext api and struct fields
...
https://bugzilla.gnome.org/show_bug.cgi?id=729551
2017-12-09 19:31:39 +00:00
Matthew Waters
f6ed9a685b
gl/display: add get_handle_type
...
https://bugzilla.gnome.org/show_bug.cgi?id=729551
2017-12-09 19:31:39 +00:00
Matthew Waters
894035f0d7
gl: Add EGLDisplay display subclass
2017-12-09 19:31:34 +00:00
Matthew Waters
303b77eeff
[890/906] x11: add display subclass
...
GstGLDisplayX11 holds the display connection and name. Each thread requires
it's own X11 Display connection (initialised from name) due to the fact that
we do not want to call XInitThreads(). Doing so would result in segfaults
when integrating with GUI toolkits Gtk, Qt, etc.
The Display connection is for OpenGL platforms where a constant display is
required in order to share contexts (egl). In the case of a wrapped context
(added later), we do not have GstGLWindow to retreive the display from so a
'master' connection is used instead.
2017-12-09 19:31:33 +00:00
Matthew Waters
adfbafe36c
[889/906] display: add display type enum
2017-12-09 19:31:33 +00:00
Matthew Waters
54923d1909
[857/906] display: document the new GstContext api
2017-12-09 19:31:32 +00:00
Matthew Waters
84425ad43d
[853/906] display: remove _{set,get}_context
...
A GstGLDisplay doesn't need a GstGLContext and its use
was cause a reference cycle
2017-12-09 19:31:32 +00:00
Matthew Waters
266ffc48be
[824/906] android: Build fixes
...
https://bugzilla.gnome.org/show_bug.cgi?id=709786
2017-12-09 19:31:31 +00:00
Matthew Waters
711ad485b2
[812/906] move the GL vtable from GstGLDisplay to GstGLContext
...
Conflicts:
tests/check/libs/gstglcontext.c
2017-12-09 19:31:31 +00:00
Matthew Waters
e80533dcee
[793/906] add a GstGLContext object that will be the basis of OpenGL contexts
...
At the moment it just sits in between GstGLDisplay and GstGLWindow
performing some of the stuff that GstGLWindow used to do.
2017-12-09 19:31:30 +00:00
Sebastian Dröge
f7998a2e98
[733/906] gl: Major header and include cleanup
2017-12-09 19:31:29 +00:00
Julien Isorce
d17a4381b1
[732/906] build: fix repeated typedefs
...
Write forward declarations in another way to avoid
repeated typedefs "error: redefinition of typedef".
Raised when using i686-apple-darwin11-llvm-gcc-4.2
It seems that C apple compiler does not support
C11 feature.
https://bugzilla.gnome.org/show_bug.cgi?id=703885
2017-12-09 19:31:29 +00:00
Matthew Waters
5ec9f248a1
[715/906] display: inherit from the right object class
2017-12-09 19:31:28 +00:00
Matthew Waters
2ae5b50fa4
[709/906] display: some more cleanups
2017-12-09 19:31:28 +00:00
Matthew Waters
6e86d0e920
[708/906] display: a cleanup and removal of old code
2017-12-09 19:31:28 +00:00
Matthew Waters
bdf5b5be0f
[707/906] display: move error_message to utils
2017-12-09 19:31:28 +00:00
Matthew Waters
5bc069a5d5
[706/906] display: move activate_context into utils
2017-12-09 19:31:28 +00:00
Matthew Waters
c6988cb064
[701/906] display: move context creation into window
2017-12-09 19:31:28 +00:00
Matthew Waters
9c633e658a
[700/906] display: move most of the code into utils for sorting later
...
This contains a hack that essentially requires one GstGLDisplay
per process.
2017-12-09 19:31:28 +00:00
Matthew Waters
38e0434d95
[699/906] display: remove list of upload and download objects
...
and only create an up/download object when needed.
2017-12-09 19:31:28 +00:00
Matthew Waters
81334a1af0
[698/906] move sink-specific stuff from GstGLDisplay into glimagesink
2017-12-09 19:31:28 +00:00
Matthew Waters
dba83ebbd3
[670/906] display: replace glib deprecated api
2017-12-09 19:31:27 +00:00
Matthew Waters
7d4d1f50d4
[669/906] window: seperate object creation and context creation
2017-12-09 19:31:27 +00:00
Matthew Waters
6bee9b9c93
[647/906] remove dependecy on glew
2017-12-09 19:31:27 +00:00
Matthew Waters
c692a610de
[643/906] display: privatise most of the struct
2017-12-09 19:31:26 +00:00
Matthew Waters
e983f02e87
[642/906] add gstglconfig.h for apps to find out what our capabilites are
...
ie libgstgl can be compiled with any combination of opengl/gles2
2017-12-09 19:31:26 +00:00
Matthew Waters
344253e860
[624/906] OPENGL_ES2 => HAVE_GLES2 and add HAVE_OPENGL
...
use GstGLAPI to determine which code paths to execute.
perform some cleanups
2017-12-09 19:31:26 +00:00
Matthew Waters
4d88e9977e
[608/906] add GST_GL_PLATFORM_ANY for choosing any platform
2017-12-09 19:31:25 +00:00
Matthew Waters
4c35d682c9
[603/906] update FSF address
2017-12-09 19:31:25 +00:00
Matthew Waters
d55bbf7f55
[600/906] docs: add docs for new objects and expand on some existing ones
2017-12-09 19:31:25 +00:00
Matthew Waters
39866ea830
[590/906] up/download: fix scaling on transfer
...
i.e. uploading from a 10x10 video frame to a 20x20 texture into another 30x30 videoframe
2017-12-09 19:31:25 +00:00
Matthew Waters
3ee54d3135
[573/906] add upload and download library objects
...
allows multiple upload pipelines that previously wasn't possible
(i.e. upload RGB and I420 and ... on the same GstGLDisplay)
2017-12-09 19:31:25 +00:00
Matthew Waters
0d5b8bbc38
[524/906] GstGLDisplay: rework the download code
...
data paramaters now take GstVideoFrame
remove redundant parameters
2017-12-09 19:31:24 +00:00
Matthew Waters
6528aba8c9
[515/906] GstGLDisplay: rework gen_texture and upload
...
rename functions so that other code can create textures in the GL thread
change upload functions to take a GstVideoFrame
default to GLSL for upload conversion
2017-12-09 19:31:24 +00:00
Julien Isorce
67bc74ec3f
[498/906] gldisplay: don't pass non-constant strings as printf format strings
...
Fixes 'format not a string literal and no format arguments' on darwin
2017-12-09 19:31:23 +00:00
Julien Isorce
7c79cc5c41
[481/906] feature checking: error out instead of doing nothing if an OpenGL feature is not present
...
Fix bug #572767
2017-12-09 19:31:23 +00:00
Tim-Philipp Müller
4f09396824
[463/906] Add some more G_{BEGIN,END}_DECLS to public headers
...
https://bugzilla.gnome.org/show_bug.cgi?id=637260
2017-12-09 19:31:23 +00:00
Julien Isorce
ade2526b8f
[455/906] glimagesink: handle pixel-aspect-ratio
2017-12-09 19:31:23 +00:00
Julien Isorce
36a51c6e02
[406/906] glimagesink: add a client-data property
...
Also add it to glfilterapp.
Fixes #559131
2017-12-09 19:31:22 +00:00
Julien Isorce
b85ffef956
[387/906] glmixer: add a glmixer base element
...
glmixer can be seen as a glfilter except it handles N requested
sink pads.
Each sink pad and the src pad are video/x-raw-gl.
glmixer is responsible for managing different framerates from inputs.
It uses OpenGL context sharing. It means that each input is in its
own OpenGL context shared together and shared with the OpenGL context
of the ouput gl chain.
Also add a glmosaic which is an example of implementation of glmixer.
For now glmosaic is a cube but it will be fixed in the next commits.
For now the glmixer has some weird behaviours in some configurations
but it will be improved in the next commits.
The autotools builds is temporarly broken since those changes
have been made on win32.
2017-12-09 19:31:22 +00:00
Julien Isorce
95dbe51fef
[378/906] gldisplay: avoid to request gl thread when deleting a texture
...
A texture is not destroyed when when we are done with it.
This texture is just added to the texture pool in order to be
re-used. In this case no OpenGL code is executed so we do not need to
request gl thread.
2017-12-09 19:31:22 +00:00
Jan Schmidt
3fbe0f0a98
[352/906] fix typo
...
Change GST_GL_DISPLAY_PROJECTION_PERSPECIVE to
GST_GL_DISPLAY_PROJECTION_PERSPECTIVE.
Re-indent a couple of files that needed it.
2017-12-09 19:31:22 +00:00
Julien Isorce
f631cf4976
[334/906] [win32/winCE] fix some pointer cast warnings with mingw
...
And turn off deprecated Wp64 msvc compiler option.
2017-12-09 19:31:21 +00:00
Julien Isorce
d43fdd3daf
[333/906] add force-aspect-ratio support
2017-12-09 19:31:21 +00:00
Julien Isorce
2eb9cb551c
[330/906] Can now share textures with an external gl context
...
The external opengl context must be specify when creating
our OpenGL context (glx) or just after (wgl).
When calling glXCreateContext or wglShareLists, the
external opengl context must not be current.
Then our gl context can be current in the gl thread while
the external gl context is current in an other thread.
See tests/examples/clutter/cluttershare.c
2017-12-09 19:31:21 +00:00
Julien
fd2028d109
[326/906] add X backend for OpenGL ES 2.0
2017-12-09 19:31:21 +00:00