Clean up peak calculating code.

Mixer needn't keep peak data around that will never be used. Just
pass pcm_peaks structure to it instead of allocating for every
channel. Plugin API becomes incompatible.

vu_meter digital mode was still using global peak calculation;
switch it to playback channel like the rest.

Remove some accumulated soil peaks inside pcm.c and make it more
generic.

Change-Id: Ib4d268d80b6a9d09915eea1c91eab483c1a2c009
This commit is contained in:
Michael Sevakis 2012-05-02 20:53:07 -04:00
parent c0208f0f64
commit e189b33ff4
10 changed files with 81 additions and 78 deletions

View file

@ -704,9 +704,11 @@ static void analog_meter(void) {
int left_peak = rb->mas_codec_readreg(0xC);
int right_peak = rb->mas_codec_readreg(0xD);
#elif (CONFIG_CODEC == SWCODEC)
int left_peak, right_peak;
static struct pcm_peaks peaks;
rb->mixer_channel_calculate_peaks(PCM_MIXER_CHAN_PLAYBACK,
&left_peak, &right_peak);
&peaks);
#define left_peak peaks.left
#define right_peak peaks.right
#endif
if(vumeter_settings.analog_use_db_scale) {
@ -762,8 +764,11 @@ static void digital_meter(void) {
int left_peak = rb->mas_codec_readreg(0xC);
int right_peak = rb->mas_codec_readreg(0xD);
#elif (CONFIG_CODEC == SWCODEC)
int left_peak, right_peak;
rb->pcm_calculate_peaks(&left_peak, &right_peak);
static struct pcm_peaks peaks;
rb->mixer_channel_calculate_peaks(PCM_MIXER_CHAN_PLAYBACK,
&peaks);
#define left_peak peaks.left
#define right_peak peaks.right
#endif
if(vumeter_settings.digital_use_db_scale) {