Changeset 938:639ed35cb23f in roaraudio


Ignore:
Timestamp:
12/07/08 18:48:48 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added support for setting options via -oO

File:
1 edited

Legend:

Unmodified
Added
Removed
  • roard/roard.c

    r934 r938  
    126126 struct roar_stream * s; 
    127127 struct roar_stream_server * ss; 
    128  
    129  ROAR_WARN("add_output(drv='%s', dev='%s', opts='%s') = ?", drv, dev, opts); 
     128 char * k, * v; 
     129 int codec; 
     130 
     131 ROAR_DBG("add_output(drv='%s', dev='%s', opts='%s') = ?", drv, dev, opts); 
    130132 
    131133 if ( (stream = streams_new()) == -1 ) { 
    132   ROAR_WARN("add_output(drv='%s', dev='%s', opts='%s') = -1", drv, dev, opts); 
     134  ROAR_DBG("add_output(drv='%s', dev='%s', opts='%s') = -1", drv, dev, opts); 
    133135  return -1; 
    134136 } 
     
    143145// s->info.codec = codec; 
    144146 
     147 codec = s->info.codec; 
     148 
     149 k = strtok(opts, ","); 
     150 while (k != NULL) { 
     151//  ROAR_WARN("add_output(*): opts: %s", k); 
     152 
     153  if ( (v = strstr(k, "=")) != NULL ) { 
     154   *v++ = 0; 
     155  } 
     156 
     157  ROAR_DBG("add_output(*): opts: k='%s', v='%s'", k, v); 
     158  if ( strcmp(k, "rate") == 0 ) { 
     159   s->info.rate = atoi(v); 
     160  } else if ( strcmp(k, "channels") == 0 ) { 
     161   s->info.channels = atoi(v); 
     162  } else if ( strcmp(k, "bits") == 0 ) { 
     163   s->info.bits = atoi(v); 
     164  } else if ( strcmp(k, "codec") == 0 ) { 
     165   if ( (codec = roar_str2codec(v)) == -1 ) { 
     166    ROAR_ERR("add_output(*): unknown codec '%s'", v); 
     167    streams_delete(stream); 
     168    return -1; 
     169   } 
     170  } else { 
     171   ROAR_ERR("add_output(*): unknown option '%s'", k); 
     172   streams_delete(stream); 
     173   return -1; 
     174  } 
     175 
     176  k = strtok(NULL, ","); 
     177 } 
     178 
     179 s->info.codec = codec; 
     180 ROAR_STREAM_SERVER(s)->codec_orgi = codec; 
    145181 
    146182 if ( driver_openvio(&(ss->vio), &(ss->driver_id), drv, dev, &(s->info), -1) ) { 
    147183  streams_delete(stream); 
    148   ROAR_WARN("add_output(drv='%s', dev='%s', opts='%s') = -1", drv, dev, opts); 
     184  ROAR_DBG("add_output(drv='%s', dev='%s', opts='%s') = -1", drv, dev, opts); 
    149185  return -1; 
    150186 } 
     187 
     188 streams_set_fh(stream, -1); // update some internal structures 
    151189 
    152190 client_stream_add(g_source_client, stream); 
Note: See TracChangeset for help on using the changeset viewer.