From e189b33ff4cc530cb6e59a17b260675d7341e551 Mon Sep 17 00:00:00 2001 From: Michael Sevakis Date: Wed, 2 May 2012 20:53:07 -0400 Subject: 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 --- apps/plugins/oscilloscope.c | 4 +++- apps/plugins/starfield.c | 6 ++++-- apps/plugins/vu_meter.c | 13 +++++++++---- 3 files changed, 16 insertions(+), 7 deletions(-) (limited to 'apps/plugins') diff --git a/apps/plugins/oscilloscope.c b/apps/plugins/oscilloscope.c index a4be0fbd8e..0bf951f069 100644 --- a/apps/plugins/oscilloscope.c +++ b/apps/plugins/oscilloscope.c @@ -881,8 +881,10 @@ enum plugin_status plugin_start(const void* parameter) left = rb->mas_codec_readreg(0xC); right = rb->mas_codec_readreg(0xD); #elif (CONFIG_CODEC == SWCODEC) + static struct pcm_peaks peaks; rb->mixer_channel_calculate_peaks(PCM_MIXER_CHAN_PLAYBACK, - &left, &right); + &peaks); + left = peaks.left; right = peaks.right; #endif if (osc.orientation == OSC_HORIZ) anim_horizontal(left, right); diff --git a/apps/plugins/starfield.c b/apps/plugins/starfield.c index 811e9c61ae..30b01b2645 100644 --- a/apps/plugins/starfield.c +++ b/apps/plugins/starfield.c @@ -228,9 +228,11 @@ static int plugin_main(void) /* Get the peaks. ( Borrowed from vu_meter ) */ #if (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 #else int left_peak = rb->mas_codec_readreg(0xC); int right_peak = rb->mas_codec_readreg(0xD); diff --git a/apps/plugins/vu_meter.c b/apps/plugins/vu_meter.c index 51f2d19f40..ec884442d4 100644 --- a/apps/plugins/vu_meter.c +++ b/apps/plugins/vu_meter.c @@ -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) { -- cgit v1.2.3