platform/upstream/gst-plugins-good.git
7 years agogl: do not include GL headers in public gstgl headers
Julien Isorce [Fri, 7 Jul 2017 15:15:12 +0000 (16:15 +0100)]
gl: do not include GL headers in public gstgl headers

Except for gst/gl/gstglfuncs.h

It is up to the client app to include these headers.
It is coherent with the fact that gstreamer-gl.pc does not
require any egl.pc/gles.pc. I.e. it is the responsability
of the app to search these headers within its build setup.

For example gstreamer-vaapi includes explicitly EGL/egl.h
and search for it in its configure.ac.

For example with this patch, if an app includes the headers
  gst/gl/egl/gstglcontext_egl.h
  gst/gl/egl/gstgldisplay_egl.h
  gst/gl/egl/gstglmemoryegl.h
it will *no longer* automatically include EGL/egl.h and GLES2/gl2.h.
Which is good because the app might want to use the gstgl api only
without the need to bother about gl headers.

Also added a test: cd tests/check && make libs/gstglheaders.check

https://bugzilla.gnome.org/show_bug.cgi?id=784779

7 years agoRemove plugin specific static build option
Nicolas Dufresne [Tue, 16 May 2017 18:05:52 +0000 (14:05 -0400)]
Remove plugin specific static build option

Static and dynamic plugins now have the same interface. The standard
--enable-static/--enable-shared toggle are sufficient.

7 years agodocs: Port all docstring to gtk-doc markdown
Thibault Saunier [Wed, 8 Mar 2017 18:01:13 +0000 (15:01 -0300)]
docs: Port all docstring to gtk-doc markdown

7 years agogl: GL_ARRAY_BUFFER is not a part of VAO state
Matthew Waters [Tue, 14 Mar 2017 03:15:00 +0000 (14:15 +1100)]
gl: GL_ARRAY_BUFFER is not a part of VAO state

As a result we need to bind it on every draw in order to have the
correct state in the GL state machine.

7 years agoRename plugin filesnames to match plugin names
Nicolas Dufresne [Sat, 4 Mar 2017 16:03:53 +0000 (11:03 -0500)]
Rename plugin filesnames to match plugin names

- libgstgtksink.so -> libgstgtk.so
- libgstteletextdec.so -> libgstteletex.so
- libgstcamerabin2.so -> libgstcamerabin.so
- libgstonvif.so -> libgstrtponvif.so (meson only)
- sdp -> sdpelem (avoid clash with libgstsdp)
- gstsiren -> siren
- libgstkmssink.so -> libgstkms.so

https://bugzilla.gnome.org/show_bug.cgi?id=779344

7 years agogl/examples/gtk: fixed compilation on systems without GL_GEOMETRY_SHADER
Juan Pablo Ugarte [Wed, 11 Jan 2017 13:32:23 +0000 (10:32 -0300)]
gl/examples/gtk: fixed compilation on systems without GL_GEOMETRY_SHADER

https://bugzilla.gnome.org/show_bug.cgi?id=777143

7 years agogl/utils: also take care of the local GL context in query functions
Matthew Waters [Thu, 12 Jan 2017 10:35:25 +0000 (21:35 +1100)]
gl/utils: also take care of the local GL context in query functions

Simplifies a deduplicates a lot of code in elements retrieving/setting
the local OpenGL context.

8 years agogl: GST_GL_TYPE -> GST_TYPE_GL
Matthew Waters [Wed, 5 Oct 2016 01:19:12 +0000 (12:19 +1100)]
gl: GST_GL_TYPE -> GST_TYPE_GL

Some deprecated symbols are kept for backwards compatibility

8 years agomeson: add build files for the gtk plugin
Matthew Waters [Fri, 9 Sep 2016 06:36:03 +0000 (16:36 +1000)]
meson: add build files for the gtk plugin

8 years agogtk: Fix logging in base widget and fix desc of GL sink
Nirbheek Chauhan [Sun, 27 Mar 2016 08:59:58 +0000 (14:29 +0530)]
gtk: Fix logging in base widget and fix desc of GL sink

Set a default category for gtkgstbasewidget lest the logging go to the 'default'
category where it can't be found easily

8 years agogtk/gl: don't assert when gdk doesn't provide a GL context
Matthew Waters [Fri, 25 Mar 2016 06:49:14 +0000 (17:49 +1100)]
gtk/gl: don't assert when gdk doesn't provide a GL context

Allows the application to check whether gtkglsink is supported by setting
the element to READY.

https://bugzilla.gnome.org/show_bug.cgi?id=764148

8 years agogtkbasesink: post message to application for unhandled keyboard/mouse events
Vineeth TM [Wed, 9 Mar 2016 23:44:57 +0000 (08:44 +0900)]
gtkbasesink: post message to application for unhandled keyboard/mouse events

https://bugzilla.gnome.org/show_bug.cgi?id=763403

8 years agobad: use new gst_element_class_add_static_pad_template()
Vineeth TM [Fri, 4 Mar 2016 06:50:26 +0000 (15:50 +0900)]
bad: use new gst_element_class_add_static_pad_template()

https://bugzilla.gnome.org/show_bug.cgi?id=763081

8 years agogtk: examples: #define GST_USE_UNSTABLE_API and link with X11_LIBS
Sebastian Dröge [Sat, 5 Mar 2016 09:38:46 +0000 (11:38 +0200)]
gtk: examples: #define GST_USE_UNSTABLE_API and link with X11_LIBS

X11_LIBS is needed for XInitThreads() and without the #define we get
warnings about the GL API being still unstable.

8 years agogtk(gl)sink: remove the signal handlers on finalize
Matthew Waters [Tue, 16 Feb 2016 08:59:13 +0000 (19:59 +1100)]
gtk(gl)sink: remove the signal handlers on finalize

It's possible that the sink element will be freed before the widget is
destroyed.  When the widget was eventually destroyed, it was attempting to
access member variables of the freed sink struct which resulted in undefined
behaviour.

Fix by disconnecting our signal on finalize.

https://bugzilla.gnome.org/show_bug.cgi?id=762098

8 years agoglsyncmeta: separate out gpu/cpu waits.
Matthew Waters [Tue, 9 Feb 2016 01:14:04 +0000 (12:14 +1100)]
glsyncmeta: separate out gpu/cpu waits.

CPU waits are more expensive and are only required if the CPU is ever going to
access the data. GPU waits perform inter-context synchronisation and are cheaper
as they don't require CPU intervention.

8 years agoRemove unnecessary NULL checks before g_free()
Reynaldo H. Verdejo Pinochet [Tue, 17 Nov 2015 23:23:17 +0000 (15:23 -0800)]
Remove unnecessary NULL checks before g_free()

g_free() is NULL-safe

9 years agogtk: add the overlaycomposition feature to the template caps
Matthew Waters [Tue, 10 Nov 2015 01:32:39 +0000 (12:32 +1100)]
gtk: add the overlaycomposition feature to the template caps

There is a possibility that the _get_caps impl will be called with the
feature in the filter caps which when interecting with the template,
will return EMPTY and therefore fail negotiation.

https://bugzilla.gnome.org/show_bug.cgi?id=757854

9 years agogl: be consistent in gobject boilerpate
Matthew Waters [Mon, 19 Oct 2015 04:15:30 +0000 (15:15 +1100)]
gl: be consistent in gobject boilerpate

GST_GL_IS_* vs GST_IS_GL_*

git grep -l 'GST_GL_IS_' | xargs sed -i 's/GST_GL_IS_/GST_IS_GL_/g'

9 years agoglshaderelement: implement on-demand create-shader signalling
Matthew Waters [Sat, 17 Oct 2015 04:26:46 +0000 (15:26 +1100)]
glshaderelement: implement on-demand create-shader signalling

One may not have an GstGLContext available or current in the thread where one
would need to update the shader.  Support this by signalling create-shader
whenever the one-shot 'update-shader' is set to TRUE.

9 years agogtk: separate out the widget/window destroy callbacks
Matthew Waters [Fri, 16 Oct 2015 15:40:50 +0000 (02:40 +1100)]
gtk: separate out the widget/window destroy callbacks

Fixes assertion due to the sink_finalize() being run before the widget destroy
callback.

https://bugzilla.gnome.org/show_bug.cgi?id=755969

9 years agogl/examples: add a live shader demo using the new GstGLSLStage
Matthew Waters [Fri, 16 Oct 2015 14:08:29 +0000 (01:08 +1100)]
gl/examples: add a live shader demo using the new GstGLSLStage

Implemented with videotestsrc ! glshader ! glupload ! gtkglsink

Errors on an invalid shader compilation are ignored however any error
provided by the glsl compiler is printed to stdout.

9 years agoglshader: port to using GstGLSLStage objects for string management
Matthew Waters [Fri, 4 Sep 2015 06:02:32 +0000 (16:02 +1000)]
glshader: port to using GstGLSLStage objects for string management

A GstGLShader is now simply a collection of stages that are
compiled and linked together into a program.  The uniform/attribute
interface has remained the same.

9 years agogtk: add some GL debug statements to show up in GL traces
Matthew Waters [Tue, 29 Sep 2015 12:57:52 +0000 (22:57 +1000)]
gtk: add some GL debug statements to show up in GL traces

9 years agogtk: fix assertion when the element has no peer
Matthew Waters [Mon, 28 Sep 2015 14:25:00 +0000 (00:25 +1000)]
gtk: fix assertion when the element has no peer

When proxying keyboard/navigation/mouse events, only unref a successfully
retreived peer pad.

https://bugzilla.gnome.org/show_bug.cgi?id=755738

9 years agogtk: Only run from the main thread in stop() if we created the window
Sebastian Dröge [Thu, 24 Sep 2015 16:51:39 +0000 (18:51 +0200)]
gtk: Only run from the main thread in stop() if we created the window

We're not doing anything at all from the main thread in other cases.

9 years agogtk: When setting format check if pending format changed
Thibault Saunier [Thu, 24 Sep 2015 13:52:40 +0000 (15:52 +0200)]
gtk: When setting format check if pending format changed

In case the format changed fast and the pending format is different
than the currently set but the currently set is equal to the pending
one we could end up having mismatch between the finally set format
and the data stream format.

https://bugzilla.gnome.org/show_bug.cgi?id=755542

9 years agogtk: Do not forget to release OBJECT_LOCK on error path
Thibault Saunier [Thu, 24 Sep 2015 13:51:28 +0000 (15:51 +0200)]
gtk: Do not forget to release OBJECT_LOCK on error path

https://bugzilla.gnome.org/show_bug.cgi?id=755542

9 years agogtk: Factor out a function to run a function on main thread
Thibault Saunier [Thu, 24 Sep 2015 09:37:04 +0000 (11:37 +0200)]
gtk: Factor out a function to run a function on main thread

https://bugzilla.gnome.org/show_bug.cgi?id=755251

9 years agogtk: Marshall state changes in the main thread
Thibault Saunier [Thu, 24 Sep 2015 08:51:31 +0000 (10:51 +0200)]
gtk: Marshall state changes in the main thread

Gtk is not MT safe thus we need to make sure that everything is done
in the main thread when working with it.

https://bugzilla.gnome.org/show_bug.cgi?id=755251

9 years agogtksink: Do not show window until we reach the PAUSED state
Thibault Saunier [Wed, 23 Sep 2015 09:42:51 +0000 (11:42 +0200)]
gtksink: Do not show window until we reach the PAUSED state

https://bugzilla.gnome.org/show_bug.cgi?id=755459

9 years agogtksink: Do not re destroy the GtkWindow if destroyed by the user
Thibault Saunier [Mon, 21 Sep 2015 08:47:15 +0000 (10:47 +0200)]
gtksink: Do not re destroy the GtkWindow if destroyed by the user

Otherwise we will get an ASSERT.

Fixes https://bugzilla.gnome.org/show_bug.cgi?id=755249

9 years agogtkglsink: Hide and clean the GtkWindow we might create
Thibault Saunier [Sat, 19 Sep 2015 09:46:37 +0000 (11:46 +0200)]
gtkglsink: Hide and clean the GtkWindow we might create

When stopping the sink we should always hide the window.

https://bugzilla.gnome.org/show_bug.cgi?id=755249

9 years agogl: Fix GError leaks during failures
Vineeth T M [Thu, 17 Sep 2015 04:35:02 +0000 (13:35 +0900)]
gl: Fix GError leaks during failures

https://bugzilla.gnome.org/show_bug.cgi?id=755140

9 years agogtk, qt: more specifically define the compile time requirements
Matthew Waters [Wed, 9 Sep 2015 14:07:18 +0000 (00:07 +1000)]
gtk, qt: more specifically define the compile time requirements

Otherwise we could include headers/configurations that will
never been installed.

https://bugzilla.gnome.org/show_bug.cgi?id=754732

9 years agogtk: Do not consider GtkEvents as handled
Thibault Saunier [Fri, 4 Sep 2015 13:43:40 +0000 (15:43 +0200)]
gtk: Do not consider GtkEvents as handled

Applications might still want to use them
after the sink transformed them into
GstNavigation events

9 years agogtk, qt, gl: fix typo in debug and error messages
Tim-Philipp Müller [Mon, 31 Aug 2015 17:06:31 +0000 (18:06 +0100)]
gtk, qt, gl: fix typo in debug and error messages

9 years agogtk/gl: Use our GL function table instead of directly calling GL functions
Sebastian Dröge [Wed, 19 Aug 2015 10:52:21 +0000 (13:52 +0300)]
gtk/gl: Use our GL function table instead of directly calling GL functions

Otherwise we would have to link the plugin to the GL libraries directly.

9 years agoglsink: Enable sync meta on pools we offer
Nicolas Dufresne [Sat, 15 Aug 2015 12:31:15 +0000 (14:31 +0200)]
glsink: Enable sync meta on pools we offer

As the upload is asynchronous, we need to enable the sync meta to
gain correct rendering. The buffer pool receiver don't know about
that.

9 years agogtkglsink: Add overlay composition support
Nicolas Dufresne [Sat, 15 Aug 2015 13:12:27 +0000 (15:12 +0200)]
gtkglsink: Add overlay composition support

Rendering composition overlay in GL with additional high resolution
overlay being added.

9 years agogtkglsink: Fix unsafe handling of buffer life time
Nicolas Dufresne [Sat, 15 Aug 2015 13:08:11 +0000 (15:08 +0200)]
gtkglsink: Fix unsafe handling of buffer life time

We need to keep the active buffer (the one we have retreive a
texture id from) otherwise it's racy and upstream may upload
new content before we have rendered or during later redisplay.

9 years agogtkglsink: Remove reset path
Nicolas Dufresne [Fri, 14 Aug 2015 16:07:15 +0000 (18:07 +0200)]
gtkglsink: Remove reset path

The reset path is bogus and there is no reason to get rid of these
things during resize.

9 years agogtk: fix motion event name
Matthew Waters [Tue, 11 Aug 2015 22:18:20 +0000 (00:18 +0200)]
gtk: fix motion event name

s/motion/mouse/

Fixes hover interaction with DVD menus

9 years agogtk: correct navigation events for window scaling
Matthew Waters [Tue, 11 Aug 2015 22:14:14 +0000 (00:14 +0200)]
gtk: correct navigation events for window scaling

i.e. take into account the possiblity of scaling in the sink
or through GDK_SCALE.

Fixes DVD Menus with a scaled gtkwidget

9 years agogtk: implement GstNavigation interface
Matthew Waters [Tue, 11 Aug 2015 11:34:59 +0000 (13:34 +0200)]
gtk: implement GstNavigation interface

Now we can push key/mouse input into the pipeline for DVD use cases.

9 years agogstglwidget: use gst_gl_display_create_context
Julien Isorce [Tue, 21 Jul 2015 10:23:21 +0000 (11:23 +0100)]
gstglwidget: use gst_gl_display_create_context

Also handle the failure case.

https://bugzilla.gnome.org/show_bug.cgi?id=750310

9 years agogtk: Log GDK GL error when failling creating GdkGLContext
Thibault Saunier [Mon, 20 Jul 2015 09:09:20 +0000 (11:09 +0200)]
gtk: Log GDK GL error when failling creating GdkGLContext

9 years agoglcontext: fix get_current_gl_api on x11/nvidia drivers
Matthew Waters [Sat, 18 Jul 2015 07:19:18 +0000 (17:19 +1000)]
glcontext: fix get_current_gl_api on x11/nvidia drivers

They require to get_proc_address some functions through the
platform specific {glX,egl}GetProcAddress rather than the default
GL library symbol lookup.

9 years agogtkgstglwidget: Cleanup unused private member
Nicolas Dufresne [Fri, 17 Jul 2015 20:00:01 +0000 (16:00 -0400)]
gtkgstglwidget: Cleanup unused private member

new_buffer has been moved to base class. Also cleanup
the properties comment, which are also all moved into
the base class.

9 years agogtksink: "widget" must be access from main thread
Nicolas Dufresne [Fri, 17 Jul 2015 19:57:37 +0000 (15:57 -0400)]
gtksink: "widget" must be access from main thread

Document that "widget" property must be accessed from the
main thread (where GTK is running). This is the same for
state transition on these elements. It is very natural to
do so un GTK applications.

9 years agogtkglsink: Don't leak vertex array and buffers
Nicolas Dufresne [Fri, 17 Jul 2015 19:08:53 +0000 (15:08 -0400)]
gtkglsink: Don't leak vertex array and buffers

This is now possible since reset is always called from the
main thread.

https://bugzilla.gnome.org/show_bug.cgi?id=752441

9 years agogtkgstbasewidget: Fix black frame on resize
Nicolas Dufresne [Fri, 17 Jul 2015 18:36:56 +0000 (14:36 -0400)]
gtkgstbasewidget: Fix black frame on resize

This is solved by only applying the new format when the next
buffer is to be rendered and on the GTK thread.

https://bugzilla.gnome.org/show_bug.cgi?id=752441

9 years agogtkgstbasewidget: Pass already parsed VideoInfo
Nicolas Dufresne [Fri, 17 Jul 2015 17:05:05 +0000 (13:05 -0400)]
gtkgstbasewidget: Pass already parsed VideoInfo

As the base sink already parse the caps into VideoInfo it
makes sense to pass in VideoInfo to the widget instead.

https://bugzilla.gnome.org/show_bug.cgi?id=752441

9 years agogtkglsink: Port to GstGtkBaseSink base class
Nicolas Dufresne [Thu, 16 Jul 2015 20:49:32 +0000 (16:49 -0400)]
gtkglsink: Port to GstGtkBaseSink base class

https://bugzilla.gnome.org/show_bug.cgi?id=752441

9 years agogtksink: Port to GstGtkBaseSink
Nicolas Dufresne [Thu, 16 Jul 2015 20:00:37 +0000 (16:00 -0400)]
gtksink: Port to GstGtkBaseSink

https://bugzilla.gnome.org/show_bug.cgi?id=752441

9 years agogtkbasesink: Create a base class
Nicolas Dufresne [Thu, 16 Jul 2015 19:59:59 +0000 (15:59 -0400)]
gtkbasesink: Create a base class

This contains all the common code between the gtkglsink and
gtksink.

https://bugzilla.gnome.org/show_bug.cgi?id=752441

9 years agogtkglsink: Port to GtkGstBaseWidget
Nicolas Dufresne [Thu, 16 Jul 2015 18:30:42 +0000 (14:30 -0400)]
gtkglsink: Port to GtkGstBaseWidget

https://bugzilla.gnome.org/show_bug.cgi?id=752441

9 years agogtksink: Port to GtkGstBaseWidget
Nicolas Dufresne [Thu, 16 Jul 2015 16:55:11 +0000 (12:55 -0400)]
gtksink: Port to GtkGstBaseWidget

https://bugzilla.gnome.org/show_bug.cgi?id=752441

9 years agogtk: Add GtkGstBaseWidget
Nicolas Dufresne [Thu, 16 Jul 2015 16:51:34 +0000 (12:51 -0400)]
gtk: Add GtkGstBaseWidget

This is a "pseudo" base class. Basically it's a shared instance
and class structure and a shared set of function between the
two widget. It cannot have it's own type like normal base class
since the one instance will implement GtkGLArea while the other
implements GtkDrawingAreay. To workaround this, the parent instance
and class is a union of both.

https://bugzilla.gnome.org/show_bug.cgi?id=752441

9 years agogtkgstglwidget: Remove unused gl_caps
Nicolas Dufresne [Wed, 15 Jul 2015 21:35:22 +0000 (17:35 -0400)]
gtkgstglwidget: Remove unused gl_caps

9 years agogtksink: Create a window if the widget is unparented
Nicolas Dufresne [Wed, 15 Jul 2015 20:56:33 +0000 (16:56 -0400)]
gtksink: Create a window if the widget is unparented

The same way as it's now done with the gtkglsink, create a top
level window if the widget is not parented.

https://bugzilla.gnome.org/show_bug.cgi?id=751104

9 years agogtksink: Ensure the copy pasted code remains the same
Nicolas Dufresne [Wed, 15 Jul 2015 18:35:02 +0000 (14:35 -0400)]
gtksink: Ensure the copy pasted code remains the same

Move back the default property at the same place they are in the
other sink. This helps when using a diff viewer to synchronized
this unfortunate copy paste.

https://bugzilla.gnome.org/show_bug.cgi?id=751104

9 years agogtk: Fix race between queue_draw and destroy
Nicolas Dufresne [Wed, 15 Jul 2015 18:32:42 +0000 (14:32 -0400)]
gtk: Fix race between queue_draw and destroy

In GTK dispose can be called before the last ref is reached. This
happens when you close the container window. The dispose will be
explicitly called, and destroyed notify will be fired. This patch
fixes this race by properly tracking the widget state.

In the sink, we now set the widget pointer to NULL, so the widget
will properly get created again if you set your pipeline to NULL
state after the widget was destroy, and set it back to PLAYING.

https://bugzilla.gnome.org/show_bug.cgi?id=751104

9 years agogtkgstwidget: Add missing break in get_property
Nicolas Dufresne [Wed, 15 Jul 2015 15:47:51 +0000 (11:47 -0400)]
gtkgstwidget: Add missing break in get_property

9 years agogtksinks: Remove undefined private structure
Nicolas Dufresne [Wed, 15 Jul 2015 15:44:30 +0000 (11:44 -0400)]
gtksinks: Remove undefined private structure

The classes contains a private structure which are not defined,
hence unused.

9 years agogtk: add to the generic/states test
Matthew Waters [Thu, 9 Jul 2015 03:03:23 +0000 (13:03 +1000)]
gtk: add to the generic/states test

9 years agoGstGtkGLSink: Ensure widget has a toplevel parent
Xavier Claessens [Wed, 17 Jun 2015 13:36:57 +0000 (09:36 -0400)]
GstGtkGLSink: Ensure widget has a toplevel parent

Checking for a parent is not enough, it must have a toplevel one.
If widget has no toplevel parent then add it in a GtkWindow, that
make it usable from gst-launch-1.0.

https://bugzilla.gnome.org/show_bug.cgi?id=751104

9 years agoGstGtkGLSink: Post error if widget gets destroyed
Xavier Claessens [Wed, 17 Jun 2015 13:36:40 +0000 (09:36 -0400)]
GstGtkGLSink: Post error if widget gets destroyed

https://bugzilla.gnome.org/show_bug.cgi?id=751104

9 years agoGstGtkGLSink: fix possible warning in finalize
Xavier Claessens [Tue, 16 Jun 2015 20:21:26 +0000 (16:21 -0400)]
GstGtkGLSink: fix possible warning in finalize

If the element is finalized before going in READY state
the widget could still be NULL.

https://bugzilla.gnome.org/show_bug.cgi?id=751104

9 years agogtkglsink: Release the widget lock when trying to get the GL context
Thibault Saunier [Mon, 6 Jul 2015 17:33:35 +0000 (19:33 +0200)]
gtkglsink: Release the widget lock when trying to get the GL context

Otherwise we might be waiting for the lock on the main loop (for
example in the ->render vmethod) and thus we will deadlock.

9 years agogtkglwidget: Const'ify another array
Sebastian Dröge [Mon, 15 Jun 2015 19:32:43 +0000 (21:32 +0200)]
gtkglwidget: Const'ify another array

9 years agogtkglwidget: Calculate the viewport size ourselves
Sebastian Dröge [Mon, 15 Jun 2015 19:29:46 +0000 (21:29 +0200)]
gtkglwidget: Calculate the viewport size ourselves

Getting the current viewport and modifying it relatively will produce an
interesting feedback loop during widget resizing. Over a few frames we
will gradually move the viewport a bit until it converged again, adding
unnecessary additional borders at the top and left.

9 years agogtk: Use the display width/height for the widget's preferred width/height
Sebastian Dröge [Mon, 15 Jun 2015 19:24:01 +0000 (21:24 +0200)]
gtk: Use the display width/height for the widget's preferred width/height

9 years agogtksink: Add support for xRGB/BGRx
Sebastian Dröge [Mon, 15 Jun 2015 18:45:11 +0000 (20:45 +0200)]
gtksink: Add support for xRGB/BGRx

9 years agogtk: Cairo color formats are in native endianness, GStreamer's in memory order
Sebastian Dröge [Mon, 15 Jun 2015 18:39:59 +0000 (20:39 +0200)]
gtk: Cairo color formats are in native endianness, GStreamer's in memory order

CAIRO_FORMAT_ARGB32 is ARGB on big endian and BGRA on little endian.

9 years agogtk: Implement ignore-alpha property and enable it by default
Sebastian Dröge [Mon, 15 Jun 2015 18:35:38 +0000 (20:35 +0200)]
gtk: Implement ignore-alpha property and enable it by default

9 years agogtk: Sync properties from the sink to the widget upon widget creation
Sebastian Dröge [Mon, 15 Jun 2015 18:13:57 +0000 (20:13 +0200)]
gtk: Sync properties from the sink to the widget upon widget creation

9 years agogtk: implement pixel and display aspect ratio handling
Matthew Waters [Mon, 15 Jun 2015 08:28:37 +0000 (18:28 +1000)]
gtk: implement pixel and display aspect ratio handling

9 years agogtk: silence unused variable warnings for unsupported winsys'
Matthew Waters [Mon, 15 Jun 2015 04:35:35 +0000 (14:35 +1000)]
gtk: silence unused variable warnings for unsupported winsys'

9 years agogtk: implement basic wayland GL support
Matthew Waters [Mon, 15 Jun 2015 04:33:08 +0000 (14:33 +1000)]
gtk: implement basic wayland GL support

9 years agogtk: Do not try to activate a NULL GLContext
Thibault Saunier [Fri, 12 Jun 2015 13:39:56 +0000 (15:39 +0200)]
gtk: Do not try to activate a NULL GLContext

At that point in the code nothing guarantees it exists

9 years agogtk: implement video aspect-ratio handling
Matthew Waters [Fri, 12 Jun 2015 05:17:30 +0000 (15:17 +1000)]
gtk: implement video aspect-ratio handling

For both the software and the GL sink's.

Doesn't deal with the pixel-aspect-ratio field at all yet.

9 years agogtk: fix a couple of typos
Matthew Waters [Fri, 12 Jun 2015 02:40:50 +0000 (12:40 +1000)]
gtk: fix a couple of typos

9 years agogtkglsink: reset the context/display in READY_TO_NULL
Matthew Waters [Fri, 12 Jun 2015 02:29:37 +0000 (12:29 +1000)]
gtkglsink: reset the context/display in READY_TO_NULL

Fixes context propagation in pipelines with upstream GL elements.

9 years agogstgtk: No need to realize the widget
Nicolas Dufresne [Thu, 11 Jun 2015 16:41:10 +0000 (12:41 -0400)]
gstgtk: No need to realize the widget

The widget already does that.

9 years agogstgtk: Don't leak the widget
Nicolas Dufresne [Thu, 11 Jun 2015 16:38:53 +0000 (12:38 -0400)]
gstgtk: Don't leak the widget

g_object_get() returns a ref, gtk_container_add() only ref_sink().
That mean we still need to unref afterward. This leak was hiding
a reference bug previously present.

9 years agogstgtk: Allow doing gst-inspect-1.0 on these elements
Nicolas Dufresne [Thu, 11 Jun 2015 16:10:23 +0000 (12:10 -0400)]
gstgtk: Allow doing gst-inspect-1.0 on these elements

This patch allow going gst-inspect-1.0 on these elements removing
ugly crash that was previously occurring. The method consist of
making the widget creation as lazy as possible. This way we don't
endup doing gtk_init() before the application. We also ref_sink()
the widget, so we don't crash if the parent widget is discarded,
and cleanly error out with GL if the widget has no parent window,
because calling gtk_widget_realized() can only be done if the widget
has been parented to a window).

9 years agogtk: Do not try to initialize display if we have not have a GLContext yet
Thibault Saunier [Thu, 11 Jun 2015 13:02:44 +0000 (15:02 +0200)]
gtk: Do not try to initialize display if we have not have a GLContext yet

9 years agogtk: Add missing CFLAGS to example
Sebastian Dröge [Thu, 11 Jun 2015 12:58:27 +0000 (14:58 +0200)]
gtk: Add missing CFLAGS to example

9 years agoImplement gtk sinks
Matthew Waters [Thu, 18 Dec 2014 06:00:30 +0000 (17:00 +1100)]
Implement gtk sinks

two sinks are provided.  gtksink which is a cairo/software based renderer
and gtkglsink which utilises the GL support in gtk and gstreamer.

10 years agogl/examples: move to -bad
Matthew Waters [Tue, 29 Apr 2014 06:38:55 +0000 (16:38 +1000)]
gl/examples: move to -bad

- fix all the compiler errors
- give them their own gl directory

10 years agogl: fix the use of always-defined macros
Руслан Ижбулатов [Tue, 18 Mar 2014 00:08:50 +0000 (00:08 +0000)]
gl: fix the use of always-defined macros

After 2a0f0399ae226089c2ba07b1b904741b856f37af GST_GL_* macros are always
defined to 0 or 1. Don't use #ifdef ... or #if defined() on them.

https://bugzilla.gnome.org/show_bug.cgi?id=726591

10 years ago[864/906] examples: update to gtk3
Matthew Waters [Sun, 29 Dec 2013 06:29:53 +0000 (17:29 +1100)]
[864/906] examples: update to gtk3

10 years ago[771/906] gl: Some less long/ulong/gulong usage
Sebastian Dröge [Wed, 17 Jul 2013 09:22:02 +0000 (11:22 +0200)]
[771/906] gl: Some less long/ulong/gulong usage

10 years ago[769/906] tests/examples: fix and port some of the examples.
Mathieu Duponchelle [Tue, 16 Jul 2013 16:27:07 +0000 (18:27 +0200)]
[769/906] tests/examples: fix and port some of the examples.

Realize widgets, remove glupload element.

10 years ago[729/906] gl: Include config.h everywhere
Sebastian Dröge [Wed, 10 Jul 2013 09:24:34 +0000 (11:24 +0200)]
[729/906] gl: Include config.h everywhere

10 years ago[720/906] examples: Stop using deprecated GLib thread API
Sebastian Dröge [Fri, 28 Jun 2013 09:00:46 +0000 (11:00 +0200)]
[720/906] examples: Stop using deprecated GLib thread API

10 years ago[603/906] update FSF address
Matthew Waters [Thu, 8 Nov 2012 11:53:56 +0000 (22:53 +1100)]
[603/906] update FSF address

10 years ago[560/906] examples: update for bus api changes and glimagesink changes
Matthew Waters [Tue, 14 Aug 2012 04:41:19 +0000 (14:41 +1000)]
[560/906] examples: update for bus api changes and glimagesink changes

10 years ago[511/906] tests: update for 1.0
Matthew Waters [Wed, 6 Jun 2012 14:51:47 +0000 (00:51 +1000)]
[511/906] tests: update for 1.0