version 1.72, 2012/04/11 21:12:55 |
version 1.73, 2012/05/23 19:12:44 |
|
|
mix_badd(struct abuf *ibuf, struct abuf *obuf) |
mix_badd(struct abuf *ibuf, struct abuf *obuf) |
{ |
{ |
adata_t *idata, *odata; |
adata_t *idata, *odata; |
unsigned int cmin, cmax; |
unsigned int i, scount, icount, ocount; |
unsigned int i, j, cc, istart, inext, onext, ostart; |
int j, cc, cmin, cmax, istart, inext, onext, ostart, onch; |
unsigned int scount, icount, ocount; |
|
int vol, s; |
int vol, s; |
|
|
#ifdef DEBUG |
#ifdef DEBUG |
|
|
vol = ADATA_MUL(ibuf->r.mix.weight, ibuf->r.mix.vol); |
vol = ADATA_MUL(ibuf->r.mix.weight, ibuf->r.mix.vol); |
cmin = obuf->cmin > ibuf->cmin ? obuf->cmin : ibuf->cmin; |
cmin = obuf->cmin > ibuf->cmin ? obuf->cmin : ibuf->cmin; |
cmax = obuf->cmax < ibuf->cmax ? obuf->cmax : ibuf->cmax; |
cmax = obuf->cmax < ibuf->cmax ? obuf->cmax : ibuf->cmax; |
|
onch = obuf->cmax - obuf->cmin + 1; |
ostart = cmin - obuf->cmin; |
ostart = cmin - obuf->cmin; |
|
if (ostart > onch) |
|
ostart = onch; |
|
onext = obuf->cmax - cmax; |
|
if (onext > onch) |
|
onext = onch; |
istart = cmin - ibuf->cmin; |
istart = cmin - ibuf->cmin; |
onext = obuf->cmax - cmax + ostart; |
inext = ibuf->cmax - cmax; |
inext = ibuf->cmax - cmax + istart; |
|
cc = cmax - cmin + 1; |
cc = cmax - cmin + 1; |
odata += ostart; |
|
idata += istart; |
|
for (i = scount; i > 0; i--) { |
for (i = scount; i > 0; i--) { |
|
odata += ostart; |
|
idata += istart; |
for (j = cc; j > 0; j--) { |
for (j = cc; j > 0; j--) { |
s = *odata + ADATA_MUL(*idata, vol); |
s = *odata + ADATA_MUL(*idata, vol); |
if (s >= ADATA_UNIT) |
if (s >= ADATA_UNIT) |
|
|
sub_bcopy(struct abuf *ibuf, struct abuf *obuf) |
sub_bcopy(struct abuf *ibuf, struct abuf *obuf) |
{ |
{ |
adata_t *idata, *odata; |
adata_t *idata, *odata; |
unsigned int cmin, cmax; |
unsigned int i, icount, ocount, scount; |
unsigned int i, j, cc, istart, inext, onext, ostart; |
int j, cc, cmin, cmax, istart, inext, onext, ostart, onch; |
unsigned int icount, ocount, scount; |
|
|
|
/* |
/* |
* Drop samples for xrun correction |
* Drop samples for xrun correction |
|
|
return; |
return; |
cmin = obuf->cmin > ibuf->cmin ? obuf->cmin : ibuf->cmin; |
cmin = obuf->cmin > ibuf->cmin ? obuf->cmin : ibuf->cmin; |
cmax = obuf->cmax < ibuf->cmax ? obuf->cmax : ibuf->cmax; |
cmax = obuf->cmax < ibuf->cmax ? obuf->cmax : ibuf->cmax; |
|
onch = obuf->cmax - obuf->cmin + 1; |
ostart = cmin - obuf->cmin; |
ostart = cmin - obuf->cmin; |
istart = cmin - ibuf->cmin; |
if (ostart > onch) |
|
ostart = onch; |
onext = obuf->cmax - cmax; |
onext = obuf->cmax - cmax; |
inext = ibuf->cmax - cmax + istart; |
if (onext > onch) |
|
onext = onch; |
|
istart = cmin - ibuf->cmin; |
|
inext = ibuf->cmax - cmax; |
cc = cmax - cmin + 1; |
cc = cmax - cmin + 1; |
idata += istart; |
|
scount = (icount < ocount) ? icount : ocount; |
scount = (icount < ocount) ? icount : ocount; |
for (i = scount; i > 0; i--) { |
for (i = scount; i > 0; i--) { |
|
idata += istart; |
for (j = ostart; j > 0; j--) |
for (j = ostart; j > 0; j--) |
*odata++ = 0x1111; |
*odata++ = 0x1111; |
for (j = cc; j > 0; j--) { |
for (j = cc; j > 0; j--) { |