Changeset 2213:7a2733bb4ae8 in roaraudio


Ignore:
Timestamp:
07/27/09 19:19:33 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

got it working!

File:
1 edited

Legend:

Unmodified
Added
Removed
  • roard/driver_sysclock.c

    r2212 r2213  
    4343 inst->write = driver_sysclock_write; 
    4444 
    45  self->bsp   = (info->bits / 8) * info->channels * info->rate; 
     45 self->bps   = (info->bits / 8) * info->channels * info->rate; 
    4646 
    47  if (!self->bsp) { 
     47 if (!self->bps) { 
    4848  free(self); 
    4949  return -1; 
     
    6161  case ROAR_CODEC_MULAW: 
    6262    // one byte per sample 
    63     self->bsp *= 8; 
    64     self->bsp /= info->bits; 
     63    self->bps *= 8; 
     64    self->bps /= info->bits; 
    6565   break; 
    6666  default: 
     
    8888ssize_t driver_sysclock_write   (struct roar_vio_calls * vio, void *buf, size_t count) { 
    8989 struct driver_sysclock * self = vio->inst; 
    90  return -1; 
     90 struct timeval now; 
     91 unsigned long long diff = (1000000 * count / self->bps); 
     92 unsigned long long ago; 
     93 
     94 gettimeofday(&now, NULL); 
     95 
     96 ago  = now.tv_usec - self->lasttime.tv_usec; 
     97 ago += 1000000*(now.tv_sec - self->lasttime.tv_sec); 
     98 
     99 memcpy(&(self->lasttime), &now, sizeof(now)); 
     100 
     101 ROAR_DBG("driver_sysclock_write(*): count=%u, bps=%u, diff=%llu, ago=%llu", count, self->bps, diff, ago); 
     102 
     103 if ( diff <= ago ) 
     104  return count; 
     105 
     106 diff -= ago; 
     107 
     108 usleep(diff); 
     109 
     110 return count; 
    91111} 
    92112 
Note: See TracChangeset for help on using the changeset viewer.