From eab434c416a89a9de30bcca255334eeac97eb433 Mon Sep 17 00:00:00 2001 From: Miika Pekkarinen Date: Fri, 22 Jul 2005 06:32:55 +0000 Subject: More accurate playback position calculation. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7218 a1c6a512-1295-4272-9138-f99709370657 --- firmware/export/pcm_playback.h | 1 + firmware/pcm_playback.c | 7 ++++++- 2 files changed, 7 insertions(+), 1 deletion(-) (limited to 'firmware') diff --git a/firmware/export/pcm_playback.h b/firmware/export/pcm_playback.h index 6222574..3972e45 100644 --- a/firmware/export/pcm_playback.h +++ b/firmware/export/pcm_playback.h @@ -26,6 +26,7 @@ void pcm_set_frequency(unsigned int frequency); void pcm_play_data(void (*get_more)(unsigned char** start, long* size)); void pcm_calculate_peaks(int *left, int *right); +long pcm_get_bytes_waiting(void); void pcm_play_stop(void); void pcm_play_pause(bool play); diff --git a/firmware/pcm_playback.c b/firmware/pcm_playback.c index 3a68db4..bafbd8c 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, void pcm_calculate_peaks(int *left, int *right) { unsigned short *addr = (unsigned short *)SAR0; - long size = MIN(512, BCR0 / 2); + long size = MIN(512, (BCR0 & 0xffffff) / 2); if (left != NULL) *left = calculate_channel_peak_average(0, addr, size); @@ -222,6 +222,11 @@ void pcm_play_data(void (*get_more)(unsigned char** start, long* size)) uda1380_mute(false); } +long pcm_get_bytes_waiting(void) +{ + return next_size + (BCR0 & 0xffffff); +} + void pcm_play_stop(void) { if (pcm_playing) { -- cgit v1.1