Commit graph

115 commits

Author SHA1 Message Date
Sebastian Dröge
9d1df014fd glmixer: Add other-context property 2017-12-09 19:31:48 +00:00
Vivia Nikolaidou
4fa5392e14 gloverlay: And fix another unused variable compiler warning 2017-12-09 19:31:48 +00:00
Vivia Nikolaidou
53213d924e gloverlay: Fix unused variable compiler warning when compiling without desktop GL 2017-12-09 19:31:48 +00:00
Wang Xin-yu (王昕宇)
924e017bda gltestsrc: implement checkers pattern with GLSL
https://bugzilla.gnome.org/show_bug.cgi?id=737505
2017-12-09 19:31:48 +00:00
Lubosz Sarnecki
28d4d57180 gltransformation: graphene multiplication order has changed
https://bugzilla.gnome.org/show_bug.cgi?id=733510
2017-12-09 19:31:47 +00:00
Matthew Waters
d30a476c1c glvideomixer: update element documentation 2017-12-09 19:31:47 +00:00
Matthew Waters
aeb60d850d Revert accidental push: "gltestsrc: implement checkers pattern with GLSL"
This reverts commit eae09179f0.
2017-12-09 19:31:47 +00:00
Wang Xin-yu (王昕宇)
14f297b61c gltestsrc: implement checkers pattern with GLSL 2017-12-09 19:31:47 +00:00
Matthew Waters
7d99c66ca5 gloverlay: fix zero output frames with YUY2/UYVY
also, be nice and disable blending for other elements
2017-12-09 19:31:47 +00:00
Matthew Waters
0e89ab4c91 gloverlay: protect desktop gl specific tokens with #if 2017-12-09 19:31:47 +00:00
Matthew Waters
f4afec4657 gloverlay: free the image memory every time the location changes
fixes a memory leak
2017-12-09 19:31:47 +00:00
Sebastian Dröge
17fa8eac04 gloverlay: Include into the build with GLES2 only too 2017-12-09 19:31:47 +00:00
Matthew Waters
1c4e5c2aeb gltestsrc: free the shader on stop 2017-12-09 19:31:47 +00:00
Matthew Waters
f5006bdf09 glvideomixer: fix blending with low-alpha sources
We also need to apply the blend paramaters to the alpha channel otherwise
the output of the blend will appear black at low alpha values (< 0.2).
2017-12-09 19:31:46 +00:00
Matthew Waters
96208c1694 gloverlay: reimplement everything
- update for shaders
 - add alpha property
 - image placement properties shamelessly borrowed from gdkpixbufoverlay
 - image placement properties are GstController able
 - use GstGLMemory for the overlay image data
 - add support for gles2
2017-12-09 19:31:46 +00:00
Matthew Waters
07489f7b76 glvideomixer: skip input frames with an alpha of 0 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
Lubosz Sarnecki
3fcfcbbb87 gltestsrc: add Mandelbrot fractal pattern.
https://bugzilla.gnome.org/show_bug.cgi?id=735131
2017-12-09 19:31:46 +00:00
Lubosz Sarnecki
67732e4883 gltestsrc: implement snow pattern with GLSL.
https://bugzilla.gnome.org/show_bug.cgi?id=735131
2017-12-09 19:31:46 +00:00
Matthew Waters
6491af9ffc glupload: provide the output buffer that is rendered into
Allows callers to properly reference count the buffers used for
rendering.

Fixes a redraw race in glimagesink where the previous buffer
(the one used for redraw operations) is freed as soon as the next
buffer is uploaded.

1. glimagesink uploads in _prepare() to texture n
1.1 glupload holds buffer n
2. glimagesink _render()s texture n
3. glimagesink uploads texture n+1
3.1 glupload free previous buffer which deletes texture n
3.2 glupload holds buffer n+1
4. glwindow resize/expose
5. glimagesink redraws with texture n

The race is that the buffer n (the one used for redrawing) is freed as soon as
the buffer n+1 arrives.  There could be any amount of time and number of
redraws between this event and when buffer n+1 is actually rendered and thus
replaces buffer n as the redraw source.

https://bugzilla.gnome.org/show_bug.cgi?id=736740
2017-12-09 19:31:46 +00:00
Sanjay NM
4f6e9f4e41 gl: Removed unreachable break, unused variable
https://bugzilla.gnome.org/show_bug.cgi?id=736957
2017-12-09 19:31:46 +00:00
Ognyan Tonchev
3a70f04113 gltestsrc: do not leak pool in error cases
https://bugzilla.gnome.org/show_bug.cgi?id=736730
2017-12-09 19:31:46 +00:00
Ognyan Tonchev
276b682559 glmixer: do not leak pool in error cases
https://bugzilla.gnome.org/show_bug.cgi?id=736729
2017-12-09 19:31:46 +00:00
Lubosz Sarnecki
e3aa918032 gltransformation: fix issues and expose mvp matrix
* aspect should not be 0 on init
* rename fovy to fov
* add mvp to properties as boxed graphene type
* fix transformation order. scale first
* clear color with 1.0 alpha

https://bugzilla.gnome.org/show_bug.cgi?id=734223
2017-12-09 19:31:46 +00:00
Sebastian Dröge
2c0f8e1107 glimagesink: Add missing break to switch
CID 1232801
2017-12-09 19:31:46 +00:00
Lubosz Sarnecki
e266f6517d glimagesink: expose context
* expose context in draw / reshape callbacks
* add context property

https://bugzilla.gnome.org/show_bug.cgi?id=734482
2017-12-09 19:31:45 +00:00
Matthew Waters
94efcd2595 glmixer: unref the GstGLUpload in the pad if freed while running
Dynamic pipelines that get and release the sink pads will finalize
the pad without going through gst_gl_mixer_stop() which is where the
upload object is usually freed.  Don't leak objects in such case.
2017-12-09 19:31:45 +00:00
Wang Xin-yu (王昕宇)
922cb97758 glvideomixer: avoid gl resource race condition between different thread
https://bugzilla.gnome.org/show_bug.cgi?id=734830
2017-12-09 19:31:45 +00:00
Matthew Waters
c9d63878dd glvideomixer: don't clobber unnecessary GstVideoInfo fields
otherwise we might clobber other important fields such as the frame rate.
2017-12-09 19:31:45 +00:00
Matthew Waters
fc1b2298d6 glvideomixer: get the attribute from the correct shader 2017-12-09 19:31:45 +00:00
Matthew Waters
beb9b95d39 glimagesink: unref the window on navigation event
plugs a memory leak
2017-12-09 19:31:45 +00:00
Tim-Philipp Müller
6bbcefe029 opengl: update element docs for 1.x 2017-12-09 19:31:45 +00:00
Matthew Waters
e18905d057 glvideomixer: add a background property
That's compatible with the compositor/videomixer property

https://bugzilla.gnome.org/show_bug.cgi?id=731954
2017-12-09 19:31:45 +00:00
Vasilis Liaskovitis
7b1a853888 GstGLWindow, GstGLImagesink, x11: Scale navigation events on resized windows
If window is resized, GstStructure pointer values have to be rescaled to
original geometry. A get_surface_dimensions GLWindow class method is added for
this purpose and used in the navigation send_event function.

https://bugzilla.gnome.org/show_bug.cgi?id=703486
2017-12-09 19:31:45 +00:00
Matthew Waters
d3804ee7aa gl: document GST_GL_* environment variables
https://bugzilla.gnome.org/show_bug.cgi?id=733245
2017-12-09 19:31:45 +00:00
Matthew Waters
84a50aefe1 glimagesink: keep the uploaded buffer around on successful redisplay
We might need it later to perform a redisplay.  GstGLUpload will take
of releasing the previous buffer when it receives a new buffer.

https://bugzilla.gnome.org/show_bug.cgi?id=733726
2017-12-09 19:31:44 +00:00
Matthew Waters
e6d5dd04d5 glimagesink: silence gsignal warning
instance '0xblah' has no handler with id '13'
2017-12-09 19:31:44 +00:00
Matthew Waters
884be3de11 glimagesink: remove extra argument from debug call 2017-12-09 19:31:44 +00:00
Vasilis Liaskovitis
c064e4e75e glimagesink: Add navigation interface and callbacks for GstGLWindow mouse/key signals
https://bugzilla.gnome.org/show_bug.cgi?id=703486
2017-12-09 19:31:44 +00:00
Wang Xin-yu (王昕宇)
2ce11e4bac gl: fix multi gl object leaks
1. fix FBO leaks in decide_allocation
2. fix texture leaks in decide_allocation and reset
3. fix texture leaks in FBO incomplete error path
2017-12-09 19:31:44 +00:00
Sebastian Dröge
f942221ebd gl: Always build gstglmixer, not only when full OpenGL support is enabled 2017-12-09 19:31:44 +00:00
Sebastian Dröge
b02a6a98b2 gl: Link to all required libraries but not more 2017-12-09 19:31:44 +00:00
Sebastian Dröge
ab7a152cd4 gl: Move GstGLMixer to the plugin for now
It depends on GstAggregator and we don't want to install headers
for that yet.

https://bugzilla.gnome.org/show_bug.cgi?id=732207
2017-12-09 19:31:44 +00:00
Nicolas Dufresne
8196b9629c glimagesink: Keep aspect ratio by default
The expected default behaviour for video sink is to maintain the
aspect ratio. Fix the default value to reflect this. The property
default was already TRUE, but the value was not initially TRUE.
2017-12-09 19:31:44 +00:00
Sebastian Dröge
23eb9beef8 glimagesink: Chain up to the parent class' finalize function 2017-12-09 19:31:44 +00:00
Sebastian Dröge
8f6224c0ed glimagesink: Make sure to always unref the display
Even if we didn't create a context yet.
2017-12-09 19:31:44 +00:00
Matthew Waters
025d6a87ba glshader: enable glshader on GLES2 2017-12-09 19:31:43 +00:00
Julien Isorce
e5c3605056 glcolorscale: do passthrough on same caps
See https://bugzilla.gnome.org/show_bug.cgi?id=732178
2017-12-09 19:31:43 +00:00
Julien Isorce
c18a109b42 gl: enable glvideomixer on GLES2 2017-12-09 19:31:43 +00:00
Matthew Waters
d86208e6ad glvideomixer: bas output width/height on the pad properties
Allows automatic negotiation of the size in the following case:
gst-launch-1.0 glvideomixer name=m sink_0::xpos=0 sink_1::xpos=320 ! glimagesink \
    videotestsrc ! m. \
    videotestsrc pattern=1 ! m.

https://bugzilla.gnome.org/show_bug.cgi?id=731878
2017-12-09 19:31:43 +00:00