summaryrefslogtreecommitdiffstats
path: root/apps/plugins/vu_meter.c
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2012-05-02 20:53:07 -0400
committerMichael Sevakis <jethead71@rockbox.org>2012-05-02 20:53:07 -0400
commite189b33ff4cc530cb6e59a17b260675d7341e551 (patch)
tree948b635696cbea2eac432303fa2821cfbff13670 /apps/plugins/vu_meter.c
parentc0208f0f64c68a97c67e42efc1b39df7c75bf7da (diff)
downloadrockbox-e189b33ff4cc530cb6e59a17b260675d7341e551.tar.gz
rockbox-e189b33ff4cc530cb6e59a17b260675d7341e551.tar.bz2
rockbox-e189b33ff4cc530cb6e59a17b260675d7341e551.zip
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
Diffstat (limited to 'apps/plugins/vu_meter.c')
-rw-r--r--apps/plugins/vu_meter.c13
1 files changed, 9 insertions, 4 deletions
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) {