Fix wavpack endian issues, tested to work for 16bit. (after blowing my ears off with white noise)
git-svn-id: https://svn.musicpd.org/mpd/trunk@6952 09075e82-0dd4-0310-85a5-a0d7c8717e4f
This commit is contained in:
parent
cb9d1b3d27
commit
ec49c1d3d9
@ -79,24 +79,41 @@ static void format_samples_int(int Bps, void *buffer, uint32_t samcnt)
|
||||
break;
|
||||
case 2:
|
||||
while (samcnt--) {
|
||||
*dst++ = (uchar)(temp = *src++);
|
||||
temp = *src++;
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
*dst++ = (uchar)(temp >> 8);
|
||||
*dst++ = (uchar)(temp);
|
||||
#else
|
||||
*dst++ = (uchar)(temp);
|
||||
*dst++ = (uchar)(temp >> 8);
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
case 3:
|
||||
/* downscale to 16 bits */
|
||||
while (samcnt--) {
|
||||
temp = *src++;
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
*dst++ = (uchar)(temp >> 16);
|
||||
*dst++ = (uchar)(temp >> 8);
|
||||
#else
|
||||
*dst++ = (uchar)(temp >> 8);
|
||||
*dst++ = (uchar)(temp >> 16);
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
case 4:
|
||||
/* downscale to 16 bits */
|
||||
while (samcnt--) {
|
||||
temp = *src++;
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
*dst++ = (uchar)(temp >> 24);
|
||||
*dst++ = (uchar)(temp >> 16);
|
||||
|
||||
#else
|
||||
*dst++ = (uchar)(temp >> 16);
|
||||
*dst++ = (uchar)(temp >> 24);
|
||||
#endif
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user