forked from len0rd/rockbox
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
This commit is contained in:
parent
47e4f6ce48
commit
5e182e0862
2 changed files with 25 additions and 3 deletions
|
@ -234,8 +234,15 @@ mpc_streaminfo_read(mpc_streaminfo * si, mpc_reader * r)
|
|||
}
|
||||
} else {
|
||||
#ifdef MPC_SUPPORT_SV456
|
||||
#ifndef MPC_LITTLE_ENDIAN
|
||||
mpc_uint32_t ptr;
|
||||
for (ptr = 0; ptr < 8; ptr++) {
|
||||
HeaderData[ptr] = mpc_swap32(HeaderData[ptr]);
|
||||
}
|
||||
#endif
|
||||
// stream version 4-6
|
||||
Error = streaminfo_read_header_sv6(si, HeaderData);
|
||||
if (Error != ERROR_CODE_OK) return Error;
|
||||
#else
|
||||
return ERROR_CODE_INVALIDSV;
|
||||
#endif
|
||||
|
|
|
@ -1260,9 +1260,24 @@ static bool get_musepack_metadata(int fd, struct mp3entry *id3)
|
|||
"%d.%d dB", album_gain/100, abs(album_gain)%100);
|
||||
}
|
||||
} else {
|
||||
/* There's no certain way to detect these pre-sv7 streams, apparently */
|
||||
/* TODO: add sv6 parsing here */
|
||||
return false;
|
||||
header[0] = letoh32(header[0]);
|
||||
unsigned int streamversion = (header[0] >> 11) & 0x03FF;
|
||||
if (streamversion != 4 && streamversion != 5 && streamversion != 6)
|
||||
return false;
|
||||
id3->frequency = 44100;
|
||||
id3->track_gain = 0;
|
||||
id3->track_peak = 0;
|
||||
id3->album_gain = 0;
|
||||
id3->album_peak = 0;
|
||||
|
||||
if (streamversion >= 5)
|
||||
samples = (uint64_t)header[1]*1152; // 32 bit
|
||||
else
|
||||
samples = (uint64_t)(header[1] >> 16)*1152; // 16 bit
|
||||
|
||||
samples -= 576;
|
||||
if (streamversion < 6)
|
||||
samples -= 1152;
|
||||
}
|
||||
|
||||
id3->vbr = true;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue