mirror of https://git.ffmpeg.org/ffmpeg.git
seems i forgot to commit this simplification ...
Originally committed as revision 5662 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
ac3e183403
commit
c448303df6
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue