# HG changeset patch # User kostya # Date 1174456589 0 # Node ID 86a2dfcc5eef636eff6d69b35843ff1042eb4ab9 # Parent 3318e3f6470fd1a6f1e55ed8eddb46251dceccec Smacker Audio stereo fix diff -r 3318e3f6470f -r 86a2dfcc5eef smacker.c --- a/smacker.c Tue Mar 20 18:08:51 2007 +0000 +++ b/smacker.c Wed Mar 21 05:56:29 2007 +0000 @@ -620,14 +620,10 @@ } } if(bits) { //decode 16-bit data - pred[0] = get_bits(&gb, 8); - pred[0] |= get_bits(&gb, 8); - *samples++ = pred[0]; - if(stereo) { - pred[1] = get_bits(&gb, 8); - pred[1] |= get_bits(&gb, 8); - *samples++ = pred[1]; - } + for(i = stereo; i >= 0; i--) + pred[i] = bswap_16(get_bits(&gb, 16)); + for(i = 0; i < stereo; i++) + *samples++ = pred[i]; for(i = 0; i < unp_size / 2; i++) { if(i & stereo) { if(vlc[2].table) @@ -658,12 +654,10 @@ } } } else { //8-bit data - pred[0] = get_bits(&gb, 8); - *samples++ = (pred[0] - 0x80) << 8; - if(stereo) { - pred[1] = get_bits(&gb, 8); - *samples++ = (pred[1] - 0x80) << 8; - } + for(i = stereo; i >= 0; i--) + pred[i] = get_bits(&gb, 8); + for(i = 0; i < stereo; i++) + *samples++ = (pred[i] - 0x80) << 8; for(i = 0; i < unp_size; i++) { if(i & stereo){ if(vlc[1].table)