mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-11-27 12:11:13 +00:00
sys/oss/gstosssink.c: get_delay() may return values lower than 0. In those cases, we should not actually cast to *uns...
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.
This commit is contained in:
parent
89bbfdc368
commit
bc6e4f585c
2 changed files with 14 additions and 2 deletions
|
@ -1,3 +1,12 @@
|
|||
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):
|
||||
|
|
|
@ -257,7 +257,7 @@ gst_osssink_sinkconnect (GstPad *pad, const GstCaps *caps)
|
|||
return GST_PAD_LINK_OK;
|
||||
}
|
||||
|
||||
static inline gint64
|
||||
static inline gint
|
||||
gst_osssink_get_delay (GstOssSink *osssink)
|
||||
{
|
||||
gint delay = 0;
|
||||
|
@ -280,6 +280,7 @@ gst_osssink_get_delay (GstOssSink *osssink)
|
|||
delay = (info.fragstotal * info.fragsize) - info.bytes;
|
||||
}
|
||||
}
|
||||
|
||||
return delay;
|
||||
}
|
||||
|
||||
|
@ -298,7 +299,9 @@ gst_osssink_get_time (GstClock *clock, gpointer data)
|
|||
/* 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;
|
||||
|
|
Loading…
Reference in a new issue