From de659d38cd1d688f8c0d09b2246e41ea38992084 Mon Sep 17 00:00:00 2001 From: Wim Taymans Date: Sun, 16 Jun 2002 21:54:38 +0000 Subject: Add DV seeking example Original commit message from CVS: Add DV seeking example --- examples/seeking/seek.c | 41 ++++++++++++++++++++++++++++++++++++++++- 1 file changed, 40 insertions(+), 1 deletion(-) (limited to 'examples/seeking/seek.c') diff --git a/examples/seeking/seek.c b/examples/seeking/seek.c index 5aa3ab04..12be23f7 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); -- cgit v1.2.1