diff options
author | Linus Nielsen Feltzing <linus@haxx.se> | 2002-09-27 08:21:23 +0000 |
---|---|---|
committer | Linus Nielsen Feltzing <linus@haxx.se> | 2002-09-27 08:21:23 +0000 |
commit | acfacd938cfa878aeb69410532b2de58698f703a (patch) | |
tree | 181b2e04607c48ac8c6a377b48156185442351f9 /firmware/id3.c | |
parent | 321faba3eb7a6badf91829c17c3e1cedf0d8d248 (diff) | |
download | rockbox-acfacd938cfa878aeb69410532b2de58698f703a.tar.gz rockbox-acfacd938cfa878aeb69410532b2de58698f703a.zip |
Rudimentary VBRI parsing
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@2435 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/id3.c')
-rw-r--r-- | firmware/id3.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/firmware/id3.c b/firmware/id3.c index d71ba2f4dd..0e7a5f227b 100644 --- a/firmware/id3.c +++ b/firmware/id3.c | |||
@@ -592,6 +592,35 @@ static int getsonglength(int fd, struct mp3entry *entry) | |||
592 | header_found = true; | 592 | header_found = true; |
593 | } | 593 | } |
594 | 594 | ||
595 | if (xing[0] == 'V' && | ||
596 | xing[1] == 'B' && | ||
597 | xing[2] == 'R' && | ||
598 | xing[3] == 'I') | ||
599 | { | ||
600 | int framecount; | ||
601 | int bytecount; | ||
602 | |||
603 | /* Yes, it is a FhG VBR file */ | ||
604 | entry->vbr = true; | ||
605 | entry->vbrflags = 0; | ||
606 | |||
607 | bytecount = (xing[10] << 24) | (xing[11] << 16) | | ||
608 | (xing[12] << 8) | xing[13]; | ||
609 | |||
610 | framecount = (xing[14] << 24) | (xing[15] << 16) | | ||
611 | (xing[16] << 8) | xing[17]; | ||
612 | |||
613 | filetime = framecount * tpf; | ||
614 | bitrate = bytecount * 8 / filetime; | ||
615 | |||
616 | /* We don't parse the TOC, since we don't yet know how to (FIXME) */ | ||
617 | |||
618 | /* Make sure we skip this frame in playback */ | ||
619 | bytecount += bpf; | ||
620 | |||
621 | header_found = true; | ||
622 | } | ||
623 | |||
595 | /* Is it a LAME Info frame? */ | 624 | /* Is it a LAME Info frame? */ |
596 | if (xing[0] == 'I' && | 625 | if (xing[0] == 'I' && |
597 | xing[1] == 'n' && | 626 | xing[1] == 'n' && |