Changeset 1633:223a8417056b in roaraudio


Ignore:
Timestamp:
04/28/09 17:15:45 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

added support for display in dB

File:
1 edited

Legend:

Unmodified
Added
Removed
  • roarclients/roarvumeter.c

    r1103 r1633  
    3131#define BUFSIZE 1024 
    3232 
     33#define MODE_PC    1 
     34#define MODE_DB    2 
     35 
    3336void usage (void) { 
    3437 printf("roarvumeter [OPTIONS]...\n"); 
     
    4649} 
    4750 
    48 int vumeter16bit2ch (int fh, int samples, int16_t * buf) { 
     51int vumeter16bit2ch (int fh, int samples, int16_t * buf, int mode) { 
    4952 int i; 
    5053 int samples_half = samples/2; 
     
    6265  } 
    6366 
    64   suml = sqrt(suml/samples_half)/327.68; 
    65   sumr = sqrt(sumr/samples_half)/327.68; 
     67  suml = sqrt(suml/samples_half); 
     68  sumr = sqrt(sumr/samples_half); 
    6669 
    67   printf("L: %3i%% R: %3i%%          \e[u", (int)suml, (int)sumr); 
     70  switch (mode) { 
     71   case MODE_PC: 
     72     printf("L: %3i%% R: %3i%%          \e[u", (int)(suml/327.68), (int)(sumr/327.68)); 
     73    break; 
     74   case MODE_DB: 
     75     printf("L: %6.2fdB R: %6.2fdB          \e[u", 20*log10(suml/32768), 20*log10(sumr/32768)); 
     76    break; 
     77  } 
     78 
    6879  fflush(stdout); 
    6980 } 
     
    7182} 
    7283 
    73 int vumeter (int fh, int samples, int bits, int channels) { 
     84int vumeter (int fh, int samples, int bits, int channels, int mode) { 
    7485 void * buf = malloc(samples*bits*2); 
    7586 
     
    7990 if ( bits == 16 ) { 
    8091  if ( channels == 2 ) { 
    81    vumeter16bit2ch(fh, samples, (int16_t *) buf); 
     92   vumeter16bit2ch(fh, samples, (int16_t *) buf, mode); 
    8293   free(buf); 
    8394   return 0; 
     
    100111 int    fh; 
    101112 int    i; 
     113 int    mode = MODE_PC; 
    102114 
    103115 for (i = 1; i < argc; i++) { 
     
    114126  } else if ( strcmp(k, "--samples") == 0 ) { 
    115127   samples = atoi(argv[++i]); 
     128  } else if ( strcmp(k, "--db") == 0 ) { 
     129   mode = MODE_DB; 
    116130  } else if ( strcmp(k, "--help") == 0 ) { 
    117131   usage(); 
     
    129143 } 
    130144 
    131  vumeter(fh, samples*channels, bits, channels); 
     145 vumeter(fh, samples*channels, bits, channels, mode); 
    132146 
    133147 printf("\n"); // if the reach this then roard has quited and we should print a newline 
Note: See TracChangeset for help on using the changeset viewer.