ext/esd/esdsink.c: Always write ESD_BUF_SIZE bytes and use ESD_MAX_WRITE_SIZE as...
authorWim Taymans <wim.taymans@gmail.com>
Wed, 26 Apr 2006 08:55:27 +0000 (08:55 +0000)
committerWim Taymans <wim.taymans@gmail.com>
Wed, 26 Apr 2006 08:55:27 +0000 (08:55 +0000)
Original commit message from CVS:
* ext/esd/esdsink.c: (gst_esdsink_prepare), (gst_esdsink_delay):
Always write ESD_BUF_SIZE bytes and use ESD_MAX_WRITE_SIZE as
the size of the ringbuffer. This should fix hangs with older
esd sound servers.

ChangeLog
ext/esd/esdsink.c

index 170b2b0..5671a6b 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2006-04-26  Wim Taymans  <wim@fluendo.com>
+
+       * ext/esd/esdsink.c: (gst_esdsink_prepare), (gst_esdsink_delay):
+       Always write ESD_BUF_SIZE bytes and use ESD_MAX_WRITE_SIZE as
+       the size of the ringbuffer. This should fix hangs with older 
+       esd sound servers.
+
 2006-04-26  Stefan Kost  <ensonic@users.sf.net>
 
        * ext/aalib/gstaasink.c:
index ff0a194..995f110 100644 (file)
@@ -270,7 +270,6 @@ gst_esdsink_prepare (GstAudioSink * asink, GstRingBufferSpec * spec)
 
   /* Name used by esound for this connection. */
   const char connname[] = "GStreamer";
-  guint latency;
 
   GST_DEBUG_OBJECT (esdsink, "prepare");
 
@@ -310,11 +309,8 @@ gst_esdsink_prepare (GstAudioSink * asink, GstRingBufferSpec * spec)
 
   esdsink->rate = spec->rate;
 
-  latency = esd_get_latency (esdsink->ctrl_fd);
-  latency = latency * 44100LL / esdsink->rate;
-
-  spec->segsize = 256 * spec->bytes_per_sample;
-  spec->segtotal = (latency / 256);
+  spec->segsize = ESD_BUF_SIZE;
+  spec->segtotal = (ESD_MAX_WRITE_SIZE / spec->segsize);
   spec->silence_sample[0] = 0;
   spec->silence_sample[1] = 0;
   spec->silence_sample[2] = 0;
@@ -402,7 +398,8 @@ gst_esdsink_delay (GstAudioSink * asink)
 
   latency = esd_get_latency (esdsink->ctrl_fd);
 
-  /* latency is measured in samples at a rate of 44100 */
+  /* latency is measured in samples at a rate of 44100, this 
+   * cannot overflow. */
   latency = latency * 44100LL / esdsink->rate;
 
   GST_DEBUG_OBJECT (asink, "got latency: %u", latency);