Changeset 3530:8ca4bb4cc5b0 in roaraudio for roarclients/roarctl.c
- Timestamp:
- 02/19/10 18:09:41 (14 years ago)
- Branch:
- default
- Phase:
- public
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
roarclients/roarctl.c
r3529 r3530 435 435 436 436 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); 438 438 return -1; 439 439 } … … 465 465 } 466 466 467 static unsigned int set_mixer_parse_volume (char * k, int len) { 467 static unsigned int set_mixer_parse_volume (char * k, int len, uint16_t scale) { 468 float fs = scale; 469 468 470 switch (k[len - 1]) { 469 471 case '%': 470 472 k[len - 1] = 0; 471 return (atof(k)* 65535.f)/100;473 return (atof(k)*fs)/100.; 472 474 break; 473 475 #ifdef ROAR_HAVE_LIBM … … 479 481 480 482 k[len - 2] = 0; 481 return powf(10, atof(k)/20.f)* 65535.f;483 return powf(10, atof(k)/20.f)*fs; 482 484 break; 483 485 #endif … … 488 490 489 491 int set_mixer (struct roar_connection * con, int * cur, int max, char * arg[]) { 492 uint16_t scale = 65535; 490 493 int chans = 0; 491 494 int id; … … 506 509 507 510 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 } 512 519 513 520 // TODO: clean up code here as the % vs. abs code is very duplicate... … … 522 529 len = strlen(k); 523 530 524 vol_mono = set_mixer_parse_volume(k, len );531 vol_mono = set_mixer_parse_volume(k, len, scale); 525 532 526 533 for (i = 0; i < old_chans; i++) … … 538 545 len = strlen(k); 539 546 540 vol_l = set_mixer_parse_volume(k, len );547 vol_l = set_mixer_parse_volume(k, len, scale); 541 548 542 549 k = arg[++(*cur)]; 543 550 len = strlen(k); 544 551 545 vol_r = set_mixer_parse_volume(k, len );552 vol_r = set_mixer_parse_volume(k, len, scale); 546 553 547 554 vol_mono = (vol_l + vol_r) / 2; … … 597 604 len = strlen(k); 598 605 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; 604 611 605 612 return roar_set_vol(con, id, &mixer, chans);
Note: See TracChangeset
for help on using the changeset viewer.