diff options
author | Miika Pekkarinen <miipekk@ihme.org> | 2005-07-05 19:55:40 +0000 |
---|---|---|
committer | Miika Pekkarinen <miipekk@ihme.org> | 2005-07-05 19:55:40 +0000 |
commit | 5c2c991d148de6aafae4836f4e40edb453734d94 (patch) | |
tree | 8bc792d3422894aad42643ddf13a025dc2084104 /firmware | |
parent | 1e5119b77bda5f67ad032a9587ead2d311b0767a (diff) | |
download | rockbox-5c2c991d148de6aafae4836f4e40edb453734d94.tar.gz rockbox-5c2c991d148de6aafae4836f4e40edb453734d94.zip |
Applied patch "[ 1232957 ] MP3 metadata fixes for software codec".
Thanks to Magnus Holmgren. Now metadata reading is better with
improved performance for mp3 files.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7030 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware')
-rw-r--r-- | firmware/export/id3.h | 5 | ||||
-rw-r--r-- | firmware/id3.c | 5 | ||||
-rw-r--r-- | firmware/mp3data.c | 2 |
3 files changed, 11 insertions, 1 deletions
diff --git a/firmware/export/id3.h b/firmware/export/id3.h index 8f904e49e6..7970f529f1 100644 --- a/firmware/export/id3.h +++ b/firmware/export/id3.h | |||
@@ -19,6 +19,7 @@ | |||
19 | #ifndef ID3_H | 19 | #ifndef ID3_H |
20 | #define ID3_H | 20 | #define ID3_H |
21 | 21 | ||
22 | #include <stdbool.h> | ||
22 | #include "config.h" | 23 | #include "config.h" |
23 | #include "file.h" | 24 | #include "file.h" |
24 | 25 | ||
@@ -78,12 +79,16 @@ struct mp3entry { | |||
78 | unsigned int length; /* song length */ | 79 | unsigned int length; /* song length */ |
79 | unsigned int elapsed; /* ms played */ | 80 | unsigned int elapsed; /* ms played */ |
80 | 81 | ||
82 | int lead_trim; /* Number of samples to skip at the beginning */ | ||
83 | int tail_trim; /* Number of samples to remove from the end */ | ||
84 | |||
81 | /* Added for Vorbis */ | 85 | /* Added for Vorbis */ |
82 | unsigned long samples; /* number of samples in track */ | 86 | unsigned long samples; /* number of samples in track */ |
83 | 87 | ||
84 | /* MP3 stream specific info */ | 88 | /* MP3 stream specific info */ |
85 | long bpf; /* bytes per frame */ | 89 | long bpf; /* bytes per frame */ |
86 | long tpf; /* time per frame */ | 90 | long tpf; /* time per frame */ |
91 | long frame_count; /* number of frames in the file (if VBR) */ | ||
87 | 92 | ||
88 | /* Xing VBR fields */ | 93 | /* Xing VBR fields */ |
89 | bool vbr; | 94 | bool vbr; |
diff --git a/firmware/id3.c b/firmware/id3.c index 6a13de4e29..4fe9fa0a40 100644 --- a/firmware/id3.c +++ b/firmware/id3.c | |||
@@ -832,9 +832,14 @@ static int getsonglength(int fd, struct mp3entry *entry) | |||
832 | 832 | ||
833 | entry->tpf = info.frame_time; | 833 | entry->tpf = info.frame_time; |
834 | entry->bpf = info.frame_size; | 834 | entry->bpf = info.frame_size; |
835 | entry->frame_count = info.frame_count; | ||
835 | 836 | ||
836 | entry->vbr = info.is_vbr; | 837 | entry->vbr = info.is_vbr; |
837 | entry->has_toc = info.has_toc; | 838 | entry->has_toc = info.has_toc; |
839 | |||
840 | entry->lead_trim = info.enc_delay; | ||
841 | entry->tail_trim = info.enc_padding; | ||
842 | |||
838 | memcpy(entry->toc, info.toc, sizeof(info.toc)); | 843 | memcpy(entry->toc, info.toc, sizeof(info.toc)); |
839 | 844 | ||
840 | entry->vbr_header_pos = info.vbr_header_pos; | 845 | entry->vbr_header_pos = info.vbr_header_pos; |
diff --git a/firmware/mp3data.c b/firmware/mp3data.c index e899125013..087bcf5030 100644 --- a/firmware/mp3data.c +++ b/firmware/mp3data.c | |||
@@ -266,7 +266,7 @@ static int fileread(int fd, unsigned char *c) | |||
266 | #if defined(IRIVER_H100) && !defined(SIMULATOR) | 266 | #if defined(IRIVER_H100) && !defined(SIMULATOR) |
267 | /* We don't want to eat all cpu power. Maybe better way to do this | 267 | /* We don't want to eat all cpu power. Maybe better way to do this |
268 | should be implemented. */ | 268 | should be implemented. */ |
269 | while (pcm_is_lowdata()) | 269 | if (pcm_is_lowdata()) |
270 | yield(); | 270 | yield(); |
271 | #endif | 271 | #endif |
272 | 272 | ||