From 60bf5b63885f591a3677a2365ebacdaf788cb521 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Sun, 16 Jun 2002 21:54:38 +0000 Subject: [PATCH] Add DV seeking example Original commit message from CVS: Add DV seeking example --- examples/seeking/Makefile.am | 2 +- examples/seeking/seek.c | 41 +++++++++++++++++++++++++++++++++- examples/seeking/spider_seek.c | 2 +- 3 files changed, 42 insertions(+), 3 deletions(-) diff --git a/examples/seeking/Makefile.am b/examples/seeking/Makefile.am index ad04148051..30003e0625 100644 --- a/examples/seeking/Makefile.am +++ b/examples/seeking/Makefile.am @@ -3,5 +3,5 @@ examples = seek spider_seek noinst_PROGRAMS = $(examples) # we have nothing but apps here, we can do this safely -LIBS = $(GST_LIBS) $(GTK_LIBS) +LIBS = $(GST_LIBS) $(GTK_LIBS) -lfreetype CFLAGS = $(GST_CFLAGS) $(GTK_CFLAGS) diff --git a/examples/seeking/seek.c b/examples/seeking/seek.c index 5aa3ab0489..12be23f717 100644 --- a/examples/seeking/seek.c +++ b/examples/seeking/seek.c @@ -89,6 +89,43 @@ make_mod_pipeline (const gchar *location) return pipeline; } +static GstElement* +make_dv_pipeline (const gchar *location) +{ + GstElement *pipeline; + GstElement *src, *decoder, *audiosink, *videosink; + GstPad *seekable; + + pipeline = gst_pipeline_new ("app"); + + src = gst_element_factory_make_or_warn (SOURCE, "src"); + decoder = gst_element_factory_make_or_warn ("dvdec", "decoder"); + videosink = gst_element_factory_make_or_warn ("xvideosink", "v_sink"); + audiosink = gst_element_factory_make_or_warn ("osssink", "a_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 (pipeline), videosink); + + gst_element_connect (src, decoder); + gst_element_connect (decoder, audiosink); + gst_element_connect (decoder, videosink); + + seekable = gst_element_get_pad (decoder, "video"); + seekable_pads = g_list_prepend (seekable_pads, seekable); + rate_pads = g_list_prepend (rate_pads, seekable); + seekable = gst_element_get_pad (decoder, "audio"); + seekable_pads = g_list_prepend (seekable_pads, seekable); + rate_pads = g_list_prepend (rate_pads, seekable); + rate_pads = g_list_prepend (rate_pads, gst_element_get_pad (decoder, "sink")); + + return pipeline; +} + static GstElement* make_wav_pipeline (const gchar *location) { @@ -687,7 +724,7 @@ main (int argc, char **argv) gtk_init (&argc, &argv); if (argc != 3) { - g_print ("usage: %s \n", argv[0]); + g_print ("usage: %s \n", argv[0]); exit (-1); } @@ -709,6 +746,8 @@ main (int argc, char **argv) pipeline = make_wav_pipeline (argv[2]); else if (atoi (argv[1]) == 8) pipeline = make_mod_pipeline (argv[2]); + else if (atoi (argv[1]) == 9) + pipeline = make_dv_pipeline (argv[2]); /* initialize gui elements ... */ window = gtk_window_new (GTK_WINDOW_TOPLEVEL); diff --git a/examples/seeking/spider_seek.c b/examples/seeking/spider_seek.c index b138356f32..b7b37529aa 100644 --- a/examples/seeking/spider_seek.c +++ b/examples/seeking/spider_seek.c @@ -41,7 +41,7 @@ make_spider_pipeline (const gchar *location, gboolean thread) v_thread = gst_thread_new ("v_thread"); v_queue = gst_element_factory_make ("queue", "v_queue"); - videosink = gst_element_factory_make ("videosink", "v_sink"); + 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);