summaryrefslogtreecommitdiff
path: root/apps/metadata.c
diff options
context:
space:
mode:
authorThom Johansen <thomj@rockbox.org>2006-09-01 12:05:04 +0000
committerThom Johansen <thomj@rockbox.org>2006-09-01 12:05:04 +0000
commit5e182e08620fd5aa7743bf83d759f6847cd76b45 (patch)
treec5532971b5ac6369d57a3371763ae1b0cbc41b79 /apps/metadata.c
parent47e4f6ce4878314d386512d611c428be7ea26787 (diff)
downloadrockbox-5e182e08620fd5aa7743bf83d759f6847cd76b45.tar.gz
rockbox-5e182e08620fd5aa7743bf83d759f6847cd76b45.zip
Support for Musepack SV4-6 stream files. Patch by Andrew Cupper.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@10843 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/metadata.c')
-rw-r--r--apps/metadata.c21
1 files changed, 18 insertions, 3 deletions
diff --git a/apps/metadata.c b/apps/metadata.c
index 1563466eda..8838a83aa4 100644
--- a/apps/metadata.c
+++ b/apps/metadata.c
@@ -1260,9 +1260,24 @@ static bool get_musepack_metadata(int fd, struct mp3entry *id3)
1260 "%d.%d dB", album_gain/100, abs(album_gain)%100); 1260 "%d.%d dB", album_gain/100, abs(album_gain)%100);
1261 } 1261 }
1262 } else { 1262 } else {
1263 /* There's no certain way to detect these pre-sv7 streams, apparently */ 1263 header[0] = letoh32(header[0]);
1264 /* TODO: add sv6 parsing here */ 1264 unsigned int streamversion = (header[0] >> 11) & 0x03FF;
1265 return false; 1265 if (streamversion != 4 && streamversion != 5 && streamversion != 6)
1266 return false;
1267 id3->frequency = 44100;
1268 id3->track_gain = 0;
1269 id3->track_peak = 0;
1270 id3->album_gain = 0;
1271 id3->album_peak = 0;
1272
1273 if (streamversion >= 5)
1274 samples = (uint64_t)header[1]*1152; // 32 bit
1275 else
1276 samples = (uint64_t)(header[1] >> 16)*1152; // 16 bit
1277
1278 samples -= 576;
1279 if (streamversion < 6)
1280 samples -= 1152;
1266 } 1281 }
1267 1282
1268 id3->vbr = true; 1283 id3->vbr = true;