seems i forgot to commit this simplification ...

Originally committed as revision 5662 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
Michael Niedermayer 2006-07-07 22:41:43 +00:00
parent ac3e183403
commit c448303df6
1 changed files with 14 additions and 37 deletions

View File

@ -697,6 +697,17 @@ static int flac_decode_frame(AVCodecContext *avctx,
} }
} }
#else #else
#define DECORRELATE(left, right)\
assert(s->channels == 2);\
for (i = 0; i < s->blocksize; i++)\
{\
int a= s->decoded[0][i];\
int b= s->decoded[1][i];\
*(samples++) = (left ) >> (16 - s->bps);\
*(samples++) = (right) >> (16 - s->bps);\
}\
break;
switch(s->decorrelation) switch(s->decorrelation)
{ {
case INDEPENDENT: case INDEPENDENT:
@ -707,45 +718,11 @@ static int flac_decode_frame(AVCodecContext *avctx,
} }
break; break;
case LEFT_SIDE: case LEFT_SIDE:
assert(s->channels == 2); DECORRELATE(a,a-b)
for (i = 0; i < s->blocksize; i++)
{
*(samples++) = shift_to_16_bits(s->decoded[0][i], s->bps);
*(samples++) = shift_to_16_bits(s->decoded[0][i]
- s->decoded[1][i], s->bps);
}
break;
case RIGHT_SIDE: case RIGHT_SIDE:
assert(s->channels == 2); DECORRELATE(a+b,b)
for (i = 0; i < s->blocksize; i++)
{
*(samples++) = shift_to_16_bits(s->decoded[0][i]
+ s->decoded[1][i], s->bps);
*(samples++) = shift_to_16_bits(s->decoded[1][i], s->bps);
}
break;
case MID_SIDE: case MID_SIDE:
assert(s->channels == 2); DECORRELATE( (a-=b>>1) + b, a)
for (i = 0; i < s->blocksize; i++)
{
int mid, side;
mid = s->decoded[0][i];
side = s->decoded[1][i];
#if 1 //needs to be checked but IMHO it should be binary identical
mid -= side>>1;
*(samples++) = shift_to_16_bits(mid + side, s->bps);
*(samples++) = shift_to_16_bits(mid, s->bps);
#else
mid <<= 1;
if (side & 1)
mid++;
*(samples++) = (mid + side) >> 1;
*(samples++) = (mid - side) >> 1;
#endif
}
break;
} }
#endif #endif