Commit graph

244 commits

Author SHA1 Message Date
Julien Isorce
74526865c6 [486/906] libvisual-gl: add minimal support to libvisual plugins that uses Framebuffer objects
Fix bug #310775

gst-launch audiotestsrc ! libvisual_gl_projectM ! glimagesink is working
but for now you cannot append any other opengl filters between
libvisual_gl_projectM and glimagesink because our FBO is turned OFF.

It would require that libvisual allows to split rendering between
pass1,2,3... and final rendering. In order to unbind our FBO before
the passN, and then rebind it just before the final libvisual rendering.
2017-12-09 19:31:23 +00:00
Julien Isorce
0f54271129 [485/906] gstgldisplay: turn off texture binding and read buffer when downloading rgb is done
It fixes: (black image before)
gst-launch-0.10 audiotestsrc ! libvisual_gl_lv_gltest ! gldownload ! ximagesink
and
gst-launch-0.10  audiotestsrc ! libvisual_gl_lv_gltest ! gldownload ! glimagesink
2017-12-09 19:31:23 +00:00
Julien Isorce
96cce45c38 [483/906] glelements: do not leak parent when using gst_pad_get_parent 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
Julien Isorce
b30da1699a [480/906] win32 builds: add glshader filter sources to vs9 and codeblocks
Also fix some warnings from msvc9 and mingw-3.4.5
2017-12-09 19:31:23 +00:00
Руслан Ижбулатов
c0ebeccb8c [479/906] gstglshadervariables: strtok_r is not multiplatform
Fix bug #664367
2017-12-09 19:31:23 +00:00
Wei Feng
aefca52574 [478/906] OpenGL ES 2.0: include glib.h to use G_BEGIN_DECLS in gstgles2.h
Fix bug #631019
2017-12-09 19:31:23 +00:00
Julien Isorce
ccaa9e883f [477/906] OpenGL ES 2.0: fix build since glfiltershader changes 2017-12-09 19:31:23 +00:00
Antoni Silvestre
4ea2bf2087 [476/906] OpenGL ES 2.0: fix build and disable some examples
Fix bug #631019
2017-12-09 19:31:23 +00:00
Luc Deschenaux
500210b354 [471/906] glshader: add dynamic fragment shader filter
Also add fragment shader parser
Fix bug #600195
2017-12-09 19:31:23 +00:00
Julien Isorce
f008fa71ab [467/906] tests: various build fixes
- cmake could not find glib
 - put gtk variables at the beginning to avoid GL conflicts
 - update examples to clutter-1.8
 - use const instead of deprecated G_CONST_RETURN
 - set max pending events to 0 to make cube example works again
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
Stefan Kost
df480f3530 [462/906] various: add missing G_PARAM_STATIC_STRINGS flags
Canonicalize property names as needed. Includes some gst-indent changes as well :/
2017-12-09 19:31:23 +00:00
Jan Schmidt
e013586f46 [459/906] Fix distcheck. 2017-12-09 19:31:23 +00:00
Julien Isorce
769e43a2e0 [456/906] glfilter/glmixer/gltestsrc/glupload: throw an element error if no parent bin
Fixes bug #602153
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
Filippo Argiolas
306526a19f [443/906] sobel: move some highly duplicated code into glfilter
Add a new convenience function in GstGLFilter that just draws an input
texture to a target texture using a simple shader with just a "tex"
uniform sampler.
Move draw_texture from glfiltersobel to glfilter. Still need to update
other plugins to this.
2017-12-09 19:31:23 +00:00
Julien Isorce
c390c30aac [432/906] GstGLDisplay: this is GL_DEPTH24_STENCIL8_EXT, not GL_DEPTH24_STENCIL8_EXT 2017-12-09 19:31:23 +00:00
Pierre Pouzol
c9dfa9c111 [431/906] GstGLDisplay: enable stencil buffer when using framebuffer objects.
Fixes Bug #612159
2017-12-09 19:31:23 +00:00
Nicholas Panayis
dfc2d42b7a [415/906] gstglwindow_win32: share opengl context in correct order
Allow to use the opengl context sharing feature if the original
context has been used already.
This is only possible on win32 with wglShareLists because on other
backends, the sharing is made when a context is created.
This new feature is only usefull when using external context
because gst-gl internally makes sure that the orginal context is not
already used when sharing it.

Fix bug #611067
2017-12-09 19:31:23 +00:00
Julien Isorce
b36b45e437 [412/906] Cocoa backend: improve support on GNUStep 2017-12-09 19:31:23 +00:00
Julien Isorce
0b6112c4a0 [411/906] gstglmixer: copy/past recent changes from gstvideomixer 2017-12-09 19:31:23 +00:00
Julien Isorce
4874b35304 [410/906] gstglmixer: inactivate shared gl context before to release ours
First, inactivate shared gl contexts known by each sink pad.
Then, destroy the gl context known by the glmixer.
Finally, re-activate shared gl contexts.
This is to satisfy the fact that no shared gl context must be current
when an opengl context is destroyed.
Moreover the application may hang or crash without those steps.
2017-12-09 19:31:23 +00:00
Julien Isorce
727191d7b6 [407/906] winCE backend: fix build 2017-12-09 19:31:22 +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
32203f94ea [405/906] glfilter: add external-opengl-context property
It repairs the cluttershare and sdlshare example
2017-12-09 19:31:22 +00:00
Jan Schmidt
3672b5922f [403/906] gstglmixer: Initialise the debug category
Initialise the gstglmixer debug category before using it.
2017-12-09 19:31:22 +00:00
Julien Isorce
e70ed87aa8 [400/906] gstgldisplay: no need the I420 work around if ATI Mobility
fix #588653
2017-12-09 19:31:22 +00:00
Julien Isorce
f23b6144d5 [399/906] glmixer: fix when no more gl elements after it
For example:
videotestsrc ! glupload ! ... ! glfiter ! ... ! glmosaic ! fakesink
Usefull when using glmixer inside cluttershare or sdlshare cases.
2017-12-09 19:31:22 +00:00
Pratheesh Gangadhar
f93bb87e77 [394/906] gstgldisplay: use of GL_DEPTH_COMPONENT16 if OpenGL ES 2.0
glRenderbufferStorage does not accept GL_DEPTH_COMPONENT in
OpenGL ES 2.0.

Fix bug #593786
2017-12-09 19:31:22 +00:00
Julien Isorce
8fdf415fb7 [393/906] glmosaic: for now it's a cube mosaic
Also use GPtrArray instead of GArray in glmixer.
And add a pipeline to tests/pieplines
2017-12-09 19:31:22 +00:00
Julien Isorce
9e9b114010 [391/906] Cocoa: fix backend since recent changes
Before, the window size was given at its creation. Now, it's done at
the drawing step because it's only relevant when there is a glimagesink
element in the pipeline.
2017-12-09 19:31:22 +00:00
Julien Isorce
9741435b21 [389/906] fix codeblocks build on win32 2017-12-09 19:31:22 +00:00
Julien Isorce
525701cfca [388/906] just fix builds and indent 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
8c33ba0ba6 [385/906] rewrite the way a gstgldisplay is transmited to the gl elements
Before, a gstgldisplay was instancied by the gl src in terms of gl chain.
And then the next element got it through the first gstglbuffer.
Now, this is done though queries.
All glelements get their ref on a gstgldisplay in READY state.
This rewrite is mainly a first step to be able to share OpenGL context hold
by the gstgldisplay using more complex glelements.
For example, with a glvideomixer. The associated gstgldisplay of each gl chain
of the sink pads will share their OpenGL context.
2017-12-09 19:31:22 +00:00
Stefan Kost
2b9ff50feb [384/906] build: use <stdio.h> / "stdio.h" 2017-12-09 19:31:22 +00:00
Stefan Kost
c218748bc2 [383/906] build: include <stdio.h> when using printf & co. 2017-12-09 19:31:22 +00:00
Julien Isorce
8f6927c70a [382/906] ES2.0: remove warnings
Partially fix #593786
2017-12-09 19:31:22 +00:00
Julien Isorce
b639781471 [381/906] EGL and GLX:: set a minimum depth size 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
Julien Isorce
fa41020ee4 [377/906] gldisplay: avoid to request gl thread when generating a texture
Thanks to the texture pool the gl textures are re-used.
When re-using one, no opengl code is executed so do not need
to request gl thread.
2017-12-09 19:31:22 +00:00
Stefan Kost
fa9177d037 [376/906] build: support openGLES on linux via autofoo. Partialy fixes #593786
Add a pkg-config check for opengl and if not found assume opengl-es. If user has
none of both one still get build error later on (there is no pkg-config for
opengl-es).
Add more files to EXTRA dist and build the opengles variant if selected.
Simmilar changes could be done for the winCE backend.
2017-12-09 19:31:22 +00:00
Julien Isorce
8bed6a5e85 [369/906] define missing glew macro on older versions 2017-12-09 19:31:22 +00:00
Julien Isorce
2e22bb4560 [368/906] Cocoa backend: fix crash when resizing
Default implementation of NSOpenglView::update is not safe because it
just calls update on the opengl context whereas we are not in the gl thread.
Also fix the white flickering when resizing, because now we need to call
the draw callback manually when resizing.
2017-12-09 19:31:22 +00:00
Julien Isorce
e467ea29e9 [365/906] Cocoa backend: make sure that nsapp is initialized
gst-launch-0.10 videotestsrc ! tee name=t ! queue ! glimagesink t. ! queue ! glimagesink
now works properly on MacOSX
2017-12-09 19:31:22 +00:00
Julien Isorce
8d6e91838a [364/906] make the cmake build work on MacOSX
We can now generate a Xcode project (or Unix Makfiles),
see INSTALL file
2017-12-09 19:31:22 +00:00
Julien Isorce
54ba5bccf5 [363/906] Cocoa backend: fix crash when closing
- All gstglwindow members are now modified only in the gl thread
to avoid thread concurrency
- OpenGL context is now properly clean
- fix a couple of things in implementation of xoverlay interface
2017-12-09 19:31:22 +00:00
Julien Isorce
b7162375a3 [362/906] make cocoa backend work on MacOSX
It works with both gst-launch and a cocoa app (non-embedded and embedded)
But there is still some problems:
  - sometimes crash when closing
  - flickering when resizing
  - embedded mode not perfect

I will first make the CMake build work with cocoa backend
in order to generate a XCode project.
Then it should be easier to fix those issues.
2017-12-09 19:31:22 +00:00
Jan Schmidt
8884cfefa8 [358/906] gstgldisplay: Close a small race starting the display thread
Take the display lock before signalling the create-context cond
to ensure the caller has dropped the lock and is therefore listening
for the signal.
2017-12-09 19:31:22 +00:00