comparison flac.c @ 3434:d42ab8824434 libavcodec

seems i forgot to commit this simplification ...
author michael
date Fri, 07 Jul 2006 22:41:43 +0000
parents 42b85e03b408
children 3ccec186532f
comparison
equal deleted inserted replaced
3433:e1906b2f1daf 3434:d42ab8824434
695 } 695 }
696 *data_size += s->blocksize; 696 *data_size += s->blocksize;
697 } 697 }
698 } 698 }
699 #else 699 #else
700 #define DECORRELATE(left, right)\
701 assert(s->channels == 2);\
702 for (i = 0; i < s->blocksize; i++)\
703 {\
704 int a= s->decoded[0][i];\
705 int b= s->decoded[1][i];\
706 *(samples++) = (left ) >> (16 - s->bps);\
707 *(samples++) = (right) >> (16 - s->bps);\
708 }\
709 break;
710
700 switch(s->decorrelation) 711 switch(s->decorrelation)
701 { 712 {
702 case INDEPENDENT: 713 case INDEPENDENT:
703 for (j = 0; j < s->blocksize; j++) 714 for (j = 0; j < s->blocksize; j++)
704 { 715 {
705 for (i = 0; i < s->channels; i++) 716 for (i = 0; i < s->channels; i++)
706 *(samples++) = shift_to_16_bits(s->decoded[i][j], s->bps); 717 *(samples++) = shift_to_16_bits(s->decoded[i][j], s->bps);
707 } 718 }
708 break; 719 break;
709 case LEFT_SIDE: 720 case LEFT_SIDE:
710 assert(s->channels == 2); 721 DECORRELATE(a,a-b)
711 for (i = 0; i < s->blocksize; i++)
712 {
713 *(samples++) = shift_to_16_bits(s->decoded[0][i], s->bps);
714 *(samples++) = shift_to_16_bits(s->decoded[0][i]
715 - s->decoded[1][i], s->bps);
716 }
717 break;
718 case RIGHT_SIDE: 722 case RIGHT_SIDE:
719 assert(s->channels == 2); 723 DECORRELATE(a+b,b)
720 for (i = 0; i < s->blocksize; i++)
721 {
722 *(samples++) = shift_to_16_bits(s->decoded[0][i]
723 + s->decoded[1][i], s->bps);
724 *(samples++) = shift_to_16_bits(s->decoded[1][i], s->bps);
725 }
726 break;
727 case MID_SIDE: 724 case MID_SIDE:
728 assert(s->channels == 2); 725 DECORRELATE( (a-=b>>1) + b, a)
729 for (i = 0; i < s->blocksize; i++)
730 {
731 int mid, side;
732 mid = s->decoded[0][i];
733 side = s->decoded[1][i];
734
735 #if 1 //needs to be checked but IMHO it should be binary identical
736 mid -= side>>1;
737 *(samples++) = shift_to_16_bits(mid + side, s->bps);
738 *(samples++) = shift_to_16_bits(mid, s->bps);
739 #else
740
741 mid <<= 1;
742 if (side & 1)
743 mid++;
744 *(samples++) = (mid + side) >> 1;
745 *(samples++) = (mid - side) >> 1;
746 #endif
747 }
748 break;
749 } 726 }
750 #endif 727 #endif
751 728
752 *data_size = (int8_t *)samples - (int8_t *)data; 729 *data_size = (int8_t *)samples - (int8_t *)data;
753 // av_log(s->avctx, AV_LOG_DEBUG, "data size: %d\n", *data_size); 730 // av_log(s->avctx, AV_LOG_DEBUG, "data size: %d\n", *data_size);