diff options
author | Dave Bryant <bryant@rockbox.org> | 2005-06-27 00:12:40 +0000 |
---|---|---|
committer | Dave Bryant <bryant@rockbox.org> | 2005-06-27 00:12:40 +0000 |
commit | 24d6535b7ae5cad7b5b460a5fe3ee9da70ad54dc (patch) | |
tree | 9dd4469d5ece097161c60ab8a6a3383255ee099c /apps/metadata.c | |
parent | 1505b4ce44f3ea066a2bcd191305fb4858b2bec6 (diff) | |
download | rockbox-24d6535b7ae5cad7b5b460a5fe3ee9da70ad54dc.tar.gz rockbox-24d6535b7ae5cad7b5b460a5fe3ee9da70ad54dc.zip |
Allow WavPack to use new sampling rate converter
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@6888 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/metadata.c')
-rw-r--r-- | apps/metadata.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/apps/metadata.c b/apps/metadata.c index 540e62c4aa..f59917ceb8 100644 --- a/apps/metadata.c +++ b/apps/metadata.c | |||
@@ -83,6 +83,9 @@ unsigned short a52_441framesizes[]= | |||
83 | 557*2,558*2,696*2,697*2,835*2,836*2,975*2,976*2, | 83 | 557*2,558*2,696*2,697*2,835*2,836*2,975*2,976*2, |
84 | 1114*2,1115*2,1253*2,1254*2,1393*2,1394*2}; | 84 | 1114*2,1115*2,1253*2,1254*2,1393*2,1394*2}; |
85 | 85 | ||
86 | const long wavpack_sample_rates [] = { 6000, 8000, 9600, 11025, 12000, 16000, | ||
87 | 22050, 24000, 32000, 44100, 48000, 64000, 88200, 96000, 192000 }; | ||
88 | |||
86 | /* Get metadata for track - return false if parsing showed problems with the | 89 | /* Get metadata for track - return false if parsing showed problems with the |
87 | file that would prevent playback. */ | 90 | file that would prevent playback. */ |
88 | 91 | ||
@@ -334,12 +337,18 @@ bool get_metadata(struct track_info* track, int fd, const char* trackname, | |||
334 | 337 | ||
335 | track->id3.vbr = true; /* All WavPack files are VBR */ | 338 | track->id3.vbr = true; /* All WavPack files are VBR */ |
336 | track->id3.filesize = filesize (fd); | 339 | track->id3.filesize = filesize (fd); |
337 | track->id3.frequency = 44100; | ||
338 | 340 | ||
339 | if ((buf [20] | buf [21] | buf [22] | buf [23]) && | 341 | if ((buf [20] | buf [21] | buf [22] | buf [23]) && |
340 | (buf [12] & buf [13] & buf [14] & buf [15]) != 0xff) { | 342 | (buf [12] & buf [13] & buf [14] & buf [15]) != 0xff) { |
343 | int srindx = ((buf [26] >> 7) & 1) + ((buf [27] << 1) & 14); | ||
344 | |||
345 | if (srindx == 15) | ||
346 | track->id3.frequency = 44100; | ||
347 | else | ||
348 | track->id3.frequency = wavpack_sample_rates [srindx]; | ||
349 | |||
341 | totalsamples = (buf[15] << 24) | (buf[14] << 16) | (buf[13] << 8) | buf[12]; | 350 | totalsamples = (buf[15] << 24) | (buf[14] << 16) | (buf[13] << 8) | buf[12]; |
342 | track->id3.length = (totalsamples + 220) / 441 * 10; | 351 | track->id3.length = totalsamples / (track->id3.frequency / 100) * 10; |
343 | track->id3.bitrate = filesize (fd) / | 352 | track->id3.bitrate = filesize (fd) / |
344 | (track->id3.length / 8); | 353 | (track->id3.length / 8); |
345 | } | 354 | } |