/* * testsuite program to test clock behaviour * * creates a fakesrc ! identity ! fakesink pipeline * registers a callback on fakesrc and one on fakesink * also register a normal GLib timeout which should not be reached */ #include void gst_clock_debug (GstClock *clock) { g_print ("Clock info: speed %f, active %s, time %d\n", gst_clock_get_speed (clock), gst_clock_is_active (clock) ? "yes" : "no", (gint) gst_clock_get_time (clock) ); } int main (int argc, char *argv[]) { GstElement *src, *id, *sink, *pipeline; GstClock *clock = NULL; gst_init (&argc, &argv); if ((src = gst_element_factory_make ("fakesrc", "source")) == NULL) { g_print ("Could not create a fakesrc element !\n"); return 1; } if ((id = gst_element_factory_make ("identity", "filter")) == NULL) { g_print ("Could not create a identity element !\n"); return 1; } if ((sink = gst_element_factory_make ("fakesink", "sink")) == NULL) { g_print ("Could not create a fakesink element !\n"); return 1; } if ((pipeline = gst_pipeline_new ("pipeline")) == NULL) { g_print ("Could not create a pipeline element !\n"); return 1; } gst_element_link_many (src, id, sink, NULL); gst_bin_add_many (GST_BIN (pipeline), src, id, sink, NULL); clock = gst_bin_get_clock (GST_BIN (pipeline)); g_assert (clock != NULL); gst_clock_debug (clock); //gst_clock_set_active (clock, TRUE); gst_clock_debug (clock); //clock = gst_clock_new ("clock"); //gst_element_set_clock (src, clock); //clock = gst_element_get_clock (src); //g_assert (clock != NULL); gst_element_set_state (GST_ELEMENT (pipeline), GST_STATE_PLAYING); gst_bin_iterate (GST_BIN (pipeline)); gst_clock_debug (clock); gst_clock_debug (clock); gst_clock_debug (clock); /* success */ return 0; }