summaryrefslogtreecommitdiffstats
path: root/polyp/memblockq.c
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2004-11-21 19:39:46 +0000
committerLennart Poettering <lennart@poettering.net>2004-11-21 19:39:46 +0000
commitd45abba9aa4090ebeaf09ec9ec324709e04a1bbf (patch)
tree88bd15b4123bb82bbbf6236673941f613ca8517e /polyp/memblockq.c
parent4583c22bfd490e2cdc7ebb151a566c85987bd791 (diff)
calculate buffer sizes from sample spec
git-svn-id: file:///home/lennart/svn/public/pulseaudio/trunk@306 fefdeb5f-60dc-0310-8127-8f9354f1896f
Diffstat (limited to 'polyp/memblockq.c')
-rw-r--r--polyp/memblockq.c11
1 files changed, 7 insertions, 4 deletions
diff --git a/polyp/memblockq.c b/polyp/memblockq.c
index ff16f627..16c0da8e 100644
--- a/polyp/memblockq.c
+++ b/polyp/memblockq.c
@@ -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;