diff --git a/libavcodec/aacdec.c b/libavcodec/aacdec.c
index 117cd587ee7b90643db792929ebba8288c3e9379..216692829456287763bc4895e877abae3698c28b 100644
--- a/libavcodec/aacdec.c
+++ b/libavcodec/aacdec.c
@@ -2081,7 +2081,7 @@ static int parse_adts_frame_header(AACContext *ac, GetBitContext *gb)
 
     size = avpriv_aac_parse_header(gb, &hdr_info);
     if (size > 0) {
-        if (hdr_info.chan_config) {
+        if (hdr_info.chan_config && (hdr_info.chan_config!=ac->m4ac.chan_config || ac->m4ac.sample_rate!=hdr_info.sample_rate)) {
             enum ChannelPosition new_che_pos[4][MAX_ELEM_ID];
             memset(new_che_pos, 0, 4 * MAX_ELEM_ID * sizeof(new_che_pos[0][0]));
             ac->m4ac.chan_config = hdr_info.chan_config;