Changeset 3530:8ca4bb4cc5b0 in roaraudio for roarclients/roarctl.c


Ignore:
Timestamp:
02/19/10 18:09:41 (14 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

support to give scale parameter to roarctl

File:
1 edited

Legend:

Unmodified
Added
Removed
  • roarclients/roarctl.c

    r3529 r3530  
    435435 
    436436 if ( roar_get_vol(con, stream, &mixer, &channels) == -1 ) { 
    437   fprintf(stderr, "Error: can not get stream mixer info\n"); 
     437  fprintf(stderr, "Error: can not get stream mixer info for stream %i\n", stream); 
    438438  return -1; 
    439439 } 
     
    465465} 
    466466 
    467 static unsigned int set_mixer_parse_volume (char * k, int len) { 
     467static unsigned int set_mixer_parse_volume (char * k, int len, uint16_t scale) { 
     468 float fs = scale; 
     469 
    468470 switch (k[len - 1]) { 
    469471  case '%': 
    470472    k[len - 1] = 0; 
    471     return (atof(k)*65535.f)/100; 
     473    return (atof(k)*fs)/100.; 
    472474   break; 
    473475#ifdef ROAR_HAVE_LIBM 
     
    479481 
    480482    k[len - 2] = 0; 
    481     return powf(10, atof(k)/20.f)*65535.f; 
     483    return powf(10, atof(k)/20.f)*fs; 
    482484   break; 
    483485#endif 
     
    488490 
    489491int set_mixer (struct roar_connection * con, int * cur, int max, char * arg[]) { 
     492 uint16_t scale = 65535; 
    490493 int chans = 0; 
    491494 int id; 
     
    506509 
    507510 if ( roar_get_vol(con, id, &old_mixer, &old_chans) == -1 ) { 
    508   fprintf(stderr, "Error: can not get stream mixer info\n"); 
    509   return -1; 
    510  } 
    511  
     511  fprintf(stderr, "Error: can not get stream mixer info for stream %i\n", id); 
     512  return -1; 
     513 } 
     514 
     515 if ( !strcmp(arg[*cur + 1], "scale") ) { 
     516  (*cur)++; // 'scale' 
     517  scale = atoi(arg[++(*cur)]); 
     518 } 
    512519 
    513520// TODO: clean up code here as the % vs. abs code is very duplicate... 
     
    522529  len = strlen(k); 
    523530 
    524   vol_mono = set_mixer_parse_volume(k, len); 
     531  vol_mono = set_mixer_parse_volume(k, len, scale); 
    525532 
    526533  for (i = 0; i < old_chans; i++) 
     
    538545  len = strlen(k); 
    539546 
    540   vol_l = set_mixer_parse_volume(k, len); 
     547  vol_l = set_mixer_parse_volume(k, len, scale); 
    541548 
    542549  k   = arg[++(*cur)]; 
    543550  len = strlen(k); 
    544551 
    545   vol_r = set_mixer_parse_volume(k, len); 
     552  vol_r = set_mixer_parse_volume(k, len, scale); 
    546553 
    547554  vol_mono = (vol_l + vol_r) / 2; 
     
    597604   len = strlen(k); 
    598605 
    599    mixer.mixer[i] = set_mixer_parse_volume(k, len); 
    600   } 
    601  } 
    602  
    603  mixer.scale = 65535; 
     606   mixer.mixer[i] = set_mixer_parse_volume(k, len, scale); 
     607  } 
     608 } 
     609 
     610 mixer.scale = scale; 
    604611 
    605612 return roar_set_vol(con, id, &mixer, chans); 
Note: See TracChangeset for help on using the changeset viewer.