summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2002-04-28 13:25:08 +0000
committerWim Taymans <wim.taymans@gmail.com>2002-04-28 13:25:08 +0000
commitca8b0275ca139fb0824edfaf02701a59c87ddce4 (patch)
treec75c6103d9b3e40409f5b695d9169a5a96a8206f /sys
parent872fa1d897068c71c5f5fd42ad84b09e4920e633 (diff)
More intelligent clock offset and sync.
Original commit message from CVS: More intelligent clock offset and sync.
Diffstat (limited to 'sys')
-rw-r--r--sys/oss/gstossclock.c6
-rw-r--r--sys/oss/gstosssink.c14
2 files changed, 17 insertions, 3 deletions
diff --git a/sys/oss/gstossclock.c b/sys/oss/gstossclock.c
index 0a763627..b2f784a6 100644
--- a/sys/oss/gstossclock.c
+++ b/sys/oss/gstossclock.c
@@ -117,7 +117,11 @@ gst_oss_clock_get_internal_time (GstClock *clock)
oss_clock->adjust -= diff2 - diff1;
}
- //g_print ("diff %lld %lld %lld %lld %lld %lld\n", diff1, diff2, time1, time2, diff2 - diff1, oss_clock->adjust);
+ /*
+ g_print ("diff %lld %lld %lld %lld %lld %lld\n",
+ diff1, diff2, time1, time2, diff2 - diff1, oss_clock->adjust);
+ */
+
return time2 + oss_clock->adjust;
}
diff --git a/sys/oss/gstosssink.c b/sys/oss/gstosssink.c
index c5d96cb1..7ef567df 100644
--- a/sys/oss/gstosssink.c
+++ b/sys/oss/gstosssink.c
@@ -222,13 +222,19 @@ gst_osssink_get_time (GstClock *clock, gpointer data)
{
GstOssSink *osssink = GST_OSSSINK (data);
gint delay;
+ gint offset = 0;
if (!osssink->bps)
return 0;
+ /* if we have a start time, use offset */
+ if (osssink->offset >= 0LL) {
+ offset = osssink->offset;
+ }
+
ioctl (osssink->fd, SNDCTL_DSP_GETODELAY, &delay);
- return osssink->offset + (osssink->handled - delay) * 1000000LL / osssink->bps;
+ return offset + (osssink->handled - delay) * 1000000LL / osssink->bps;
}
static void
@@ -467,7 +473,10 @@ gst_osssink_chain (GstPad *pad, GstBuffer *buf)
if (osssink->clock) {
/* FIXME, NEW_MEDIA/DISCONT?. Try to get our start point */
if (osssink->offset == -1LL && buftime != -1LL) {
- /* g_print ("%lld %lld %lld\n", osssink->offset, buftime, gst_clock_get_time (osssink->clock)); */
+ GST_INFO (GST_CAT_PLUGIN_INFO,
+ "osssink: clock at offset: %lld, new offset %lld at time %lld\n",
+ osssink->offset, buftime, gst_clock_get_time (osssink->clock));
+
osssink->offset = buftime;
osssink->handled = 0;
gst_element_clock_wait (GST_ELEMENT (osssink), osssink->clock, buftime);
@@ -483,6 +492,7 @@ gst_osssink_chain (GstPad *pad, GstBuffer *buf)
osssink->handled += tosend;
} */
write (osssink->fd, data, size);
+ osssink->handled += size;
}
/* no clock, try to be as fast as possible */
else {