4 static GstEvent *event;
8 event_received (GObject *object, GstEvent *event, GstElement *pipeline)
10 if (GST_EVENT_TYPE (event) == GST_EVENT_SEGMENT_DONE) {
11 g_print ("segment done\n");
13 event = gst_event_new_segment_seek (GST_FORMAT_DEFAULT |
15 GST_SEEK_FLAG_FLUSH, 20, 25);
18 event = gst_event_new_segment_seek (GST_FORMAT_DEFAULT |
21 GST_SEEK_FLAG_SEGMENT_LOOP, 50, 55);
23 gst_pad_send_event (pad, event);
28 main (gint argc, gchar *argv[])
36 gst_init (&argc, &argv);
38 pipeline = gst_pipeline_new ("pipeline");
40 fakesrc = gst_element_factory_make ("fakesrc", "src");
42 fakesink = gst_element_factory_make ("fakesink", "sink");
44 gst_bin_add (GST_BIN (pipeline), fakesrc);
45 gst_bin_add (GST_BIN (pipeline), fakesink);
47 gst_element_link_pads (fakesrc, "src", fakesink, "sink");
49 gst_element_set_state (pipeline, GST_STATE_READY);
51 pad = gst_element_get_pad (fakesrc, "src");
53 g_print ("doing segment seek from 5 to 10\n");
55 gst_pad_send_event (pad,
56 gst_event_new_segment_seek (GST_FORMAT_DEFAULT |
58 GST_SEEK_FLAG_FLUSH, 5, 10));
60 format = GST_FORMAT_DEFAULT;
62 gst_pad_query (pad, GST_QUERY_START, &format, &value);
63 g_print ("configured for start %" G_GINT64_FORMAT "\n", value);
64 gst_pad_query (pad, GST_QUERY_SEGMENT_END, &format, &value);
65 g_print ("configured segment end %" G_GINT64_FORMAT "\n", value);
68 gst_element_set_state (pipeline, GST_STATE_PLAYING);
70 g_signal_connect (G_OBJECT (pipeline), "deep_notify", G_CALLBACK (gst_element_default_deep_notify), NULL);
72 while (gst_bin_iterate (GST_BIN (pipeline)));
74 g_print ("doing segment seek from 50 to 55 with looping (2 times), then 20 to 25 without looping\n");
77 event = gst_event_new_segment_seek (GST_FORMAT_DEFAULT |
80 GST_SEEK_FLAG_SEGMENT_LOOP, 50, 55);
81 gst_pad_send_event (pad, event);
83 g_signal_connect (G_OBJECT (gst_element_get_pad (fakesink, "sink")), "event_received", G_CALLBACK (event_received), event);
85 gst_pad_query (pad, GST_QUERY_START, &format, &value);
86 g_print ("configured for start %" G_GINT64_FORMAT "\n", value);
87 gst_pad_query (pad, GST_QUERY_SEGMENT_END, &format, &value);
88 g_print ("configured segment end %" G_GINT64_FORMAT "\n", value);
90 gst_element_set_state (pipeline, GST_STATE_PLAYING);
92 while (gst_bin_iterate (GST_BIN (pipeline)));
94 gst_element_set_state (pipeline, GST_STATE_NULL);