From 1e4d1f8de7a523d34c064f7f4a6e7f001d55bb7f Mon Sep 17 00:00:00 2001 From: Andy Date: Fri, 2 Dec 2005 01:04:03 +0000 Subject: iRiver recording changes: - Added Peakmeter in recording screen - Fix for stop bug - Fix for playback peakmeter not working after recording git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8120 a1c6a512-1295-4272-9138-f99709370657 --- apps/recorder/peakmeter.c | 18 +++++++++++++++--- apps/recorder/recording.c | 15 ++++++++++----- 2 files changed, 25 insertions(+), 8 deletions(-) (limited to 'apps') diff --git a/apps/recorder/peakmeter.c b/apps/recorder/peakmeter.c index a93e20ad0e..a77fea770e 100644 --- a/apps/recorder/peakmeter.c +++ b/apps/recorder/peakmeter.c @@ -35,6 +35,11 @@ #if CONFIG_CODEC == SWCODEC #include "pcm_playback.h" + +#ifdef HAVE_RECORDING +#include "pcm_record.h" +#endif +static bool pm_playback = true; /* selects between playback and recording peaks */ #endif #if !defined(SIMULATOR) && CONFIG_CODEC != SWCODEC @@ -491,8 +496,7 @@ void peak_meter_playback(bool playback) #ifdef SIMULATOR (void)playback; #elif CONFIG_CODEC == SWCODEC -/* FIX: not for the sw-based ones yes */ - (void)playback; + pm_playback = playback; #else if (playback) { pm_src_left = MAS_REG_DQPEAK_L; @@ -531,7 +535,15 @@ void peak_meter_peek(void) pm_cur_left = left = 8000; pm_cur_right = right = 9000; #elif CONFIG_CODEC == SWCODEC - pcm_calculate_peaks(&pm_cur_left, &pm_cur_right); + + if (pm_playback) + pcm_calculate_peaks(&pm_cur_left, &pm_cur_right); +#ifdef HAVE_RECORDING + if (!pm_playback) + { + pcm_rec_get_peaks(&pm_cur_left, &pm_cur_right); + } +#endif left = pm_cur_left; right = pm_cur_right; #else diff --git a/apps/recorder/recording.c b/apps/recorder/recording.c index 63cd513c78..c7da2bbb9f 100644 --- a/apps/recorder/recording.c +++ b/apps/recorder/recording.c @@ -328,15 +328,17 @@ bool recording_screen(void) audio_init_recording(); sound_set_volume(global_settings.volume); - - /* Yes, we use the D/A for monitoring */ - peak_meter_playback(true); - - peak_meter_enabled = true; #if CONFIG_CODEC == SWCODEC audio_stop(); + /* Set peak meter to recording mode */ + peak_meter_playback(false); + cpu_boost(true); +#else + /* Yes, we use the D/A for monitoring */ + peak_meter_playback(true); #endif + peak_meter_enabled = true; if (global_settings.rec_prerecord_time) talk_buffer_steal(); /* will use the mp3 buffer */ @@ -440,7 +442,9 @@ bool recording_screen(void) else { peak_meter_playback(true); +#if CONFIG_CODEC != SWCODEC peak_meter_enabled = false; +#endif done = true; } update_countdown = 1; /* Update immediately */ @@ -875,6 +879,7 @@ bool recording_screen(void) #if CONFIG_CODEC == SWCODEC audio_stop_recording(); audio_close_recording(); + cpu_boost(false); #else audio_init_playback(); #endif -- cgit v1.2.3