[BACK]Return to dev.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / aucat

Diff for /src/usr.bin/aucat/Attic/dev.c between version 1.47 and 1.48

version 1.47, 2010/04/17 09:16:57 version 1.48, 2010/04/21 06:13:07
Line 650 
Line 650 
  */   */
 void  void
 dev_attach(char *name, unsigned mode,  dev_attach(char *name, unsigned mode,
     struct abuf *ibuf, struct aparams *sipar,      struct abuf *ibuf, struct aparams *sipar, unsigned inch,
     struct abuf *obuf, struct aparams *sopar,      struct abuf *obuf, struct aparams *sopar, unsigned onch,
     unsigned xrun, int vol)      unsigned xrun, int vol)
 {  {
         struct abuf *pbuf = NULL, *rbuf = NULL;          struct abuf *pbuf = NULL, *rbuf = NULL;
         struct aparams ipar, opar;          struct aparams ipar, opar;
         struct aproc *conv;          struct aproc *conv;
         unsigned round, nblk;          unsigned round, nblk, nch;
   
 #ifdef DEBUG  #ifdef DEBUG
         if ((!APROC_OK(dev_mix)    && (mode & MODE_PLAY)) ||          if ((!APROC_OK(dev_mix)    && (mode & MODE_PLAY)) ||
Line 667 
Line 667 
                 return;                  return;
         }          }
 #endif  #endif
   
         if (mode & MODE_PLAY) {          if (mode & MODE_PLAY) {
                 ipar = *sipar;                  ipar = *sipar;
                 pbuf = LIST_FIRST(&dev_mix->obuflist);                  pbuf = LIST_FIRST(&dev_mix->obuflist);
                 nblk = (dev_bufsz / dev_round + 3) / 4;                  nblk = (dev_bufsz / dev_round + 3) / 4;
                 round = dev_roundof(ipar.rate);                  round = dev_roundof(ipar.rate);
                   nch = ipar.cmax - ipar.cmin + 1;
                 if (!aparams_eqenc(&ipar, &dev_opar)) {                  if (!aparams_eqenc(&ipar, &dev_opar)) {
                         conv = dec_new(name, &ipar);                          conv = dec_new(name, &ipar);
                         ipar.bps = dev_opar.bps;                          ipar.bps = dev_opar.bps;
Line 683 
Line 685 
                         ibuf = abuf_new(nblk * round, &ipar);                          ibuf = abuf_new(nblk * round, &ipar);
                         aproc_setout(conv, ibuf);                          aproc_setout(conv, ibuf);
                 }                  }
                   if (inch > 0 && nch >= inch * 2) {
                           conv = join_new(name);
                           aproc_setin(conv, ibuf);
                           ipar.cmax = ipar.cmin + inch - 1;
                           ibuf = abuf_new(nblk * round, &ipar);
                           aproc_setout(conv, ibuf);
                   }
                 if (!aparams_eqrate(&ipar, &dev_opar)) {                  if (!aparams_eqrate(&ipar, &dev_opar)) {
                         conv = resamp_new(name, round, dev_round);                          conv = resamp_new(name, round, dev_round);
                         ipar.rate = dev_opar.rate;                          ipar.rate = dev_opar.rate;
Line 691 
Line 700 
                         ibuf = abuf_new(nblk * round, &ipar);                          ibuf = abuf_new(nblk * round, &ipar);
                         aproc_setout(conv, ibuf);                          aproc_setout(conv, ibuf);
                 }                  }
                   if (inch > 0 && nch * 2 <= inch) {
                           conv = join_new(name);
                           aproc_setin(conv, ibuf);
                           ipar.cmax = ipar.cmin + inch - 1;
                           ibuf = abuf_new(nblk * round, &ipar);
                           aproc_setout(conv, ibuf);
                   }
                 aproc_setin(dev_mix, ibuf);                  aproc_setin(dev_mix, ibuf);
                 ibuf->r.mix.xrun = xrun;                  ibuf->r.mix.xrun = xrun;
                 ibuf->r.mix.maxweight = vol;                  ibuf->r.mix.maxweight = vol;
Line 701 
Line 717 
                 rbuf = LIST_FIRST(&dev_sub->ibuflist);                  rbuf = LIST_FIRST(&dev_sub->ibuflist);
                 round = dev_roundof(opar.rate);                  round = dev_roundof(opar.rate);
                 nblk = (dev_bufsz / dev_round + 3) / 4;                  nblk = (dev_bufsz / dev_round + 3) / 4;
                   nch = opar.cmax - opar.cmin + 1;
                 if (!aparams_eqenc(&opar, &dev_ipar)) {                  if (!aparams_eqenc(&opar, &dev_ipar)) {
                         conv = enc_new(name, &opar);                          conv = enc_new(name, &opar);
                         opar.bps = dev_ipar.bps;                          opar.bps = dev_ipar.bps;
Line 712 
Line 729 
                         obuf = abuf_new(nblk * round, &opar);                          obuf = abuf_new(nblk * round, &opar);
                         aproc_setin(conv, obuf);                          aproc_setin(conv, obuf);
                 }                  }
                   if (onch > 0 && nch >= onch * 2) {
                           conv = join_new(name);
                           aproc_setout(conv, obuf);
                           opar.cmax = opar.cmin + onch - 1;
                           obuf = abuf_new(nblk * round, &opar);
                           aproc_setin(conv, obuf);
                   }
                 if (!aparams_eqrate(&opar, &dev_ipar)) {                  if (!aparams_eqrate(&opar, &dev_ipar)) {
                         conv = resamp_new(name, dev_round, round);                          conv = resamp_new(name, dev_round, round);
                         opar.rate = dev_ipar.rate;                          opar.rate = dev_ipar.rate;
Line 720 
Line 744 
                         obuf = abuf_new(nblk * round, &opar);                          obuf = abuf_new(nblk * round, &opar);
                         aproc_setin(conv, obuf);                          aproc_setin(conv, obuf);
                 }                  }
                   if (onch > 0 && nch * 2 <= onch) {
                           conv = join_new(name);
                           aproc_setout(conv, obuf);
                           opar.cmax = opar.cmin + onch - 1;
                           obuf = abuf_new(nblk * round, &opar);
                           aproc_setin(conv, obuf);
                   }
                 aproc_setout(dev_sub, obuf);                  aproc_setout(dev_sub, obuf);
                 obuf->w.sub.xrun = xrun;                  obuf->w.sub.xrun = xrun;
         }          }
Line 728 
Line 759 
                 rbuf = LIST_FIRST(&dev_submon->ibuflist);                  rbuf = LIST_FIRST(&dev_submon->ibuflist);
                 round = dev_roundof(opar.rate);                  round = dev_roundof(opar.rate);
                 nblk = (dev_bufsz / dev_round + 3) / 4;                  nblk = (dev_bufsz / dev_round + 3) / 4;
                   nch = opar.cmax - opar.cmin + 1;
                 if (!aparams_eqenc(&opar, &dev_opar)) {                  if (!aparams_eqenc(&opar, &dev_opar)) {
                         conv = enc_new(name, &opar);                          conv = enc_new(name, &opar);
                         opar.bps = dev_opar.bps;                          opar.bps = dev_opar.bps;
Line 739 
Line 771 
                         obuf = abuf_new(nblk * round, &opar);                          obuf = abuf_new(nblk * round, &opar);
                         aproc_setin(conv, obuf);                          aproc_setin(conv, obuf);
                 }                  }
                   if (onch > 0 && nch >= onch * 2) {
                           conv = join_new(name);
                           aproc_setout(conv, obuf);
                           opar.cmax = opar.cmin + onch - 1;
                           obuf = abuf_new(nblk * round, &opar);
                           aproc_setin(conv, obuf);
                   }
                 if (!aparams_eqrate(&opar, &dev_opar)) {                  if (!aparams_eqrate(&opar, &dev_opar)) {
                         conv = resamp_new(name, dev_round, round);                          conv = resamp_new(name, dev_round, round);
                         opar.rate = dev_opar.rate;                          opar.rate = dev_opar.rate;
                         round = dev_round;                          round = dev_round;
                         aproc_setout(conv, obuf);                          aproc_setout(conv, obuf);
                           obuf = abuf_new(nblk * round, &opar);
                           aproc_setin(conv, obuf);
                   }
                   if (onch > 0 && nch * 2 <= onch) {
                           conv = join_new(name);
                           aproc_setout(conv, obuf);
                           opar.cmax = opar.cmin + onch - 1;
                         obuf = abuf_new(nblk * round, &opar);                          obuf = abuf_new(nblk * round, &opar);
                         aproc_setin(conv, obuf);                          aproc_setin(conv, obuf);
                 }                  }

Legend:
Removed from v.1.47  
changed lines
  Added in v.1.48