Convert %lld and %llu in printf formats to G_G[U]INT64_FORMAT. Fix pointer<->int...
[platform/upstream/gstreamer.git] / tests / seeking / seeking1.c
1 #include <gst/gst.h>
2
3 static gint looping;
4 static GstEvent *event;
5 static GstPad *pad;
6
7 static void
8 event_received (GObject *object, GstEvent *event, GstElement *pipeline)
9 {
10   if (GST_EVENT_TYPE (event) == GST_EVENT_SEGMENT_DONE) {
11     g_print ("segment done\n");
12     if (--looping == 1) {
13       event = gst_event_new_segment_seek (GST_FORMAT_DEFAULT |
14                                           GST_SEEK_METHOD_SET |
15                                           GST_SEEK_FLAG_FLUSH, 20, 25);
16     }
17     else {
18       event = gst_event_new_segment_seek (GST_FORMAT_DEFAULT |
19                                           GST_SEEK_METHOD_SET |
20                                           GST_SEEK_FLAG_FLUSH |
21                                           GST_SEEK_FLAG_SEGMENT_LOOP, 50, 55);
22     }
23     gst_pad_send_event (pad, event);
24   }
25 }
26
27 gint
28 main (gint argc, gchar *argv[])
29 {
30   GstElement *pipeline;
31   GstElement *fakesrc;
32   GstElement *fakesink;
33   guint64 value;
34   GstFormat format;
35   
36   gst_init (&argc, &argv);
37
38   pipeline = gst_pipeline_new ("pipeline");
39
40   fakesrc = gst_element_factory_make ("fakesrc", "src");
41
42   fakesink = gst_element_factory_make ("fakesink", "sink");
43
44   gst_bin_add (GST_BIN (pipeline), fakesrc);
45   gst_bin_add (GST_BIN (pipeline), fakesink);
46
47   gst_element_link_pads (fakesrc, "src", fakesink, "sink");
48
49   gst_element_set_state (pipeline, GST_STATE_READY);
50
51   pad =  gst_element_get_pad (fakesrc, "src");
52   
53   g_print ("doing segment seek from 5 to 10\n");
54
55   gst_pad_send_event (pad,
56                       gst_event_new_segment_seek (GST_FORMAT_DEFAULT |
57                                                   GST_SEEK_METHOD_SET |
58                                                   GST_SEEK_FLAG_FLUSH, 5, 10));
59
60   format = GST_FORMAT_DEFAULT;
61
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);
66
67
68   gst_element_set_state (pipeline, GST_STATE_PLAYING);
69
70   g_signal_connect (G_OBJECT (pipeline), "deep_notify", G_CALLBACK (gst_element_default_deep_notify), NULL);
71
72   while (gst_bin_iterate (GST_BIN (pipeline)));
73
74   g_print ("doing segment seek from 50 to 55 with looping (2 times), then 20 to 25 without looping\n");
75   looping = 3;
76
77   event = gst_event_new_segment_seek (GST_FORMAT_DEFAULT |
78                                       GST_SEEK_METHOD_SET |
79                                       GST_SEEK_FLAG_FLUSH |
80                                       GST_SEEK_FLAG_SEGMENT_LOOP, 50, 55);
81   gst_pad_send_event (pad, event);
82
83   g_signal_connect (G_OBJECT (gst_element_get_pad (fakesink, "sink")), "event_received", G_CALLBACK (event_received), event);
84
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);
89
90   gst_element_set_state (pipeline, GST_STATE_PLAYING);
91
92   while (gst_bin_iterate (GST_BIN (pipeline)));
93   
94   gst_element_set_state (pipeline, GST_STATE_NULL);
95   
96   return 0;
97 }