Initial commit
[fillmore] / src / marina / marina / thumbnailsink.c
1 /* thumbnailsink.c generated by valac, the Vala compiler
2  * generated from thumbnailsink.vala, do not modify */
3
4
5 #include <glib.h>
6 #include <glib-object.h>
7 #include <gst/base/gstbasesink.h>
8 #include <stdlib.h>
9 #include <string.h>
10 #include <gst/gst.h>
11 #include <gdk-pixbuf/gdk-pixdata.h>
12
13
14 #define TYPE_THUMBNAIL_SINK (thumbnail_sink_get_type ())
15 #define THUMBNAIL_SINK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_THUMBNAIL_SINK, ThumbnailSink))
16 #define THUMBNAIL_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_THUMBNAIL_SINK, ThumbnailSinkClass))
17 #define IS_THUMBNAIL_SINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_THUMBNAIL_SINK))
18 #define IS_THUMBNAIL_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_THUMBNAIL_SINK))
19 #define THUMBNAIL_SINK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_THUMBNAIL_SINK, ThumbnailSinkClass))
20
21 typedef struct _ThumbnailSink ThumbnailSink;
22 typedef struct _ThumbnailSinkClass ThumbnailSinkClass;
23 typedef struct _ThumbnailSinkPrivate ThumbnailSinkPrivate;
24 #define _gst_structure_free0(var) ((var == NULL) ? NULL : (var = (gst_structure_free (var), NULL)))
25 #define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
26 #define _gst_object_unref0(var) ((var == NULL) ? NULL : (var = (gst_object_unref (var), NULL)))
27
28 struct _ThumbnailSink {
29         GstBaseSink parent_instance;
30         ThumbnailSinkPrivate * priv;
31 };
32
33 struct _ThumbnailSinkClass {
34         GstBaseSinkClass parent_class;
35 };
36
37 struct _ThumbnailSinkPrivate {
38         gint width;
39         gint height;
40 };
41
42
43 static gpointer thumbnail_sink_parent_class = NULL;
44
45 GType thumbnail_sink_get_type (void);
46 #define THUMBNAIL_SINK_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_THUMBNAIL_SINK, ThumbnailSinkPrivate))
47 enum  {
48         THUMBNAIL_SINK_DUMMY_PROPERTY
49 };
50 #define THUMBNAIL_SINK_caps_string "video/x-raw-rgb,bpp = (int) 32, depth = (int) 32,\n" \
51 "                                  endianness = (int) BIG_ENDIAN,\n" \
52 "                                  blue_mask = (int)  0xFF000000,\n" \
53 "                                  green_mask = (int) 0x00FF0000,\n" \
54 "                                  red_mask = (int)   0x0000FF00,\n" \
55 "                                  width = (int) [ 1, max ],\n" \
56 "                                  height = (int) [ 1, max ],\n" \
57 "                                  framerate = (fraction) [ 0, max ]"
58 ThumbnailSink* thumbnail_sink_new (void);
59 ThumbnailSink* thumbnail_sink_construct (GType object_type);
60 static gboolean thumbnail_sink_real_set_caps (GstBaseSink* base, GstCaps* c);
61 static void thumbnail_sink_convert_pixbuf_to_rgb (ThumbnailSink* self, GdkPixbuf* buf);
62 static GstFlowReturn thumbnail_sink_real_preroll (GstBaseSink* base, GstBuffer* b);
63 static GObject * thumbnail_sink_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties);
64 static void thumbnail_sink_finalize (GObject* obj);
65
66
67
68 #line 31 "thumbnailsink.vala"
69 ThumbnailSink* thumbnail_sink_construct (GType object_type) {
70 #line 64 "thumbnailsink.c"
71         ThumbnailSink * self;
72         self = g_object_newv (object_type, 0, NULL);
73 #line 32 "thumbnailsink.vala"
74         gst_base_sink_set_sync (GST_BASE_SINK (self), FALSE);
75 #line 69 "thumbnailsink.c"
76         return self;
77 }
78
79
80 #line 31 "thumbnailsink.vala"
81 ThumbnailSink* thumbnail_sink_new (void) {
82 #line 31 "thumbnailsink.vala"
83         return thumbnail_sink_construct (TYPE_THUMBNAIL_SINK);
84 #line 78 "thumbnailsink.c"
85 }
86
87
88 static gpointer _gst_structure_copy0 (gpointer self) {
89         return self ? gst_structure_copy (self) : NULL;
90 }
91
92
93 #line 35 "thumbnailsink.vala"
94 static gboolean thumbnail_sink_real_set_caps (GstBaseSink* base, GstCaps* c) {
95 #line 89 "thumbnailsink.c"
96         ThumbnailSink * self;
97         gboolean result = FALSE;
98         GstStructure* s;
99         gboolean _tmp0_ = FALSE;
100         self = THUMBNAIL_SINK (base);
101 #line 35 "thumbnailsink.vala"
102         g_return_val_if_fail (GST_IS_CAPS (c), FALSE);
103 #line 36 "thumbnailsink.vala"
104         if (gst_caps_get_size (c) < 1) {
105 #line 99 "thumbnailsink.c"
106                 result = FALSE;
107 #line 37 "thumbnailsink.vala"
108                 return result;
109 #line 103 "thumbnailsink.c"
110         }
111 #line 39 "thumbnailsink.vala"
112         s = _gst_structure_copy0 (gst_caps_get_structure (c, (guint) 0));
113 #line 41 "thumbnailsink.vala"
114         if (!gst_structure_get_int (s, "width", &self->priv->width)) {
115 #line 41 "thumbnailsink.vala"
116                 _tmp0_ = TRUE;
117 #line 111 "thumbnailsink.c"
118         } else {
119 #line 42 "thumbnailsink.vala"
120                 _tmp0_ = !gst_structure_get_int (s, "height", &self->priv->height);
121 #line 115 "thumbnailsink.c"
122         }
123 #line 41 "thumbnailsink.vala"
124         if (_tmp0_) {
125 #line 119 "thumbnailsink.c"
126                 result = FALSE;
127                 _gst_structure_free0 (s);
128 #line 43 "thumbnailsink.vala"
129                 return result;
130 #line 124 "thumbnailsink.c"
131         }
132         result = TRUE;
133         _gst_structure_free0 (s);
134 #line 44 "thumbnailsink.vala"
135         return result;
136 #line 130 "thumbnailsink.c"
137 }
138
139
140 #line 47 "thumbnailsink.vala"
141 static void thumbnail_sink_convert_pixbuf_to_rgb (ThumbnailSink* self, GdkPixbuf* buf) {
142 #line 136 "thumbnailsink.c"
143         guchar* data;
144         gint limit;
145 #line 47 "thumbnailsink.vala"
146         g_return_if_fail (IS_THUMBNAIL_SINK (self));
147 #line 47 "thumbnailsink.vala"
148         g_return_if_fail (GDK_IS_PIXBUF (buf));
149 #line 48 "thumbnailsink.vala"
150         data = gdk_pixbuf_get_pixels (buf);
151 #line 49 "thumbnailsink.vala"
152         limit = gdk_pixbuf_get_width (buf) * gdk_pixbuf_get_height (buf);
153 #line 51 "thumbnailsink.vala"
154         while (TRUE) {
155 #line 149 "thumbnailsink.c"
156                 guchar temp;
157 #line 51 "thumbnailsink.vala"
158                 if (!((limit--) != 0)) {
159 #line 51 "thumbnailsink.vala"
160                         break;
161 #line 155 "thumbnailsink.c"
162                 }
163 #line 52 "thumbnailsink.vala"
164                 temp = data[0];
165 #line 53 "thumbnailsink.vala"
166                 data[0] = data[2];
167 #line 54 "thumbnailsink.vala"
168                 data[2] = temp;
169 #line 56 "thumbnailsink.vala"
170                 data = data + 4;
171 #line 165 "thumbnailsink.c"
172         }
173 }
174
175
176 #line 60 "thumbnailsink.vala"
177 static GstFlowReturn thumbnail_sink_real_preroll (GstBaseSink* base, GstBuffer* b) {
178 #line 172 "thumbnailsink.c"
179         ThumbnailSink * self;
180         GstFlowReturn result = 0;
181         GdkPixbuf* buf;
182         self = THUMBNAIL_SINK (base);
183 #line 60 "thumbnailsink.vala"
184         g_return_val_if_fail (GST_IS_BUFFER (b), 0);
185 #line 61 "thumbnailsink.vala"
186         buf = gdk_pixbuf_new_from_data (b->data, GDK_COLORSPACE_RGB, TRUE, 8, self->priv->width, self->priv->height, self->priv->width * 4, NULL, NULL);
187 #line 63 "thumbnailsink.vala"
188         thumbnail_sink_convert_pixbuf_to_rgb (self, buf);
189 #line 65 "thumbnailsink.vala"
190         g_signal_emit_by_name (self, "have-thumbnail", buf);
191 #line 185 "thumbnailsink.c"
192         result = GST_FLOW_OK;
193         _g_object_unref0 (buf);
194 #line 66 "thumbnailsink.vala"
195         return result;
196 #line 190 "thumbnailsink.c"
197 }
198
199
200 static GObject * thumbnail_sink_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) {
201         GObject * obj;
202         GObjectClass * parent_class;
203         ThumbnailSink * self;
204         parent_class = G_OBJECT_CLASS (thumbnail_sink_parent_class);
205         obj = parent_class->constructor (type, n_construct_properties, construct_properties);
206         self = THUMBNAIL_SINK (obj);
207         {
208         }
209         return obj;
210 }
211
212
213 static void thumbnail_sink_base_init (ThumbnailSinkClass * klass) {
214         {
215                 GstStaticPadTemplate pad = {0};
216                 GstPadTemplate* _tmp0_;
217 #line 18 "thumbnailsink.vala"
218                 pad.name_template = "sink";
219 #line 19 "thumbnailsink.vala"
220                 pad.direction = GST_PAD_SINK;
221 #line 20 "thumbnailsink.vala"
222                 pad.presence = GST_PAD_ALWAYS;
223 #line 21 "thumbnailsink.vala"
224                 pad.static_caps.string = THUMBNAIL_SINK_caps_string;
225 #line 23 "thumbnailsink.vala"
226                 gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), _tmp0_ = gst_static_pad_template_get (&pad));
227 #line 221 "thumbnailsink.c"
228                 _gst_object_unref0 (_tmp0_);
229         }
230 }
231
232
233 static void thumbnail_sink_class_init (ThumbnailSinkClass * klass) {
234         thumbnail_sink_parent_class = g_type_class_peek_parent (klass);
235         g_type_class_add_private (klass, sizeof (ThumbnailSinkPrivate));
236         GST_BASE_SINK_CLASS (klass)->set_caps = thumbnail_sink_real_set_caps;
237         GST_BASE_SINK_CLASS (klass)->preroll = thumbnail_sink_real_preroll;
238         G_OBJECT_CLASS (klass)->constructor = thumbnail_sink_constructor;
239         G_OBJECT_CLASS (klass)->finalize = thumbnail_sink_finalize;
240         g_signal_new ("have_thumbnail", TYPE_THUMBNAIL_SINK, G_SIGNAL_RUN_LAST, 0, NULL, NULL, g_cclosure_marshal_VOID__OBJECT, G_TYPE_NONE, 1, GDK_TYPE_PIXBUF);
241 }
242
243
244 static void thumbnail_sink_instance_init (ThumbnailSink * self) {
245         self->priv = THUMBNAIL_SINK_GET_PRIVATE (self);
246 }
247
248
249 static void thumbnail_sink_finalize (GObject* obj) {
250         ThumbnailSink * self;
251         self = THUMBNAIL_SINK (obj);
252         G_OBJECT_CLASS (thumbnail_sink_parent_class)->finalize (obj);
253 }
254
255
256 GType thumbnail_sink_get_type (void) {
257         static volatile gsize thumbnail_sink_type_id__volatile = 0;
258         if (g_once_init_enter (&thumbnail_sink_type_id__volatile)) {
259                 static const GTypeInfo g_define_type_info = { sizeof (ThumbnailSinkClass), (GBaseInitFunc) thumbnail_sink_base_init, (GBaseFinalizeFunc) NULL, (GClassInitFunc) thumbnail_sink_class_init, (GClassFinalizeFunc) NULL, NULL, sizeof (ThumbnailSink), 0, (GInstanceInitFunc) thumbnail_sink_instance_init, NULL };
260                 GType thumbnail_sink_type_id;
261                 thumbnail_sink_type_id = g_type_register_static (GST_TYPE_BASE_SINK, "ThumbnailSink", &g_define_type_info, 0);
262                 g_once_init_leave (&thumbnail_sink_type_id__volatile, thumbnail_sink_type_id);
263         }
264         return thumbnail_sink_type_id__volatile;
265 }
266
267
268
269