diff options
author | Sreerenj Balachandran <sreerenj.balachandran@intel.com> | 2011-11-02 11:02:11 +0200 |
---|---|---|
committer | Stefan Sauer <ensonic@users.sf.net> | 2012-03-04 20:21:37 +0100 |
commit | d68c6bfa9f5d9121eed115a1e73d293fab6b5ed2 (patch) | |
tree | cb028198b6203a9f1516d5d9e60c91d8f7ccf012 /ext/wayland/gstwaylandsink.h | |
parent | b84271faa6510475079c7578e23ca60d19321141 (diff) | |
download | gstreamer-plugins-bad-d68c6bfa9f5d9121eed115a1e73d293fab6b5ed2.tar.gz |
Initial Commit: Adding Wayland Video Sink
Diffstat (limited to 'ext/wayland/gstwaylandsink.h')
-rwxr-xr-x | ext/wayland/gstwaylandsink.h | 102 |
1 files changed, 102 insertions, 0 deletions
diff --git a/ext/wayland/gstwaylandsink.h b/ext/wayland/gstwaylandsink.h new file mode 100755 index 000000000..71d6cfc75 --- /dev/null +++ b/ext/wayland/gstwaylandsink.h @@ -0,0 +1,102 @@ +/* + * GStreamer Wayland video sink + * Copyright (C) 2011 Intel Corporation + * Copyright (C) 2011 Sreerenj Balachandran <sreerenj.balachandran@intel.com> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Library General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Library General Public License for more details. + * + * You should have received a copy of the GNU Library General Public + * License along with this library; if not, write to the Free + * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + */ + +#ifndef __GST_WAYLAND_VIDEO_SINK_H__ +#define __GST_WAYLAND_VIDEO_SINK_H__ + +#include <gst/gst.h> +#include <gst/video/video.h> +#include <gst/video/gstvideosink.h> + +#include <wayland-client.h> +#include <wayland-egl.h> + +#define GST_TYPE_WAYLAND_SINK \ + (gst_wayland_sink_get_type()) +#define GST_WAYLAND_SINK(obj) \ + (G_TYPE_CHECK_INSTANCE_CAST((obj),GST_TYPE_WAYLAND_SINK,GstWayLandSink)) +#define GST_WAYLAND_SINK_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_CAST((klass),GST_TYPE_WAYLAND_SINK,GstWayLandSinkClass)) +#define GST_IS_WAYLAND_SINK(obj) \ + (G_TYPE_CHECK_INSTANCE_TYPE((obj),GST_TYPE_WAYLAND_SINK)) +#define GST_IS_WAYLAND_SINK_CLASS(klass) \ + (G_TYPE_CHECK_CLASS_TYPE((klass),GST_TYPE_WAYLAND_SINK)) +#define GST_WAYLAND_SINK_GET_CLASS(inst) \ + (G_TYPE_INSTANCE_GET_CLASS ((inst), GST_TYPE_WAYLAND_SINK, GstWayLandSinkClass)) + +struct display +{ + struct wl_display *display; + struct wl_visual *xrgb_visual; + struct wl_compositor *compositor; + struct wl_shell *shell; + struct wl_shm *shm; + uint32_t mask; +}; + +struct window +{ + struct display *display; + int width, height; + struct wl_surface *surface; + struct wl_buffer *buffer; + void *data; +}; + +typedef struct _GstWayLandSink GstWayLandSink; +typedef struct _GstWayLandSinkClass GstWayLandSinkClass; + +struct _GstWayLandSink +{ + + GstVideoSink parent; + + GstCaps *caps; + + struct display *display; + struct window *window; + + GCond *buffer_cond; + GMutex *buffer_lock; + + GCond *wayland_cond; + GMutex *wayland_lock; + + gboolean unlock; + + guint width, height, depth, size; + + void *MapAddr; + gboolean render_finish; + +}; + +struct _GstWayLandSinkClass +{ + GstVideoSinkClass parent; + +}; + +GType +gst_wayland_sink_get_type (void) + G_GNUC_CONST; + +G_END_DECLS +#endif /* __GST_WAYLAND_VIDEO_SINK_H__ */ |