diff options
author | Thomas Vander Stichele <thomas@apestaart.org> | 2002-10-30 14:42:31 +0000 |
---|---|---|
committer | Thomas Vander Stichele <thomas@apestaart.org> | 2002-10-30 14:42:31 +0000 |
commit | 7a0b8e8cc19b7910222972d52cbf7c4d4adadf5d (patch) | |
tree | 70c3d35d547ad39caa287ac1f575909c51f61288 | |
parent | 45985462444e2bf102e798ab58758338631a13a7 (diff) | |
download | gstreamer-plugins-bad-7a0b8e8cc19b7910222972d52cbf7c4d4adadf5d.tar.gz |
code cleanup fire signal when snapshot is gotten this plugin doesn't work on matrix.avi, can someone tell me why ?
Original commit message from CVS:
code cleanup
fire signal when snapshot is gotten
this plugin doesn't work on matrix.avi, can someone tell me why ?
-rw-r--r-- | ext/snapshot/gstsnapshot.c | 129 |
1 files changed, 69 insertions, 60 deletions
diff --git a/ext/snapshot/gstsnapshot.c b/ext/snapshot/gstsnapshot.c index 3b4d0528a..1a552f799 100644 --- a/ext/snapshot/gstsnapshot.c +++ b/ext/snapshot/gstsnapshot.c @@ -82,8 +82,8 @@ enum { }; static GType gst_snapshot_get_type (void); -static void gst_snapshot_class_init (GstShotClass *klass); -static void gst_snapshot_init (GstShot *snapshot); +static void gst_snapshot_class_init (GstSnapshotClass *klass); +static void gst_snapshot_init (GstSnapshot *snapshot); static void gst_snapshot_chain (GstPad *pad, GstBuffer *buf); @@ -113,20 +113,20 @@ gst_snapshot_get_type (void) if (!snapshot_type) { static const GTypeInfo snapshot_info = { - sizeof(GstShotClass), NULL, NULL, (GClassInitFunc)gst_snapshot_class_init, - NULL, - NULL, - sizeof(GstShot), + sizeof (GstSnapshotClass), NULL, NULL, + (GClassInitFunc) gst_snapshot_class_init, NULL, NULL, + sizeof (GstSnapshot), 0, - (GInstanceInitFunc)gst_snapshot_init, + (GInstanceInitFunc) gst_snapshot_init, }; - snapshot_type = g_type_register_static(GST_TYPE_ELEMENT, "GstShot", &snapshot_info, 0); + snapshot_type = g_type_register_static (GST_TYPE_ELEMENT, "GstSnapshot", + &snapshot_info, 0); } return snapshot_type; } static void -gst_snapshot_class_init (GstShotClass *klass) +gst_snapshot_class_init (GstSnapshotClass *klass) { GObjectClass *gobject_class; GstElementClass *gstelement_class; @@ -145,7 +145,7 @@ gst_snapshot_class_init (GstShotClass *klass) gst_snapshot_signals[SNAPSHOT_SIGNAL] = g_signal_new("snapshot", G_TYPE_FROM_CLASS(klass), - G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(GstShotClass, snapshot), + G_SIGNAL_RUN_LAST, G_STRUCT_OFFSET(GstSnapshotClass, snapshot), NULL, NULL, g_cclosure_marshal_VOID__VOID, G_TYPE_NONE, 0); klass->snapshot = snapshot_handler; @@ -157,7 +157,7 @@ gst_snapshot_class_init (GstShotClass *klass) static void snapshot_handler(GstElement *element) { - GstShot *snapshot; + GstSnapshot *snapshot; snapshot = GST_SNAPSHOT( element ); snapshot->snapshot_asked=TRUE; @@ -167,7 +167,7 @@ snapshot_handler(GstElement *element) static gboolean gst_snapshot_sinkconnect (GstPad *pad, GstCaps *caps) { - GstShot *filter; + GstSnapshot *filter; GstCaps *from_caps, *to_caps; filter = GST_SNAPSHOT (gst_pad_get_parent (pad)); @@ -231,7 +231,7 @@ gst_snapshot_sinkconnect (GstPad *pad, GstCaps *caps) } static void -gst_snapshot_init (GstShot *snapshot) +gst_snapshot_init (GstSnapshot *snapshot) { snapshot->sinkpad = gst_pad_new_from_template (GST_PAD_TEMPLATE_GET (snapshot_sink_factory), "sink"); gst_pad_set_connect_function (snapshot->sinkpad, gst_snapshot_sinkconnect); @@ -250,57 +250,61 @@ gst_snapshot_init (GstShot *snapshot) static void gst_snapshot_chain (GstPad *pad, GstBuffer *buf) { - GstShot *snapshot; + GstSnapshot *snapshot; guchar *data, *data_to_convert, *buffer_i420, *data_converted; gulong size,image_size; GstBuffer *outbuf; gint i; - png_byte *row_pointers[ MAX_HEIGHT ]; + png_byte *row_pointers[MAX_HEIGHT]; FILE *fp; - g_return_if_fail(pad != NULL); - g_return_if_fail(GST_IS_PAD(pad)); - g_return_if_fail(buf != NULL); + g_return_if_fail (pad != NULL); + g_return_if_fail (GST_IS_PAD (pad)); + g_return_if_fail (buf != NULL); snapshot = GST_SNAPSHOT (GST_OBJECT_PARENT (pad)); - data = GST_BUFFER_DATA(buf); - size = GST_BUFFER_SIZE(buf); + data = GST_BUFFER_DATA (buf); + size = GST_BUFFER_SIZE (buf); - GST_DEBUG (0,"snapshot: have buffer of %d\n", GST_BUFFER_SIZE(buf)); + GST_DEBUG (0, "snapshot: have buffer of %d", GST_BUFFER_SIZE (buf)); - outbuf = gst_buffer_new(); - GST_BUFFER_DATA(outbuf) = g_malloc(GST_BUFFER_SIZE(buf)); - GST_BUFFER_SIZE(outbuf) = GST_BUFFER_SIZE(buf); + outbuf = gst_buffer_new (); + GST_BUFFER_DATA (outbuf) = g_malloc (GST_BUFFER_SIZE (buf)); + GST_BUFFER_SIZE (outbuf) = GST_BUFFER_SIZE (buf); snapshot->cur_frame++; - if ( snapshot->cur_frame == snapshot->frame || snapshot->snapshot_asked == TRUE ) + if (snapshot->cur_frame == snapshot->frame || + snapshot->snapshot_asked == TRUE ) { snapshot->snapshot_asked = FALSE; image_size = snapshot->width * snapshot->height; - data_converted = g_malloc ((image_size * (snapshot->to_bpp/8)) ); + data_converted = g_malloc ((image_size * (snapshot->to_bpp/8))); - if ( snapshot->format == GST_MAKE_FOURCC('Y','U','Y','2') ) + if (snapshot->format == GST_MAKE_FOURCC('Y','U','Y','2')) { - GST_DEBUG(0, "YUY2 => RGB\n"); - buffer_i420 = g_malloc ((image_size * (snapshot->to_bpp/8)) ); - gst_colorspace_yuy2_to_i420( data, buffer_i420, snapshot->width, snapshot->height); + GST_DEBUG(0, "YUY2 => RGB"); + buffer_i420 = g_malloc ((image_size * (snapshot->to_bpp/8))); + gst_colorspace_yuy2_to_i420 (data, buffer_i420, + snapshot->width, snapshot->height); data_to_convert = buffer_i420; } else data_to_convert = data; - gst_colorspace_convert (snapshot->converter, data_to_convert, data_converted); + gst_colorspace_convert (snapshot->converter, data_to_convert, + data_converted); - GST_INFO(0,"dumpfile : %s\n", snapshot->location ); - fp = fopen( snapshot->location, "wb" ); - if ( fp == NULL ) - g_warning(" Can not open %s\n", snapshot->location ); + GST_INFO (0,"dumpfile : %s", snapshot->location); + fp = fopen (snapshot->location, "wb"); + if (fp == NULL) + g_warning("Can not open %s\n", snapshot->location); else { - png_set_filter( snapshot->png_struct_ptr, 0, PNG_FILTER_NONE | PNG_FILTER_VALUE_NONE ); - png_init_io(snapshot->png_struct_ptr, fp); - png_set_compression_level( snapshot->png_struct_ptr, 9); + png_set_filter (snapshot->png_struct_ptr, 0, + PNG_FILTER_NONE | PNG_FILTER_VALUE_NONE); + png_init_io (snapshot->png_struct_ptr, fp); + png_set_compression_level (snapshot->png_struct_ptr, 9); png_set_IHDR( snapshot->png_struct_ptr, snapshot->png_info_ptr, @@ -313,35 +317,39 @@ gst_snapshot_chain (GstPad *pad, GstBuffer *buf) PNG_FILTER_TYPE_DEFAULT ); - for ( i = 0; i < snapshot->height; i++ ) - row_pointers[i] = data_converted + (snapshot->width * i * snapshot->to_bpp/8 ); + for (i = 0; i < snapshot->height; i++) + row_pointers[i] = data_converted + + (snapshot->width * i * snapshot->to_bpp / 8); - png_write_info( snapshot->png_struct_ptr, snapshot->png_info_ptr ); - png_write_image( snapshot->png_struct_ptr, row_pointers ); - png_write_end( snapshot->png_struct_ptr, NULL ); - png_destroy_info_struct ( snapshot->png_struct_ptr, &snapshot->png_info_ptr ); - png_destroy_write_struct( &snapshot->png_struct_ptr, (png_infopp)NULL ); - fclose( fp ); + png_write_info (snapshot->png_struct_ptr, snapshot->png_info_ptr); + png_write_image (snapshot->png_struct_ptr, row_pointers); + png_write_end (snapshot->png_struct_ptr, NULL); + png_destroy_info_struct (snapshot->png_struct_ptr, + &snapshot->png_info_ptr); + png_destroy_write_struct(&snapshot->png_struct_ptr, (png_infopp) NULL); + fclose (fp); + g_signal_emit (G_OBJECT (snapshot), + gst_snapshot_signals[SNAPSHOT_SIGNAL], 0); } } - - gst_pad_push(snapshot->srcpad,buf ); + gst_pad_push (snapshot->srcpad, buf); } static void -gst_snapshot_set_property (GObject *object, guint prop_id, const GValue *value, GParamSpec *pspec) +gst_snapshot_set_property (GObject *object, guint prop_id, + const GValue *value, GParamSpec *pspec) { - GstShot *snapshot; + GstSnapshot *snapshot; - g_return_if_fail(GST_IS_SNAPSHOT(object)); - snapshot = GST_SNAPSHOT(object); + g_return_if_fail (GST_IS_SNAPSHOT (object)); + snapshot = GST_SNAPSHOT (object); switch (prop_id) { case ARG_LOCATION: - snapshot->location = g_strdup(g_value_get_string (value)); + snapshot->location = g_strdup (g_value_get_string (value)); break; case ARG_FRAME: - snapshot->frame = g_value_get_long(value); + snapshot->frame = g_value_get_long (value); break; default: break; @@ -349,19 +357,20 @@ gst_snapshot_set_property (GObject *object, guint prop_id, const GValue *value, } static void -gst_snapshot_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) +gst_snapshot_get_property (GObject *object, guint prop_id, + GValue *value, GParamSpec *pspec) { - GstShot *snapshot; + GstSnapshot *snapshot; - g_return_if_fail(GST_IS_SNAPSHOT(object)); - snapshot = GST_SNAPSHOT(object); + g_return_if_fail (GST_IS_SNAPSHOT (object)); + snapshot = GST_SNAPSHOT (object); switch (prop_id) { case ARG_LOCATION: - g_value_set_string(value, snapshot->location); + g_value_set_string (value, snapshot->location); break; case ARG_FRAME: - g_value_set_long(value, snapshot->frame); + g_value_set_long (value, snapshot->frame); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); |