AAC: Don't write an illegal sampling_index in a PCE to the MPEG4AudioConfig
authorAlex Converse <alex.converse@gmail.com>
Sun, 21 Dec 2008 05:08:32 +0000 (05:08 +0000)
committerRobert Swain <robert.swain@gmail.com>
Sun, 21 Dec 2008 05:08:32 +0000 (05:08 +0000)
member

Patch by Alex Converse (alex converse gmail com)

Originally committed as revision 16249 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/aac.c

index 8fbf964..62d4ba5 100644 (file)
@@ -167,15 +167,16 @@ static void decode_channel_map(enum ChannelPosition *cpe_map,
  */
 static int decode_pce(AACContext * ac, enum ChannelPosition new_che_pos[4][MAX_ELEM_ID],
         GetBitContext * gb) {
-    int num_front, num_side, num_back, num_lfe, num_assoc_data, num_cc;
+    int num_front, num_side, num_back, num_lfe, num_assoc_data, num_cc, sampling_index;
 
     skip_bits(gb, 2);  // object_type
 
-    ac->m4ac.sampling_index = get_bits(gb, 4);
-    if(ac->m4ac.sampling_index > 11) {
+    sampling_index = get_bits(gb, 4);
+    if(sampling_index > 11) {
         av_log(ac->avccontext, AV_LOG_ERROR, "invalid sampling rate index %d\n", ac->m4ac.sampling_index);
         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_side        = get_bits(gb, 4);