diff options
author | Ronald S. Bultje <rbultje@ronald.bitfreak.net> | 2005-02-05 16:28:31 +0000 |
---|---|---|
committer | Ronald S. Bultje <rbultje@ronald.bitfreak.net> | 2005-02-05 16:28:31 +0000 |
commit | 4a1a8872625b855d6bf909e1c493625c1ee78c00 (patch) | |
tree | 82aff574c9ad35a106d582ad43a6e4de0580169a /examples/seeking/seek.c | |
parent | 204e36d8724047fe9f87a5041c7c50fd1e5027d3 (diff) | |
download | gst-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.c | 68 |
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}, |