diff options
Diffstat (limited to 'gst')
-rw-r--r-- | gst/avi/gstavidemux.c | 38 | ||||
-rw-r--r-- | gst/goom/gstgoom.c | 5 | ||||
-rw-r--r-- | gst/wavparse/gstwavparse.c | 37 |
3 files changed, 44 insertions, 36 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; diff --git a/gst/goom/gstgoom.c b/gst/goom/gstgoom.c index 1b955178..d59765ba 100644 --- a/gst/goom/gstgoom.c +++ b/gst/goom/gstgoom.c @@ -315,11 +315,12 @@ gst_goom_event (GstPad * pad, GstEvent * event) goom = GST_GOOM (GST_PAD_PARENT (pad)); switch (GST_EVENT_TYPE (event)) { - case GST_EVENT_DISCONTINUOUS: + case GST_EVENT_NEWSEGMENT: { gint64 start = 0, stop = 0; + GstFormat format; - gst_event_discont_get_value (event, GST_FORMAT_TIME, &start, &stop); + gst_event_parse_newsegment (event, NULL, &format, &start, &stop, NULL); gst_adapter_clear (goom->adapter); goom->audio_basetime = start; goom->samples_consumed = 0; diff --git a/gst/wavparse/gstwavparse.c b/gst/wavparse/gstwavparse.c index 98d2809e..18012c4a 100644 --- a/gst/wavparse/gstwavparse.c +++ b/gst/wavparse/gstwavparse.c @@ -697,7 +697,7 @@ gst_wavparse_other (GstWavParse * wav) static gboolean gst_wavparse_handle_seek (GstWavParse * wav) { - gst_pad_push_event (wav->srcpad, gst_event_new_flush (FALSE)); + gst_pad_push_event (wav->srcpad, gst_event_new_flush_start ()); GST_STREAM_LOCK (wav->sinkpad); @@ -707,12 +707,12 @@ gst_wavparse_handle_seek (GstWavParse * wav) /* FIXME : currently the seek/discont doesn't care about the stop value ! */ - wav->seek_event = gst_event_new_discontinuous (1.0, + wav->seek_event = gst_event_new_newsegment (1.0, GST_FORMAT_TIME, GST_SECOND * - wav->seek_offset / wav->bps, GST_SECOND * wav->datasize / wav->bps, NULL); + wav->seek_offset / wav->bps, GST_SECOND * wav->datasize / wav->bps, 0); - gst_pad_push_event (wav->srcpad, gst_event_new_flush (TRUE)); + gst_pad_push_event (wav->srcpad, gst_event_new_flush_stop ()); gst_pad_start_task (wav->sinkpad, (GstTaskFunction) gst_wavparse_loop, wav->sinkpad); @@ -817,9 +817,9 @@ gst_wavparse_stream_headers (GstWavParse * wav) GST_DEBUG ("Finished parsing headers"); /* Initial discont */ - wav->seek_event = gst_event_new_discontinuous (1.0, + wav->seek_event = gst_event_new_newsegment (1.0, GST_FORMAT_TIME, - (gint64) 0, (gint64) GST_SECOND * wav->datasize / wav->bps, NULL); + (gint64) 0, (gint64) GST_SECOND * wav->datasize / wav->bps, 0); return GST_FLOW_OK; } @@ -836,10 +836,7 @@ gst_wavparse_stream_data (GstWavParse * wav) GST_DEBUG ("stream data !!!"); /* Get the next n bytes and output them */ if (wav->dataleft == 0) { - if ((res = - gst_pad_push_event (wav->srcpad, - gst_event_new (GST_EVENT_EOS))) != GST_FLOW_OK) - return res; + gst_pad_push_event (wav->srcpad, gst_event_new_eos ()); return GST_FLOW_WRONG_STATE; } @@ -921,7 +918,7 @@ pause: GST_ELEMENT_ERROR (wav, STREAM, STOPPED, ("streaming stopped, reason %d", ret), ("streaming stopped, reason %d", ret)); - gst_pad_push_event (wav->srcpad, gst_event_new (GST_EVENT_EOS)); + gst_pad_push_event (wav->srcpad, gst_event_new_eos ()); } } @@ -1105,22 +1102,22 @@ gst_wavparse_srcpad_event (GstPad * pad, GstEvent * event) gint64 bseek_start, bseek_stop; GstFormat format; GstFormat dformat = GST_FORMAT_BYTES; + gint64 cur, stop; - format = GST_EVENT_SEEK_FORMAT (event); + gst_event_parse_seek (event, NULL, &format, NULL, + NULL, &cur, NULL, &stop); GST_DEBUG ("seek format %d", format); /* find the corresponding bytestream position */ if (format == GST_FORMAT_BYTES) { - bseek_start = GST_EVENT_SEEK_OFFSET (event); - bseek_stop = GST_EVENT_SEEK_ENDOFFSET (event); + bseek_start = cur; + bseek_stop = stop; } else { - res &= - gst_wavparse_pad_convert (pad, format, - GST_EVENT_SEEK_OFFSET (event), &dformat, &bseek_start); - res &= - gst_wavparse_pad_convert (pad, format, - GST_EVENT_SEEK_ENDOFFSET (event), &dformat, &bseek_stop); + res &= gst_wavparse_pad_convert (pad, format, + cur, &dformat, &bseek_start); + res &= gst_wavparse_pad_convert (pad, format, + stop, &dformat, &bseek_stop); if (!res) return res; } |