]> code.delx.au - pulseaudio/commitdiff
calculate buffer sizes from sample spec
authorLennart Poettering <lennart@poettering.net>
Sun, 21 Nov 2004 19:39:46 +0000 (19:39 +0000)
committerLennart Poettering <lennart@poettering.net>
Sun, 21 Nov 2004 19:39:46 +0000 (19:39 +0000)
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@306 fefdeb5f-60dc-0310-8127-8f9354f1896f

polyp/memblockq.c
polyp/polyplib-internal.h
polyp/polyplib-stream.c

index ff16f6279a4a3a5f0420eb2546c0ea28d132dd8d..16c0da8e3b8963940fc177c2c1fbd53e387ad081 100644 (file)
@@ -68,18 +68,21 @@ struct pa_memblockq* pa_memblockq_new(size_t maxlength, size_t tlength, size_t b
     bq->tlength = ((tlength+base-1)/base)*base;
     if (!bq->tlength || bq->tlength >= bq->maxlength)
         bq->tlength = bq->maxlength;
+
+    bq->minreq = (minreq/base)*base;
+    if (bq->minreq == 0)
+        bq->minreq = 1;
     
     bq->prebuf = (prebuf == (size_t) -1) ? bq->maxlength/2 : prebuf;
     bq->prebuf = (bq->prebuf/base)*base;
     if (bq->prebuf > bq->maxlength)
         bq->prebuf = bq->maxlength;
 
+    if (bq->prebuf > bq->tlength - bq->minreq)
+        bq->prebuf = bq->tlength - bq->minreq;
+
     bq->orig_prebuf = bq->prebuf;
     
-    bq->minreq = (minreq/base)*base;
-    if (bq->minreq == 0)
-        bq->minreq = 1;
-
     pa_log(__FILE__": memblockq sanitized: maxlength=%u, tlength=%u, base=%u, prebuf=%u, minreq=%u\n", bq->maxlength, bq->tlength, bq->base, bq->prebuf, bq->minreq);
     
     bq->mcalign = NULL;
index 4289b3c87792e690deee6d9a2947c357df193b67..d1b3a27f097eecdbcad11c4433e41b9d42b457a7 100644 (file)
 #include "strlist.h"
 #include "mcalign.h"
 
-#define DEFAULT_TLENGTH (44100*2*2/2)  //(10240*8)
-#define DEFAULT_MAXLENGTH ((DEFAULT_TLENGTH*3)/2)
-#define DEFAULT_MINREQ 512
-#define DEFAULT_PREBUF (DEFAULT_TLENGTH-DEFAULT_MINREQ)
-#define DEFAULT_FRAGSIZE 1024
-
 #define DEFAULT_TIMEOUT (10)
 
 struct pa_context {
index b3f1f8cd7354f71e57e80ecba6d4c2658aa03965..440217e7bc82bbb02991cb7c1cf4422ca4248b70 100644 (file)
@@ -283,11 +283,12 @@ static void create_stream(struct pa_stream *s, const char *dev, const struct pa_
     if (attr)
         s->buffer_attr = *attr;
     else {
-        s->buffer_attr.maxlength = DEFAULT_MAXLENGTH;
-        s->buffer_attr.tlength = DEFAULT_TLENGTH;
-        s->buffer_attr.prebuf = DEFAULT_PREBUF;
-        s->buffer_attr.minreq = DEFAULT_MINREQ;
-        s->buffer_attr.fragsize = DEFAULT_FRAGSIZE;
+        /* half a second */
+        s->buffer_attr.tlength = pa_bytes_per_second(&s->sample_spec)/2;
+        s->buffer_attr.maxlength = (s->buffer_attr.tlength*3)/2;
+        s->buffer_attr.minreq = s->buffer_attr.tlength/100;
+        s->buffer_attr.prebuf = s->buffer_attr.tlength - s->buffer_attr.minreq;
+        s->buffer_attr.fragsize = s->buffer_attr.tlength/100;
     }
 
     pa_stream_set_state(s, PA_STREAM_CREATING);