Add queues to spider report current time as taken from the clock

Original commit message from CVS:
Add queues to spider
report current time as taken from the clock
This commit is contained in:
Wim Taymans 2002-06-09 00:26:26 +00:00
parent 57e0e033b6
commit 1634b949c5
3 changed files with 66 additions and 30 deletions

View file

@ -23,28 +23,41 @@ static GstElement*
make_spider_pipeline (const gchar *location)
{
GstElement *pipeline;
GstElement *src, *decoder, *audiosink;
GstElement *seekable;
GstElement *src, *decoder, *audiosink, *videosink, *a_thread, *v_thread, *a_queue, *v_queue;
pipeline = gst_pipeline_new ("app");
src = gst_element_factory_make (SOURCE, "src");
decoder = gst_element_factory_make ("spider", "decoder");
audiosink = gst_element_factory_make ("osssink", "sink");
a_thread = gst_thread_new ("a_thread");
a_queue = gst_element_factory_make ("queue", "a_queue");
audiosink = gst_element_factory_make ("osssink", "a_sink");
v_thread = gst_thread_new ("v_thread");
v_queue = gst_element_factory_make ("queue", "v_queue");
videosink = gst_element_factory_make ("xvideosink", "v_sink");
//g_object_set (G_OBJECT (audiosink), "sync", FALSE, NULL);
g_object_set (G_OBJECT (src), "location", location, NULL);
gst_bin_add (GST_BIN (pipeline), src);
gst_bin_add (GST_BIN (pipeline), decoder);
gst_bin_add (GST_BIN (pipeline), audiosink);
gst_bin_add (GST_BIN (a_thread), a_queue);
gst_bin_add (GST_BIN (a_thread), audiosink);
gst_bin_add (GST_BIN (v_thread), v_queue);
gst_bin_add (GST_BIN (v_thread), videosink);
gst_bin_add (GST_BIN (pipeline), a_thread);
gst_bin_add (GST_BIN (pipeline), v_thread);
gst_element_connect (src, decoder);
gst_element_connect (decoder, audiosink);
gst_element_connect (v_queue, videosink);
gst_element_connect (decoder, v_queue);
gst_element_connect (a_queue, audiosink);
gst_element_connect (decoder, a_queue);
seekable = audiosink;
seekable_elements = g_list_prepend (seekable_elements, seekable);
seekable_elements = g_list_prepend (seekable_elements, videosink);
seekable_elements = g_list_prepend (seekable_elements, audiosink);
rate_pads = g_list_prepend (rate_pads, gst_element_get_pad (audiosink, "sink"));
rate_pads = g_list_prepend (rate_pads, gst_element_get_pad (videosink, "sink"));
return pipeline;
}
@ -157,8 +170,6 @@ query_positions (GstElement *element)
res = gst_element_query (element, GST_PAD_QUERY_POSITION, &format, &value);
if (res) {
g_print ("%s %13lld | ", seek_formats[i].name, value);
if (seek_formats[i].format == GST_FORMAT_TIME)
position = value;
}
else {
g_print ("%s %13.13s | ", seek_formats[i].name, "*NA*");
@ -176,7 +187,8 @@ update_scale (gpointer data)
clock = gst_bin_get_clock (GST_BIN (pipeline));
g_print ("clock: %13llu (%s)\n", gst_clock_get_time (clock), gst_object_get_name (GST_OBJECT (clock)));
position = gst_clock_get_time (clock);
g_print ("clock: %13llu (%s)\n", position, gst_object_get_name (GST_OBJECT (clock)));
while (walk) {
GstElement *element = GST_ELEMENT (walk->data);

View file

@ -23,28 +23,41 @@ static GstElement*
make_spider_pipeline (const gchar *location)
{
GstElement *pipeline;
GstElement *src, *decoder, *audiosink;
GstElement *seekable;
GstElement *src, *decoder, *audiosink, *videosink, *a_thread, *v_thread, *a_queue, *v_queue;
pipeline = gst_pipeline_new ("app");
src = gst_element_factory_make (SOURCE, "src");
decoder = gst_element_factory_make ("spider", "decoder");
audiosink = gst_element_factory_make ("osssink", "sink");
a_thread = gst_thread_new ("a_thread");
a_queue = gst_element_factory_make ("queue", "a_queue");
audiosink = gst_element_factory_make ("osssink", "a_sink");
v_thread = gst_thread_new ("v_thread");
v_queue = gst_element_factory_make ("queue", "v_queue");
videosink = gst_element_factory_make ("xvideosink", "v_sink");
//g_object_set (G_OBJECT (audiosink), "sync", FALSE, NULL);
g_object_set (G_OBJECT (src), "location", location, NULL);
gst_bin_add (GST_BIN (pipeline), src);
gst_bin_add (GST_BIN (pipeline), decoder);
gst_bin_add (GST_BIN (pipeline), audiosink);
gst_bin_add (GST_BIN (a_thread), a_queue);
gst_bin_add (GST_BIN (a_thread), audiosink);
gst_bin_add (GST_BIN (v_thread), v_queue);
gst_bin_add (GST_BIN (v_thread), videosink);
gst_bin_add (GST_BIN (pipeline), a_thread);
gst_bin_add (GST_BIN (pipeline), v_thread);
gst_element_connect (src, decoder);
gst_element_connect (decoder, audiosink);
gst_element_connect (v_queue, videosink);
gst_element_connect (decoder, v_queue);
gst_element_connect (a_queue, audiosink);
gst_element_connect (decoder, a_queue);
seekable = audiosink;
seekable_elements = g_list_prepend (seekable_elements, seekable);
seekable_elements = g_list_prepend (seekable_elements, videosink);
seekable_elements = g_list_prepend (seekable_elements, audiosink);
rate_pads = g_list_prepend (rate_pads, gst_element_get_pad (audiosink, "sink"));
rate_pads = g_list_prepend (rate_pads, gst_element_get_pad (videosink, "sink"));
return pipeline;
}
@ -157,8 +170,6 @@ query_positions (GstElement *element)
res = gst_element_query (element, GST_PAD_QUERY_POSITION, &format, &value);
if (res) {
g_print ("%s %13lld | ", seek_formats[i].name, value);
if (seek_formats[i].format == GST_FORMAT_TIME)
position = value;
}
else {
g_print ("%s %13.13s | ", seek_formats[i].name, "*NA*");
@ -176,7 +187,8 @@ update_scale (gpointer data)
clock = gst_bin_get_clock (GST_BIN (pipeline));
g_print ("clock: %13llu (%s)\n", gst_clock_get_time (clock), gst_object_get_name (GST_OBJECT (clock)));
position = gst_clock_get_time (clock);
g_print ("clock: %13llu (%s)\n", position, gst_object_get_name (GST_OBJECT (clock)));
while (walk) {
GstElement *element = GST_ELEMENT (walk->data);

View file

@ -23,28 +23,41 @@ static GstElement*
make_spider_pipeline (const gchar *location)
{
GstElement *pipeline;
GstElement *src, *decoder, *audiosink;
GstElement *seekable;
GstElement *src, *decoder, *audiosink, *videosink, *a_thread, *v_thread, *a_queue, *v_queue;
pipeline = gst_pipeline_new ("app");
src = gst_element_factory_make (SOURCE, "src");
decoder = gst_element_factory_make ("spider", "decoder");
audiosink = gst_element_factory_make ("osssink", "sink");
a_thread = gst_thread_new ("a_thread");
a_queue = gst_element_factory_make ("queue", "a_queue");
audiosink = gst_element_factory_make ("osssink", "a_sink");
v_thread = gst_thread_new ("v_thread");
v_queue = gst_element_factory_make ("queue", "v_queue");
videosink = gst_element_factory_make ("xvideosink", "v_sink");
//g_object_set (G_OBJECT (audiosink), "sync", FALSE, NULL);
g_object_set (G_OBJECT (src), "location", location, NULL);
gst_bin_add (GST_BIN (pipeline), src);
gst_bin_add (GST_BIN (pipeline), decoder);
gst_bin_add (GST_BIN (pipeline), audiosink);
gst_bin_add (GST_BIN (a_thread), a_queue);
gst_bin_add (GST_BIN (a_thread), audiosink);
gst_bin_add (GST_BIN (v_thread), v_queue);
gst_bin_add (GST_BIN (v_thread), videosink);
gst_bin_add (GST_BIN (pipeline), a_thread);
gst_bin_add (GST_BIN (pipeline), v_thread);
gst_element_connect (src, decoder);
gst_element_connect (decoder, audiosink);
gst_element_connect (v_queue, videosink);
gst_element_connect (decoder, v_queue);
gst_element_connect (a_queue, audiosink);
gst_element_connect (decoder, a_queue);
seekable = audiosink;
seekable_elements = g_list_prepend (seekable_elements, seekable);
seekable_elements = g_list_prepend (seekable_elements, videosink);
seekable_elements = g_list_prepend (seekable_elements, audiosink);
rate_pads = g_list_prepend (rate_pads, gst_element_get_pad (audiosink, "sink"));
rate_pads = g_list_prepend (rate_pads, gst_element_get_pad (videosink, "sink"));
return pipeline;
}
@ -157,8 +170,6 @@ query_positions (GstElement *element)
res = gst_element_query (element, GST_PAD_QUERY_POSITION, &format, &value);
if (res) {
g_print ("%s %13lld | ", seek_formats[i].name, value);
if (seek_formats[i].format == GST_FORMAT_TIME)
position = value;
}
else {
g_print ("%s %13.13s | ", seek_formats[i].name, "*NA*");
@ -176,7 +187,8 @@ update_scale (gpointer data)
clock = gst_bin_get_clock (GST_BIN (pipeline));
g_print ("clock: %13llu (%s)\n", gst_clock_get_time (clock), gst_object_get_name (GST_OBJECT (clock)));
position = gst_clock_get_time (clock);
g_print ("clock: %13llu (%s)\n", position, gst_object_get_name (GST_OBJECT (clock)));
while (walk) {
GstElement *element = GST_ELEMENT (walk->data);