diff --git a/libavformat/utils.c b/libavformat/utils.c
index 9f573d61c5f2d666ba055e6547f4b3e0a712c734..4c38aaf3eda199a5359e9f39237a9a7a1344f701 100644
--- a/libavformat/utils.c
+++ b/libavformat/utils.c
@@ -588,11 +588,13 @@ int av_read_packet(AVFormatContext *s, AVPacket *pkt)
             pd->buf_size += pkt->size;
             memset(pd->buf+pd->buf_size, 0, AVPROBE_PADDING_SIZE);
 
+            if(av_log2(pd->buf_size) != av_log2(pd->buf_size - pkt->size)){
             set_codec_from_probe_data(st, pd, 1);
             if(st->codec->codec_id != CODEC_ID_PROBE){
                 pd->buf_size=0;
                 av_freep(&pd->buf);
             }
+            }
         }
     }
 }