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

Diff for /src/usr.bin/aucat/Attic/sock.c between version 1.8 and 1.9

version 1.8, 2008/11/17 07:04:13 version 1.9, 2008/12/07 17:10:41
Line 567 
Line 567 
 sock_setpar(struct sock *f)  sock_setpar(struct sock *f)
 {  {
         struct amsg_par *p = &f->rmsg.u.par;          struct amsg_par *p = &f->rmsg.u.par;
         unsigned minbuf, maxbuf;          unsigned min, max, rate;
   
         if (AMSG_ISSET(p->mode)) {          if (AMSG_ISSET(p->mode)) {
                 if ((p->mode & ~(AMSG_PLAY | AMSG_REC)) || p->mode == 0) {                  if ((p->mode & ~(AMSG_PLAY | AMSG_REC)) || p->mode == 0) {
Line 632 
Line 632 
                         p->rate = RATE_MIN;                          p->rate = RATE_MIN;
                 if (p->rate > RATE_MAX)                  if (p->rate > RATE_MAX)
                         p->rate = RATE_MAX;                          p->rate = RATE_MAX;
                 dev_roundrate(&p->rate, &f->round);                  f->round = dev_roundof(p->rate);
                 f->rpar.rate = f->wpar.rate = p->rate;                  f->rpar.rate = f->wpar.rate = p->rate;
                 if (f->mode & AMSG_PLAY)                  if (!AMSG_ISSET(p->bufsz))
                         f->bufsz = 2 * dev_bufsz * f->rpar.rate / dev_rate;                          p->bufsz = 2 * dev_bufsz / dev_round * f->round;
                 else                  DPRINTF("sock_setpar: rate -> %u, round -> %u\n",
                         f->bufsz = 2 * dev_bufsz * f->wpar.rate / dev_rate;                      p->rate, f->round);
                 DPRINTF("sock_setpar: rate -> %u\n", p->rate);  
         }          }
         if (AMSG_ISSET(p->xrun)) {          if (AMSG_ISSET(p->xrun)) {
                 if (p->xrun != AMSG_IGNORE &&                  if (p->xrun != AMSG_IGNORE &&
Line 651 
Line 650 
                 DPRINTF("sock_setpar: xrun -> %u\n", f->xrun);                  DPRINTF("sock_setpar: xrun -> %u\n", f->xrun);
         }          }
         if (AMSG_ISSET(p->bufsz)) {          if (AMSG_ISSET(p->bufsz)) {
                 minbuf = 3 * dev_bufsz / 2;                  rate = (f->mode & AMSG_PLAY) ? f->rpar.rate : f->wpar.rate;
                 minbuf -= minbuf % dev_round;                  min = (3 * (dev_bufsz / dev_round) + 1) / 2;
                 maxbuf = dev_bufsz;                  max = (dev_bufsz + rate + dev_round - 1) / dev_round;
                 if (f->mode & AMSG_PLAY) {                  min *= f->round;
                         minbuf = minbuf * f->rpar.rate / dev_rate;                  max *= f->round;
                         maxbuf = maxbuf * f->rpar.rate / dev_rate;                  p->bufsz += f->round - 1;
                         maxbuf += f->rpar.rate;                  p->bufsz -= p->bufsz % f->round;
                 } else {                  if (p->bufsz < min)
                         minbuf = minbuf * f->wpar.rate / dev_rate;                          p->bufsz = min;
                         maxbuf = maxbuf * f->wpar.rate / dev_rate;                  if (p->bufsz > max)
                         maxbuf += f->wpar.rate;                          p->bufsz = max;
                 }                  f->bufsz = p->bufsz;
                 if (p->bufsz < minbuf)  
                         p->bufsz = minbuf;  
                 if (p->bufsz > maxbuf)  
                         p->bufsz = maxbuf;  
                 f->bufsz = p->bufsz + f->round - 1;  
                 f->bufsz -= f->bufsz % f->round;  
                 DPRINTF("sock_setpar: bufsz -> %u\n", f->bufsz);                  DPRINTF("sock_setpar: bufsz -> %u\n", f->bufsz);
         }          }
 #ifdef DEBUG  #ifdef DEBUG
Line 786 
Line 779 
                 AMSG_INIT(m);                  AMSG_INIT(m);
                 m->cmd = AMSG_GETCAP;                  m->cmd = AMSG_GETCAP;
                 m->u.cap.rate = dev_rate;                  m->u.cap.rate = dev_rate;
                 m->u.cap.rate_div = dev_rate_div;                  m->u.cap.rate_div = dev_rate;
                 m->u.cap.pchan = dev_mix ?                  m->u.cap.pchan = dev_mix ?
                     (f->templ_rpar.cmax - f->templ_rpar.cmin + 1) : 0;                      (f->templ_rpar.cmax - f->templ_rpar.cmin + 1) : 0;
                 m->u.cap.rchan = dev_sub ?                  m->u.cap.rchan = dev_sub ?

Legend:
Removed from v.1.8  
changed lines
  Added in v.1.9