summaryrefslogtreecommitdiffstats
path: root/apps/recorder
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/recorder
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/recorder')
-rw-r--r--apps/recorder/peakmeter.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/apps/recorder/peakmeter.c b/apps/recorder/peakmeter.c
index 9f0db3330a..48a695b933 100644
--- a/apps/recorder/peakmeter.c
+++ b/apps/recorder/peakmeter.c
@@ -619,8 +619,13 @@ void peak_meter_peek(void)
/* read current values */
#if CONFIG_CODEC == SWCODEC
if (pm_playback)
+ {
+ static struct pcm_peaks chan_peaks; /* *MUST* be static */
mixer_channel_calculate_peaks(PCM_MIXER_CHAN_PLAYBACK,
- &pm_cur_left, &pm_cur_right);
+ &chan_peaks);
+ pm_cur_left = chan_peaks.left;
+ pm_cur_right = chan_peaks.right;
+ }
#ifdef HAVE_RECORDING
else
pcm_calculate_rec_peaks(&pm_cur_left, &pm_cur_right);