diff options
author | Wim Taymans <wim.taymans@gmail.com> | 2004-12-31 18:19:24 +0000 |
---|---|---|
committer | Wim Taymans <wim.taymans@gmail.com> | 2004-12-31 18:19:24 +0000 |
commit | 6161f06daef5503ebdb0399a30c70b2f08dd519d (patch) | |
tree | a5b4c392c326a8fe0e9e9c92f52fa78f1a97d384 | |
parent | d3c6bcb3d48f9e5e831c90b09820a3128507ada2 (diff) |
First attempt at seeking in ogg vorbis.
Original commit message from CVS:
First attempt at seeking in ogg vorbis.
Fix some plugins with new DISCONT values.
-rw-r--r-- | ChangeLog | 37 | ||||
-rw-r--r-- | examples/seeking/seek.c | 4 | ||||
-rw-r--r-- | ext/mad/gstid3tag.c | 13 | ||||
-rw-r--r-- | ext/mad/gstmad.c | 8 |
4 files changed, 52 insertions, 10 deletions
@@ -1,6 +1,43 @@ 2004-12-31 Wim Taymans <wim@fluendo.com> * examples/seeking/seek.c: (dynamic_link), (make_vorbis_pipeline), + (make_theora_pipeline), (stop_seek): + * ext/mad/gstid3tag.c: (gst_id3_tag_get_tag_to_render), + (gst_id3_tag_sink_event), (gst_id3_tag_src_link), + (gst_id3_tag_send_tag_event), (gst_id3_tag_chain): + * ext/mad/gstmad.c: (gst_mad_init), (gst_mad_update_info), + (gst_mad_sink_event), (gst_mad_check_caps_reset), (gst_mad_chain): + * 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/gstoggmux.c: (gst_ogg_mux_next_buffer), + (gst_ogg_mux_loop): + * ext/theora/theoradec.c: (_inc_granulepos), + (theora_dec_src_query), (theora_dec_sink_event), + (theora_dec_chain): + * ext/vorbis/vorbisdec.c: (vorbis_dec_src_query), + (vorbis_dec_src_event), (vorbis_dec_sink_event), + (vorbis_dec_chain): + Simple first attempt at seeking in ogg vorbis. + +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), diff --git a/examples/seeking/seek.c b/examples/seeking/seek.c index 57e4f2be..8a2b5083 100644 --- a/examples/seeking/seek.c +++ b/examples/seeking/seek.c @@ -868,8 +868,8 @@ stop_seek (GtkWidget * widget, GdkEventButton * event, gpointer user_data) while (walk) { GstPad *seekable = GST_PAD (walk->data); - g_print ("seek to %" G_GINT64_FORMAT " on pad %s:%s\n", real, - GST_DEBUG_PAD_NAME (seekable)); + g_print ("seek to %" GST_TIME_FORMAT " on pad %s:%s\n", + GST_TIME_ARGS (real), GST_DEBUG_PAD_NAME (seekable)); s_event = gst_event_new_seek (GST_FORMAT_TIME | GST_SEEK_METHOD_SET | GST_SEEK_FLAG_FLUSH, real); diff --git a/ext/mad/gstid3tag.c b/ext/mad/gstid3tag.c index a6e029fb..f2c02eb4 100644 --- a/ext/mad/gstid3tag.c +++ b/ext/mad/gstid3tag.c @@ -793,10 +793,12 @@ gst_id3_tag_sink_event (GstPad * pad, GstEvent * event) case GST_EVENT_DISCONTINUOUS: switch (tag->state) { case GST_ID3_TAG_STATE_READING_V2_TAG:{ - guint64 value; + guint64 value, end_value; - if (gst_event_discont_get_value (event, GST_FORMAT_BYTES, &value) || - gst_event_discont_get_value (event, GST_FORMAT_DEFAULT, &value)) { + if (gst_event_discont_get_value (event, GST_FORMAT_BYTES, &value, + &end_value) + || gst_event_discont_get_value (event, GST_FORMAT_DEFAULT, &value, + &end_value)) { if (value != (tag->buffer ? GST_BUFFER_OFFSET (tag->buffer) + GST_BUFFER_SIZE (tag->buffer) @@ -836,10 +838,11 @@ gst_id3_tag_sink_event (GstPad * pad, GstEvent * event) /* fall through */ } case GST_ID3_TAG_STATE_NORMAL:{ - gint64 value; + gint64 value, end_value; GstEvent *new; - if (gst_event_discont_get_value (event, GST_FORMAT_BYTES, &value)) { + if (gst_event_discont_get_value (event, GST_FORMAT_BYTES, &value, + &end_value)) { if (value > tag->v2tag_size) { value -= tag->v2tag_size; } else { diff --git a/ext/mad/gstmad.c b/ext/mad/gstmad.c index 456c33f7..9057c687 100644 --- a/ext/mad/gstmad.c +++ b/ext/mad/gstmad.c @@ -909,7 +909,9 @@ gst_mad_sink_event (GstPad * pad, GstEvent * event) if (gst_formats_contains (formats, GST_EVENT_DISCONT_OFFSET (event, i).format)) { - gint64 value = GST_EVENT_DISCONT_OFFSET (event, i).value; + gint64 start_value = GST_EVENT_DISCONT_OFFSET (event, i).start_value; + + //gint64 end_value = GST_EVENT_DISCONT_OFFSET (event, i).end_value; gint64 time; GstFormat format; GstEvent *discont; @@ -919,11 +921,11 @@ gst_mad_sink_event (GstPad * pad, GstEvent * event) format = GST_FORMAT_TIME; if (!gst_pad_convert (pad, GST_EVENT_DISCONT_OFFSET (event, i).format, - value, &format, &time)) { + start_value, &format, &time)) { continue; } } else { - time = value; + time = start_value; } /* for now, this is the best we can do to get the total number |