mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-14 05:12:09 +00:00
Add DV seeking example
Original commit message from CVS: Add DV seeking example
This commit is contained in:
parent
c8ee83c9eb
commit
60bf5b6388
3 changed files with 42 additions and 3 deletions
|
@ -3,5 +3,5 @@ examples = seek spider_seek
|
||||||
noinst_PROGRAMS = $(examples)
|
noinst_PROGRAMS = $(examples)
|
||||||
|
|
||||||
# we have nothing but apps here, we can do this safely
|
# 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)
|
CFLAGS = $(GST_CFLAGS) $(GTK_CFLAGS)
|
||||||
|
|
|
@ -89,6 +89,43 @@ make_mod_pipeline (const gchar *location)
|
||||||
return pipeline;
|
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*
|
static GstElement*
|
||||||
make_wav_pipeline (const gchar *location)
|
make_wav_pipeline (const gchar *location)
|
||||||
{
|
{
|
||||||
|
@ -687,7 +724,7 @@ main (int argc, char **argv)
|
||||||
gtk_init (&argc, &argv);
|
gtk_init (&argc, &argv);
|
||||||
|
|
||||||
if (argc != 3) {
|
if (argc != 3) {
|
||||||
g_print ("usage: %s <type 0=mp3 1=avi 2=mpeg1 3=mpegparse 4=vorbis 5=sid 6=flac 7=wav 8=mod> <filename>\n", argv[0]);
|
g_print ("usage: %s <type 0=mp3 1=avi 2=mpeg1 3=mpegparse 4=vorbis 5=sid 6=flac 7=wav 8=mod 9=dv> <filename>\n", argv[0]);
|
||||||
exit (-1);
|
exit (-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -709,6 +746,8 @@ main (int argc, char **argv)
|
||||||
pipeline = make_wav_pipeline (argv[2]);
|
pipeline = make_wav_pipeline (argv[2]);
|
||||||
else if (atoi (argv[1]) == 8)
|
else if (atoi (argv[1]) == 8)
|
||||||
pipeline = make_mod_pipeline (argv[2]);
|
pipeline = make_mod_pipeline (argv[2]);
|
||||||
|
else if (atoi (argv[1]) == 9)
|
||||||
|
pipeline = make_dv_pipeline (argv[2]);
|
||||||
|
|
||||||
/* initialize gui elements ... */
|
/* initialize gui elements ... */
|
||||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||||
|
|
|
@ -41,7 +41,7 @@ make_spider_pipeline (const gchar *location, gboolean thread)
|
||||||
|
|
||||||
v_thread = gst_thread_new ("v_thread");
|
v_thread = gst_thread_new ("v_thread");
|
||||||
v_queue = gst_element_factory_make ("queue", "v_queue");
|
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 (audiosink), "sync", FALSE, NULL);
|
||||||
|
|
||||||
g_object_set (G_OBJECT (src), "location", location, NULL);
|
g_object_set (G_OBJECT (src), "location", location, NULL);
|
||||||
|
|
Loading…
Reference in a new issue