summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2004-12-31 10:39:37 +0000
committerWim Taymans <wim.taymans@gmail.com>2004-12-31 10:39:37 +0000
commit56e76376e2804f961a83b4f0ff151302188053ba (patch)
tree1372af9b04e1da1fc3e3c3044ad2a0f5daf0e19b
parentc64491635f04b7471bb419484747d55669013e10 (diff)
downloadgstreamer-plugins-bad-56e76376e2804f961a83b4f0ff151302188053ba.tar.gz
Ogg demuxer updates, uses decoder plugin internally to convert granulepos to timestamps.
Original commit message from CVS: Ogg demuxer updates, uses decoder plugin internally to convert granulepos to timestamps. Various other plugin updates.
-rw-r--r--ChangeLog45
-rw-r--r--examples/seeking/seek.c42
2 files changed, 86 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index 6affd5e7c..3e583d933 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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},