1 /* GStreamer Wayland video sink 2 * 3 * Copyright (C) 2014 Collabora Ltd. 4 * 5 * This library is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU Library General Public 7 * License as published by the Free Software Foundation; either 8 * version 2 of the License, or (at your option) any later version. 9 * 10 * This library is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13 * Library General Public License for more details. 14 * 15 * You should have received a copy of the GNU Library General Public 16 * License along with this library; if not, write to the Free 17 * Software Foundation, Inc., 51 Franklin Street, Fifth Floor, 18 * Boston, MA 02110-1301 USA. 19 */ 20 21 #ifndef __GST_WL_BUFFER_H__ 22 #define __GST_WL_BUFFER_H__ 23 24 #include "wldisplay.h" 25 26 G_BEGIN_DECLS 27 28 #define GST_TYPE_WL_BUFFER (gst_wl_buffer_get_type ()) 29 #define GST_WL_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GST_TYPE_WL_BUFFER, GstWlBuffer)) 30 #define GST_IS_WL_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), GST_TYPE_WL_BUFFER)) 31 #define GST_WL_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GST_TYPE_WL_BUFFER, GstWlBufferClass)) 32 #define GST_IS_WL_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GST_TYPE_WL_BUFFER)) 33 #define GST_WL_BUFFER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GST_TYPE_WL_BUFFER, GstWlBufferClass)) 34 35 typedef struct _GstWlBuffer GstWlBuffer; 36 typedef struct _GstWlBufferClass GstWlBufferClass; 37 38 struct _GstWlBuffer 39 { 40 GObject parent_instance; 41 42 struct wl_buffer * wlbuffer; 43 GstBuffer *current_gstbuffer; 44 GstMemory *gstmem; 45 46 GstWlDisplay *display; 47 48 gboolean used_by_compositor; 49 }; 50 51 struct _GstWlBufferClass 52 { 53 GObjectClass parent_class; 54 }; 55 56 GType gst_wl_buffer_get_type (void); 57 58 GstWlBuffer * gst_buffer_add_wl_buffer (GstBuffer * gstbuffer, 59 struct wl_buffer * wlbuffer, GstWlDisplay * display); 60 GstWlBuffer * gst_buffer_get_wl_buffer (GstWlDisplay * display, GstBuffer * gstbuffer); 61 62 void gst_wl_buffer_force_release_and_unref (GstBuffer *buf, GstWlBuffer * self); 63 64 void gst_wl_buffer_attach (GstWlBuffer * self, struct wl_surface *surface); 65 66 G_END_DECLS 67 68 #endif /* __GST_WL_BUFFER_H__ */ 69