summaryrefslogtreecommitdiffstats
path: root/firmware
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2002-10-16 09:26:03 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2002-10-16 09:26:03 +0000
commit647db26fe8b79423d86dae3d8928bed29f21271b (patch)
tree8b8d38773f809190e4f01c0fc34753af9758731d /firmware
parentfae212043b3b417880c451ab4e13f73af6f01332 (diff)
downloadrockbox-647db26fe8b79423d86dae3d8928bed29f21271b.tar.gz
rockbox-647db26fe8b79423d86dae3d8928bed29f21271b.zip
Faster start of playback when Play/Next/Prev
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2677 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r--firmware/mpeg.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/firmware/mpeg.c b/firmware/mpeg.c
index a6c6783beb..85054d7cf0 100644
--- a/firmware/mpeg.c
+++ b/firmware/mpeg.c
@@ -845,14 +845,19 @@ static void swap_one_chunk(void)
{
int free_space_left;
int amount_to_swap;
- int t1, t2;
free_space_left = get_unswapped_space();
if(free_space_left == 0 && !play_pending)
return;
-
- amount_to_swap = MIN(MPEG_SWAP_CHUNKSIZE, free_space_left);
+
+ /* Swap in larger chunks when the user is waiting for the playback
+ to start */
+ if(play_pending)
+ amount_to_swap = MIN(MPEG_LOW_WATER_CHUNKSIZE, free_space_left);
+ else
+ amount_to_swap = MIN(MPEG_SWAP_CHUNKSIZE, free_space_left);
+
if(mp3buf_write < mp3buf_swapwrite)
amount_to_swap = MIN(mp3buflen - mp3buf_swapwrite,
amount_to_swap);
@@ -860,17 +865,12 @@ static void swap_one_chunk(void)
amount_to_swap = MIN(mp3buf_write - mp3buf_swapwrite,
amount_to_swap);
- DEBUGF("B %x\n", amount_to_swap);
- t1 = current_tick;
bitswap(mp3buf + mp3buf_swapwrite, amount_to_swap);
- t2 = current_tick;
- DEBUGF("time: %d\n", t2 - t1);
mp3buf_swapwrite += amount_to_swap;
if(mp3buf_swapwrite >= mp3buflen)
{
mp3buf_swapwrite = 0;
- DEBUGF("BW\n");
}
/* And while we're at it, see if we have started
@@ -919,8 +919,6 @@ static void mpeg_thread(void)
while(1)
{
- DEBUGF("S R:%x W:%x SW:%x\n",
- mp3buf_read, mp3buf_write, mp3buf_swapwrite);
yield();
/* Swap if necessary, and don't block on the queue_wait() */
@@ -931,6 +929,8 @@ static void mpeg_thread(void)
}
else
{
+ DEBUGF("S R:%x W:%x SW:%x\n",
+ mp3buf_read, mp3buf_write, mp3buf_swapwrite);
queue_wait(&mpeg_queue, &ev);
}