summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
Diffstat (limited to 'firmware')
-rw-r--r--firmware/export/pcm_playback.h1
-rw-r--r--firmware/pcm_playback.c7
2 files changed, 7 insertions, 1 deletions
diff --git a/firmware/export/pcm_playback.h b/firmware/export/pcm_playback.h
index 6222574ed8..3972e45768 100644
--- a/firmware/export/pcm_playback.h
+++ b/firmware/export/pcm_playback.h
@@ -26,6 +26,7 @@ void pcm_set_frequency(unsigned int frequency);
26void pcm_play_data(void (*get_more)(unsigned char** start, long* size)); 26void pcm_play_data(void (*get_more)(unsigned char** start, long* size));
27 27
28void pcm_calculate_peaks(int *left, int *right); 28void pcm_calculate_peaks(int *left, int *right);
29long pcm_get_bytes_waiting(void);
29 30
30void pcm_play_stop(void); 31void pcm_play_stop(void);
31void pcm_play_pause(bool play); 32void pcm_play_pause(bool play);
diff --git a/firmware/pcm_playback.c b/firmware/pcm_playback.c
index 3a68db4d0c..bafbd8c761 100644
--- a/firmware/pcm_playback.c
+++ b/firmware/pcm_playback.c
@@ -164,7 +164,7 @@ static long calculate_channel_peak_average(int channel, unsigned short *addr,
164void pcm_calculate_peaks(int *left, int *right) 164void pcm_calculate_peaks(int *left, int *right)
165{ 165{
166 unsigned short *addr = (unsigned short *)SAR0; 166 unsigned short *addr = (unsigned short *)SAR0;
167 long size = MIN(512, BCR0 / 2); 167 long size = MIN(512, (BCR0 & 0xffffff) / 2);
168 168
169 if (left != NULL) 169 if (left != NULL)
170 *left = calculate_channel_peak_average(0, addr, size); 170 *left = calculate_channel_peak_average(0, addr, size);
@@ -222,6 +222,11 @@ void pcm_play_data(void (*get_more)(unsigned char** start, long* size))
222 uda1380_mute(false); 222 uda1380_mute(false);
223} 223}
224 224
225long pcm_get_bytes_waiting(void)
226{
227 return next_size + (BCR0 & 0xffffff);
228}
229
225void pcm_play_stop(void) 230void pcm_play_stop(void)
226{ 231{
227 if (pcm_playing) { 232 if (pcm_playing) {