summaryrefslogtreecommitdiff
path: root/firmware
diff options
context:
space:
mode:
authorMiika Pekkarinen <miipekk@ihme.org>2005-07-05 19:55:40 +0000
committerMiika Pekkarinen <miipekk@ihme.org>2005-07-05 19:55:40 +0000
commit5c2c991d148de6aafae4836f4e40edb453734d94 (patch)
tree8bc792d3422894aad42643ddf13a025dc2084104 /firmware
parent1e5119b77bda5f67ad032a9587ead2d311b0767a (diff)
downloadrockbox-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.h5
-rw-r--r--firmware/id3.c5
-rw-r--r--firmware/mp3data.c2
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