diff options
| author | Michael Sevakis <jethead71@rockbox.org> | 2012-05-02 20:53:07 -0400 |
|---|---|---|
| committer | Michael Sevakis <jethead71@rockbox.org> | 2012-05-02 20:53:07 -0400 |
| commit | e189b33ff4cc530cb6e59a17b260675d7341e551 (patch) | |
| tree | 948b635696cbea2eac432303fa2821cfbff13670 /apps/plugins | |
| parent | c0208f0f64c68a97c67e42efc1b39df7c75bf7da (diff) | |
| download | rockbox-e189b33ff4cc530cb6e59a17b260675d7341e551.zip rockbox-e189b33ff4cc530cb6e59a17b260675d7341e551.tar.gz rockbox-e189b33ff4cc530cb6e59a17b260675d7341e551.tar.bz2 rockbox-e189b33ff4cc530cb6e59a17b260675d7341e551.tar.xz | |
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.c | 4 | ||||
| -rw-r--r-- | apps/plugins/starfield.c | 6 | ||||
| -rw-r--r-- | apps/plugins/vu_meter.c | 13 |
3 files changed, 16 insertions, 7 deletions
diff --git a/apps/plugins/oscilloscope.c b/apps/plugins/oscilloscope.c index a4be0fb..0bf951f 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 811e9c6..30b01b2 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 51f2d19..ec88444 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) { |