summaryrefslogtreecommitdiff
path: root/apps/plugins
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
parentc0208f0f64c68a97c67e42efc1b39df7c75bf7da (diff)
downloadrockbox-e189b33ff4cc530cb6e59a17b260675d7341e551.tar.gz
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')
-rw-r--r--apps/plugins/oscilloscope.c4
-rw-r--r--apps/plugins/starfield.c6
-rw-r--r--apps/plugins/vu_meter.c13
3 files changed, 16 insertions, 7 deletions
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)
881 left = rb->mas_codec_readreg(0xC); 881 left = rb->mas_codec_readreg(0xC);
882 right = rb->mas_codec_readreg(0xD); 882 right = rb->mas_codec_readreg(0xD);
883#elif (CONFIG_CODEC == SWCODEC) 883#elif (CONFIG_CODEC == SWCODEC)
884 static struct pcm_peaks peaks;
884 rb->mixer_channel_calculate_peaks(PCM_MIXER_CHAN_PLAYBACK, 885 rb->mixer_channel_calculate_peaks(PCM_MIXER_CHAN_PLAYBACK,
885 &left, &right); 886 &peaks);
887 left = peaks.left; right = peaks.right;
886#endif 888#endif
887 if (osc.orientation == OSC_HORIZ) 889 if (osc.orientation == OSC_HORIZ)
888 anim_horizontal(left, right); 890 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)
228 228
229 /* Get the peaks. ( Borrowed from vu_meter ) */ 229 /* Get the peaks. ( Borrowed from vu_meter ) */
230#if (CONFIG_CODEC == SWCODEC) 230#if (CONFIG_CODEC == SWCODEC)
231 int left_peak, right_peak; 231 static struct pcm_peaks peaks;
232 rb->mixer_channel_calculate_peaks(PCM_MIXER_CHAN_PLAYBACK, 232 rb->mixer_channel_calculate_peaks(PCM_MIXER_CHAN_PLAYBACK,
233 &left_peak, &right_peak); 233 &peaks);
234 #define left_peak peaks.left
235 #define right_peak peaks.right
234#else 236#else
235 int left_peak = rb->mas_codec_readreg(0xC); 237 int left_peak = rb->mas_codec_readreg(0xC);
236 int right_peak = rb->mas_codec_readreg(0xD); 238 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) {
704 int left_peak = rb->mas_codec_readreg(0xC); 704 int left_peak = rb->mas_codec_readreg(0xC);
705 int right_peak = rb->mas_codec_readreg(0xD); 705 int right_peak = rb->mas_codec_readreg(0xD);
706#elif (CONFIG_CODEC == SWCODEC) 706#elif (CONFIG_CODEC == SWCODEC)
707 int left_peak, right_peak; 707 static struct pcm_peaks peaks;
708 rb->mixer_channel_calculate_peaks(PCM_MIXER_CHAN_PLAYBACK, 708 rb->mixer_channel_calculate_peaks(PCM_MIXER_CHAN_PLAYBACK,
709 &left_peak, &right_peak); 709 &peaks);
710 #define left_peak peaks.left
711 #define right_peak peaks.right
710#endif 712#endif
711 713
712 if(vumeter_settings.analog_use_db_scale) { 714 if(vumeter_settings.analog_use_db_scale) {
@@ -762,8 +764,11 @@ static void digital_meter(void) {
762 int left_peak = rb->mas_codec_readreg(0xC); 764 int left_peak = rb->mas_codec_readreg(0xC);
763 int right_peak = rb->mas_codec_readreg(0xD); 765 int right_peak = rb->mas_codec_readreg(0xD);
764#elif (CONFIG_CODEC == SWCODEC) 766#elif (CONFIG_CODEC == SWCODEC)
765 int left_peak, right_peak; 767 static struct pcm_peaks peaks;
766 rb->pcm_calculate_peaks(&left_peak, &right_peak); 768 rb->mixer_channel_calculate_peaks(PCM_MIXER_CHAN_PLAYBACK,
769 &peaks);
770 #define left_peak peaks.left
771 #define right_peak peaks.right
767#endif 772#endif
768 773
769 if(vumeter_settings.digital_use_db_scale) { 774 if(vumeter_settings.digital_use_db_scale) {