summaryrefslogtreecommitdiffstats
path: root/gst/avi
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2005-07-27 18:37:25 +0000
committerWim Taymans <wim.taymans@gmail.com>2005-07-27 18:37:25 +0000
commitc50893f784fc00db67b5374650d90f45ff222951 (patch)
tree30918daf1446e904f597d6d81ac66b19a6766c0c /gst/avi
parent6a20c8af5ae5dcad24bff3544ad661b196fdadbf (diff)
Various event updates and cleanups.
Original commit message from CVS: * ext/amrnb/amrnbparse.c: (gst_amrnbparse_event), (gst_amrnbparse_loop): * ext/dv/gstdvdec.c: (gst_dvdec_handle_sink_event), (gst_dvdec_handle_src_event), (gst_dvdec_decode_frame): * ext/mad/gstid3tag.c: (gst_id3_tag_src_event), (gst_id3_tag_sink_event), (gst_id3_tag_chain): * ext/mad/gstmad.c: (gst_mad_src_query), (index_seek), (normal_seek), (gst_mad_sink_event), (gst_mad_chain): * ext/mpeg2dec/gstmpeg2dec.c: * ext/shout2/gstshout2.c: (gst_shout2send_event): * ext/sidplay/gstsiddec.cc: * gst/avi/gstavidemux.c: (gst_avi_demux_handle_src_event), (gst_avi_demux_send_event), (gst_avi_demux_stream_header), (gst_avi_demux_handle_seek), (gst_avi_demux_process_next_entry): * gst/goom/gstgoom.c: (gst_goom_event): * gst/realmedia/rmdemux.c: (gst_rmdemux_sink_event), (gst_rmdemux_chain), (gst_rmdemux_send_event), (gst_rmdemux_add_stream): * gst/wavparse/gstwavparse.c: (gst_wavparse_handle_seek), (gst_wavparse_stream_headers), (gst_wavparse_stream_data), (gst_wavparse_loop), (gst_wavparse_srcpad_event): Various event updates and cleanups.
Diffstat (limited to 'gst/avi')
-rw-r--r--gst/avi/gstavidemux.c38
1 files changed, 24 insertions, 14 deletions
diff --git a/gst/avi/gstavidemux.c b/gst/avi/gstavidemux.c
index 3170b516..3e6a4836 100644
--- a/gst/avi/gstavidemux.c
+++ b/gst/avi/gstavidemux.c
@@ -460,22 +460,30 @@ gst_avi_demux_handle_src_event (GstPad * pad, GstEvent * event)
switch (GST_EVENT_TYPE (event)) {
case GST_EVENT_SEEK:
+ {
+ GstFormat format;
+ GstSeekFlags flags;
+ gint64 cur, stop;
+
+ gst_event_parse_seek (event, NULL, &format, &flags, NULL, &cur, NULL,
+ &stop);
+
GST_DEBUG_OBJECT (avi, "seek format %d, %08x",
- GST_EVENT_SEEK_FORMAT (event), stream->strh->type);
+ format, stream->strh->type);
- switch (GST_EVENT_SEEK_FORMAT (event)) {
+ switch (format) {
case GST_FORMAT_BYTES:
case GST_FORMAT_DEFAULT:
case GST_FORMAT_TIME:{
gst_avi_index_entry *entry = NULL, *real;
- gint64 desired_offset = GST_EVENT_SEEK_OFFSET (event);
+ gint64 desired_offset = cur;
guint32 flags;
GST_DEBUG_OBJECT (avi, "seeking to %" G_GINT64_FORMAT,
desired_offset);
flags = GST_RIFF_IF_KEYFRAME;
- switch (GST_EVENT_SEEK_FORMAT (event)) {
+ switch (format) {
case GST_FORMAT_BYTES:
entry = gst_avi_demux_index_entry_for_byte (avi, 0, //stream->num,
desired_offset, flags);
@@ -494,6 +502,8 @@ gst_avi_demux_handle_src_event (GstPad * pad, GstEvent * event)
real = gst_avi_demux_index_entry_for_time (avi, stream->num,
desired_offset, 0);
break;
+ default:
+ break;
}
if (!(flags & GST_SEEK_FLAG_ACCURATE))
@@ -502,14 +512,13 @@ gst_avi_demux_handle_src_event (GstPad * pad, GstEvent * event)
if (entry) {
avi->seek_offset = entry->offset + avi->index_offset;
avi->last_seek = real->ts;
- avi->seek_flush =
- (GST_EVENT_SEEK_FLAGS (event) & GST_SEEK_FLAG_FLUSH);
+ avi->seek_flush = flags & GST_SEEK_FLAG_FLUSH;
avi->seek_entry = entry->index_nr;
GST_DEBUG_OBJECT (avi, "Will seek to entry %d", avi->seek_entry);
res = gst_avi_demux_handle_seek (avi);
} else {
GST_DEBUG_OBJECT (avi, "no index entry found for format=%d value=%"
- G_GINT64_FORMAT, GST_EVENT_SEEK_FORMAT (event), desired_offset);
+ G_GINT64_FORMAT, format, desired_offset);
res = FALSE;
}
GST_LOG ("seek done");
@@ -520,6 +529,7 @@ gst_avi_demux_handle_src_event (GstPad * pad, GstEvent * event)
break;
}
break;
+ }
default:
res = FALSE;
break;
@@ -1912,11 +1922,11 @@ done:
}
/* send initial discont */
- avi->seek_event = gst_event_new_discontinuous (1.0,
+ avi->seek_event = gst_event_new_newsegment (1.0,
GST_FORMAT_TIME, (gint64) 0,
(gint64) (((gfloat) avi->stream[0].strh->scale) *
avi->stream[0].strh->length /
- avi->stream[0].strh->rate) * GST_SECOND, NULL);
+ avi->stream[0].strh->rate) * GST_SECOND, 0);
/* at this point we know all the streams and we can signal the no more
* pads signal */
@@ -1938,18 +1948,18 @@ gst_avi_demux_handle_seek (GstAviDemux * avi)
GST_LOG ("Seeking to entry %d", avi->seek_entry);
- gst_avi_demux_send_event (avi, gst_event_new_flush (FALSE));
+ gst_avi_demux_send_event (avi, gst_event_new_flush_start ());
GST_STREAM_LOCK (avi->sinkpad);
avi->current_entry = avi->seek_entry;
- avi->seek_event = gst_event_new_discontinuous (1.0,
+ avi->seek_event = gst_event_new_newsegment (1.0,
GST_FORMAT_TIME, avi->last_seek,
(gint64) (((gfloat) avi->stream[0].strh->scale) *
avi->stream[0].strh->length /
- avi->stream[0].strh->rate) * GST_SECOND, NULL);
+ avi->stream[0].strh->rate) * GST_SECOND, 0);
- gst_avi_demux_send_event (avi, gst_event_new_flush (TRUE));
+ gst_avi_demux_send_event (avi, gst_event_new_flush_stop ());
gst_pad_start_task (avi->sinkpad, (GstTaskFunction) gst_avi_demux_loop,
avi->sinkpad);
@@ -1969,7 +1979,7 @@ gst_avi_demux_process_next_entry (GstAviDemux * avi)
if (avi->current_entry >= avi->index_size) {
GST_LOG_OBJECT (avi, "Handled last index entry, setting EOS (%d > %d)",
avi->current_entry, avi->index_size);
- gst_avi_demux_send_event (avi, gst_event_new (GST_EVENT_EOS));
+ gst_avi_demux_send_event (avi, gst_event_new_eos ());
return GST_FLOW_WRONG_STATE;
} else {
GstBuffer *buf;