summaryrefslogtreecommitdiffstats
path: root/examples/seeking/seek.c
diff options
context:
space:
mode:
authorRonald S. Bultje <rbultje@ronald.bitfreak.net>2005-02-05 16:28:31 +0000
committerRonald S. Bultje <rbultje@ronald.bitfreak.net>2005-02-05 16:28:31 +0000
commit4a1a8872625b855d6bf909e1c493625c1ee78c00 (patch)
tree82aff574c9ad35a106d582ad43a6e4de0580169a /examples/seeking/seek.c
parent204e36d8724047fe9f87a5041c7c50fd1e5027d3 (diff)
downloadgst-plugins-bad-4a1a8872625b855d6bf909e1c493625c1ee78c00.tar.gz
gst-plugins-bad-4a1a8872625b855d6bf909e1c493625c1ee78c00.tar.bz2
gst-plugins-bad-4a1a8872625b855d6bf909e1c493625c1ee78c00.zip
examples/seeking/seek.c: Add AVI pipeline.
Original commit message from CVS: * examples/seeking/seek.c: (make_avi_msmpeg4v3_mp3_pipeline): Add AVI pipeline. * gst-libs/gst/riff/riff-media.c: (gst_riff_create_video_caps), (gst_riff_create_audio_caps), (gst_riff_create_iavs_caps), (gst_riff_create_video_template_caps), (gst_riff_create_audio_template_caps), (gst_riff_create_iavs_template_caps): * gst-libs/gst/riff/riff-media.h: Remove obsolete non-data functions, make data functions the default. * gst-libs/gst/riff/riff-read.c: (gst_riff_read_chunk), (gst_riff_parse_chunk), (gst_riff_parse_file_header), (gst_riff_parse_strh), (gst_riff_parse_strf_vids), (gst_riff_parse_strf_auds), (gst_riff_parse_strf_iavs), (gst_riff_parse_info): * gst-libs/gst/riff/riff-read.h: * gst-libs/gst/riff/riff.c: (plugin_init): Change from bytestream-wrapping to pure RIFF parsing (can be used chain-based if someone would want that). Add gtk-doc comments. * gst/avi/Makefile.am: * gst/avi/gstavi.c: (plugin_init): Disable mux for now. * gst/avi/gstavidemux.c: (gst_avi_demux_get_type), (gst_avi_demux_class_init), (gst_avi_demux_init), (gst_avi_demux_reset), (gst_avi_demux_src_convert), (gst_avi_demux_handle_src_query), (gst_avi_demux_handle_src_event), (gst_avi_demux_parse_file_header), (gst_avi_demux_stream_init), (gst_avi_demux_parse_avih), (gst_avi_demux_parse_superindex), (gst_avi_demux_parse_subindex), (gst_avi_demux_read_subindexes), (gst_avi_demux_parse_stream), (gst_avi_demux_parse_odml), (gst_avi_demux_parse_index), (gst_avi_demux_stream_index), (gst_avi_demux_stream_scan), (gst_avi_demux_massage_index), (gst_avi_demux_stream_header), (gst_avi_demux_handle_seek), (gst_avi_demux_process_next_entry), (gst_avi_demux_stream_data), (gst_avi_demux_loop), (gst_avi_demux_sink_activate): * gst/avi/gstavidemux.h: Port to changed RIFF API, port to 0.9, add locking. Add gtk-doc comments to some relevant functions. Seeking is weird, works otherwise. Some parts are still disabled.
Diffstat (limited to 'examples/seeking/seek.c')
-rw-r--r--examples/seeking/seek.c68
1 files changed, 67 insertions, 1 deletions
diff --git a/examples/seeking/seek.c b/examples/seeking/seek.c
index f171d0c1..4ba2f34c 100644
--- a/examples/seeking/seek.c
+++ b/examples/seeking/seek.c
@@ -20,7 +20,7 @@ static guint update_id;
static gulong changed_id;
//#define SOURCE "gnomevfssrc"
-#define SOURCE "filesrc"
+#define SOURCE "gnomevfssrc"
#define UPDATE_INTERVAL 500
@@ -422,6 +422,71 @@ make_vorbis_theora_pipeline (const gchar * location)
}
static GstElement *
+make_avi_msmpeg4v3_mp3_pipeline (const gchar * location)
+{
+ GstElement *pipeline, *audio_bin, *video_bin;
+ GstElement *src, *demux, *a_decoder, *a_convert, *v_decoder, *v_convert;
+ GstElement *audiosink, *videosink;
+ GstElement *a_queue, *v_queue;
+ GstPad *seekable;
+
+ pipeline = gst_pipeline_new ("app");
+
+ src = gst_element_factory_make_or_warn (SOURCE, "src");
+ g_object_set (G_OBJECT (src), "location", location, NULL);
+
+ demux = gst_element_factory_make_or_warn ("avidemux", "demux");
+
+ gst_bin_add (GST_BIN (pipeline), src);
+ gst_bin_add (GST_BIN (pipeline), demux);
+ gst_element_link (src, demux);
+
+ audio_bin = gst_bin_new ("a_decoder_bin");
+ a_queue = gst_element_factory_make_or_warn ("queue", "a_queue");
+ a_decoder = gst_element_factory_make_or_warn ("mad", "a_dec");
+ a_convert = gst_element_factory_make_or_warn ("audioconvert", "a_convert");
+ audiosink = gst_element_factory_make_or_warn ("osssink", "a_sink");
+
+ gst_element_link (a_queue, a_decoder);
+ gst_element_link (a_decoder, a_convert);
+ gst_element_link (a_convert, audiosink);
+
+ gst_bin_add (GST_BIN (audio_bin), a_queue);
+ gst_bin_add (GST_BIN (audio_bin), a_decoder);
+ gst_bin_add (GST_BIN (audio_bin), a_convert);
+ gst_bin_add (GST_BIN (audio_bin), audiosink);
+
+ gst_bin_add (GST_BIN (pipeline), audio_bin);
+
+ setup_dynamic_link (demux, NULL, gst_element_get_pad (a_queue, "sink"), NULL);
+
+ video_bin = gst_bin_new ("v_decoder_bin");
+ v_queue = gst_element_factory_make_or_warn ("queue", "v_queue");
+ v_decoder = gst_element_factory_make_or_warn ("ffdec_msmpeg4", "v_dec");
+ v_convert =
+ gst_element_factory_make_or_warn ("ffmpegcolorspace", "v_convert");
+ videosink = gst_element_factory_make_or_warn ("xvimagesink", "v_sink");
+ gst_element_link_many (v_queue, v_decoder, v_convert, videosink, NULL);
+
+ gst_bin_add (GST_BIN (video_bin), v_queue);
+ gst_bin_add (GST_BIN (video_bin), v_decoder);
+ gst_bin_add (GST_BIN (video_bin), v_convert);
+ gst_bin_add (GST_BIN (video_bin), videosink);
+
+ gst_bin_add (GST_BIN (pipeline), video_bin);
+
+ setup_dynamic_link (demux, NULL, gst_element_get_pad (v_queue, "sink"), NULL);
+
+ seekable = gst_element_get_pad (a_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 (a_decoder, "sink"));
+
+ return pipeline;
+}
+
+static GstElement *
make_mp3_pipeline (const gchar * location)
{
GstElement *pipeline;
@@ -1043,6 +1108,7 @@ static Pipeline pipelines[] = {
{"vorbis", make_vorbis_pipeline},
{"theora", make_theora_pipeline},
{"ogg/v/t", make_vorbis_theora_pipeline},
+ {"avi/msmpeg4v3/mp3", make_avi_msmpeg4v3_mp3_pipeline},
{"sid", make_sid_pipeline},
{"flac", make_flac_pipeline},
{"wav", make_wav_pipeline},