Changeset 2511:e5f52519866f in roaraudio


Ignore:
Timestamp:
09/01/09 14:27:26 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

much better defaulting for diffrent subsystems

File:
1 edited

Legend:

Unmodified
Added
Removed
  • roard/roard.c

    r2504 r2511  
    299299 char * to_free = NULL; 
    300300#endif 
    301  int codec; 
    302301 int sync = 0, f_mmap = 0; 
    303302 int32_t blocks = -1, blocksize = -1; 
     
    338337 s = ROAR_STREAM(ss); 
    339338 
    340  memcpy(&(s->info), g_sa, sizeof(struct roar_audio_info)); 
     339 memset(&(s->info), 0xFF, sizeof(struct roar_audio_info)); // set everything to -1 
    341340 
    342341 s->pos_rel_id = -1; 
    343342// s->info.codec = codec; 
    344  
    345  codec = s->info.codec; 
    346343 
    347344 k = strtok(opts, ","); 
     
    361358   s->info.bits = atoi(v); 
    362359  } else if ( strcmp(k, "codec") == 0 ) { 
    363    if ( (codec = roar_str2codec(v)) == -1 ) { 
     360   if ( (s->info.codec = roar_str2codec(v)) == -1 ) { 
    364361    ROAR_ERR("add_output(*): unknown codec '%s'", v); 
    365362    error++; 
     
    447444 } 
    448445 
     446 // set audio info... 
     447 switch (dir) { 
     448  case ROAR_DIR_LIGHT_OUT: 
     449    switch (s->info.codec) { 
     450     case ROAR_CODEC_DMX512: 
     451     case -1: 
     452       if ( s->info.rate == -1 ) 
     453        s->info.rate = ROAR_OUTPUT_CFREQ; 
     454 
     455       s->info.channels =   0; 
     456       s->info.bits     =   8; 
     457       s->info.codec    = ROAR_CODEC_DMX512; // in case codec == -1 
     458      break; 
     459    } 
     460   break; 
     461  case ROAR_DIR_MIDI_OUT: 
     462    switch (s->info.codec) { 
     463     case ROAR_CODEC_MIDI: 
     464     case -1: 
     465       if ( s->info.rate == -1 ) 
     466        s->info.rate    = ROAR_MIDI_TICKS_PER_BEAT; 
     467 
     468       s->info.channels = ROAR_MIDI_CHANNELS_DEFAULT; 
     469       s->info.bits     = ROAR_MIDI_BITS; 
     470       s->info.codec    = ROAR_CODEC_MIDI; // in case codec == -1 
     471      break; 
     472    } 
     473   break; 
     474  case ROAR_DIR_RAW_OUT: 
     475    if ( s->info.rate == -1 ) 
     476     s->info.rate = 0; 
     477    if ( s->info.bits == -1 ) 
     478     s->info.bits = 0; 
     479    if ( s->info.channels == -1 ) 
     480     s->info.channels = 0; 
     481    if ( s->info.codec == -1 ) 
     482     s->info.codec = 0; 
     483   break; 
     484 } 
     485 
     486 if ( s->info.rate == -1 ) 
     487  s->info.rate = g_sa->rate; 
     488 if ( s->info.bits == -1 ) 
     489  s->info.bits = g_sa->bits; 
     490 if ( s->info.channels == -1 ) 
     491  s->info.channels = g_sa->channels; 
     492 if ( s->info.codec == -1 ) 
     493  s->info.codec = g_sa->codec; 
     494 
     495 ROAR_DBG("add_output(*): s->info = {.rate=%i, .bits=%i, .channels=%i, .codec=%i}", s->info.rate, s->info.bits, s->info.channels, s->info.codec); 
     496 
    449497 if ( streams_set_dir(stream, dir, 1) == -1 ) { 
    450498  streams_delete(stream); 
     
    457505#endif 
    458506 
    459  if ( codec == ROAR_CODEC_ALAW || codec == ROAR_CODEC_MULAW ) 
     507 if ( s->info.codec == ROAR_CODEC_ALAW || s->info.codec == ROAR_CODEC_MULAW ) 
    460508  s->info.bits = 8; // needed to open OSS driver, will be overriden by codecfilter 
    461509 
    462  s->info.codec = codec; 
    463  ROAR_STREAM_SERVER(s)->codec_orgi = codec; 
     510 ROAR_STREAM_SERVER(s)->codec_orgi = s->info.codec; 
    464511 
    465512 if ( driver_openvio(&(ss->vio), &(ss->driver_id), drv, dev, &(s->info), -1, ss) == -1 ) { 
     
    516563  streams_set_flag(stream, ROAR_FLAG_MMAP); 
    517564 
     565 ROAR_DBG("add_output(*): s->info = {.rate=%i, .bits=%i, .channels=%i, .codec=%i}", s->info.rate, s->info.bits, s->info.channels, s->info.codec); 
    518566 return 0; 
    519567} 
Note: See TracChangeset for help on using the changeset viewer.