summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorLinus Nielsen Feltzing <linus@haxx.se>2004-06-10 13:36:09 +0000
committerLinus Nielsen Feltzing <linus@haxx.se>2004-06-10 13:36:09 +0000
commit183e1463bb31fc65f80f0dd3824e50cff87ee3f9 (patch)
treefebd11c9e5a5f2d96f75fa59e9901de11b2d6fb6 /apps
parenta6142ab7ab58f69a3f1a034db4bdf1eff24d3dd6 (diff)
downloadrockbox-183e1463bb31fc65f80f0dd3824e50cff87ee3f9.tar.gz
rockbox-183e1463bb31fc65f80f0dd3824e50cff87ee3f9.zip
Removed vbr_fix, as it now is a plugin
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@4727 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps')
-rw-r--r--apps/lang/english.lang14
-rw-r--r--apps/onplay.c253
2 files changed, 7 insertions, 260 deletions
diff --git a/apps/lang/english.lang b/apps/lang/english.lang
index 21599cb992..4722d743a9 100644
--- a/apps/lang/english.lang
+++ b/apps/lang/english.lang
@@ -1316,21 +1316,21 @@ voice: ""
new:
id: LANG_VBRFIX_STOP_PLAY
-desc: Tells the user to stop the playback
-eng: "Stop the playback first"
+desc: DEPRECATED
+eng: ""
voice: ""
new:
id: LANG_VBRFIX_NOT_VBR
-desc: Tells the user that the selected file is not a VBR file
-eng: "Not a VBR file"
+desc: DEPRECATED
+eng: ""
voice: ""
new:
id: LANG_VBRFIX
-desc: The context menu entry
-eng: "Update VBR file"
-voice: "Update VBR file"
+desc: DEPRECATED
+eng: ""
+voice: ""
new:
id: LANG_INVERT_CURSOR
diff --git a/apps/onplay.c b/apps/onplay.c
index d864b3b2a9..7873941af6 100644
--- a/apps/onplay.c
+++ b/apps/onplay.c
@@ -374,251 +374,6 @@ static bool rename_file(void)
return false;
}
-static void xingupdate(int percent)
-{
- char buf[32];
-
- snprintf(buf, 32, "%d%%", percent);
- lcd_puts(0, 1, buf);
- lcd_update();
-}
-
-
-static int insert_data_in_file(char *fname, int fpos, char *buf, int num_bytes)
-{
- int readlen;
- int rc;
- int orig_fd, fd;
- char tmpname[MAX_PATH];
-
- talk_buffer_steal(); /* we use the mp3 buffer, need to tell */
-
- snprintf(tmpname, MAX_PATH, "%s.tmp", fname);
-
- orig_fd = open(fname, O_RDONLY);
- if(orig_fd < 0) {
- return 10*orig_fd - 1;
- }
-
- fd = creat(tmpname, O_WRONLY);
- if(fd < 0) {
- close(orig_fd);
- return 10*fd - 2;
- }
-
- /* First, copy the initial portion (the ID3 tag) */
- if(fpos) {
- readlen = read(orig_fd, mp3buf, fpos);
- if(readlen < 0) {
- close(fd);
- close(orig_fd);
- return 10*readlen - 3;
- }
-
- rc = write(fd, mp3buf, readlen);
- if(rc < 0) {
- close(fd);
- close(orig_fd);
- return 10*rc - 4;
- }
- }
-
- /* Now insert the data into the file */
- rc = write(fd, buf, num_bytes);
- if(rc < 0) {
- close(orig_fd);
- close(fd);
- return 10*rc - 5;
- }
-
- /* Copy the file */
- do {
- readlen = read(orig_fd, mp3buf, mp3end - mp3buf);
- if(readlen < 0) {
- close(fd);
- close(orig_fd);
- return 10*readlen - 7;
- }
-
- rc = write(fd, mp3buf, readlen);
- if(rc < 0) {
- close(fd);
- close(orig_fd);
- return 10*rc - 8;
- }
- } while(readlen > 0);
-
- close(fd);
- close(orig_fd);
-
- /* Remove the old file */
- rc = remove(fname);
- if(rc < 0) {
- return 10*rc - 9;
- }
-
- /* Replace the old file with the new */
- rc = rename(tmpname, fname);
- if(rc < 0) {
- return 10*rc - 9;
- }
-
- return 0;
-}
-
-static void fileerror(int rc)
-{
- splash(HZ*2, true, "File error: %d", rc);
-}
-
-static const unsigned char empty_id3_header[] =
-{
- 'I', 'D', '3', 0x04, 0x00, 0x00,
- 0x00, 0x00, 0x1f, 0x76 /* Size is 4096 minus 10 bytes for the header */
-};
-
-static bool vbr_fix(void)
-{
- unsigned char xingbuf[1500];
- struct mp3entry entry;
- int fd;
- int rc;
- int flen;
- int num_frames;
- int numbytes;
- int framelen;
- int unused_space;
-
- if(mpeg_status()) {
- splash(HZ*2, true, str(LANG_VBRFIX_STOP_PLAY));
- return onplay_result;
- }
-
- talk_buffer_steal(); /* we use the mp3 buffer, need to tell */
-
- lcd_clear_display();
- lcd_puts_scroll(0, 0, selected_file);
- lcd_update();
-
- xingupdate(0);
-
- rc = mp3info(&entry, selected_file);
- if(rc < 0) {
- fileerror(rc);
- return true;
- }
-
- fd = open(selected_file, O_RDWR);
- if(fd < 0) {
- fileerror(fd);
- return true;
- }
-
- flen = lseek(fd, 0, SEEK_END);
-
- xingupdate(0);
-
- num_frames = count_mp3_frames(fd, entry.first_frame_offset,
- flen, xingupdate);
-
- if(num_frames) {
- /* Note: We don't need to pass a template header because it will be
- taken from the mpeg stream */
- framelen = create_xing_header(fd, entry.first_frame_offset,
- flen, xingbuf, num_frames,
- 0, xingupdate, true);
-
- /* Try to fit the Xing header first in the stream. Replace the existing
- VBR header if there is one, else see if there is room between the
- ID3 tag and the first MP3 frame. */
- if(entry.first_frame_offset - entry.id3v2len >=
- (unsigned int)framelen) {
- DEBUGF("Using existing space between ID3 and first frame\n");
-
- /* Seek to the beginning of the unused space */
- rc = lseek(fd, entry.id3v2len, SEEK_SET);
- if(rc < 0) {
- close(fd);
- fileerror(rc);
- return true;
- }
-
- unused_space =
- entry.first_frame_offset - entry.id3v2len - framelen;
-
- /* Fill the unused space with 0's (using the MP3 buffer)
- and write it to the file */
- if(unused_space)
- {
- memset(mp3buf, 0, unused_space);
- rc = write(fd, mp3buf, unused_space);
- if(rc < 0) {
- close(fd);
- fileerror(rc);
- return true;
- }
- }
-
- /* Then write the Xing header */
- rc = write(fd, xingbuf, framelen);
- if(rc < 0) {
- close(fd);
- fileerror(rc);
- return true;
- }
-
- close(fd);
- } else {
- /* If not, insert some space. If there is an ID3 tag in the
- file we only insert just enough to squeeze the Xing header
- in. If not, we insert an additional empty ID3 tag of 4K. */
-
- close(fd);
-
- /* Nasty trick alert! The insert_data_in_file() function
- uses the MP3 buffer when copying the data. We assume
- that the ID3 tag isn't longer than 1MB so the xing
- buffer won't be overwritten. */
-
- if(entry.first_frame_offset) {
- DEBUGF("Inserting %d bytes\n", framelen);
- numbytes = framelen;
- } else {
- DEBUGF("Inserting 4096+%d bytes\n", framelen);
- numbytes = 4096 + framelen;
-
- memset(mp3buf + 0x100000, 0, numbytes);
-
- /* Insert the ID3 header */
- memcpy(mp3buf + 0x100000, empty_id3_header,
- sizeof(empty_id3_header));
- }
-
- /* Copy the Xing header */
- memcpy(mp3buf + 0x100000 + numbytes - framelen, xingbuf, framelen);
-
- rc = insert_data_in_file(selected_file,
- entry.first_frame_offset,
- mp3buf + 0x100000, numbytes);
-
- if(rc < 0) {
- fileerror(rc);
- return true;
- }
- }
-
- xingupdate(100);
- }
- else
- {
- /* Not a VBR file */
- DEBUGF("Not a VBR file\n");
- splash(HZ*2, true, str(LANG_VBRFIX_NOT_VBR));
- }
-
- return false;
-}
-
bool create_dir(void)
{
char dirname[MAX_PATH];
@@ -696,14 +451,6 @@ int onplay(char* file, int attr)
items[i].function = delete_dir;
i++;
}
-
- if ((attr & TREE_ATTR_MASK) == TREE_ATTR_MPA)
- {
- items[i].desc = str(LANG_VBRFIX);
- items[i].voice_id = LANG_VBRFIX;
- items[i].function = vbr_fix;
- i++;
- }
}
items[i].desc = str(LANG_CREATE_DIR);