diff options
-rw-r--r-- | apps/recorder/radio.c | 2 | ||||
-rw-r--r-- | apps/recorder/recording.c | 5 | ||||
-rw-r--r-- | firmware/export/audio.h | 2 | ||||
-rw-r--r-- | firmware/mpeg.c | 6 | ||||
-rw-r--r-- | firmware/pcm_record.c | 8 |
5 files changed, 14 insertions, 9 deletions
diff --git a/apps/recorder/radio.c b/apps/recorder/radio.c index df3c689c13..0976a57467 100644 --- a/apps/recorder/radio.c +++ b/apps/recorder/radio.c | |||
@@ -366,7 +366,7 @@ bool radio_screen(void) | |||
366 | audio_stop(); | 366 | audio_stop(); |
367 | 367 | ||
368 | #if CONFIG_CODEC != SWCODEC | 368 | #if CONFIG_CODEC != SWCODEC |
369 | audio_init_recording(); | 369 | audio_init_recording(talk_get_bufsize()); |
370 | 370 | ||
371 | sound_settings_apply(); | 371 | sound_settings_apply(); |
372 | /* Yes, we use the D/A for monitoring */ | 372 | /* Yes, we use the D/A for monitoring */ |
diff --git a/apps/recorder/recording.c b/apps/recorder/recording.c index 0d414292b2..f4a3580123 100644 --- a/apps/recorder/recording.c +++ b/apps/recorder/recording.c | |||
@@ -552,7 +552,7 @@ bool recording_screen(void) | |||
552 | #if (CONFIG_LED == LED_REAL) && !defined(SIMULATOR) | 552 | #if (CONFIG_LED == LED_REAL) && !defined(SIMULATOR) |
553 | ata_set_led_enabled(false); | 553 | ata_set_led_enabled(false); |
554 | #endif | 554 | #endif |
555 | audio_init_recording(); | 555 | audio_init_recording(talk_get_bufsize()); |
556 | 556 | ||
557 | sound_set_volume(global_settings.volume); | 557 | sound_set_volume(global_settings.volume); |
558 | 558 | ||
@@ -1555,8 +1555,9 @@ void audio_beep(int duration) | |||
1555 | 1555 | ||
1556 | #ifdef SIMULATOR | 1556 | #ifdef SIMULATOR |
1557 | /* stubs for recording sim */ | 1557 | /* stubs for recording sim */ |
1558 | void audio_init_recording(void) | 1558 | void audio_init_recording(unsigned int buffer_offset) |
1559 | { | 1559 | { |
1560 | buffer_offset = buffer_offset; | ||
1560 | } | 1561 | } |
1561 | 1562 | ||
1562 | void audio_close_recording(void) | 1563 | void audio_close_recording(void) |
diff --git a/firmware/export/audio.h b/firmware/export/audio.h index 3ed1323701..6922dab1f6 100644 --- a/firmware/export/audio.h +++ b/firmware/export/audio.h | |||
@@ -87,7 +87,7 @@ void audio_beep(int duration); | |||
87 | void audio_init_playback(void); | 87 | void audio_init_playback(void); |
88 | 88 | ||
89 | /* audio recording functions */ | 89 | /* audio recording functions */ |
90 | void audio_init_recording(void); | 90 | void audio_init_recording(unsigned int buffer_offset); |
91 | void audio_close_recording(void); | 91 | void audio_close_recording(void); |
92 | void audio_record(const char *filename); | 92 | void audio_record(const char *filename); |
93 | void audio_stop_recording(void); | 93 | void audio_stop_recording(void); |
diff --git a/firmware/mpeg.c b/firmware/mpeg.c index c47c279d24..7034f3896b 100644 --- a/firmware/mpeg.c +++ b/firmware/mpeg.c | |||
@@ -2127,8 +2127,9 @@ void audio_init_playback(void) | |||
2127 | /**************************************************************************** | 2127 | /**************************************************************************** |
2128 | * Recording functions | 2128 | * Recording functions |
2129 | ***************************************************************************/ | 2129 | ***************************************************************************/ |
2130 | void audio_init_recording(void) | 2130 | void audio_init_recording(unsigned int buffer_offset) |
2131 | { | 2131 | { |
2132 | buffer_offset = buffer_offset; | ||
2132 | init_recording_done = false; | 2133 | init_recording_done = false; |
2133 | queue_post(&mpeg_queue, MPEG_INIT_RECORDING, NULL); | 2134 | queue_post(&mpeg_queue, MPEG_INIT_RECORDING, NULL); |
2134 | 2135 | ||
@@ -2652,9 +2653,10 @@ void audio_set_recording_gain(int left, int right, int type) | |||
2652 | (void)right; | 2653 | (void)right; |
2653 | (void)type; | 2654 | (void)type; |
2654 | } | 2655 | } |
2655 | void audio_init_recording(void) | 2656 | void audio_init_recording(unsigned int buffer_offset) |
2656 | { | 2657 | { |
2657 | /* a dummy */ | 2658 | /* a dummy */ |
2659 | (void)buffer_offset; | ||
2658 | } | 2660 | } |
2659 | void audio_set_recording_options(int frequency, int quality, | 2661 | void audio_set_recording_options(int frequency, int quality, |
2660 | int source, int channel_mode, | 2662 | int source, int channel_mode, |
diff --git a/firmware/pcm_record.c b/firmware/pcm_record.c index 8d34b345c8..a7d8bc707c 100644 --- a/firmware/pcm_record.c +++ b/firmware/pcm_record.c | |||
@@ -82,6 +82,7 @@ static short peak_left, peak_right; | |||
82 | 82 | ||
83 | #define GET_CHUNK(x) (short*)(&rec_buffer[CHUNK_SIZE*(x)]) | 83 | #define GET_CHUNK(x) (short*)(&rec_buffer[CHUNK_SIZE*(x)]) |
84 | 84 | ||
85 | static unsigned int rec_buffer_offset; | ||
85 | static unsigned char *rec_buffer; /* Circular recording buffer */ | 86 | static unsigned char *rec_buffer; /* Circular recording buffer */ |
86 | static int num_chunks; /* Number of chunks available in rec_buffer */ | 87 | static int num_chunks; /* Number of chunks available in rec_buffer */ |
87 | 88 | ||
@@ -136,8 +137,9 @@ void pcm_rec_init(void) | |||
136 | * - Prepare for DMA transfers | 137 | * - Prepare for DMA transfers |
137 | */ | 138 | */ |
138 | 139 | ||
139 | void audio_init_recording(void) | 140 | void audio_init_recording(unsigned int buffer_offset) |
140 | { | 141 | { |
142 | rec_buffer_offset = buffer_offset; | ||
141 | init_done = false; | 143 | init_done = false; |
142 | queue_post(&pcmrec_queue, PCMREC_INIT, 0); | 144 | queue_post(&pcmrec_queue, PCMREC_INIT, 0); |
143 | 145 | ||
@@ -820,8 +822,8 @@ static void pcmrec_init(void) | |||
820 | is_paused = false; | 822 | is_paused = false; |
821 | is_error = false; | 823 | is_error = false; |
822 | 824 | ||
823 | rec_buffer = (unsigned char*)(((unsigned long)audiobuf + talk_get_bufsize()) & ~3); | 825 | rec_buffer = (unsigned char*)(((unsigned long)audiobuf + rec_buffer_offset) & ~3); |
824 | buffer_size = (long)audiobufend - (long)audiobuf - talk_get_bufsize() - 16; | 826 | buffer_size = (long)audiobufend - (long)audiobuf - rec_buffer_offset - 16; |
825 | 827 | ||
826 | logf("buf size: %d kb", buffer_size/1024); | 828 | logf("buf size: %d kb", buffer_size/1024); |
827 | 829 | ||