version 1.6, 2008/11/04 15:22:40 |
version 1.7, 2008/11/04 17:51:46 |
|
|
|
|
if (ibuf) { |
if (ibuf) { |
pbuf = LIST_FIRST(&dev_mix->obuflist); |
pbuf = LIST_FIRST(&dev_mix->obuflist); |
if (!aparams_eqenc(ipar, &dev_opar) || |
if (!aparams_eqenc(ipar, &dev_opar)) { |
!aparams_subset(ipar, &dev_opar)) { |
|
nfr = (dev_bufsz + 3) / 4 + dev_round - 1; |
nfr = (dev_bufsz + 3) / 4 + dev_round - 1; |
nfr -= nfr % dev_round; |
nfr -= nfr % dev_round; |
conv = conv_new(name, ipar, &dev_opar); |
conv = conv_new(name, ipar, &dev_opar); |
aproc_setin(conv, ibuf); |
aproc_setin(conv, ibuf); |
ibuf = abuf_new(nfr, &dev_opar); |
ibuf = abuf_new(nfr, &dev_opar); |
aproc_setout(conv, ibuf); |
aproc_setout(conv, ibuf); |
/* XXX: call abuf_fill() here ? */ |
ipar->bps = dev_opar.bps; |
|
ipar->bits = dev_opar.bits; |
|
ipar->sig = dev_opar.sig; |
|
ipar->le = dev_opar.le; |
|
ipar->msb = dev_opar.msb; |
|
ipar->cmin = dev_opar.cmin; |
|
ipar->cmax = dev_opar.cmax; |
|
} else if (!aparams_subset(ipar, &dev_opar)) { |
|
nfr = (dev_bufsz + 3) / 4 + dev_round - 1; |
|
nfr -= nfr % dev_round; |
|
conv = cmap_new(name, ipar, &dev_opar); |
|
aproc_setin(conv, ibuf); |
|
ibuf = abuf_new(nfr, &dev_opar); |
|
aproc_setout(conv, ibuf); |
|
ipar->cmin = dev_opar.cmin; |
|
ipar->cmax = dev_opar.cmax; |
} |
} |
if (!aparams_eqrate(ipar, &dev_opar)) { |
if (!aparams_eqrate(ipar, &dev_opar)) { |
nfr = (dev_bufsz + 3) / 4 + dev_round - 1; |
nfr = (dev_bufsz + 3) / 4 + dev_round - 1; |
|
|
aproc_setin(conv, ibuf); |
aproc_setin(conv, ibuf); |
ibuf = abuf_new(nfr, &dev_opar); |
ibuf = abuf_new(nfr, &dev_opar); |
aproc_setout(conv, ibuf); |
aproc_setout(conv, ibuf); |
|
ipar->rate = dev_opar.rate; |
} |
} |
aproc_setin(dev_mix, ibuf); |
aproc_setin(dev_mix, ibuf); |
abuf_opos(ibuf, -dev_mix->u.mix.lat); |
abuf_opos(ibuf, -dev_mix->u.mix.lat); |
|
|
} |
} |
if (obuf) { |
if (obuf) { |
rbuf = LIST_FIRST(&dev_sub->ibuflist); |
rbuf = LIST_FIRST(&dev_sub->ibuflist); |
if (!aparams_eqenc(opar, &dev_ipar) || |
if (!aparams_eqenc(opar, &dev_ipar)) { |
!aparams_subset(opar, &dev_ipar)) { |
|
nfr = (dev_bufsz + 3) / 4 + dev_round - 1; |
nfr = (dev_bufsz + 3) / 4 + dev_round - 1; |
nfr -= nfr % dev_round; |
nfr -= nfr % dev_round; |
conv = conv_new(name, &dev_ipar, opar); |
conv = conv_new(name, &dev_ipar, opar); |
aproc_setout(conv, obuf); |
aproc_setout(conv, obuf); |
obuf = abuf_new(nfr, &dev_ipar); |
obuf = abuf_new(nfr, &dev_ipar); |
aproc_setin(conv, obuf); |
aproc_setin(conv, obuf); |
|
opar->bps = dev_ipar.bps; |
|
opar->bits = dev_ipar.bits; |
|
opar->sig = dev_ipar.sig; |
|
opar->le = dev_ipar.le; |
|
opar->msb = dev_ipar.msb; |
|
opar->cmin = dev_ipar.cmin; |
|
opar->cmax = dev_ipar.cmax; |
|
} else if (!aparams_subset(opar, &dev_ipar)) { |
|
nfr = (dev_bufsz + 3) / 4 + dev_round - 1; |
|
nfr -= nfr % dev_round; |
|
conv = cmap_new(name, &dev_ipar, opar); |
|
aproc_setout(conv, obuf); |
|
obuf = abuf_new(nfr, &dev_ipar); |
|
aproc_setin(conv, obuf); |
|
opar->cmin = dev_ipar.cmin; |
|
opar->cmax = dev_ipar.cmax; |
} |
} |
if (!aparams_eqrate(opar, &dev_ipar)) { |
if (!aparams_eqrate(opar, &dev_ipar)) { |
nfr = (dev_bufsz + 3) / 4 + dev_round - 1; |
nfr = (dev_bufsz + 3) / 4 + dev_round - 1; |
|
|
aproc_setout(conv, obuf); |
aproc_setout(conv, obuf); |
obuf = abuf_new(nfr, &dev_ipar); |
obuf = abuf_new(nfr, &dev_ipar); |
aproc_setin(conv, obuf); |
aproc_setin(conv, obuf); |
|
opar->rate = dev_ipar.rate; |
} |
} |
aproc_setout(dev_sub, obuf); |
aproc_setout(dev_sub, obuf); |
abuf_ipos(obuf, -dev_sub->u.sub.lat); |
abuf_ipos(obuf, -dev_sub->u.sub.lat); |