summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2004-12-31 18:19:24 +0000
committerWim Taymans <wim.taymans@gmail.com>2004-12-31 18:19:24 +0000
commit6161f06daef5503ebdb0399a30c70b2f08dd519d (patch)
treea5b4c392c326a8fe0e9e9c92f52fa78f1a97d384
parentd3c6bcb3d48f9e5e831c90b09820a3128507ada2 (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--ChangeLog37
-rw-r--r--examples/seeking/seek.c4
-rw-r--r--ext/mad/gstid3tag.c13
-rw-r--r--ext/mad/gstmad.c8
4 files changed, 52 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog
index 3e583d93..0bfb5e96 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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