From: David S. <dsc...@us...> - 2003-05-21 06:22:14
|
CVS Root: /cvsroot/gstreamer Module: gst-plugins Changes by: dschleef Date: Tue May 20 2003 23:15:22 PDT Branch: BRANCH-GSTREAMER-0_6 Log message: Merge sync parameter patch from HEAD. Modified files: gst/videotestsrc: gstvideotestsrc.c gstvideotestsrc.h Links: http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins/gst/videotestsrc/gstvideotestsrc.c.diff?r1=1.15.4.3&r2=1.15.4.4 http://cvs.sf.net/cgi-bin/viewcvs.cgi/gstreamer/gst-plugins/gst/videotestsrc/gstvideotestsrc.h.diff?r1=1.7.10.1&r2=1.7.10.2 ====Begin Diffs==== Index: gstvideotestsrc.c =================================================================== RCS file: /cvsroot/gstreamer/gst-plugins/gst/videotestsrc/gstvideotestsrc.c,v retrieving revision 1.15.4.3 retrieving revision 1.15.4.4 diff -u -d -r1.15.4.3 -r1.15.4.4 --- gstvideotestsrc.c 18 May 2003 01:43:46 -0000 1.15.4.3 +++ gstvideotestsrc.c 21 May 2003 06:15:08 -0000 1.15.4.4 @@ -53,6 +53,7 @@ ARG_FOURCC, ARG_RATE, ARG_TYPE, + ARG_SYNC, /* FILL ME */ }; @@ -157,6 +158,9 @@ g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_TYPE, g_param_spec_enum ("pattern", "Pattern", "Type of test pattern to generate", GST_TYPE_VIDEOTESTSRC_PATTERN, 1, G_PARAM_READWRITE)); + g_object_class_install_property (G_OBJECT_CLASS (klass), ARG_SYNC, + g_param_spec_boolean ("sync", "Sync", "Synchronize to clock", + TRUE, G_PARAM_READWRITE)); parent_class = g_type_class_ref (GST_TYPE_ELEMENT); @@ -311,6 +315,8 @@ gst_pad_set_get_function (videotestsrc->srcpad, gst_videotestsrc_get); gst_pad_set_link_function (videotestsrc->srcpad, gst_videotestsrc_srcconnect); + videotestsrc->sync = TRUE; + videotestsrc->width = 640; videotestsrc->height = 480; @@ -361,19 +367,20 @@ videotestsrc->make_image (videotestsrc, (void *) GST_BUFFER_DATA (buf), videotestsrc->width, videotestsrc->height); - do { - GstClockID id; + if (videotestsrc->sync){ + do { + GstClockID id; - videotestsrc->timestamp += videotestsrc->interval; - GST_BUFFER_TIMESTAMP (buf) = videotestsrc->timestamp; + videotestsrc->timestamp += videotestsrc->interval; + GST_BUFFER_TIMESTAMP (buf) = videotestsrc->timestamp; - if (videotestsrc->clock) { - id = gst_clock_new_single_shot_id (videotestsrc->clock, GST_BUFFER_TIMESTAMP (buf)); - gst_element_clock_wait (GST_ELEMENT (videotestsrc), id, &jitter); - gst_clock_id_free (id); - } + if (videotestsrc->clock) { + id = gst_clock_new_single_shot_id (videotestsrc->clock, GST_BUFFER_TIMESTAMP (buf)); + gst_element_clock_wait (GST_ELEMENT (videotestsrc), id, &jitter); + gst_clock_id_free (id); + } + } while (jitter > 100 * GST_MSECOND); } - while (jitter > 100 * GST_MSECOND); return buf; } @@ -434,6 +441,9 @@ case ARG_TYPE: gst_videotestsrc_set_pattern (src, g_value_get_enum (value)); break; + case ARG_SYNC: + src->sync = g_value_get_boolean (value); + break; default: break; } @@ -463,6 +473,9 @@ break; case ARG_TYPE: g_value_set_enum (value, src->type); + break; + case ARG_SYNC: + g_value_set_boolean (value, src->sync); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); Index: gstvideotestsrc.h =================================================================== RCS file: /cvsroot/gstreamer/gst-plugins/gst/videotestsrc/gstvideotestsrc.h,v retrieving revision 1.7.10.1 retrieving revision 1.7.10.2 diff -u -d -r1.7.10.1 -r1.7.10.2 --- gstvideotestsrc.h 13 May 2003 07:15:44 -0000 1.7.10.1 +++ gstvideotestsrc.h 21 May 2003 06:15:09 -0000 1.7.10.2 @@ -61,6 +61,7 @@ struct fourcc_list_struct *fourcc; /* private */ + gboolean sync; gint64 timestamp; gint64 interval; gint bpp; |