Mercurial > libavcodec.hg
comparison aacdec.c @ 11902:c883aa4aa616 libavcodec
aacdec: Handle the first frame being empty case.
author | alexc |
---|---|
date | Mon, 21 Jun 2010 04:05:09 +0000 |
parents | 2d81202be6e2 |
children | f3e007b379e5 |
comparison
equal
deleted
inserted
replaced
11901:829dadee50c8 | 11902:c883aa4aa616 |
---|---|
1983 ChannelElement *che = NULL, *che_prev = NULL; | 1983 ChannelElement *che = NULL, *che_prev = NULL; |
1984 GetBitContext gb; | 1984 GetBitContext gb; |
1985 enum RawDataBlockType elem_type, elem_type_prev = TYPE_END; | 1985 enum RawDataBlockType elem_type, elem_type_prev = TYPE_END; |
1986 int err, elem_id, data_size_tmp; | 1986 int err, elem_id, data_size_tmp; |
1987 int buf_consumed; | 1987 int buf_consumed; |
1988 int samples = 1024, multiplier; | 1988 int samples = 0, multiplier; |
1989 int buf_offset; | 1989 int buf_offset; |
1990 | 1990 |
1991 init_get_bits(&gb, buf, buf_size * 8); | 1991 init_get_bits(&gb, buf, buf_size * 8); |
1992 | 1992 |
1993 if (show_bits(&gb, 12) == 0xfff) { | 1993 if (show_bits(&gb, 12) == 0xfff) { |
2008 | 2008 |
2009 if (elem_type < TYPE_DSE && !(che=get_che(ac, elem_type, elem_id))) { | 2009 if (elem_type < TYPE_DSE && !(che=get_che(ac, elem_type, elem_id))) { |
2010 av_log(ac->avctx, AV_LOG_ERROR, "channel element %d.%d is not allocated\n", elem_type, elem_id); | 2010 av_log(ac->avctx, AV_LOG_ERROR, "channel element %d.%d is not allocated\n", elem_type, elem_id); |
2011 return -1; | 2011 return -1; |
2012 } | 2012 } |
2013 | |
2014 if (elem_type < TYPE_DSE) | |
2015 samples = 1024; | |
2013 | 2016 |
2014 switch (elem_type) { | 2017 switch (elem_type) { |
2015 | 2018 |
2016 case TYPE_SCE: | 2019 case TYPE_SCE: |
2017 err = decode_ics(ac, &che->ch[0], &gb, 0, 0); | 2020 err = decode_ics(ac, &che->ch[0], &gb, 0, 0); |
2091 *data_size, data_size_tmp); | 2094 *data_size, data_size_tmp); |
2092 return -1; | 2095 return -1; |
2093 } | 2096 } |
2094 *data_size = data_size_tmp; | 2097 *data_size = data_size_tmp; |
2095 | 2098 |
2099 if (samples) | |
2096 ac->dsp.float_to_int16_interleave(data, (const float **)ac->output_data, samples, avctx->channels); | 2100 ac->dsp.float_to_int16_interleave(data, (const float **)ac->output_data, samples, avctx->channels); |
2097 | 2101 |
2098 if (ac->output_configured) | 2102 if (ac->output_configured) |
2099 ac->output_configured = OC_LOCKED; | 2103 ac->output_configured = OC_LOCKED; |
2100 | 2104 |