Commit graph

70 commits

Author SHA1 Message Date
Matthew Waters
d5c3693791 gl: split glcolorconvert usage from glupload
the separation allows the transfer operation to occur in a separate
thread/time which may increase performance in specific circumstances.
2015-01-14 22:22:13 +11:00
Matthew Waters
f021549294 gl: fixup vao and vbo usage for legacy GL 2014-12-11 19:41:23 +11:00
Matthew Waters
6361df77e8 glimagesink: properly handle the !opengl3 case
https://bugzilla.gnome.org/show_bug.cgi?id=740012
2014-11-30 00:44:46 +11:00
Matthew Waters
3c1e77eb31 gldisplay: implement runtime GL api filtering
Needed so that the pipeline/application can limit the choice of GL api
to what it supports
2014-11-28 09:14:26 +11:00
Matthew Waters
6bd1150ca8 gl: remove the use of glu 2014-11-28 09:14:26 +11:00
Matthew Waters
f2af65ee2d gl: add a sync meta for synchronizing across GL contexts
A context can create a GLsync object that can be waited on in order
to ensure that GL resources created in one context are able to be
used in another shared context without any chance of reading invalid
data.

This meta would be placed on buffers that are known to cross from
one context to another.  The receiving element would then wait
on the sync object to ensure that the data to be used is complete.
2014-11-28 09:14:25 +11:00
Matthew Waters
f0d2346c52 glimagesink: use vbo's and vao's for gl3 2014-11-28 09:14:25 +11:00
Matthew Waters
a7ce611970 glimagesink: only attempt a resize when the window has already resized
fixes a black startup screen on wayland
2014-11-27 13:03:21 +11:00
Matthew Waters
810d38c29f glupload: rearchitecture for non GLMemory inputs/outputs
Allows other memory types to be implemented/returned/used by the caller.
2014-11-23 17:13:36 +11:00
Vineeth T M
47f3a1954e glimagesink: critical error while seek playback-test(stop state)
If we seek when media is in stop state, playback-test gives
critical error, since context of glimagesink is destroyed during stop.
But since context is not present, we need not handle send_event in glimagesink
Hence adding a condition to check if context is valid.

https://bugzilla.gnome.org/show_bug.cgi?id=740305
2014-11-20 15:39:42 +11:00
Matthew Waters
5c48440c9a glimagesink: don't set the upload to NULL on the drain query
https://bugzilla.gnome.org/show_bug.cgi?id=732694
2014-11-12 11:44:43 +11:00
Julien Isorce
004a414b4a glimagesink: release stored buffers on drain query
Fixes https://bugzilla.gnome.org/show_bug.cgi?id=732694
2014-11-12 00:08:04 +00:00
Alessandro Decina
7d48fe1c1e glimagesink: don't make gst_glimage_sink_handle_events call _ensure_gl_setup
gst_glimage_sink_handle_events can be called from the overlay interface and from
the main thread before GL is setup. Before this change, that would call
_ensure_gl_setup() and deadlock on OSX.

Change things so that it's always safe to call gst_glimage_sink_handle_events()
without stuff deadlocking.
2014-11-07 00:22:09 +01:00
Alessandro Decina
b60fe0271f glimagesink: fix possible deadlock on osx
Remove gst_glimage_sink_handle_events call in gst_glimage_sink_init. It was
unnecessary and when the element was instantiated from the main thread, caused a
deadlock in OSX creating the context (thread).
2014-11-07 00:22:09 +01:00
Matthew Waters
7e62c790d2 glimagesink: clamp the resize width/height to >= 1 to avoid a GL error 2014-11-07 10:03:08 +11:00
Lubosz Sarnecki
6702811e14 glimagesink: implement gst_video_overlay_handle_events
https://bugzilla.gnome.org/show_bug.cgi?id=736035
2014-11-06 16:04:11 +11:00
Matthew Waters
0537cbfa5b glimagesink: resize the viewport correctly on a caps change
with force-aspect-ratio=true, if the width or height changed, the
viewport wasn't being updated to respect the new video width and height
until a resize occured.
2014-10-31 21:29:26 +11:00
Lubosz Sarnecki
27da1e5aaf satisfy gst-indent 2014-10-29 23:42:54 +11:00
Matthew Waters
e40d70c69a gl: propogate other-context using GstContext 2014-10-23 23:58:33 +11:00
Sebastian Dröge
302034ac4c glimagesink: Only finalize the other context in finalize()
Otherwise we change a value of a property when going to READY state,
which is unexpected behaviour.
2014-10-13 13:28:57 +02:00
Sebastian Dröge
d8a262a589 glimagesink: Don't leak other-context 2014-10-13 11:57:22 +02:00
Matthew Waters
5b8d7a443e 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
2014-09-21 21:36:49 +10:00
Sanjay NM
a1ae26acbd gl: Removed unreachable break, unused variable
https://bugzilla.gnome.org/show_bug.cgi?id=736957
2014-09-19 21:48:14 +10:00
Sebastian Dröge
e4b084acd9 glimagesink: Add missing break to switch
CID 1232801
2014-08-28 16:42:30 +03:00
Lubosz Sarnecki
ddaaff3376 glimagesink: expose context
* expose context in draw / reshape callbacks
* add context property

https://bugzilla.gnome.org/show_bug.cgi?id=734482
2014-08-21 17:38:57 +10:00
Matthew Waters
c6706adfcc glimagesink: unref the window on navigation event
plugs a memory leak
2014-08-19 14:24:02 +10:00
Tim-Philipp Müller
c81a2d1c6c opengl: update element docs for 1.x 2014-08-10 18:07:28 +01:00
Vasilis Liaskovitis
4dacc4ba55 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
2014-08-07 13:55:02 +10:00
Matthew Waters
707cb58004 gl: document GST_GL_* environment variables
https://bugzilla.gnome.org/show_bug.cgi?id=733245
2014-08-01 16:43:47 +10:00
Matthew Waters
13960f0043 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
2014-07-29 13:25:22 +10:00
Matthew Waters
13c63154b0 glimagesink: silence gsignal warning
instance '0xblah' has no handler with id '13'
2014-07-27 13:27:10 +10:00
Matthew Waters
5291ba37d9 glimagesink: remove extra argument from debug call 2014-07-24 13:05:00 +10:00
Vasilis Liaskovitis
90a4444609 glimagesink: Add navigation interface and callbacks for GstGLWindow mouse/key signals
https://bugzilla.gnome.org/show_bug.cgi?id=703486
2014-07-24 12:48:57 +10:00
Nicolas Dufresne
ab29217726 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.
2014-07-09 15:03:53 -04:00
Sebastian Dröge
a84320be50 glimagesink: Chain up to the parent class' finalize function 2014-06-29 22:26:47 +02:00
Sebastian Dröge
f068b64285 glimagesink: Make sure to always unref the display
Even if we didn't create a context yet.
2014-06-29 22:25:43 +02:00
Matthew Waters
2ed84ac40f glimagesink: replace pointer properties with signals
Based on patch by Mathieu Duponchelle <mathieu.duponchelle@epitech.eu>

https://bugzilla.gnome.org/show_bug.cgi?id=704507
2014-06-12 12:18:23 +10:00
Matthieu Bouron
dac4816823 glimagesink: improve state change debug message 2014-06-03 14:08:34 +10:00
Matthew Waters
5eb4934750 glimagesink: unref the old buffer outside the lock
it could very well deadlock

https://bugzilla.gnome.org/show_bug.cgi?id=723529
2014-05-30 11:46:00 +10:00
Matthew Waters
1cb7e22b98 Revert "[880/906] glimagesink: remove unused stored_buffer field"
This reverts commit af3a68db7d.

Conflicts:
	ext/gl/gstglimagesink.c

https://bugzilla.gnome.org/show_bug.cgi?id=723529
2014-05-30 11:35:04 +10:00
Matthew Waters
da35876537 glfeature: remove GST_GL_API_GLES3
instead check the gl version using gst_gl_context_check_gl_version()
2014-05-30 10:29:37 +10:00
Matthew Waters
6ce3b82efe gl/upload: add GstGLUploadMeta object
That simply deals with the provider aspect of GstVideoGLTextureUploadMeta.
2014-05-28 14:41:35 +10:00
Julien Isorce
6c92286c6e glimagesink: make it actually honor show-preroll-frame property
https://bugzilla.gnome.org/show_bug.cgi?id=730802
2014-05-27 11:28:27 +01:00
Matthew Waters
37c08c58c5 gl/eglimage: add eglimage context feature
Allows us to selectively use EGLImages only when available

https://bugzilla.gnome.org/show_bug.cgi?id=728234
2014-05-20 23:37:52 +10:00
Sebastian Dröge
8070b4e043 glimagesink: Check if context creation failed before trying to use it
Otherwise we will cause assertions everywhere by passing NULL to functions
and eventually crash when dereferencing a NULL pointer.

https://bugzilla.gnome.org/show_bug.cgi?id=730069
2014-05-19 12:25:51 +02:00
Matthew Waters
a49a371710 gl/upload: implement lazy init
Rename init_format to set_format
2014-05-08 15:33:43 +10:00
Matthew Waters
a27589629d gl: advertise GstGLMemory usage in the caps as capsfeatures
https://bugzilla.gnome.org/show_bug.cgi?id=729658
2014-05-07 21:48:57 +10:00
Matthew Waters
6f4fd70867 gl/sink: make sure we always initialize the upload object
https://bugzilla.gnome.org/show_bug.cgi?id=729542
2014-05-07 09:12:23 +10:00
Matthew Waters
dfc6745143 gl: use the bufferpool's upload when available
Avoids duplicating GL resources

https://bugzilla.gnome.org/show_bug.cgi?id=728872
2014-05-02 15:59:28 +10:00
Julien Isorce
a20f17e29c glimagesink: use new helper function to avoid duplicating default shader text 2014-04-30 15:35:49 +01:00