diff options
author | Linus Nielsen Feltzing <linus@haxx.se> | 2002-07-21 07:12:39 +0000 |
---|---|---|
committer | Linus Nielsen Feltzing <linus@haxx.se> | 2002-07-21 07:12:39 +0000 |
commit | 54a65f76ce9560a0a9b3ad1afbeb44b84f76d6af (patch) | |
tree | 759183bdd50879de5669bfbe95d61a07c0204b20 | |
parent | c04f2ac9fd6e6df033aa910dc70345a36c8d9e6f (diff) | |
download | rockbox-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
-rw-r--r-- | firmware/mpeg.c | 10 |
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 | ||