summaryrefslogtreecommitdiff
path: root/examples/seeking/seek.c
diff options
context:
space:
mode:
Diffstat (limited to 'examples/seeking/seek.c')
-rw-r--r--examples/seeking/seek.c42
1 files changed, 41 insertions, 1 deletions
diff --git a/examples/seeking/seek.c b/examples/seeking/seek.c
index ec1ccc9a2..57e4f2be0 100644
--- a/examples/seeking/seek.c
+++ b/examples/seeking/seek.c
@@ -57,7 +57,7 @@ dynamic_link (GstPadTemplate * templ, GstPad * newpad, gpointer data)
gst_bin_add (GST_BIN (pipeline), connect->bin);
gst_pad_link (newpad, connect->target);
- seekable_pads = g_list_prepend (seekable_pads, newpad);
+ //seekable_pads = g_list_prepend (seekable_pads, newpad);
rate_pads = g_list_prepend (rate_pads, newpad);
}
}
@@ -312,6 +312,45 @@ make_vorbis_pipeline (const gchar * location)
}
static GstElement *
+make_theora_pipeline (const gchar * location)
+{
+ GstElement *pipeline, *video_bin;
+ GstElement *src, *demux, *decoder, *convert, *videosink;
+ GstPad *seekable;
+
+ pipeline = gst_pipeline_new ("app");
+
+ src = gst_element_factory_make_or_warn (SOURCE, "src");
+ demux = gst_element_factory_make_or_warn ("oggdemux", "demux");
+ decoder = gst_element_factory_make_or_warn ("theoradec", "decoder");
+ convert = gst_element_factory_make_or_warn ("ffmpegcolorspace", "convert");
+ videosink = gst_element_factory_make_or_warn ("xvimagesink", "sink");
+
+ g_object_set (G_OBJECT (src), "location", location, NULL);
+
+ video_bin = gst_bin_new ("v_decoder_bin");
+
+ gst_bin_add (GST_BIN (pipeline), src);
+ gst_bin_add (GST_BIN (pipeline), demux);
+ gst_bin_add (GST_BIN (video_bin), decoder);
+ gst_bin_add (GST_BIN (video_bin), convert);
+ gst_bin_add (GST_BIN (video_bin), videosink);
+ gst_bin_add (GST_BIN (pipeline), video_bin);
+
+ gst_element_link (src, demux);
+ gst_element_link (decoder, convert);
+ gst_element_link (convert, videosink);
+
+ setup_dynamic_link (demux, NULL, gst_element_get_pad (decoder, "sink"), NULL);
+
+ seekable = gst_element_get_pad (decoder, "src");
+ 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_mp3_pipeline (const gchar * location)
{
GstElement *pipeline;
@@ -915,6 +954,7 @@ static Pipeline pipelines[] = {
{"mpeg1", make_mpeg_pipeline},
{"mpegparse", make_parse_pipeline},
{"vorbis", make_vorbis_pipeline},
+ {"theora", make_theora_pipeline},
{"sid", make_sid_pipeline},
{"flac", make_flac_pipeline},
{"wav", make_wav_pipeline},