Mercurial > libavcodec.hg
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 |