Changeset 2917:3adf5948e9cd in roaraudio


Ignore:
Timestamp:
10/16/09 16:58:25 (15 years ago)
Author:
phi
Branch:
default
Phase:
public
Message:

a bit better algo impl.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • roarclients/roarvumeter.c

    r2292 r2917  
    5252 int i; 
    5353 int samples_half = samples/2; 
    54  double suml, sumr; 
     54 int64_t suml, sumr; 
     55 double  rmsl, rmsr; 
    5556 
    5657 printf("\e[s"); 
     
    6162 
    6263  for (i = 0; i < samples; i += 2) { 
    63    suml += (double) buf[i  ] * (double) buf[i  ]; 
    64    sumr += (double) buf[i+1] * (double) buf[i+1]; 
     64   suml += (int64_t) buf[i  ] * (int64_t) buf[i  ]; 
     65   sumr += (int64_t) buf[i+1] * (int64_t) buf[i+1]; 
    6566  } 
    6667 
    67   suml = sqrt(suml/samples_half); 
    68   sumr = sqrt(sumr/samples_half); 
     68  rmsl = sqrt((double)suml/(double)samples_half); 
     69  rmsr = sqrt((double)sumr/(double)samples_half); 
    6970 
    7071  switch (mode) { 
    7172   case MODE_PC: 
    72      printf("L: %3i%% R: %3i%%          \e[u", (int)(suml/327.68), (int)(sumr/327.68)); 
     73     printf("L: %3i%% R: %3i%%          \e[u", (int)(rmsl/327.68), (int)(rmsr/327.68)); 
    7374    break; 
    7475   case MODE_DB: 
    75      printf("L: %6.2fdB R: %6.2fdB          \e[u", 20*log10(suml/32768), 20*log10(sumr/32768)); 
     76     printf("L: %6.2fdB R: %6.2fdB          \e[u", 20*log10(rmsl/32768.), 20*log10(rmsr/32768.)); 
    7677    break; 
    7778  } 
Note: See TracChangeset for help on using the changeset viewer.