In the event of a mismatch, do not follow the sample rate index in an AAC PCE.

This matches the behavior the reference decoder and fixes issue 1072.

Originally committed as revision 18957 to svn://svn.ffmpeg.org/ffmpeg/trunk
release/0.6
Alex Converse 16 years ago
parent e9859317eb
commit 401a995085
  1. 9
      libavcodec/aac.c

@ -231,12 +231,9 @@ static int decode_pce(AACContext * ac, enum ChannelPosition new_che_pos[4][MAX_E
skip_bits(gb, 2); // object_type skip_bits(gb, 2); // object_type
sampling_index = get_bits(gb, 4); sampling_index = get_bits(gb, 4);
if(sampling_index > 12) { if (ac->m4ac.sampling_index != sampling_index)
av_log(ac->avccontext, AV_LOG_ERROR, "invalid sampling rate index %d\n", ac->m4ac.sampling_index); av_log(ac->avccontext, AV_LOG_WARNING, "Sample rate index in program config element does not match the sample rate index configured by the container.\n");
return -1;
}
ac->m4ac.sampling_index = sampling_index;
ac->m4ac.sample_rate = ff_mpeg4audio_sample_rates[ac->m4ac.sampling_index];
num_front = get_bits(gb, 4); num_front = get_bits(gb, 4);
num_side = get_bits(gb, 4); num_side = get_bits(gb, 4);
num_back = get_bits(gb, 4); num_back = get_bits(gb, 4);

Loading…
Cancel
Save