diff options
-rw-r--r-- | ChangeLog | 45 | ||||
-rw-r--r-- | examples/seeking/seek.c | 42 |
2 files changed, 86 insertions, 1 deletions
@@ -1,3 +1,48 @@ +2004-12-31 Wim Taymans <wim@fluendo.com> + + * examples/seeking/seek.c: (dynamic_link), (make_vorbis_pipeline), + (make_theora_pipeline): + * ext/ogg/gstoggdemux.c: (gst_ogg_pad_get_type), + (gst_ogg_pad_init), (gst_ogg_pad_formats), + (gst_ogg_pad_query_types), (gst_ogg_pad_src_query), + (gst_ogg_pad_event), (gst_ogg_demux_factory_filter), + (compare_ranks), (gst_ogg_pad_internal_chain), + (gst_ogg_pad_typefind), (gst_ogg_pad_submit_packet), + (gst_ogg_pad_submit_page), (gst_ogg_chain_new), + (gst_ogg_chain_free), (gst_ogg_chain_new_stream), + (gst_ogg_chain_get_stream), (gst_ogg_chain_has_stream), + (gst_ogg_demux_base_init), (gst_ogg_demux_init), + (gst_ogg_demux_submit_buffer), (gst_ogg_demux_seek), + (gst_ogg_demux_get_data), (gst_ogg_demux_get_next_page), + (gst_ogg_demux_get_prev_page), (gst_ogg_demux_perform_seek), + (gst_ogg_demux_bisect_forward_serialno), + (gst_ogg_demux_read_chain), (gst_ogg_demux_read_end_chain), + (gst_ogg_demux_find_pad), (gst_ogg_demux_find_chains), + (gst_ogg_demux_chain), (gst_ogg_demux_loop), + (gst_ogg_demux_sink_activate), (gst_ogg_print): + * ext/ogg/gstogmparse.c: (gst_ogm_parse_chain): + * ext/theora/theoradec.c: (gst_theora_dec_init), (_inc_granulepos), + (theora_dec_src_convert), (theora_dec_sink_convert), + (theora_dec_src_query), (theora_dec_src_event), + (theora_dec_sink_event), (theora_dec_chain), + (theora_dec_change_state): + * ext/theora/theoraenc.c: (theora_buffer_from_packet), + (theora_enc_sink_event), (theora_enc_chain): + * gst/ffmpegcolorspace/gstffmpegcolorspace.c: + (gst_ffmpegcsp_getcaps), (gst_ffmpegcsp_configure_context), + (gst_ffmpegcsp_setcaps), (gst_ffmpegcsp_chain): + * gst/videotestsrc/gstvideotestsrc.c: + (gst_videotestsrc_src_negotiate), (gst_videotestsrc_src_link), + (gst_videotestsrc_parse_caps), (gst_videotestsrc_src_accept_caps), + (gst_videotestsrc_setcaps), (gst_videotestsrc_activate), + (gst_videotestsrc_init), (gst_videotestsrc_loop): + * sys/xvimage/xvimagesink.c: (gst_xvimagesink_sink_link), + (gst_xvimagesink_change_state), (gst_xvimagesink_event), + (gst_xvimagesink_chain), (gst_xvimagesink_buffer_alloc): + Ogg demuxer updates, uses decoder plugin internally to convert + granulepos to timestamps. + Various other plugin updates. + 2004-12-29 Wim Taymans <wim@fluendo.com> * examples/seeking/seek.c: (dynamic_link), (make_vorbis_pipeline), 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}, |