From 647db26fe8b79423d86dae3d8928bed29f21271b Mon Sep 17 00:00:00 2001 From: Linus Nielsen Feltzing Date: Wed, 16 Oct 2002 09:26:03 +0000 Subject: Faster start of playback when Play/Next/Prev git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2677 a1c6a512-1295-4272-9138-f99709370657 --- firmware/mpeg.c | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'firmware/mpeg.c') 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); } -- cgit v1.2.3