Changeset 1566:952d80a40019 in roaraudio


Ignore:
Timestamp:
04/13/09 01:37:23 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

wrote a basic sio_setpar()

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libroarsndio/para.c

    r1562 r1566  
    5454 
    5555int    sio_setpar (struct sio_hdl * hdl, struct sio_par * par) { 
    56  return 0; 
     56 if ( hdl == NULL ) 
     57  return 0; 
     58 
     59 if ( par->bits == 0 || par->bits > ROAR_BITS_MAX ) 
     60  return 0; 
     61 
     62 if ( par->bps == 0 ) 
     63  par->bps = SIO_BPS(par->bits); 
     64 
     65 if ( par->bps > ROAR_BITS_MAX/8 ) 
     66  return 0; 
     67 
     68 if ( SIO_BPS(par->bits) > par->bps ) 
     69  return 0; 
     70 
     71 hdl->info.bits = par->bps * 8; 
     72 
     73 switch ((par->sig << 4) | par->le) { 
     74  case 0x00: 
     75    hdl->info.codec = ROAR_CODEC_PCM_U_BE; 
     76   break; 
     77  case 0x01: 
     78    hdl->info.codec = ROAR_CODEC_PCM_U_LE; 
     79   break; 
     80  case 0x10: 
     81    hdl->info.codec = ROAR_CODEC_PCM_S_BE; 
     82   break; 
     83  case 0x11: 
     84    hdl->info.codec = ROAR_CODEC_PCM_S_LE; 
     85   break; 
     86  default: 
     87    return 0; 
     88 } 
     89 
     90 if ( par->msb == 0 ) 
     91  return 0; 
     92 
     93 if ( par->rchan != 0 ) /* not supported yet */ 
     94  return 0; 
     95 
     96 if ( par->pchan == 0 || par->pchan > ROAR_MAX_CHANNELS ) 
     97  return 0; 
     98 
     99 hdl->info.channels = par->pchan; 
     100 
     101 if ( par->rate == 0 ) 
     102  return 0; 
     103 
     104 hdl->info.rate = par->rate; 
     105 
     106 if ( par->xrun != SIO_IGNORE ) 
     107  return 0; 
     108 
     109 return 1; 
    57110} 
    58111 
Note: See TracChangeset for help on using the changeset viewer.