summaryrefslogtreecommitdiffstats
path: root/sys
diff options
context:
space:
mode:
authorWim Taymans <wim.taymans@gmail.com>2002-05-27 23:15:56 +0000
committerWim Taymans <wim.taymans@gmail.com>2002-05-27 23:15:56 +0000
commitfc8757bc0160deacd5f3641ac1e22caf1c83e674 (patch)
tree7b8492030e46c79e3f6a070b45eecd866137d6d6 /sys
parent7ad2309eea83bfa63296915917f9c6591b63e6d0 (diff)
Use alternative method for getting delay
Original commit message from CVS: Use alternative method for getting delay
Diffstat (limited to 'sys')
-rw-r--r--sys/oss/gstosssink.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/sys/oss/gstosssink.c b/sys/oss/gstosssink.c
index 602b97b0..49fb64b2 100644
--- a/sys/oss/gstosssink.c
+++ b/sys/oss/gstosssink.c
@@ -464,7 +464,15 @@ gst_osssink_chain (GstPad *pad, GstBuffer *buf)
gint64 queued;
GstClockTimeDiff jitter;
- ioctl (osssink->fd, SNDCTL_DSP_GETODELAY, &delay);
+ if (ioctl (osssink->fd, SNDCTL_DSP_GETODELAY, &delay) < 0) {
+ audio_buf_info info;
+ if (ioctl (osssink->fd, SNDCTL_DSP_GETOSPACE, &info) < 0) {
+ delay = 0;
+ }
+ else {
+ delay = (info.fragstotal * info.fragsize) - info.bytes;
+ }
+ }
queued = delay * GST_SECOND / osssink->bps;
if (osssink->resync && osssink->sync) {