diff options
| author | Miika Pekkarinen <miipekk@ihme.org> | 2005-06-07 06:34:54 +0000 |
|---|---|---|
| committer | Miika Pekkarinen <miipekk@ihme.org> | 2005-06-07 06:34:54 +0000 |
| commit | 82c2927d1e8e900bee29c73f066e341cf4ec0ea5 (patch) | |
| tree | 3ae85cd77fe62d08163c28f95e677c4a54bf1288 /firmware | |
| parent | 0f10e898f0040e30f0a23719e67223744c47f90d (diff) | |
| download | rockbox-82c2927d1e8e900bee29c73f066e341cf4ec0ea5.zip rockbox-82c2927d1e8e900bee29c73f066e341cf4ec0ea5.tar.gz rockbox-82c2927d1e8e900bee29c73f066e341cf4ec0ea5.tar.bz2 rockbox-82c2927d1e8e900bee29c73f066e341cf4ec0ea5.tar.xz | |
Fixed: Ogg Vorbis crashing, MP3 file seeking, USB mode and a little
faster file buffering.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6591 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
| -rw-r--r-- | firmware/export/pcm_playback.h | 1 | ||||
| -rw-r--r-- | firmware/pcm_playback.c | 19 |
2 files changed, 14 insertions, 6 deletions
diff --git a/firmware/export/pcm_playback.h b/firmware/export/pcm_playback.h index f83443b..3c29018 100644 --- a/firmware/export/pcm_playback.h +++ b/firmware/export/pcm_playback.h @@ -41,6 +41,7 @@ int pcm_play_num_used_buffers(void); void pcm_play_set_watermark(int numbytes, void (*callback)(int bytes_left)); void pcm_set_boost_mode(bool state); +bool pcm_is_lowdata(void); unsigned int audiobuffer_get_latency(void); bool audiobuffer_insert(char *buf, size_t length); diff --git a/firmware/pcm_playback.c b/firmware/pcm_playback.c index 318cfd4..61573e6 100644 --- a/firmware/pcm_playback.c +++ b/firmware/pcm_playback.c @@ -211,8 +211,7 @@ void pcm_play_data(const unsigned char* start, int size, callback_for_more = get_more; dma_start(start, size); - if (get_more == pcm_play_callback) - get_more(&next_start, &next_size); + get_more(&next_start, &next_size); } void pcm_play_stop(void) @@ -256,7 +255,6 @@ void DMA0(void) __attribute__ ((interrupt_handler, section(".icode"))); void DMA0(void) { int res = DSR0; - bool rockboy = callback_for_more != pcm_play_callback; DSR0 = 1; /* Clear interrupt */ @@ -267,13 +265,11 @@ void DMA0(void) } else { - if (callback_for_more && rockboy) - callback_for_more(&next_start, &next_size); if(next_size) { SAR0 = (unsigned long)next_start; /* Source address */ BCR0 = next_size; /* Bytes to transfer */ - if (callback_for_more && !rockboy) + if (callback_for_more) callback_for_more(&next_start, &next_size); } else @@ -366,6 +362,17 @@ unsigned int audiobuffer_get_latency(void) return latency; } +bool pcm_is_lowdata(void) +{ + if (!pcm_is_playing()) + return false; + + if (PCMBUF_SIZE - audiobuffer_free <= PCM_WATERMARK) + return true; + + return false; +} + bool audiobuffer_insert(char *buf, size_t length) { size_t copy_n = 0; |