Initial commit
[fillmore] / src / marina / marina / thumbnailsink.c
diff --git a/src/marina/marina/thumbnailsink.c b/src/marina/marina/thumbnailsink.c
new file mode 100644 (file)
index 0000000..6d65eef
--- /dev/null
@@ -0,0 +1,269 @@
+/* thumbnailsink.c generated by valac, the Vala compiler
+ * generated from thumbnailsink.vala, do not modify */
+
+
+#include <glib.h>
+#include <glib-object.h>
+#include <gst/base/gstbasesink.h>
+#include <stdlib.h>
+#include <string.h>
+#include <gst/gst.h>
+#include <gdk-pixbuf/gdk-pixdata.h>
+
+
+#define TYPE_THUMBNAIL_SINK (thumbnail_sink_get_type ())
+#define THUMBNAIL_SINK(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), TYPE_THUMBNAIL_SINK, ThumbnailSink))
+#define THUMBNAIL_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), TYPE_THUMBNAIL_SINK, ThumbnailSinkClass))
+#define IS_THUMBNAIL_SINK(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), TYPE_THUMBNAIL_SINK))
+#define IS_THUMBNAIL_SINK_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), TYPE_THUMBNAIL_SINK))
+#define THUMBNAIL_SINK_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), TYPE_THUMBNAIL_SINK, ThumbnailSinkClass))
+
+typedef struct _ThumbnailSink ThumbnailSink;
+typedef struct _ThumbnailSinkClass ThumbnailSinkClass;
+typedef struct _ThumbnailSinkPrivate ThumbnailSinkPrivate;
+#define _gst_structure_free0(var) ((var == NULL) ? NULL : (var = (gst_structure_free (var), NULL)))
+#define _g_object_unref0(var) ((var == NULL) ? NULL : (var = (g_object_unref (var), NULL)))
+#define _gst_object_unref0(var) ((var == NULL) ? NULL : (var = (gst_object_unref (var), NULL)))
+
+struct _ThumbnailSink {
+       GstBaseSink parent_instance;
+       ThumbnailSinkPrivate * priv;
+};
+
+struct _ThumbnailSinkClass {
+       GstBaseSinkClass parent_class;
+};
+
+struct _ThumbnailSinkPrivate {
+       gint width;
+       gint height;
+};
+
+
+static gpointer thumbnail_sink_parent_class = NULL;
+
+GType thumbnail_sink_get_type (void);
+#define THUMBNAIL_SINK_GET_PRIVATE(o) (G_TYPE_INSTANCE_GET_PRIVATE ((o), TYPE_THUMBNAIL_SINK, ThumbnailSinkPrivate))
+enum  {
+       THUMBNAIL_SINK_DUMMY_PROPERTY
+};
+#define THUMBNAIL_SINK_caps_string "video/x-raw-rgb,bpp = (int) 32, depth = (int) 32,\n" \
+"                                  endianness = (int) BIG_ENDIAN,\n" \
+"                                  blue_mask = (int)  0xFF000000,\n" \
+"                                  green_mask = (int) 0x00FF0000,\n" \
+"                                  red_mask = (int)   0x0000FF00,\n" \
+"                                  width = (int) [ 1, max ],\n" \
+"                                  height = (int) [ 1, max ],\n" \
+"                                  framerate = (fraction) [ 0, max ]"
+ThumbnailSink* thumbnail_sink_new (void);
+ThumbnailSink* thumbnail_sink_construct (GType object_type);
+static gboolean thumbnail_sink_real_set_caps (GstBaseSink* base, GstCaps* c);
+static void thumbnail_sink_convert_pixbuf_to_rgb (ThumbnailSink* self, GdkPixbuf* buf);
+static GstFlowReturn thumbnail_sink_real_preroll (GstBaseSink* base, GstBuffer* b);
+static GObject * thumbnail_sink_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties);
+static void thumbnail_sink_finalize (GObject* obj);
+
+
+
+#line 31 "thumbnailsink.vala"
+ThumbnailSink* thumbnail_sink_construct (GType object_type) {
+#line 64 "thumbnailsink.c"
+       ThumbnailSink * self;
+       self = g_object_newv (object_type, 0, NULL);
+#line 32 "thumbnailsink.vala"
+       gst_base_sink_set_sync (GST_BASE_SINK (self), FALSE);
+#line 69 "thumbnailsink.c"
+       return self;
+}
+
+
+#line 31 "thumbnailsink.vala"
+ThumbnailSink* thumbnail_sink_new (void) {
+#line 31 "thumbnailsink.vala"
+       return thumbnail_sink_construct (TYPE_THUMBNAIL_SINK);
+#line 78 "thumbnailsink.c"
+}
+
+
+static gpointer _gst_structure_copy0 (gpointer self) {
+       return self ? gst_structure_copy (self) : NULL;
+}
+
+
+#line 35 "thumbnailsink.vala"
+static gboolean thumbnail_sink_real_set_caps (GstBaseSink* base, GstCaps* c) {
+#line 89 "thumbnailsink.c"
+       ThumbnailSink * self;
+       gboolean result = FALSE;
+       GstStructure* s;
+       gboolean _tmp0_ = FALSE;
+       self = THUMBNAIL_SINK (base);
+#line 35 "thumbnailsink.vala"
+       g_return_val_if_fail (GST_IS_CAPS (c), FALSE);
+#line 36 "thumbnailsink.vala"
+       if (gst_caps_get_size (c) < 1) {
+#line 99 "thumbnailsink.c"
+               result = FALSE;
+#line 37 "thumbnailsink.vala"
+               return result;
+#line 103 "thumbnailsink.c"
+       }
+#line 39 "thumbnailsink.vala"
+       s = _gst_structure_copy0 (gst_caps_get_structure (c, (guint) 0));
+#line 41 "thumbnailsink.vala"
+       if (!gst_structure_get_int (s, "width", &self->priv->width)) {
+#line 41 "thumbnailsink.vala"
+               _tmp0_ = TRUE;
+#line 111 "thumbnailsink.c"
+       } else {
+#line 42 "thumbnailsink.vala"
+               _tmp0_ = !gst_structure_get_int (s, "height", &self->priv->height);
+#line 115 "thumbnailsink.c"
+       }
+#line 41 "thumbnailsink.vala"
+       if (_tmp0_) {
+#line 119 "thumbnailsink.c"
+               result = FALSE;
+               _gst_structure_free0 (s);
+#line 43 "thumbnailsink.vala"
+               return result;
+#line 124 "thumbnailsink.c"
+       }
+       result = TRUE;
+       _gst_structure_free0 (s);
+#line 44 "thumbnailsink.vala"
+       return result;
+#line 130 "thumbnailsink.c"
+}
+
+
+#line 47 "thumbnailsink.vala"
+static void thumbnail_sink_convert_pixbuf_to_rgb (ThumbnailSink* self, GdkPixbuf* buf) {
+#line 136 "thumbnailsink.c"
+       guchar* data;
+       gint limit;
+#line 47 "thumbnailsink.vala"
+       g_return_if_fail (IS_THUMBNAIL_SINK (self));
+#line 47 "thumbnailsink.vala"
+       g_return_if_fail (GDK_IS_PIXBUF (buf));
+#line 48 "thumbnailsink.vala"
+       data = gdk_pixbuf_get_pixels (buf);
+#line 49 "thumbnailsink.vala"
+       limit = gdk_pixbuf_get_width (buf) * gdk_pixbuf_get_height (buf);
+#line 51 "thumbnailsink.vala"
+       while (TRUE) {
+#line 149 "thumbnailsink.c"
+               guchar temp;
+#line 51 "thumbnailsink.vala"
+               if (!((limit--) != 0)) {
+#line 51 "thumbnailsink.vala"
+                       break;
+#line 155 "thumbnailsink.c"
+               }
+#line 52 "thumbnailsink.vala"
+               temp = data[0];
+#line 53 "thumbnailsink.vala"
+               data[0] = data[2];
+#line 54 "thumbnailsink.vala"
+               data[2] = temp;
+#line 56 "thumbnailsink.vala"
+               data = data + 4;
+#line 165 "thumbnailsink.c"
+       }
+}
+
+
+#line 60 "thumbnailsink.vala"
+static GstFlowReturn thumbnail_sink_real_preroll (GstBaseSink* base, GstBuffer* b) {
+#line 172 "thumbnailsink.c"
+       ThumbnailSink * self;
+       GstFlowReturn result = 0;
+       GdkPixbuf* buf;
+       self = THUMBNAIL_SINK (base);
+#line 60 "thumbnailsink.vala"
+       g_return_val_if_fail (GST_IS_BUFFER (b), 0);
+#line 61 "thumbnailsink.vala"
+       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);
+#line 63 "thumbnailsink.vala"
+       thumbnail_sink_convert_pixbuf_to_rgb (self, buf);
+#line 65 "thumbnailsink.vala"
+       g_signal_emit_by_name (self, "have-thumbnail", buf);
+#line 185 "thumbnailsink.c"
+       result = GST_FLOW_OK;
+       _g_object_unref0 (buf);
+#line 66 "thumbnailsink.vala"
+       return result;
+#line 190 "thumbnailsink.c"
+}
+
+
+static GObject * thumbnail_sink_constructor (GType type, guint n_construct_properties, GObjectConstructParam * construct_properties) {
+       GObject * obj;
+       GObjectClass * parent_class;
+       ThumbnailSink * self;
+       parent_class = G_OBJECT_CLASS (thumbnail_sink_parent_class);
+       obj = parent_class->constructor (type, n_construct_properties, construct_properties);
+       self = THUMBNAIL_SINK (obj);
+       {
+       }
+       return obj;
+}
+
+
+static void thumbnail_sink_base_init (ThumbnailSinkClass * klass) {
+       {
+               GstStaticPadTemplate pad = {0};
+               GstPadTemplate* _tmp0_;
+#line 18 "thumbnailsink.vala"
+               pad.name_template = "sink";
+#line 19 "thumbnailsink.vala"
+               pad.direction = GST_PAD_SINK;
+#line 20 "thumbnailsink.vala"
+               pad.presence = GST_PAD_ALWAYS;
+#line 21 "thumbnailsink.vala"
+               pad.static_caps.string = THUMBNAIL_SINK_caps_string;
+#line 23 "thumbnailsink.vala"
+               gst_element_class_add_pad_template (GST_ELEMENT_CLASS (klass), _tmp0_ = gst_static_pad_template_get (&pad));
+#line 221 "thumbnailsink.c"
+               _gst_object_unref0 (_tmp0_);
+       }
+}
+
+
+static void thumbnail_sink_class_init (ThumbnailSinkClass * klass) {
+       thumbnail_sink_parent_class = g_type_class_peek_parent (klass);
+       g_type_class_add_private (klass, sizeof (ThumbnailSinkPrivate));
+       GST_BASE_SINK_CLASS (klass)->set_caps = thumbnail_sink_real_set_caps;
+       GST_BASE_SINK_CLASS (klass)->preroll = thumbnail_sink_real_preroll;
+       G_OBJECT_CLASS (klass)->constructor = thumbnail_sink_constructor;
+       G_OBJECT_CLASS (klass)->finalize = thumbnail_sink_finalize;
+       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);
+}
+
+
+static void thumbnail_sink_instance_init (ThumbnailSink * self) {
+       self->priv = THUMBNAIL_SINK_GET_PRIVATE (self);
+}
+
+
+static void thumbnail_sink_finalize (GObject* obj) {
+       ThumbnailSink * self;
+       self = THUMBNAIL_SINK (obj);
+       G_OBJECT_CLASS (thumbnail_sink_parent_class)->finalize (obj);
+}
+
+
+GType thumbnail_sink_get_type (void) {
+       static volatile gsize thumbnail_sink_type_id__volatile = 0;
+       if (g_once_init_enter (&thumbnail_sink_type_id__volatile)) {
+               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 };
+               GType thumbnail_sink_type_id;
+               thumbnail_sink_type_id = g_type_register_static (GST_TYPE_BASE_SINK, "ThumbnailSink", &g_define_type_info, 0);
+               g_once_init_leave (&thumbnail_sink_type_id__volatile, thumbnail_sink_type_id);
+       }
+       return thumbnail_sink_type_id__volatile;
+}
+
+
+
+