提交 fda36b59 编写于 作者: A Alex Converse

aacdec: Handle the first frame being empty case.

Originally committed as revision 23673 to svn://svn.ffmpeg.org/ffmpeg/trunk
上级 91a4abd8
...@@ -1985,7 +1985,7 @@ static int aac_decode_frame(AVCodecContext *avctx, void *data, ...@@ -1985,7 +1985,7 @@ static int aac_decode_frame(AVCodecContext *avctx, void *data,
enum RawDataBlockType elem_type, elem_type_prev = TYPE_END; enum RawDataBlockType elem_type, elem_type_prev = TYPE_END;
int err, elem_id, data_size_tmp; int err, elem_id, data_size_tmp;
int buf_consumed; int buf_consumed;
int samples = 1024, multiplier; int samples = 0, multiplier;
int buf_offset; int buf_offset;
init_get_bits(&gb, buf, buf_size * 8); init_get_bits(&gb, buf, buf_size * 8);
...@@ -2011,6 +2011,9 @@ static int aac_decode_frame(AVCodecContext *avctx, void *data, ...@@ -2011,6 +2011,9 @@ static int aac_decode_frame(AVCodecContext *avctx, void *data,
return -1; return -1;
} }
if (elem_type < TYPE_DSE)
samples = 1024;
switch (elem_type) { switch (elem_type) {
case TYPE_SCE: case TYPE_SCE:
...@@ -2093,6 +2096,7 @@ static int aac_decode_frame(AVCodecContext *avctx, void *data, ...@@ -2093,6 +2096,7 @@ static int aac_decode_frame(AVCodecContext *avctx, void *data,
} }
*data_size = data_size_tmp; *data_size = data_size_tmp;
if (samples)
ac->dsp.float_to_int16_interleave(data, (const float **)ac->output_data, samples, avctx->channels); ac->dsp.float_to_int16_interleave(data, (const float **)ac->output_data, samples, avctx->channels);
if (ac->output_configured) if (ac->output_configured)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册