diff options
author | Jörg Hohensohn <hohensoh@rockbox.org> | 2004-03-11 19:27:26 +0000 |
---|---|---|
committer | Jörg Hohensohn <hohensoh@rockbox.org> | 2004-03-11 19:27:26 +0000 |
commit | fbea708b2e2e61af9238bc356b07a1e22ed44833 (patch) | |
tree | 59559bc3aa9de384d86a65e746c4c28c05726939 | |
parent | 3b6cc1c3c28df3dc747a5d620ed3347db12c79e1 (diff) | |
download | rockbox-fbea708b2e2e61af9238bc356b07a1e22ed44833.tar.gz rockbox-fbea708b2e2e61af9238bc356b07a1e22ed44833.zip |
Feature for recording: Delayed file open avoids disk spinup as long as the buffer lasts. So for short clips the internal mic can be used without disturbance.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4367 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | firmware/mpeg.c | 27 |
1 files changed, 22 insertions, 5 deletions
diff --git a/firmware/mpeg.c b/firmware/mpeg.c index 645e60fdcd..ff545f03d0 100644 --- a/firmware/mpeg.c +++ b/firmware/mpeg.c | |||
@@ -288,7 +288,8 @@ static bool stop_pending; | |||
288 | unsigned long record_start_time; /* Value of current_tick when recording | 288 | unsigned long record_start_time; /* Value of current_tick when recording |
289 | was started */ | 289 | was started */ |
290 | static bool saving; /* We are saving the buffer to disk */ | 290 | static bool saving; /* We are saving the buffer to disk */ |
291 | static char recording_filename[MAX_PATH]; | 291 | static char recording_filename[MAX_PATH]; /* argument to thread */ |
292 | static char delayed_filename[MAX_PATH]; /* internal copy of above */ | ||
292 | static int rec_frequency_index; /* For create_xing_header() calls */ | 293 | static int rec_frequency_index; /* For create_xing_header() calls */ |
293 | static int rec_version_index; /* For create_xing_header() calls */ | 294 | static int rec_version_index; /* For create_xing_header() calls */ |
294 | static bool disable_xing_header; /* When splitting files */ | 295 | static bool disable_xing_header; /* When splitting files */ |
@@ -1649,11 +1650,10 @@ static void mpeg_thread(void) | |||
1649 | } | 1650 | } |
1650 | 1651 | ||
1651 | start_recording(); | 1652 | start_recording(); |
1652 | |||
1653 | mpeg_file = open(recording_filename, O_WRONLY|O_CREAT); | ||
1654 | 1653 | ||
1655 | if(mpeg_file < 0) | 1654 | /* delayed until buffer is saved, don't open yet */ |
1656 | panicf("recfile: %d", mpeg_file); | 1655 | strcpy(delayed_filename, recording_filename); |
1656 | mpeg_file = -1; | ||
1657 | 1657 | ||
1658 | break; | 1658 | break; |
1659 | 1659 | ||
@@ -1783,6 +1783,14 @@ static void mpeg_thread(void) | |||
1783 | writelen = MIN(amount_to_save, | 1783 | writelen = MIN(amount_to_save, |
1784 | mp3buflen - mp3buf_read); | 1784 | mp3buflen - mp3buf_read); |
1785 | 1785 | ||
1786 | if (mpeg_file < 0) /* delayed file opening */ | ||
1787 | { | ||
1788 | mpeg_file = open(delayed_filename, O_WRONLY|O_CREAT); | ||
1789 | |||
1790 | if(mpeg_file < 0) | ||
1791 | panicf("recfile: %d", mpeg_file); | ||
1792 | } | ||
1793 | |||
1786 | if(writelen) | 1794 | if(writelen) |
1787 | { | 1795 | { |
1788 | rc = write(mpeg_file, mp3buf + mp3buf_read, writelen); | 1796 | rc = write(mpeg_file, mp3buf + mp3buf_read, writelen); |
@@ -1867,6 +1875,15 @@ static void mpeg_thread(void) | |||
1867 | 1875 | ||
1868 | DEBUGF("wrl: %x\n", writelen); | 1876 | DEBUGF("wrl: %x\n", writelen); |
1869 | 1877 | ||
1878 | if (mpeg_file < 0) /* delayed file opening */ | ||
1879 | { | ||
1880 | mpeg_file = open(delayed_filename, | ||
1881 | O_WRONLY|O_CREAT); | ||
1882 | |||
1883 | if(mpeg_file < 0) | ||
1884 | panicf("recfile: %d", mpeg_file); | ||
1885 | } | ||
1886 | |||
1870 | rc = write(mpeg_file, mp3buf + mp3buf_read, | 1887 | rc = write(mpeg_file, mp3buf + mp3buf_read, |
1871 | writelen); | 1888 | writelen); |
1872 | 1889 | ||