version 1.22, 2008/11/09 16:26:07 |
version 1.23, 2008/11/10 23:25:37 |
|
|
mix_badd(struct abuf *ibuf, struct abuf *obuf) |
mix_badd(struct abuf *ibuf, struct abuf *obuf) |
{ |
{ |
short *idata, *odata; |
short *idata, *odata; |
int vol = ibuf->mixivol; |
|
unsigned i, j, icnt, onext, ostart; |
unsigned i, j, icnt, onext, ostart; |
unsigned scount, icount, ocount; |
unsigned scount, icount, ocount; |
|
int vol; |
|
|
DPRINTFN(4, "mix_badd: todo = %u, done = %u\n", |
DPRINTFN(4, "mix_badd: todo = %u, done = %u\n", |
obuf->mixitodo, ibuf->mixodone); |
obuf->mixitodo, ibuf->mixodone); |
|
|
if (ocount == 0) |
if (ocount == 0) |
return; |
return; |
|
|
|
vol = (ibuf->mixweight * ibuf->mixvol) >> ADATA_SHIFT; |
ostart = ibuf->cmin - obuf->cmin; |
ostart = ibuf->cmin - obuf->cmin; |
onext = obuf->cmax - ibuf->cmax + ostart; |
onext = obuf->cmax - ibuf->cmax + ostart; |
icnt = ibuf->cmax - ibuf->cmin + 1; |
icnt = ibuf->cmax - ibuf->cmin + 1; |
|
|
} |
} |
p->u.mix.idle = 0; |
p->u.mix.idle = 0; |
ibuf->mixodone = 0; |
ibuf->mixodone = 0; |
ibuf->mixivol = ADATA_UNIT; |
ibuf->mixvol = ADATA_UNIT; |
|
ibuf->mixweight = ADATA_UNIT; |
ibuf->xrun = XRUN_IGNORE; |
ibuf->xrun = XRUN_IGNORE; |
mix_setmaster(p); |
mix_setmaster(p); |
} |
} |
|
|
LIST_FOREACH(buf, &p->ibuflist, ient) |
LIST_FOREACH(buf, &p->ibuflist, ient) |
n++; |
n++; |
LIST_FOREACH(buf, &p->ibuflist, ient) |
LIST_FOREACH(buf, &p->ibuflist, ient) |
buf->mixivol = ADATA_UNIT / n; |
buf->mixweight = ADATA_UNIT / n; |
} |
} |
|
|
void |
void |