Original commit message from CVS:
* sys/oss/gstosssink.c: (gst_osssink_get_delay),
(gst_osssink_get_time):
get_delay() may return values lower than 0. In those cases, we
should not actually cast to *unsigned* int64, that will break
stuff horribly. In my case, it screwed up A/V sync in movies
in totem rather badly.
+2004-03-06 Ronald Bultje <rbultje@ronald.bitfreak.net>
+
+ * sys/oss/gstosssink.c: (gst_osssink_get_delay),
+ (gst_osssink_get_time):
+ get_delay() may return values lower than 0. In those cases, we
+ should not actually cast to *unsigned* int64, that will break
+ stuff horribly. In my case, it screwed up A/V sync in movies
+ in totem rather badly.
+
2004-03-06 Christophe Fergeau <teuf@gnome.org>
* ext/faac/gstfaac.c: (gst_faac_chain):
return GST_PAD_LINK_OK;
}
-static inline gint64
+static inline gint
gst_osssink_get_delay (GstOssSink *osssink)
{
gint delay = 0;
delay = (info.fragstotal * info.fragsize) - info.bytes;
}
}
+
return delay;
}
/* sometimes delay is bigger than the number of bytes sent to the device,
* which screws up this calculation, we assume that everything is still
* in the device then */
- if (((guint64)delay) > osssink->handled) {
+ if (delay < 0) {
+ delay = 0;
+ } else if (((guint64) delay) > osssink->handled) {
delay = osssink->handled;
}
res = (osssink->handled - delay) * GST_SECOND / GST_OSSELEMENT (osssink)->bps;