提交 3cce801a 编写于 作者: M Michael Donaghy 提交者: Guillaume Poirier

fix 8- and 24-bit FLAC decoding

Patch by Michael Donaghy %md401 A cam P ac P uk%
Original thread:
date: Jun 10, 2007 4:48 PM
subject: [FFmpeg-devel] [PATCH] Bugfix: decoding 8- and 24-bit FLAC files

Originally committed as revision 9286 to svn://svn.ffmpeg.org/ffmpeg/trunk
上级 ea23327b
......@@ -568,17 +568,6 @@ static int decode_frame(FLACContext *s, int alloc_data_size)
return 0;
}
static inline int16_t shift_to_16_bits(int32_t data, int bps)
{
if (bps == 24) {
return (data >> 8);
} else if (bps == 20) {
return (data >> 4);
} else {
return data;
}
}
static int flac_decode_frame(AVCodecContext *avctx,
void *data, int *data_size,
uint8_t *buf, int buf_size)
......@@ -684,8 +673,8 @@ static int flac_decode_frame(AVCodecContext *avctx,
{\
int a= s->decoded[0][i];\
int b= s->decoded[1][i];\
*(samples++) = (left ) >> (16 - s->bps);\
*(samples++) = (right) >> (16 - s->bps);\
*(samples++) = (left << (24 - s->bps)) >> 8;\
*(samples++) = (right << (24 - s->bps)) >> 8;\
}\
break;
......@@ -695,7 +684,7 @@ static int flac_decode_frame(AVCodecContext *avctx,
for (j = 0; j < s->blocksize; j++)
{
for (i = 0; i < s->channels; i++)
*(samples++) = shift_to_16_bits(s->decoded[i][j], s->bps);
*(samples++) = (s->decoded[i][j] << (24 - s->bps)) >> 8;
}
break;
case LEFT_SIDE:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册