diff options
author | Linus Nielsen Feltzing <linus@haxx.se> | 2002-11-19 21:07:44 +0000 |
---|---|---|
committer | Linus Nielsen Feltzing <linus@haxx.se> | 2002-11-19 21:07:44 +0000 |
commit | d703389780f5c7a627bff3f6daf6d72e4547a9db (patch) | |
tree | fc7920b35b0219827c01d341eeea8d58244e0962 /firmware/mpeg.c | |
parent | 11055c04712a83000064888b253681e0d928b701 (diff) | |
download | rockbox-d703389780f5c7a627bff3f6daf6d72e4547a9db.tar.gz rockbox-d703389780f5c7a627bff3f6daf6d72e4547a9db.zip |
More recording stability, plus some feedback
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2860 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/mpeg.c')
-rw-r--r-- | firmware/mpeg.c | 40 |
1 files changed, 32 insertions, 8 deletions
diff --git a/firmware/mpeg.c b/firmware/mpeg.c index 3226e250ac..dfd2785356 100644 --- a/firmware/mpeg.c +++ b/firmware/mpeg.c | |||
@@ -473,6 +473,7 @@ static int lowest_watermark_level; /* Debug value to observe the buffer | |||
473 | bool recording; /* We are recording */ | 473 | bool recording; /* We are recording */ |
474 | static bool is_recording; /* We are (attempting to) record */ | 474 | static bool is_recording; /* We are (attempting to) record */ |
475 | bool stop_pending; | 475 | bool stop_pending; |
476 | unsigned long record_start_frame; /* Frame number where recording started */ | ||
476 | #endif | 477 | #endif |
477 | 478 | ||
478 | static int mpeg_file; | 479 | static int mpeg_file; |
@@ -646,7 +647,7 @@ static void dma_tick(void) | |||
646 | { | 647 | { |
647 | int i; | 648 | int i; |
648 | int num_bytes = 0; | 649 | int num_bytes = 0; |
649 | if(recording && (PBDR & 0x4000)) | 650 | if(is_recording && (PBDR & 0x4000)) |
650 | { | 651 | { |
651 | #ifdef DEBUG | 652 | #ifdef DEBUG |
652 | timing_info[timing_info_index++] = current_tick; | 653 | timing_info[timing_info_index++] = current_tick; |
@@ -1589,8 +1590,6 @@ static void mpeg_thread(void) | |||
1589 | } | 1590 | } |
1590 | else | 1591 | else |
1591 | { | 1592 | { |
1592 | int i; | ||
1593 | |||
1594 | yield(); | 1593 | yield(); |
1595 | if(!queue_empty(&mpeg_queue)) | 1594 | if(!queue_empty(&mpeg_queue)) |
1596 | { | 1595 | { |
@@ -1625,13 +1624,19 @@ static void mpeg_thread(void) | |||
1625 | if(mpeg_file >= 0) | 1624 | if(mpeg_file >= 0) |
1626 | close(mpeg_file); | 1625 | close(mpeg_file); |
1627 | 1626 | ||
1628 | for(i = 0;i < 512;i++) | 1627 | #if 0 |
1629 | { | 1628 | { |
1630 | DEBUGF("%d - %d us (%d bytes)\n", timing_info[i*2], | 1629 | int i; |
1631 | (timing_info[i*2+1] & 0xffff) * | 1630 | for(i = 0;i < 512;i++) |
1632 | 10000 / 13824, | 1631 | { |
1633 | timing_info[i*2+1] >> 16); | 1632 | DEBUGF("%d - %d us (%d bytes)\n", |
1633 | timing_info[i*2], | ||
1634 | (timing_info[i*2+1] & 0xffff) * | ||
1635 | 10000 / 13824, | ||
1636 | timing_info[i*2+1] >> 16); | ||
1637 | } | ||
1634 | } | 1638 | } |
1639 | #endif | ||
1635 | break; | 1640 | break; |
1636 | 1641 | ||
1637 | case MPEG_SAVE_DATA: | 1642 | case MPEG_SAVE_DATA: |
@@ -1862,6 +1867,9 @@ static void init_playback(void) | |||
1862 | 1867 | ||
1863 | void mpeg_record(char *filename) | 1868 | void mpeg_record(char *filename) |
1864 | { | 1869 | { |
1870 | /* Read the current frame */ | ||
1871 | mas_readmem(MAS_BANK_D0, 0xfd0, &record_start_frame, 1); | ||
1872 | |||
1865 | is_recording = true; | 1873 | is_recording = true; |
1866 | queue_post(&mpeg_queue, MPEG_RECORD, (void*)filename); | 1874 | queue_post(&mpeg_queue, MPEG_RECORD, (void*)filename); |
1867 | } | 1875 | } |
@@ -1872,6 +1880,22 @@ static void start_recording(void) | |||
1872 | stop_pending = false; | 1880 | stop_pending = false; |
1873 | } | 1881 | } |
1874 | 1882 | ||
1883 | unsigned long mpeg_num_recorded_frames(void) | ||
1884 | { | ||
1885 | unsigned long val; | ||
1886 | |||
1887 | if(is_recording) | ||
1888 | { | ||
1889 | /* Read the current frame */ | ||
1890 | mas_readmem(MAS_BANK_D0, 0xfd0, &val, 1); | ||
1891 | |||
1892 | return val - record_start_frame; | ||
1893 | } | ||
1894 | else | ||
1895 | { | ||
1896 | return 0; | ||
1897 | } | ||
1898 | } | ||
1875 | #endif | 1899 | #endif |
1876 | 1900 | ||
1877 | void mpeg_play(int offset) | 1901 | void mpeg_play(int offset) |