summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2002-07-21 07:12:39 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2002-07-21 07:12:39 +0000
commit54a65f76ce9560a0a9b3ad1afbeb44b84f76d6af (patch)
tree759183bdd50879de5669bfbe95d61a07c0204b20 /firmware
parentc04f2ac9fd6e6df033aa910dc70345a36c8d9e6f (diff)
downloadrockbox-54a65f76ce9560a0a9b3ad1afbeb44b84f76d6af.tar.gz
rockbox-54a65f76ce9560a0a9b3ad1afbeb44b84f76d6af.zip
MPEG loading latency patch by Hardeep Sidhu
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@1393 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r--firmware/mpeg.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/firmware/mpeg.c b/firmware/mpeg.c
index 857cd67153..70232571b7 100644
--- a/firmware/mpeg.c
+++ b/firmware/mpeg.c
@@ -38,6 +38,7 @@
38#define MPEG_SWAP_CHUNKSIZE 0x8000 38#define MPEG_SWAP_CHUNKSIZE 0x8000
39#define MPEG_HIGH_WATER 2 39#define MPEG_HIGH_WATER 2
40#define MPEG_LOW_WATER 0x40000 40#define MPEG_LOW_WATER 0x40000
41#define MPEG_LOW_WATER_CHUNKSIZE 0x10000
41 42
42#define MPEG_PLAY 1 43#define MPEG_PLAY 1
43#define MPEG_STOP 2 44#define MPEG_STOP 2
@@ -496,6 +497,7 @@ static void mpeg_thread(void)
496 struct event ev; 497 struct event ev;
497 int len; 498 int len;
498 int free_space_left; 499 int free_space_left;
500 int unplayed_space_left;
499 int amount_to_read; 501 int amount_to_read;
500 int amount_to_swap; 502 int amount_to_swap;
501 503
@@ -676,6 +678,8 @@ static void mpeg_thread(void)
676 if(free_space_left <= 0) 678 if(free_space_left <= 0)
677 free_space_left = mp3buflen + free_space_left; 679 free_space_left = mp3buflen + free_space_left;
678 680
681 unplayed_space_left = mp3buflen - free_space_left;
682
679 /* Make sure that we don't fill the entire buffer */ 683 /* Make sure that we don't fill the entire buffer */
680 free_space_left -= 2; 684 free_space_left -= 2;
681 685
@@ -694,7 +698,11 @@ static void mpeg_thread(void)
694 } 698 }
695 else 699 else
696 { 700 {
697 amount_to_read = MIN(MPEG_CHUNKSIZE, free_space_left); 701 if(unplayed_space_left < MPEG_LOW_WATER)
702 amount_to_read = MIN(MPEG_LOW_WATER_CHUNKSIZE,
703 free_space_left);
704 else
705 amount_to_read = MIN(MPEG_CHUNKSIZE, free_space_left);
698 } 706 }
699 amount_to_read = MIN(mp3buflen - mp3buf_write, amount_to_read); 707 amount_to_read = MIN(mp3buflen - mp3buf_write, amount_to_read);
700 708