Commit graph

340 commits

Author SHA1 Message Date
Matthew Waters
e89266b664 [581/906] filter: add seperate filter function for operating on textures instead of buffers 2014-03-15 18:36:48 +01:00
Matthew Waters
558e10be0f [580/906] bufferpool: remove obselete gl meta buffer pool options 2014-03-15 18:36:48 +01:00
Matthew Waters
cfafeea297 [579/906] download: fix YV12 format
same as I420 but plane 1+2 swapped
2014-03-15 18:36:48 +01:00
Matthew Waters
5aa048e53b [578/906] {up,down}load: add variants that can be called in the gl thread 2014-03-15 18:36:48 +01:00
Matthew Waters
8f4c270ae1 [576/906] remove uneeded GstGLMeta (use GstVideoMeta) 2014-03-15 18:36:48 +01:00
Matthew Waters
fa9a4d6862 [575/906] filter: port to new upload/download 2014-03-15 18:36:48 +01:00
Matthew Waters
5d1395f435 [574/906] memory: implement transperent upload/download for data
(not async yet)
2014-03-15 18:36:48 +01:00
Matthew Waters
88cb7e3060 [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)
2014-03-15 18:36:48 +01:00
Matthew Waters
aebcacecf8 [571/906] mixer: fix deadlock on shutdown
didn't reiterate over the sinkpad's displays and reactivate them causing a deadlock
2014-03-15 18:36:48 +01:00
Matthew
ed1f04acab [568/906] window: fix public definitions 2014-03-15 18:36:47 +01:00
Matthew
20406c1de3 [567/906] fix OpenGL|ES2 ifdef'ed code 2014-03-15 18:36:47 +01:00
Matthew Waters
863f21b1f6 [564/906] glmemory: remove unused typedef 2014-03-15 18:36:47 +01:00
Matthew Waters
3f94f31c3d [563/906] readd support for hanging GL pipelines e.g. ... ! gleffects ! fakesink 2014-03-15 18:36:47 +01:00
Matthew Waters
6de0b127d7 [562/906] gldisplay: fix download of YUV formats 2014-03-15 18:36:47 +01:00
Matthew Waters
7627755581 [561/906] gldisplay: fix endianess issues on RGB download 2014-03-15 18:36:47 +01:00
Matthew Waters
de25a454ce [559/906] glmixer: pass the mixpad's display to the querying element 2014-03-15 18:36:47 +01:00
Matthew Waters
ce6c6b5065 [555/906] Make the query for a GstGLDisplay a pad peer query
Allows the query to pass through bin boundaries and makes it possible for
arbitrary gl elements to be placed in bins.
2014-03-15 18:36:47 +01:00
Matthew Waters
0ef8174881 [554/906] GstGLMemory: update for GstAllocator API changes 2014-03-15 18:36:47 +01:00
Matthew Waters
3affb44884 [544/906] fix memory leaks from not g_free()ing string returned by gst_element_get_name 2014-03-15 18:36:46 +01:00
Matthew Waters
972cd421c7 [543/906] GstGLDisplay: fix segfault from GST_PTR_FORMAT trying to expand the object 2014-03-15 18:36:46 +01:00
Matthew Waters
fe1ce6a7ff [542/906] GstGLMixer: add allocation and bufferpool methods
based off GstBaseTransform
2014-03-15 18:36:46 +01:00
Matthew Waters
a44326f86e [532/906] GstGLFilter: implement allocation vfuncs 2014-03-15 18:36:45 +01:00
Matthew Waters
ec782a5f27 [528/906] GstGLMeta: seperate upload/download/normal GL caps video formats
differentiate between upload, download and GL caps
2014-03-15 18:36:45 +01:00
Matthew Waters
796d326b74 [527/906] GstGLDisplay: add some trace debugging 2014-03-15 18:36:45 +01:00
Matthew Waters
0e5daa29f7 [524/906] GstGLDisplay: rework the download code
data paramaters now take GstVideoFrame
remove redundant parameters
2014-03-15 18:36:45 +01:00
Matthew Waters
1ec68db8f0 [522/906] GstGLDisplay: add forgotten function definition 2014-03-15 18:36:45 +01:00
Matthew Waters
2141571de9 [521/906] GstGLMemory: update for GstAllocator changes 2014-03-15 18:36:45 +01:00
Matthew Waters
3ff83c0f37 [520/906] GstGLMixer: fix for GstChildProxy changes 2014-03-15 18:36:45 +01:00
Matthew Waters
69997e311f [517/906] add GstGLBufferPool
which adds GstGLMeta to buffers
2014-03-15 18:36:45 +01:00
Matthew Waters
53dddca0f6 [516/906] add skeleton GstGLMeta
the GstVideoMeta _map/unmap functions still need implementing
2014-03-15 18:36:44 +01:00
Matthew Waters
369905e5bd [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
2014-03-15 18:36:44 +01:00
Matthew Waters
1331611094 [514/906] add GstGLMemory and allocator
implement custom GstMemory for GL textures
currently map/unmap returns NULL although it might be favourable to upload/download/cache the image data
2014-03-15 18:36:44 +01:00
Matthew Waters
71c6aae707 [513/906] Remove GstGLBuffer (to be replaced by GstGLMeta) 2014-03-15 18:36:44 +01:00
Matthew Waters
e07dd2908e [512/906] GstGLMixer: update for 1.0 based on the videomixer2 element in -good 2014-03-15 18:36:44 +01:00
Matthew Waters
528816def4 [509/906] GstGLDisplay: update for 1.0 2014-03-15 18:36:44 +01:00
Matthew Waters
4611fd3301 [504/906] GstGLFilter: update for 1.0
-fix up function definitions
-remove _prepare_output_buffer (functionality taken over by GstBufferPool).
2014-03-15 18:36:44 +01:00
Matthew Waters
d66bd69b36 [503/906] Rename GST_BOILERPLATE_* to G_DEFINE_TYPE_* and move _base_init into _class_init 2014-03-15 18:36:44 +01:00
Matthew Waters
6f2acb94c6 [502/906] Update versioning for gstreamer 1.0
Renames GST_MAJORMINOR to GST_API_VERSION in build files
removes -lgstinterfaces from _LDADD flags
2014-03-15 18:36:44 +01:00
Raimo Järvi
fa18db91ed [501/906] Fix building on 64 bit mingw-w64
https://bugzilla.gnome.org/show_bug.cgi?id=676428
2014-03-15 18:36:44 +01:00
Julien Isorce
cb77b00501 [500/906] gldisplay: do not call glCheckFramebufferStatus if 0 is bound
Indeed it may return GL_FRAMEBUFFER_UNDEFINED if there is no
default framebuffer.
It seems to be the case on MacOSX
2014-03-15 18:36:43 +01:00
Julien Isorce
0c7080e7a1 [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
2014-03-15 18:36:43 +01:00
Julien Isorce
5d752d6422 [497/906] filtershader: fix format compiler warnings 2014-03-15 18:36:43 +01:00
Julien Isorce
a1649a497a [495/906] glES2.0: properly use glDeleteShader 2014-03-15 18:36:43 +01:00
Julien Isorce
7e45f26a21 [494/906] cmake build: use config.h from win32/common and add some guidelines 2014-03-15 18:36:43 +01:00
Julien Isorce
201d3992d2 [492/906] glwindow: properly fails if resource not found 2014-03-15 18:36:43 +01:00
Julien Isorce
052c23c3c5 [491/906] glES2.0: properly fails if driver/kernel inconsistency 2014-03-15 18:36:43 +01:00
Julien Isorce
2394987226 [490/906] gldisplay: error out instead of g_assert 2014-03-15 18:36:43 +01:00
Julien Isorce
b88351ad0c [488/906] libvisual-gl: full compatibility with projectM-libvisual if libprojectM >= 2.0.1
Fix bug #310775
2014-03-15 18:36:43 +01:00
Julien Isorce
6f1530c658 [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.
2014-03-15 18:36:43 +01:00
Julien Isorce
06d73faac4 [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
2014-03-15 18:36:43 +01:00
Julien Isorce
5091066426 [483/906] glelements: do not leak parent when using gst_pad_get_parent 2014-03-15 18:36:43 +01:00
Julien Isorce
f639d6096d [481/906] feature checking: error out instead of doing nothing if an OpenGL feature is not present
Fix bug #572767
2014-03-15 18:36:42 +01:00
Julien Isorce
9e535a0410 [480/906] win32 builds: add glshader filter sources to vs9 and codeblocks
Also fix some warnings from msvc9 and mingw-3.4.5
2014-03-15 18:36:42 +01:00
Руслан Ижбулатов
e44c1040fe [479/906] gstglshadervariables: strtok_r is not multiplatform
Fix bug #664367
2014-03-15 18:36:42 +01:00
Wei Feng
2509eab48b [478/906] OpenGL ES 2.0: include glib.h to use G_BEGIN_DECLS in gstgles2.h
Fix bug #631019
2014-03-15 18:36:42 +01:00
Julien Isorce
591b4282ed [477/906] OpenGL ES 2.0: fix build since glfiltershader changes 2014-03-15 18:36:42 +01:00
Antoni Silvestre
b640cbc542 [476/906] OpenGL ES 2.0: fix build and disable some examples
Fix bug #631019
2014-03-15 18:36:42 +01:00
Luc Deschenaux
268f1a30b2 [471/906] glshader: add dynamic fragment shader filter
Also add fragment shader parser
Fix bug #600195
2014-03-15 18:36:42 +01:00
Julien Isorce
d21aaa22bf [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
2014-03-15 18:36:42 +01:00
Tim-Philipp Müller
0cefeead18 [463/906] Add some more G_{BEGIN,END}_DECLS to public headers
https://bugzilla.gnome.org/show_bug.cgi?id=637260
2014-03-15 18:36:41 +01:00
Stefan Kost
edefb7826c [462/906] various: add missing G_PARAM_STATIC_STRINGS flags
Canonicalize property names as needed. Includes some gst-indent changes as well :/
2014-03-15 18:36:41 +01:00
Jan Schmidt
f9c64dfdea [459/906] Fix distcheck. 2014-03-15 18:36:41 +01:00
Julien Isorce
2c43a348fa [456/906] glfilter/glmixer/gltestsrc/glupload: throw an element error if no parent bin
Fixes bug #602153
2014-03-15 18:36:41 +01:00
Julien Isorce
2b46c87bd0 [455/906] glimagesink: handle pixel-aspect-ratio 2014-03-15 18:36:41 +01:00
Filippo Argiolas
270ce448e4 [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.
2014-03-15 18:36:40 +01:00
Julien Isorce
b0352753d4 [432/906] GstGLDisplay: this is GL_DEPTH24_STENCIL8_EXT, not GL_DEPTH24_STENCIL8_EXT 2014-03-15 18:36:40 +01:00
Pierre Pouzol
2beb8aa729 [431/906] GstGLDisplay: enable stencil buffer when using framebuffer objects.
Fixes Bug #612159
2014-03-15 18:36:40 +01:00
Nicholas Panayis
e6195bf5a3 [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
2014-03-15 18:36:39 +01:00
Julien Isorce
8937128d62 [412/906] Cocoa backend: improve support on GNUStep 2014-03-15 18:36:38 +01:00
Julien Isorce
1ae95c42de [411/906] gstglmixer: copy/past recent changes from gstvideomixer 2014-03-15 18:36:38 +01:00
Julien Isorce
e356b7d1ed [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.
2014-03-15 18:36:38 +01:00
Julien Isorce
9e22a5e0e6 [407/906] winCE backend: fix build 2014-03-15 18:36:38 +01:00
Julien Isorce
3e1bffc802 [406/906] glimagesink: add a client-data property
Also add it to glfilterapp.

Fixes #559131
2014-03-15 18:36:38 +01:00
Julien Isorce
a6a5ee2839 [405/906] glfilter: add external-opengl-context property
It repairs the cluttershare and sdlshare example
2014-03-15 18:36:38 +01:00
Jan Schmidt
d9c6eaf72f [403/906] gstglmixer: Initialise the debug category
Initialise the gstglmixer debug category before using it.
2014-03-15 18:36:38 +01:00
Julien Isorce
32e401427f [400/906] gstgldisplay: no need the I420 work around if ATI Mobility
fix #588653
2014-03-15 18:36:38 +01:00
Julien Isorce
48575c93ec [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.
2014-03-15 18:36:38 +01:00
Pratheesh Gangadhar
34c5e17187 [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
2014-03-15 18:36:37 +01:00
Julien Isorce
aeb793497d [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
2014-03-15 18:36:37 +01:00
Julien Isorce
954b3a52c8 [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.
2014-03-15 18:36:37 +01:00
Julien Isorce
62f961a28e [389/906] fix codeblocks build on win32 2014-03-15 18:36:37 +01:00
Julien Isorce
42720ef3ff [388/906] just fix builds and indent 2014-03-15 18:36:37 +01:00
Julien Isorce
db7d436bd8 [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.
2014-03-15 18:36:37 +01:00
Julien Isorce
65f4d40e6d [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.
2014-03-15 18:36:37 +01:00
Stefan Kost
3b0a88850d [384/906] build: use <stdio.h> / "stdio.h" 2014-03-15 18:36:37 +01:00
Stefan Kost
252b406547 [383/906] build: include <stdio.h> when using printf & co. 2014-03-15 18:36:37 +01:00
Julien Isorce
3700180345 [382/906] ES2.0: remove warnings
Partially fix #593786
2014-03-15 18:36:37 +01:00
Julien Isorce
c2c15214a8 [381/906] EGL and GLX:: set a minimum depth size 2014-03-15 18:36:37 +01:00
Julien Isorce
30631c4626 [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.
2014-03-15 18:36:36 +01:00
Julien Isorce
192bf749ea [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.
2014-03-15 18:36:36 +01:00
Stefan Kost
1cb459d4d5 [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.
2014-03-15 18:36:36 +01:00
Julien Isorce
d9c055246f [369/906] define missing glew macro on older versions 2014-03-15 18:36:36 +01:00
Julien Isorce
3107266d81 [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.
2014-03-15 18:36:36 +01:00
Julien Isorce
ca891db2a6 [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
2014-03-15 18:36:36 +01:00
Julien Isorce
579b74d845 [364/906] make the cmake build work on MacOSX
We can now generate a Xcode project (or Unix Makfiles),
see INSTALL file
2014-03-15 18:36:36 +01:00
Julien Isorce
89fe233c52 [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
2014-03-15 18:36:36 +01:00
Julien Isorce
a9ab2abea4 [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.
2014-03-15 18:36:36 +01:00
Jan Schmidt
1a070f378b [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.
2014-03-15 18:36:35 +01:00
Jan Schmidt
b1dccdb13c [357/906] x11: Don't crash when the X11 display is not available.
Error out cleanly instead of crashing when the X11 display can't
be contacted.
2014-03-15 18:36:35 +01:00
Jan Schmidt
f5ac0a784d [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.
2014-03-15 18:36:35 +01:00