diff options
-rw-r--r-- | firmware/mpeg.c | 52 |
1 files changed, 31 insertions, 21 deletions
diff --git a/firmware/mpeg.c b/firmware/mpeg.c index c5f036c860..ce348f45f3 100644 --- a/firmware/mpeg.c +++ b/firmware/mpeg.c | |||
@@ -647,42 +647,52 @@ static void dma_tick(void) | |||
647 | else | 647 | else |
648 | { | 648 | { |
649 | int i; | 649 | int i; |
650 | int num_bytes = 0; | 650 | int num_bytes; |
651 | if(is_recording && (PBDR & 0x4000)) | 651 | if(is_recording && (PBDR & 0x4000)) |
652 | { | 652 | { |
653 | #ifdef DEBUG | 653 | #ifdef DEBUG |
654 | timing_info[timing_info_index++] = current_tick; | 654 | timing_info[timing_info_index++] = current_tick; |
655 | TCNT2 = 0; | 655 | TCNT2 = 0; |
656 | #endif | 656 | #endif |
657 | for(i = 0;i < 30 && (PBDR & 0x4000);i++) | 657 | if(inverted_pr) |
658 | { | 658 | { |
659 | if(inverted_pr) | 659 | for(i = 0;PBDR & 0x4000;i++) |
660 | { | ||
660 | PADR |= 0x800; | 661 | PADR |= 0x800; |
661 | else | 662 | |
663 | /* It must take at least 5 cycles before | ||
664 | the data is read */ | ||
665 | mp3buf[mp3buf_write++] = *(unsigned char *)0x4000000; | ||
666 | |||
662 | PADR &= ~0x800; | 667 | PADR &= ~0x800; |
663 | 668 | ||
664 | /* It must take at least 5 cycles before the data is read */ | 669 | if(mp3buf_write >= mp3buflen) |
665 | mp3buf[mp3buf_write] = *(unsigned char *)0x4000000; | 670 | mp3buf_write = 0; |
666 | 671 | } | |
667 | if(inverted_pr) | 672 | } |
673 | else | ||
674 | { | ||
675 | for(i = 0;PBDR & 0x4000;i++) | ||
676 | { | ||
668 | PADR &= ~0x800; | 677 | PADR &= ~0x800; |
669 | else | 678 | |
679 | /* It must take at least 5 cycles before | ||
680 | the data is read */ | ||
681 | mp3buf[mp3buf_write++] = *(unsigned char *)0x4000000; | ||
682 | |||
670 | PADR |= 0x800; | 683 | PADR |= 0x800; |
671 | 684 | ||
672 | /* It must take at least 4 cycles before the next loop */ | 685 | if(mp3buf_write >= mp3buflen) |
673 | num_rec_bytes++; | 686 | mp3buf_write = 0; |
674 | 687 | } | |
675 | mp3buf_write++; | ||
676 | if(mp3buf_write >= mp3buflen) | ||
677 | mp3buf_write = 0; | ||
678 | |||
679 | num_bytes++; | ||
680 | } | 688 | } |
681 | #ifdef DEBUG | 689 | #ifdef DEBUG |
682 | timing_info[timing_info_index++] = TCNT2 + (num_bytes << 16); | 690 | timing_info[timing_info_index++] = TCNT2 + (i << 16); |
683 | timing_info_index &= 0x3ff; | 691 | timing_info_index &= 0x3ff; |
684 | #endif | 692 | #endif |
685 | 693 | ||
694 | num_rec_bytes += i; | ||
695 | |||
686 | /* Signal to save the data if we are running out of buffer | 696 | /* Signal to save the data if we are running out of buffer |
687 | space */ | 697 | space */ |
688 | num_bytes = mp3buf_write - mp3buf_read; | 698 | num_bytes = mp3buf_write - mp3buf_read; |
@@ -1626,7 +1636,7 @@ static void mpeg_thread(void) | |||
1626 | close(mpeg_file); | 1636 | close(mpeg_file); |
1627 | mpeg_file = -1; | 1637 | mpeg_file = -1; |
1628 | 1638 | ||
1629 | #if 0 | 1639 | #ifdef DEBUG |
1630 | { | 1640 | { |
1631 | int i; | 1641 | int i; |
1632 | for(i = 0;i < 512;i++) | 1642 | for(i = 0;i < 512;i++) |