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.zip rockbox-5c2c991d148de6aafae4836f4e40edb453734d94.tar.gz rockbox-5c2c991d148de6aafae4836f4e40edb453734d94.tar.bz2 rockbox-5c2c991d148de6aafae4836f4e40edb453734d94.tar.xz | |
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 8f904e4..7970f52 100644 --- a/firmware/export/id3.h +++ b/firmware/export/id3.h @@ -19,6 +19,7 @@ #ifndef ID3_H #define ID3_H +#include <stdbool.h> #include "config.h" #include "file.h" @@ -78,12 +79,16 @@ struct mp3entry { unsigned int length; /* song length */ unsigned int elapsed; /* ms played */ + int lead_trim; /* Number of samples to skip at the beginning */ + int tail_trim; /* Number of samples to remove from the end */ + /* Added for Vorbis */ unsigned long samples; /* number of samples in track */ /* MP3 stream specific info */ long bpf; /* bytes per frame */ long tpf; /* time per frame */ + long frame_count; /* number of frames in the file (if VBR) */ /* Xing VBR fields */ bool vbr; diff --git a/firmware/id3.c b/firmware/id3.c index 6a13de4..4fe9fa0 100644 --- a/firmware/id3.c +++ b/firmware/id3.c @@ -832,9 +832,14 @@ static int getsonglength(int fd, struct mp3entry *entry) entry->tpf = info.frame_time; entry->bpf = info.frame_size; + entry->frame_count = info.frame_count; entry->vbr = info.is_vbr; entry->has_toc = info.has_toc; + + entry->lead_trim = info.enc_delay; + entry->tail_trim = info.enc_padding; + memcpy(entry->toc, info.toc, sizeof(info.toc)); entry->vbr_header_pos = info.vbr_header_pos; diff --git a/firmware/mp3data.c b/firmware/mp3data.c index e899125..087bcf5 100644 --- a/firmware/mp3data.c +++ b/firmware/mp3data.c @@ -266,7 +266,7 @@ static int fileread(int fd, unsigned char *c) #if defined(IRIVER_H100) && !defined(SIMULATOR) /* We don't want to eat all cpu power. Maybe better way to do this should be implemented. */ - while (pcm_is_lowdata()) + if (pcm_is_lowdata()) yield(); #endif |