diff --git a/gst/matroska/matroska-demux.c b/gst/matroska/matroska-demux.c index af254eb95a..5ffed5a1bc 100644 --- a/gst/matroska/matroska-demux.c +++ b/gst/matroska/matroska-demux.c @@ -171,7 +171,7 @@ static GstCaps /* stream methods */ static void gst_matroska_demux_reset (GstElement * element); static gboolean perform_seek_to_offset (GstMatroskaDemux * demux, - guint64 offset); + gdouble rate, guint64 offset); /* gobject functions */ static void gst_matroska_demux_set_property (GObject * object, @@ -2007,7 +2007,7 @@ gst_matroska_demux_handle_seek_event (GstMatroskaDemux * demux, /* need to seek to cluster start to pick up cluster time */ /* upstream takes care of flushing and all that * ... and segment event handling takes care of the rest */ - return perform_seek_to_offset (demux, + return perform_seek_to_offset (demux, rate, entry->pos + demux->common.ebml_segment_start); } @@ -2188,7 +2188,7 @@ gst_matroska_demux_handle_seek_push (GstMatroskaDemux * demux, GstPad * pad, if (!building_index) { /* seek to the first subindex or legacy index */ GST_INFO_OBJECT (demux, "Seeking to Cues at %" G_GUINT64_FORMAT, offset); - return perform_seek_to_offset (demux, offset); + return perform_seek_to_offset (demux, rate, offset); } /* well, we are handling it already */ @@ -4612,7 +4612,7 @@ pause: * Create and push a flushing seek event upstream */ static gboolean -perform_seek_to_offset (GstMatroskaDemux * demux, guint64 offset) +perform_seek_to_offset (GstMatroskaDemux * demux, gdouble rate, guint64 offset) { GstEvent *event; gboolean res = 0; @@ -4620,7 +4620,7 @@ perform_seek_to_offset (GstMatroskaDemux * demux, guint64 offset) GST_DEBUG_OBJECT (demux, "Seeking to %" G_GUINT64_FORMAT, offset); event = - gst_event_new_seek (1.0, GST_FORMAT_BYTES, + gst_event_new_seek (rate, GST_FORMAT_BYTES, GST_SEEK_FLAG_FLUSH | GST_SEEK_FLAG_ACCURATE, GST_SEEK_TYPE_SET, offset, GST_SEEK_TYPE_NONE, -1);