|
|
@ -2114,7 +2114,7 @@ static int aac_decode_frame_int(AVCodecContext *avctx, void *data, |
|
|
|
ChannelElement *che = NULL, *che_prev = NULL; |
|
|
|
ChannelElement *che = NULL, *che_prev = NULL; |
|
|
|
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 samples = 0, multiplier; |
|
|
|
int samples = 0, multiplier, audio_found = 0; |
|
|
|
|
|
|
|
|
|
|
|
if (show_bits(gb, 12) == 0xfff) { |
|
|
|
if (show_bits(gb, 12) == 0xfff) { |
|
|
|
if (parse_adts_frame_header(ac, gb) < 0) { |
|
|
|
if (parse_adts_frame_header(ac, gb) < 0) { |
|
|
@ -2145,10 +2145,12 @@ static int aac_decode_frame_int(AVCodecContext *avctx, void *data, |
|
|
|
|
|
|
|
|
|
|
|
case TYPE_SCE: |
|
|
|
case TYPE_SCE: |
|
|
|
err = decode_ics(ac, &che->ch[0], gb, 0, 0); |
|
|
|
err = decode_ics(ac, &che->ch[0], gb, 0, 0); |
|
|
|
|
|
|
|
audio_found = 1; |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case TYPE_CPE: |
|
|
|
case TYPE_CPE: |
|
|
|
err = decode_cpe(ac, gb, che); |
|
|
|
err = decode_cpe(ac, gb, che); |
|
|
|
|
|
|
|
audio_found = 1; |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case TYPE_CCE: |
|
|
|
case TYPE_CCE: |
|
|
@ -2157,6 +2159,7 @@ static int aac_decode_frame_int(AVCodecContext *avctx, void *data, |
|
|
|
|
|
|
|
|
|
|
|
case TYPE_LFE: |
|
|
|
case TYPE_LFE: |
|
|
|
err = decode_ics(ac, &che->ch[0], gb, 0, 0); |
|
|
|
err = decode_ics(ac, &che->ch[0], gb, 0, 0); |
|
|
|
|
|
|
|
audio_found = 1; |
|
|
|
break; |
|
|
|
break; |
|
|
|
|
|
|
|
|
|
|
|
case TYPE_DSE: |
|
|
|
case TYPE_DSE: |
|
|
@ -2233,7 +2236,7 @@ static int aac_decode_frame_int(AVCodecContext *avctx, void *data, |
|
|
|
samples, avctx->channels); |
|
|
|
samples, avctx->channels); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
if (ac->output_configured) |
|
|
|
if (ac->output_configured && audio_found) |
|
|
|
ac->output_configured = OC_LOCKED; |
|
|
|
ac->output_configured = OC_LOCKED; |
|
|
|
|
|
|
|
|
|
|
|
return 0; |
|
|
|
return 0; |
|
|
|