Changeset 2339:11e0b3d23f74 in roaraudio


Ignore:
Timestamp:
08/13/09 22:10:26 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added --stream-flags

File:
1 edited

Legend:

Unmodified
Added
Removed
  • roard/roard.c

    r2291 r2339  
    6363        " -B  --bits   BITS     - Set server bits\n" 
    6464        " -C  --chans  CHANNELS - Set server channels\n" 
     65       ); 
     66 
     67 printf("\nStream Options:\n\n"); 
     68 printf( 
     69        " --stream-flags D=F    - Set default flags for stream directions\n" 
     70        "                         D is the stream direction and F is a comma seperated\n" 
     71        "                         list of flags in form +flag or -flag to set or unset\n" 
     72        "                         a flag as default or remove it from the default\n" 
    6573       ); 
    6674 
     
    212220} 
    213221 
     222#define FOP_ADD   1 
     223#define FOP_DEL  -1 
     224 
     225int update_stream_flags (char * str) { 
     226 int    dir; 
     227 char * flags; 
     228 char * k; 
     229 int    op; 
     230 int    flag; 
     231 
     232 if ( (flags = strstr(str, "=")) == NULL ) 
     233  return -1; 
     234 
     235 *flags = 0; 
     236  flags++; 
     237 
     238 if ( (dir = roar_str2dir(str)) == -1 ) 
     239  return -1; 
     240 
     241 while (flags != NULL) { 
     242  k = flags; 
     243  flags = strstr(flags, ","); 
     244 
     245  if ( flags != NULL ) 
     246   *(flags++) = 0; 
     247 
     248  switch (*k) { 
     249   case '+': k++; op = FOP_ADD; break; 
     250   case '-': k++; op = FOP_DEL; break; 
     251   default: 
     252     op = FOP_ADD; 
     253  } 
     254 
     255  flag = 0; 
     256 
     257  if ( !strcmp(k, "sync") ) { 
     258   flag = ROAR_FLAG_SYNC; 
     259  } else if ( !strcmp(k, "meta") ) { 
     260   flag = ROAR_FLAG_META; 
     261  } else if ( !strcmp(k, "cleanmeta") ) { 
     262   flag = ROAR_FLAG_CLEANMETA; 
     263  } else if ( !strcmp(k, "pause") ) { 
     264   flag = ROAR_FLAG_PAUSE; 
     265  } else if ( !strcmp(k, "mute") ) { 
     266   flag = ROAR_FLAG_MUTE; 
     267  } else if ( !strcmp(k, "antiecho") ) { 
     268   flag = ROAR_FLAG_ANTIECHO; 
     269  } else { 
     270   return -1; 
     271  } 
     272 
     273  g_config->streams[dir].flags |= flag; 
     274 
     275  if ( op == FOP_DEL ) 
     276   g_config->streams[dir].flags -= flag; 
     277 } 
     278 
     279 return 0; 
     280} 
     281 
    214282int add_output (char * drv, char * dev, char * opts, int prim, int count) { 
    215283 int stream; 
     
    755823  } else if ( strcmp(k, "-C") == 0 || strcmp(k, "--chans") == 0 ) { 
    756824   sa.channels = atoi(argv[++i]); 
     825 
     826  } else if ( strcmp(k, "--stream-flags") == 0 ) { 
     827   if ( update_stream_flags(argv[++i]) == -1 ) { 
     828    ROAR_ERR("Can not set stream flags"); 
     829    return 1; 
     830   } 
    757831 
    758832  } else if ( strcmp(k, "-d") == 0 || strcmp(k, "--driver") == 0 ) { 
Note: See TracChangeset for help on using the changeset viewer.