comparison smacker.c @ 4693:86a2dfcc5eef libavcodec

Smacker Audio stereo fix
author kostya
date Wed, 21 Mar 2007 05:56:29 +0000
parents 05e932ddaaa9
children 66ef3690d108
comparison
equal deleted inserted replaced
4692:3318e3f6470f 4693:86a2dfcc5eef
618 return -1; 618 return -1;
619 } 619 }
620 } 620 }
621 } 621 }
622 if(bits) { //decode 16-bit data 622 if(bits) { //decode 16-bit data
623 pred[0] = get_bits(&gb, 8); 623 for(i = stereo; i >= 0; i--)
624 pred[0] |= get_bits(&gb, 8); 624 pred[i] = bswap_16(get_bits(&gb, 16));
625 *samples++ = pred[0]; 625 for(i = 0; i < stereo; i++)
626 if(stereo) { 626 *samples++ = pred[i];
627 pred[1] = get_bits(&gb, 8);
628 pred[1] |= get_bits(&gb, 8);
629 *samples++ = pred[1];
630 }
631 for(i = 0; i < unp_size / 2; i++) { 627 for(i = 0; i < unp_size / 2; i++) {
632 if(i & stereo) { 628 if(i & stereo) {
633 if(vlc[2].table) 629 if(vlc[2].table)
634 res = get_vlc2(&gb, vlc[2].table, SMKTREE_BITS, 3); 630 res = get_vlc2(&gb, vlc[2].table, SMKTREE_BITS, 3);
635 else 631 else
656 pred[0] += val; 652 pred[0] += val;
657 *samples++ = pred[0]; 653 *samples++ = pred[0];
658 } 654 }
659 } 655 }
660 } else { //8-bit data 656 } else { //8-bit data
661 pred[0] = get_bits(&gb, 8); 657 for(i = stereo; i >= 0; i--)
662 *samples++ = (pred[0] - 0x80) << 8; 658 pred[i] = get_bits(&gb, 8);
663 if(stereo) { 659 for(i = 0; i < stereo; i++)
664 pred[1] = get_bits(&gb, 8); 660 *samples++ = (pred[i] - 0x80) << 8;
665 *samples++ = (pred[1] - 0x80) << 8;
666 }
667 for(i = 0; i < unp_size; i++) { 661 for(i = 0; i < unp_size; i++) {
668 if(i & stereo){ 662 if(i & stereo){
669 if(vlc[1].table) 663 if(vlc[1].table)
670 res = get_vlc2(&gb, vlc[1].table, SMKTREE_BITS, 3); 664 res = get_vlc2(&gb, vlc[1].table, SMKTREE_BITS, 3);
671 else 665 else