platform/upstream/gst-plugins-bad.git
10 years agovideo: Link with $(LIBM) for rint() and others
Sebastian Dröge [Sun, 22 Jun 2014 16:51:45 +0000 (18:51 +0200)]
video: Link with $(LIBM) for rint() and others

10 years agopo: Update translations
Sebastian Dröge [Sun, 22 Jun 2014 12:25:42 +0000 (14:25 +0200)]
po: Update translations

10 years agohlsdemux: Fix decrypting fragments
Thomas Bluemel [Fri, 20 Jun 2014 14:20:55 +0000 (08:20 -0600)]
hlsdemux: Fix decrypting fragments

Only reset the decryption engine on the first buffer of a fragment,
not again for the second buffer.  This fixes corrupting the second
buffer of a fragment.

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

10 years agorawparse: Use the pad passed to us directly for default event handling
Sebastian Dröge [Sun, 22 Jun 2014 12:12:43 +0000 (14:12 +0200)]
rawparse: Use the pad passed to us directly for default event handling

10 years agorawparse: default query should be forward on target pad
Justin Joy [Thu, 19 Jun 2014 08:24:26 +0000 (17:24 +0900)]
rawparse: default query should be forward on target pad

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

10 years agotsdemux: fix up comment
Tim-Philipp Müller [Sun, 22 Jun 2014 11:32:35 +0000 (12:32 +0100)]
tsdemux: fix up comment

10 years agogl: move gles2 compat header to glprototypes
Matthew Waters [Sat, 21 Jun 2014 23:44:24 +0000 (09:44 +1000)]
gl: move gles2 compat header to glprototypes

10 years agoglbufferpool: provide a consistent API regardless of platform
Matthew Waters [Sat, 21 Jun 2014 23:36:34 +0000 (09:36 +1000)]
glbufferpool: provide a consistent API regardless of platform

10 years agogl: mark library as API unstable
Matthew Waters [Sat, 21 Jun 2014 23:22:23 +0000 (09:22 +1000)]
gl: mark library as API unstable

10 years agolibs:uridownloader: Properly declare APIs as UNSTABLE
Thibault Saunier [Sat, 21 Jun 2014 14:57:34 +0000 (16:57 +0200)]
libs:uridownloader: Properly declare APIs as UNSTABLE

10 years agolibs:video: Properly declare APIs as UNSTABLE
Thibault Saunier [Sat, 21 Jun 2014 14:52:51 +0000 (16:52 +0200)]
libs:video: Properly declare APIs as UNSTABLE

10 years agolibs:base: Properly declare APIs as UNSTABLE
Thibault Saunier [Sat, 21 Jun 2014 14:51:01 +0000 (16:51 +0200)]
libs:base: Properly declare APIs as UNSTABLE

10 years agowaylandsink: Fix compiler warning
Sebastian Dröge [Sat, 21 Jun 2014 14:57:18 +0000 (16:57 +0200)]
waylandsink: Fix compiler warning

gstwaylandsink.c:480:14: error: comparison of constant -1 with expression of
      type 'enum wl_shm_format' is always false
      [-Werror,-Wtautological-constant-out-of-range-compare]
  if (format == -1)
      ~~~~~~ ^  ~~

10 years agotsdemux: Update comments to the new reality and remove unused variables
Sebastian Dröge [Sat, 21 Jun 2014 14:55:05 +0000 (16:55 +0200)]
tsdemux: Update comments to the new reality and remove unused variables

10 years agolibs:video: Add -I$(top_srcdir)/gst-libs to fix distcheck
Thibault Saunier [Sat, 21 Jun 2014 13:40:58 +0000 (15:40 +0200)]
libs:video: Add -I$(top_srcdir)/gst-libs to fix distcheck

10 years agolibs:base: Fix includedir
Thibault Saunier [Sat, 21 Jun 2014 13:26:14 +0000 (15:26 +0200)]
libs:base: Fix includedir

10 years agoaggregator: Fix requested pad name
Thibault Saunier [Sat, 21 Jun 2014 11:45:13 +0000 (13:45 +0200)]
aggregator: Fix requested pad name

10 years agolibs: videoaggregato: Do not import videoconvert.h in gstvideoaggregatorpad.h
Thibault Saunier [Fri, 20 Jun 2014 20:02:07 +0000 (22:02 +0200)]
libs: videoaggregato: Do not import videoconvert.h in gstvideoaggregatorpad.h

+ Add a Private structure to the GstVideoAggregatorPad
+ Add some padding

10 years agoFinal fix compilation
Thibault Saunier [Fri, 20 Jun 2014 19:18:58 +0000 (21:18 +0200)]
Final fix compilation

10 years agobuild: remove gst-libs/gst/video/ from CRUFT_DIRS
Tim-Philipp Müller [Fri, 20 Jun 2014 19:11:07 +0000 (20:11 +0100)]
build: remove gst-libs/gst/video/ from CRUFT_DIRS

It was gone, but now it's back.

10 years agolibs:video:Fix compilation
Thibault Saunier [Fri, 20 Jun 2014 18:23:30 +0000 (20:23 +0200)]
libs:video:Fix compilation

10 years agogl:glvideomixer: Add the Compositor in the element metadata class
Thibault Saunier [Fri, 20 Jun 2014 09:10:45 +0000 (11:10 +0200)]
gl:glvideomixer: Add the Compositor in the element metadata class

So it is possible to pick one compositing element from the registry

10 years agocompositor: Add a new compositor based on the new GstVideoAggregator base class
Mathieu Duponchelle [Thu, 22 May 2014 17:46:02 +0000 (19:46 +0200)]
compositor: Add a new compositor based on the new GstVideoAggregator base class

It is a replacement for videomixer with a similare API

Co-Authored by: Thibault Saunier <tsaunier@gnome.org>

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

10 years agogl: Port glmixer to the GstVideoAggregator baseclass
Thibault Saunier [Tue, 10 Jun 2014 09:26:53 +0000 (11:26 +0200)]
gl: Port glmixer to the GstVideoAggregator baseclass

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

10 years agovideoaggregator: Create a new GstVideoAggregator baseclass
Mathieu Duponchelle [Tue, 3 Jun 2014 17:00:34 +0000 (19:00 +0200)]
videoaggregator: Create a new GstVideoAggregator baseclass

This base class has been added to a newly created libgstbadvideo library

Co-Authored by: Thibault Saunier <tsaunier@gnome.org>

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

10 years agoaggregator: Add new GstAggregator base class
Thibault Saunier [Thu, 22 May 2014 17:44:37 +0000 (19:44 +0200)]
aggregator: Add new GstAggregator base class

This base class has been added to a newly created libgstbadbase library

Co-Authored by: Mathieu Duponchelle <mathieu.duponchelle@opencreed.com>

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

10 years agoandroidmedia: Clear exceptions also when we did not provide a GError
Sebastian Dröge [Fri, 20 Jun 2014 12:59:12 +0000 (14:59 +0200)]
androidmedia: Clear exceptions also when we did not provide a GError

10 years agoandroidmedia: Also don't report warnings for queue/dequeue errors during flushing...
Sebastian Dröge [Thu, 19 Jun 2014 09:26:41 +0000 (11:26 +0200)]
androidmedia: Also don't report warnings for queue/dequeue errors during flushing in error cases

... and fix a case where we released an invalid buffer index.

10 years agoandroidmedia: Don't consider input buffer queueing failures as an error during flushing
Sebastian Dröge [Thu, 19 Jun 2014 09:15:56 +0000 (11:15 +0200)]
androidmedia: Don't consider input buffer queueing failures as an error during flushing

10 years agoandroidmedia: Clean up flushing code and don't consider output buffer releasing failu...
Sebastian Dröge [Thu, 19 Jun 2014 09:12:47 +0000 (11:12 +0200)]
androidmedia: Clean up flushing code and don't consider output buffer releasing failures during flushing as an error

10 years agouridownloader: Include the debug string in the error messages we propagate from t...
Sebastian Dröge [Thu, 19 Jun 2014 07:57:25 +0000 (09:57 +0200)]
uridownloader: Include the debug string in the error messages we propagate from t source

10 years agohlsdemux: Include the debug string in the error messages we propagate from the
Sebastian Dröge [Thu, 19 Jun 2014 07:56:09 +0000 (09:56 +0200)]
hlsdemux: Include the debug string in the error messages we propagate from the
source

10 years agohlsdemux: Include a more descriptive error message
Sebastian Dröge [Thu, 19 Jun 2014 07:54:10 +0000 (09:54 +0200)]
hlsdemux: Include a more descriptive error message

10 years agohlsdemux: Propagate error messages from the source element up in the hierarchy
Sebastian Dröge [Thu, 19 Jun 2014 07:53:00 +0000 (09:53 +0200)]
hlsdemux: Propagate error messages from the source element up in the hierarchy

Instead of inventing our own generic error strings which are mostly useless.

10 years agohlsdemux: Directly convert GErrors to error messages
Sebastian Dröge [Thu, 19 Jun 2014 07:40:11 +0000 (09:40 +0200)]
hlsdemux: Directly convert GErrors to error messages

This will make sure that we don't leak debug information into the actual
error message string and keep it behind the debug string.

10 years agogstsrtpenc: unref event when needed
Miguel París Díaz [Tue, 17 Jun 2014 09:48:12 +0000 (11:48 +0200)]
gstsrtpenc: unref event when needed

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

10 years agosrtpenc: improve property comments
Wim Taymans [Wed, 18 Jun 2014 13:36:09 +0000 (15:36 +0200)]
srtpenc: improve property comments

Add a Note to the allow-repeat-tx property because it is potentially
insecure when used incorrectly.

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

10 years agogstsrtpenc: add allow-repeat-tx property
Miguel París Díaz [Fri, 13 Jun 2014 09:15:25 +0000 (11:15 +0200)]
gstsrtpenc: add allow-repeat-tx property

10 years agoopengl: add element for transforming video geometry
Lubosz Sarnecki [Tue, 27 May 2014 10:40:09 +0000 (12:40 +0200)]
opengl: add element for transforming video geometry

* add graphene as soft dependency for linear algebra

10 years agopnm: link against libgstbase for GstAdapter
Tim-Philipp Müller [Wed, 18 Jun 2014 09:13:10 +0000 (10:13 +0100)]
pnm: link against libgstbase for GstAdapter

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

10 years agoglframebuffer: don't segfault needlessly with GLES2
Matthew Waters [Tue, 17 Jun 2014 13:20:04 +0000 (23:20 +1000)]
glframebuffer: don't segfault needlessly with GLES2

gst_gl_framebuffer_use_v2 was using a function that is not available
with GLES2

10 years agoglfiltershader: port to GLES2
Matthew Waters [Mon, 16 Jun 2014 10:36:09 +0000 (20:36 +1000)]
glfiltershader: port to GLES2

Provide a time variable

10 years agowin32: update exports for changed h264 codec parser API
Tim-Philipp Müller [Tue, 17 Jun 2014 12:48:10 +0000 (13:48 +0100)]
win32: update exports for changed h264 codec parser API

10 years agopnmdec: Added PBM Support
Sanjay NM [Tue, 17 Jun 2014 07:20:17 +0000 (12:50 +0530)]
pnmdec: Added PBM Support

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

10 years agowayland: add unstable API guards to wayland library header
Tim-Philipp Müller [Tue, 17 Jun 2014 12:15:06 +0000 (13:15 +0100)]
wayland: add unstable API guards to wayland library header

10 years agogst-libs: fix uninstalled build of new wayland lib
Tim-Philipp Müller [Tue, 17 Jun 2014 12:11:29 +0000 (13:11 +0100)]
gst-libs: fix uninstalled build of new wayland lib

10 years agowaylandsink/wldisplay: verify that all the required interfaces have been found on...
George Kiagiadakis [Mon, 16 Jun 2014 16:53:53 +0000 (18:53 +0200)]
waylandsink/wldisplay: verify that all the required interfaces have been found on the compositor

This allows waylandsink to fail gracefully before going to READY
in case one of the required interfaces does not exist. Not all
interfaces are necessary for all modes of operation, but it is
better imho to fail before going to READY if at least one feature
is not supported, than to fail and/or crash at some later point.

In the future we may want to relax this restriction and allow certain
interfaces not to be present under certain circumstances, for example
if there is an alternative similar interface available (for instance,
xdg_shell instead of wl_shell), but for now let's require them all.
Weston supports them all, which is enough for us now. Other compositors
should really implement them if they don't already. I don't like the
idea of supporting many different compositors with different sets of
interfaces implemented. wl_subcompositor, wl_shm and wl_scaler are
really essential for having a nice video sink. Enough said.

10 years agowaylandsink: remove the buffer from the surface when going PAUSED -> READY
George Kiagiadakis [Mon, 16 Jun 2014 16:03:51 +0000 (18:03 +0200)]
waylandsink: remove the buffer from the surface when going PAUSED -> READY

This essentially hides the video and allows the application to
potentially draw a black background or whatever else it wants.
This allows to differentiate the "paused" and "stopped" modes
from the user's point of view.

Also reworded a comment there to make my thinking more clear,
since the "reason for keeping the display around" is not really
the exposed() calls, as there is no buffer shown in READY/NULL
anymore.

10 years agowayland: install .pc file
Arnaud Vrac [Thu, 12 Jun 2014 15:43:40 +0000 (17:43 +0200)]
wayland: install .pc file

10 years agowaylandsink/wlwindow: do not commit a resize when it happens due to a video info...
George Kiagiadakis [Fri, 13 Jun 2014 14:37:38 +0000 (16:37 +0200)]
waylandsink/wlwindow: do not commit a resize when it happens due to a video info change

1) We know that gst_wayland_sink_render() will commit the surface
   in the same thread a little later, as gst_wl_window_set_video_info()
   is always called from there, so we can save the compositor from
   some extra calculations.
2) We should not commit a resize with the new video info while we are still
   showing the buffer of the previous video, with the old caps, as that
   would probably be a visible resize glitch.

10 years agowaylandsink/wlwindow: take into account the video aspect ratio when determining the...
George Kiagiadakis [Fri, 13 Jun 2014 14:29:32 +0000 (16:29 +0200)]
waylandsink/wlwindow: take into account the video aspect ratio when determining the size of the surface

10 years agowaylandsink: improve the way the video size is passed to wlwindow and also improve...
George Kiagiadakis [Fri, 13 Jun 2014 13:58:08 +0000 (15:58 +0200)]
waylandsink: improve the way the video size is passed to wlwindow and also improve the code for window creation

10 years agowaylandsink: rename pause/resume_rendering to begin/end_geometry_change and update...
George Kiagiadakis [Fri, 6 Jun 2014 10:49:56 +0000 (12:49 +0200)]
waylandsink: rename pause/resume_rendering to begin/end_geometry_change and update their documentation

10 years agowaylandsink: remove the manual synchronization from pause/resume_rendering and use...
George Kiagiadakis [Thu, 29 May 2014 09:27:46 +0000 (12:27 +0300)]
waylandsink: remove the manual synchronization from pause/resume_rendering and use subsurface sync/desync

Previously, in order to change the surface size we had to let the pipeline
redraw it, which at first also involved re-negotiating caps, etc, so a
synchronization with the pipeline was absolutely necessary.

At the moment, we are using wl_viewport, which separates the surface size
from the buffer size and it also allows us to commit a surface resize without
attaching a new buffer, so it is enough to just do:

gst_wayland_video_pause_rendering():
wl_subsurface_set_sync()
gst_video_overlay_set_render_rectangle():
wl_subsurface_set_position()
wl_viewport_set_destination()
wl_surface_damage()
wl_surface_commit()
... commit the parent surface ...
gst_wayland_video_resume_rendering():
wl_subsurface_set_desync()

This is enough to synchronize a surface resize and the pipeline can continue
drawing independently. Now of course, the names pause/resume_rendering are
bad. I will rename them in another commit.

10 years agowaylandsink: protect access to properties with the OBJECT_LOCK
George Kiagiadakis [Fri, 6 Jun 2014 10:10:24 +0000 (12:10 +0200)]
waylandsink: protect access to properties with the OBJECT_LOCK

10 years agowaylandsink: protect access to the display with a new display_lock
George Kiagiadakis [Fri, 6 Jun 2014 10:04:44 +0000 (12:04 +0200)]
waylandsink: protect access to the display with a new display_lock

Access is protected only for setting/creating/destroying the display
handle. set_caps() for example is not protected because it cannot be
called before changing state to READY, at which point there will be
a display handle available and which cannot change by any thread at
that point

10 years agowaylandsink: remove the OBJECT_LOCK from set_caps()
George Kiagiadakis [Fri, 6 Jun 2014 08:35:20 +0000 (10:35 +0200)]
waylandsink: remove the OBJECT_LOCK from set_caps()

It's not really necessary, this method is protected from GstBaseSink with the PREROLL_LOCK

10 years agowaylandsink: Replace the OBJECT_LOCK with a private render_lock to lock render operations
George Kiagiadakis [Wed, 28 May 2014 10:10:43 +0000 (13:10 +0300)]
waylandsink: Replace the OBJECT_LOCK with a private render_lock to lock render operations

This is because:
* GST_ELEMENT_WARNING/ERROR do lock the OBJECT_LOCK and we deadlock instantly
* In future commits I want to make use of GstBaseSink functions that also
  lock the OBJECT_LOCK inside this code

10 years agowaylandsink: move surface resizing logic to the GstWlWindow and make it be called...
George Kiagiadakis [Mon, 26 May 2014 11:13:56 +0000 (14:13 +0300)]
waylandsink: move surface resizing logic to the GstWlWindow and make it be called from the main thread

10 years agowaylandsink: cleanup GstWlWindow a bit after the overlaying semantics change
George Kiagiadakis [Mon, 26 May 2014 09:54:10 +0000 (12:54 +0300)]
waylandsink: cleanup GstWlWindow a bit after the overlaying semantics change

* own_surface is not needed anymore
* gst_wl_window_from_surface is not used externally anymore
* many initializations to 0 are not needed (GObject does them)

10 years agowayland: remove gst_wayland_video_set_surface_size()
George Kiagiadakis [Mon, 26 May 2014 08:34:51 +0000 (11:34 +0300)]
wayland: remove gst_wayland_video_set_surface_size()

Not needed anymore, since we use gst_video_overlay_set_render_rectangle()

10 years agowaylandsink: create and maintain the subsurface inside the sink
George Kiagiadakis [Fri, 23 May 2014 15:18:32 +0000 (18:18 +0300)]
waylandsink: create and maintain the subsurface inside the sink

This means that the given surface in set_window_handle can now be
the window's top-level surface on top of which waylandsink creates
its own subsurface for rendering the video.

This has many advantages:
* We can maintain aspect ratio by overlaying the subsurface in
  the center of the given area and fill the parent surface's area
  black in case we need to draw borders (instead of adding another
  subsurface inside the subsurface given from the application,
  so, less subsurfaces)
* We can more easily support toolkits without subsurfaces (see gtk)
* We can get properly use gst_video_overlay_set_render_rectangle
  as our api to set the video area size from the application and
  therefore remove gst_wayland_video_set_surface_size.

10 years agowayland: add public API for creating & using the display handle GstContext
George Kiagiadakis [Fri, 23 May 2014 10:09:27 +0000 (13:09 +0300)]
wayland: add public API for creating & using the display handle GstContext

10 years agowaylandsink: get the external display handle using GstContext
George Kiagiadakis [Wed, 21 May 2014 15:27:28 +0000 (18:27 +0300)]
waylandsink: get the external display handle using GstContext

This drops the ugly GstWaylandWindowHandle structure and is much
more elegant because we can now request the display separately
from the window handle. Therefore the window handle can be requested
in render(), i.e. when it is really needed and we can still open
the correct display for getting caps and creating the pool earlier.

This change also separates setting the wl_surface from setting its size.
Applications should do that by calling two functions in sequence:

  gst_video_overlay_set_window_handle (overlay, surface);
  gst_wayland_video_set_surface_size (overlay, w, h);

10 years agowaylandsink: drop width/height arguments from gst_wl_window_new_from_surface()
George Kiagiadakis [Wed, 21 May 2014 10:14:15 +0000 (13:14 +0300)]
waylandsink: drop width/height arguments from gst_wl_window_new_from_surface()

10 years agowaylandsink: add G_BEGIN/END_DECLS on all headers for consistency
George Kiagiadakis [Thu, 22 May 2014 07:10:51 +0000 (10:10 +0300)]
waylandsink: add G_BEGIN/END_DECLS on all headers for consistency

10 years agowaylandsink: fix assertion failure when stopping immediately after starting, without...
George Kiagiadakis [Wed, 21 May 2014 09:58:10 +0000 (12:58 +0300)]
waylandsink: fix assertion failure when stopping immediately after starting, without displaying anything

This was triggered in scenarios like
filesrc location=nonexistent_file ! decodebin ! waylandsink

10 years agowaylandsink: Update wl_scaler to version 2
George Kiagiadakis [Wed, 21 May 2014 08:55:45 +0000 (11:55 +0300)]
waylandsink: Update wl_scaler to version 2

10 years agowayland/Makefile.am: link with gstvideo to avoid introspection errors
George Kiagiadakis [Tue, 20 May 2014 16:04:16 +0000 (19:04 +0300)]
wayland/Makefile.am: link with gstvideo to avoid introspection errors

10 years agowaylandsink/Makefile.am: Fix scaler-client-protocol.h generation
George Kiagiadakis [Tue, 20 May 2014 16:03:39 +0000 (19:03 +0300)]
waylandsink/Makefile.am: Fix scaler-client-protocol.h generation

10 years agowaylandsink: remove unused functions
George Kiagiadakis [Thu, 13 Mar 2014 11:13:08 +0000 (13:13 +0200)]
waylandsink: remove unused functions

10 years agowaylandsink: Add myself to the authors list
George Kiagiadakis [Wed, 12 Mar 2014 17:25:06 +0000 (19:25 +0200)]
waylandsink: Add myself to the authors list

10 years agowaylandsink/wldisplay: bind to the latest available wl_compositor version
George Kiagiadakis [Wed, 12 Mar 2014 15:03:10 +0000 (17:03 +0200)]
waylandsink/wldisplay: bind to the latest available wl_compositor version

10 years agowaylandsink: create/destroy the display when entering/leaving the READY state instead...
George Kiagiadakis [Wed, 12 Mar 2014 12:28:44 +0000 (14:28 +0200)]
waylandsink: create/destroy the display when entering/leaving the READY state instead of PAUSED

This is the only way to get the negotiation working with the dynamic
detection of formats from the display, because the pipeline needs
to know the supported formats in the READY state and the supported
formats can only be known if we open the display.

Unfortunately,in wayland we cannot have a separate connection to
the display from the rest of the application, so we need to ask for a
window handle when going to READY in order to get the display from it.

And since it's too early to create a top level window from the state
change to READY, create it in render() when there is no other window.

This also changes set_window_handle() to not support window handle
changes in PAUSED/PLAYING (because it's complex to handle and useless
in practice) and make sure that there is always a valid display pointer
around in the READY state.

10 years agowaylandsink: Support all video formats supported by the display
George Kiagiadakis [Wed, 12 Mar 2014 12:13:49 +0000 (14:13 +0200)]
waylandsink: Support all video formats supported by the display

10 years agowaylandsink: fix crash in case there is no pool because of a caps negotiation error
George Kiagiadakis [Wed, 12 Mar 2014 11:54:44 +0000 (13:54 +0200)]
waylandsink: fix crash in case there is no pool because of a caps negotiation error

10 years agowaylandsink: set an empty input region on the video surface
George Kiagiadakis [Tue, 11 Mar 2014 17:47:52 +0000 (19:47 +0200)]
waylandsink: set an empty input region on the video surface

10 years agowaylandsink/wlwindow: reuse code between the two constructors
George Kiagiadakis [Tue, 11 Mar 2014 17:46:56 +0000 (19:46 +0200)]
waylandsink/wlwindow: reuse code between the two constructors

10 years agowaylandsink: increase debug messages
George Kiagiadakis [Tue, 11 Mar 2014 16:45:23 +0000 (18:45 +0200)]
waylandsink: increase debug messages

10 years agowaylandsink: Use a boolean in combination with render_cond to comply with GCond's...
George Kiagiadakis [Tue, 11 Mar 2014 15:48:46 +0000 (17:48 +0200)]
waylandsink: Use a boolean in combination with render_cond to comply with GCond's usage documentation

10 years agowaylandsink: Implement expose() and handle resizing properly in non-PLAYING states
George Kiagiadakis [Tue, 11 Mar 2014 15:45:05 +0000 (17:45 +0200)]
waylandsink: Implement expose() and handle resizing properly in non-PLAYING states

10 years agowaylandsink: Use wl_scaler/wl_viewport to scale the surface in the compositor/hardware
George Kiagiadakis [Tue, 11 Mar 2014 11:14:00 +0000 (13:14 +0200)]
waylandsink: Use wl_scaler/wl_viewport to scale the surface in the compositor/hardware

10 years agowaylandsink: Build bindings for the unstable wl_scaler spec
George Kiagiadakis [Tue, 11 Mar 2014 11:05:56 +0000 (13:05 +0200)]
waylandsink: Build bindings for the unstable wl_scaler spec

10 years agowaylandsink: Set external surfaces and their child objects to use our own event queue
George Kiagiadakis [Mon, 10 Mar 2014 11:50:06 +0000 (13:50 +0200)]
waylandsink: Set external surfaces and their child objects to use our own event queue

This fixes weird freezes because of frame_redraw_callback() not being
called from the main thread when it should with weston's toy toolkit.

It's also safer to know that frame_redraw_callback() will always be
called from our display thread... Otherwise it could be called after
the sink has been destroyed for example.

10 years agowaylandsink: Wait for the frame_cb to redraw and drop frames meanwhile
George Kiagiadakis [Fri, 7 Mar 2014 15:25:00 +0000 (17:25 +0200)]
waylandsink: Wait for the frame_cb to redraw and drop frames meanwhile

We are not supposed to redraw until we receive a frame callback and this
is especially useful to avoid allocating too many buffers while the
window is not visible, because the compositor may not call wl_buffer.release
until the window becomes visible (ok, this is a wayland bug, but...).

10 years agowaylandsink: Handle wl_buffer::release and don't reuse buffers that are not released
George Kiagiadakis [Fri, 7 Mar 2014 14:16:30 +0000 (16:16 +0200)]
waylandsink: Handle wl_buffer::release and don't reuse buffers that are not released

This is achieved by adding an extra reference on the buffers, which does
not allow them to return to the pool. When they are released, this reference
is dropped.

The rest complexity of this patch (hash table, mutex, flag, explicit release calls)
merely exists to allow a safe, guaranteed and deadlock-free destruction sequence.
See the added comment on gstwaylandsink.c for details.

10 years agowaylandsink/waylandpool: remove useless munmap call
George Kiagiadakis [Thu, 6 Mar 2014 15:03:50 +0000 (17:03 +0200)]
waylandsink/waylandpool: remove useless munmap call

This data pointer is part of a bigger mmap'ed region,
it has not been returned from mmap itself.

10 years agowaylandsink/waylandpool: call the start/stop methods of the parent class
George Kiagiadakis [Fri, 28 Feb 2014 11:37:30 +0000 (13:37 +0200)]
waylandsink/waylandpool: call the start/stop methods of the parent class

start() makes sure that the minimum ammount of buffers requested is allocated.

stop() makes sure that buffers are actually destroyed and prevents
filling the file system when resizing the surface a lot, because the
wayland-shm-* files will stay on the file system as long as the wl_buffers
created out of them are alive.

10 years agowaylandsink/waylandpool: unlink mmaped shm files so that they don't remain on the...
George Kiagiadakis [Fri, 28 Feb 2014 11:36:43 +0000 (13:36 +0200)]
waylandsink/waylandpool: unlink mmaped shm files so that they don't remain on the file system

10 years agowaylandsink: implement the GstVideoOverlay & GstWaylandVideo interfaces
George Kiagiadakis [Fri, 28 Feb 2014 09:48:30 +0000 (11:48 +0200)]
waylandsink: implement the GstVideoOverlay & GstWaylandVideo interfaces

This is the initial implementation, without the GstVideoOverlay.expose()
method. It only implements using an external (sub)surface and resizing
it with GstWaylandVideo.

10 years agowaylandsink: implement with stubs the GstWaylandVideo & GstVideoOverlay interfaces
George Kiagiadakis [Fri, 14 Feb 2014 15:08:56 +0000 (16:08 +0100)]
waylandsink: implement with stubs the GstWaylandVideo & GstVideoOverlay interfaces

10 years agowayland: Add new gst-wayland library containing a new GstWaylandVideo interface
George Kiagiadakis [Mon, 6 May 2013 10:16:02 +0000 (13:16 +0300)]
wayland: Add new gst-wayland library containing a new GstWaylandVideo interface

This interface is needed to be able to embed waylandsink into
other wayland surfaces. Due to the special nature of wayland,
GstVideoOverlay is not enough for this job.

10 years agowaylandsink: handle the list of supported formats properly
George Kiagiadakis [Wed, 26 Feb 2014 16:35:29 +0000 (18:35 +0200)]
waylandsink: handle the list of supported formats properly

enum wl_shm_format is not a flags enum, as it may have been in the past,
so multiple formats cannot be stored in a bitfield. Use an array instead.

10 years agowaylandsink/wlvideoformat: add mappings for many common formats
George Kiagiadakis [Wed, 26 Feb 2014 15:41:11 +0000 (17:41 +0200)]
waylandsink/wlvideoformat: add mappings for many common formats

10 years agowaylandsink: unref the buffer pool
George Kiagiadakis [Wed, 26 Feb 2014 14:20:41 +0000 (16:20 +0200)]
waylandsink: unref the buffer pool

10 years agowaylandsink/waylandpool: ref the display instead of the sink to avoid cyclic references
George Kiagiadakis [Wed, 26 Feb 2014 14:11:29 +0000 (16:11 +0200)]
waylandsink/waylandpool: ref the display instead of the sink to avoid cyclic references

The reference to the sink is not really needed anyway in waylandpool,
what matters basically is that the display is active as long as the
pool is active, so we really want to reference the display object
instead of the sink.

10 years agowaylandsink: make the display property useful
George Kiagiadakis [Wed, 26 Feb 2014 12:56:21 +0000 (14:56 +0200)]
waylandsink: make the display property useful

Let the display property control the name of the display,
like in x(v)imagesink.

10 years agowaylandsink: access sink->pool in a more atomic fashion
George Kiagiadakis [Fri, 14 Feb 2014 16:20:42 +0000 (17:20 +0100)]
waylandsink: access sink->pool in a more atomic fashion

10 years agowaylandsink: remove the useless wayland_lock
George Kiagiadakis [Fri, 14 Feb 2014 15:33:10 +0000 (16:33 +0100)]
waylandsink: remove the useless wayland_lock

10 years agowaylandsink: apply the same debug category to all the subobjects
George Kiagiadakis [Thu, 13 Feb 2014 12:28:40 +0000 (13:28 +0100)]
waylandsink: apply the same debug category to all the subobjects