summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorMiika Pekkarinen <miipekk@ihme.org>2005-07-22 06:32:55 +0000
committerMiika Pekkarinen <miipekk@ihme.org>2005-07-22 06:32:55 +0000
commiteab434c416a89a9de30bcca255334eeac97eb433 (patch)
treefd13b0eff472cd800d8d7b21babd70725d608de3 /firmware
parentd3cbf8730579002093f003499104a861112d4dc5 (diff)
downloadrockbox-eab434c416a89a9de30bcca255334eeac97eb433.zip
rockbox-eab434c416a89a9de30bcca255334eeac97eb433.tar.gz
rockbox-eab434c416a89a9de30bcca255334eeac97eb433.tar.bz2
rockbox-eab434c416a89a9de30bcca255334eeac97eb433.tar.xz
More accurate playback position calculation.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7218 a1c6a512-1295-4272-9138-f99709370657
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 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) {