diff options
Diffstat (limited to 'firmware/mpeg.c')
-rw-r--r-- | firmware/mpeg.c | 40 |
1 files changed, 31 insertions, 9 deletions
diff --git a/firmware/mpeg.c b/firmware/mpeg.c index 22a4e1f79e..2a5651ed61 100644 --- a/firmware/mpeg.c +++ b/firmware/mpeg.c | |||
@@ -35,7 +35,7 @@ | |||
35 | #include "file.h" | 35 | #include "file.h" |
36 | #endif | 36 | #endif |
37 | 37 | ||
38 | extern void bitswap(unsigned short *data, int length); | 38 | extern void bitswap(unsigned char *data, int length); |
39 | 39 | ||
40 | #define MPEG_CHUNKSIZE 0x180000 | 40 | #define MPEG_CHUNKSIZE 0x180000 |
41 | #define MPEG_SWAP_CHUNKSIZE 0x8000 | 41 | #define MPEG_SWAP_CHUNKSIZE 0x8000 |
@@ -465,9 +465,30 @@ static void mas_poll_start(int interval_in_ms) | |||
465 | TSR1 &= ~0x02; | 465 | TSR1 &= ~0x02; |
466 | TIER1 = 0xf9; /* Enable GRA match interrupt */ | 466 | TIER1 = 0xf9; /* Enable GRA match interrupt */ |
467 | 467 | ||
468 | TSTR |= 0x02; /* Start timer 2 */ | 468 | TSTR |= 0x02; /* Start timer 1 */ |
469 | } | 469 | } |
470 | 470 | ||
471 | #ifdef DEBUG | ||
472 | static void dbg_timer_start(void) | ||
473 | { | ||
474 | /* We are using timer 2 */ | ||
475 | |||
476 | TSTR &= ~0x04; /* Stop the timer */ | ||
477 | TSNC &= ~0x04; /* No synchronization */ | ||
478 | TMDR &= ~0x44; /* Operate normally */ | ||
479 | |||
480 | TCNT1 = 0; /* Start counting at 0 */ | ||
481 | TCR1 = 0x03; /* Sysclock/8 */ | ||
482 | |||
483 | TSTR |= 0x04; /* Start timer 2 */ | ||
484 | } | ||
485 | |||
486 | static int dbg_cnt2us(unsigned int cnt) | ||
487 | { | ||
488 | return (cnt * 10000) / (FREQ/800); | ||
489 | } | ||
490 | #endif | ||
491 | |||
471 | static int get_unplayed_space(void) | 492 | static int get_unplayed_space(void) |
472 | { | 493 | { |
473 | int space = mp3buf_write - mp3buf_read; | 494 | int space = mp3buf_write - mp3buf_read; |
@@ -704,7 +725,7 @@ static int new_file(int steps) | |||
704 | } | 725 | } |
705 | else | 726 | else |
706 | { | 727 | { |
707 | /* skip past id3v2 tag (to an even byte) */ | 728 | /* skip past id3v2 tag */ |
708 | lseek(mpeg_file, | 729 | lseek(mpeg_file, |
709 | id3tags[new_tag_idx]->id3.id3v2len, | 730 | id3tags[new_tag_idx]->id3.id3v2len, |
710 | SEEK_SET); | 731 | SEEK_SET); |
@@ -827,9 +848,9 @@ static void mpeg_thread(void) | |||
827 | set_elapsed(id3); | 848 | set_elapsed(id3); |
828 | } | 849 | } |
829 | else { | 850 | else { |
830 | /* skip past id3v2 tag (to an even byte) */ | 851 | /* skip past id3v2 tag */ |
831 | lseek(mpeg_file, | 852 | lseek(mpeg_file, |
832 | id3tags[tag_read_idx]->id3.id3v2len & ~1, | 853 | id3tags[tag_read_idx]->id3.id3v2len, |
833 | SEEK_SET); | 854 | SEEK_SET); |
834 | 855 | ||
835 | } | 856 | } |
@@ -1046,8 +1067,6 @@ static void mpeg_thread(void) | |||
1046 | newpos = id3->id3v2len; | 1067 | newpos = id3->id3v2len; |
1047 | } | 1068 | } |
1048 | 1069 | ||
1049 | newpos = newpos & ~1; | ||
1050 | |||
1051 | if (mpeg_file >= 0) | 1070 | if (mpeg_file >= 0) |
1052 | curpos = lseek(mpeg_file, 0, SEEK_CUR); | 1071 | curpos = lseek(mpeg_file, 0, SEEK_CUR); |
1053 | else | 1072 | else |
@@ -1196,8 +1215,7 @@ static void mpeg_thread(void) | |||
1196 | 1215 | ||
1197 | DEBUGF("B %x\n", amount_to_swap); | 1216 | DEBUGF("B %x\n", amount_to_swap); |
1198 | t1 = current_tick; | 1217 | t1 = current_tick; |
1199 | bitswap((unsigned short *)(mp3buf + mp3buf_swapwrite), | 1218 | bitswap(mp3buf + mp3buf_swapwrite, amount_to_swap); |
1200 | (amount_to_swap+1)/2); | ||
1201 | t2 = current_tick; | 1219 | t2 = current_tick; |
1202 | DEBUGF("time: %d\n", t2 - t1); | 1220 | DEBUGF("time: %d\n", t2 - t1); |
1203 | 1221 | ||
@@ -2054,6 +2072,10 @@ void mpeg_init(int volume, int bass, int treble, int balance, int loudness, int | |||
2054 | 2072 | ||
2055 | memset(id3tags, sizeof(id3tags), 0); | 2073 | memset(id3tags, sizeof(id3tags), 0); |
2056 | memset(_id3tags, sizeof(id3tags), 0); | 2074 | memset(_id3tags, sizeof(id3tags), 0); |
2075 | |||
2076 | #ifdef DEBUG | ||
2077 | dbg_timer_start(); | ||
2078 | #endif | ||
2057 | } | 2079 | } |
2058 | 2080 | ||
2059 | /* ----------------------------------------------------------------- | 2081 | /* ----------------------------------------------------------------- |