summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--firmware/mpeg.c23
1 files changed, 19 insertions, 4 deletions
diff --git a/firmware/mpeg.c b/firmware/mpeg.c
index 6fe60c99c9..e9d0943115 100644
--- a/firmware/mpeg.c
+++ b/firmware/mpeg.c
@@ -485,6 +485,7 @@ static bool stop_pending;
485unsigned long record_start_time; /* Value of current_tick when recording 485unsigned long record_start_time; /* Value of current_tick when recording
486 was started */ 486 was started */
487static bool saving; /* We are saving the buffer to disk */ 487static bool saving; /* We are saving the buffer to disk */
488static char recording_filename[MAX_PATH];
488#endif 489#endif
489 490
490static int mpeg_file; 491static int mpeg_file;
@@ -1576,7 +1577,7 @@ static void mpeg_thread(void)
1576 { 1577 {
1577 /* We need to load more data before starting */ 1578 /* We need to load more data before starting */
1578 filling = true; 1579 filling = true;
1579 queue_post(&mpeg_queue, MPEG_NEED_DATA, 0); 1580 queue_post(&mpeg_queue, MPEG_NEED_DATA, 0);
1580 play_pending = true; 1581 play_pending = true;
1581 } 1582 }
1582 else if (unswapped_space_left > unplayed_space_left) 1583 else if (unswapped_space_left > unplayed_space_left)
@@ -1805,10 +1806,13 @@ static void mpeg_thread(void)
1805 reset_mp3_buffer(); 1806 reset_mp3_buffer();
1806 start_recording(); 1807 start_recording();
1807 demand_irq_enable(true); 1808 demand_irq_enable(true);
1808 mpeg_file = open((char *)ev.data, 1809 mpeg_file = creat(recording_filename, O_WRONLY);
1809 O_WRONLY | O_TRUNC | O_CREAT); 1810
1810 if(mpeg_file < 0) 1811 if(mpeg_file < 0)
1811 panicf("recfile: %d", mpeg_file); 1812 panicf("recfile: %d", mpeg_file);
1813
1814 close(mpeg_file);
1815 mpeg_file = -1;
1812 break; 1816 break;
1813 1817
1814 case MPEG_STOP: 1818 case MPEG_STOP:
@@ -1870,8 +1874,16 @@ static void mpeg_thread(void)
1870 mp3buflen - mp3buf_read); 1874 mp3buflen - mp3buf_read);
1871 1875
1872 DEBUGF("wrl: %x\n", writelen); 1876 DEBUGF("wrl: %x\n", writelen);
1877 mpeg_file = open(recording_filename,
1878 O_WRONLY| O_APPEND);
1879 if(mpeg_file < 0)
1880 panicf("recfile: %d", mpeg_file);
1881
1873 rc = write(mpeg_file, mp3buf + mp3buf_read, 1882 rc = write(mpeg_file, mp3buf + mp3buf_read,
1874 writelen); 1883 writelen);
1884
1885 close(mpeg_file);
1886 mpeg_file = -1;
1875 DEBUGF("rc: %x\n", rc); 1887 DEBUGF("rc: %x\n", rc);
1876 1888
1877 mp3buf_read += amount_to_save; 1889 mp3buf_read += amount_to_save;
@@ -2137,8 +2149,11 @@ static void init_playback(void)
2137 2149
2138void mpeg_record(char *filename) 2150void mpeg_record(char *filename)
2139{ 2151{
2152 strncpy(recording_filename, filename, MAX_PATH - 1);
2153 recording_filename[MAX_PATH - 1] = 0;
2154
2140 num_rec_bytes = 0; 2155 num_rec_bytes = 0;
2141 queue_post(&mpeg_queue, MPEG_RECORD, (void*)filename); 2156 queue_post(&mpeg_queue, MPEG_RECORD, NULL);
2142} 2157}
2143 2158
2144static void start_recording(void) 2159static void start_recording(void)