2004-11-25 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
+ * ext/ogg/gstoggdemux.c: (gst_ogg_demux_push):
+ Fix position for discont if we're close as well. Nitpicking, but
+ saves a few milliseconds of extra waiting or skipping.
+
+2004-11-25 Ronald S. Bultje <rbultje@ronald.bitfreak.net>
+
* gst/playback/gstdecodebin.c: (gst_decode_bin_factory_filter):
We sometimes need parsers for playback, so add those too.
GST_OGG_SET_STATE (ogg, GST_OGG_STATE_SEEK);
FOR_PAD_IN_CURRENT_CHAIN (ogg, pad,
- pad->flags |= GST_OGG_PAD_NEEDS_DISCONT;);
+ pad->flags |= GST_OGG_PAD_NEEDS_DISCONT;
+ );
if (GST_EVENT_SEEK_FLAGS (event) & GST_SEEK_FLAG_FLUSH) {
FOR_PAD_IN_CURRENT_CHAIN (ogg, pad,
- pad->flags |= GST_OGG_PAD_NEEDS_FLUSH;);
+ pad->flags |= GST_OGG_PAD_NEEDS_FLUSH;
+ );
}
GST_DEBUG_OBJECT (ogg,
"initiating seeking to format %d, offset %" G_GUINT64_FORMAT, format,
gst_event_unref (event);
GST_FLAG_UNSET (ogg, GST_OGG_FLAG_WAIT_FOR_DISCONT);
FOR_PAD_IN_CURRENT_CHAIN (ogg, pad,
- pad->flags |= GST_OGG_PAD_NEEDS_DISCONT;);
+ pad->flags |= GST_OGG_PAD_NEEDS_DISCONT;
+ );
break;
default:
gst_pad_event_default (pad, event);
*end = G_MAXINT64;
g_assert (ogg->current_chain >= 0);
- FOR_PAD_IN_CURRENT_CHAIN (ogg, pad, *start = MAX (*start, pad->end_offset););
+ FOR_PAD_IN_CURRENT_CHAIN (ogg, pad, *start = MAX (*start, pad->end_offset);
+ );
if (ogg->setup_state == SETUP_FIND_LAST_CHAIN) {
*end = gst_file_pad_get_length (ogg->sinkpad);
} else {
endpos = G_MAXINT64;
FOR_PAD_IN_CHAIN (ogg, pad, ogg->chains->len - 1,
- endpos = MIN (endpos, pad->start_offset););
+ endpos = MIN (endpos, pad->start_offset);
+ );
}
if (!ogg->seek_skipped || gst_ogg_demux_position (ogg) >= endpos) {
/* have we found the endposition for all streams yet? */
if (diff < GST_SECOND) {
GST_DEBUG ("Close enough (%" GST_TIME_FORMAT " seconds off)",
GST_TIME_ARGS (diff));
+ ogg->seek_to = position;
goto play;
}