diff --git a/libavcodec/h264.c b/libavcodec/h264.c
index c07ca2469a7e059ce8c7af2145447214d6c4288d..8a383e2dcdd728cd46aeaa51b44e4ec706ad03f9 100644
--- a/libavcodec/h264.c
+++ b/libavcodec/h264.c
@@ -5862,7 +5862,7 @@ static int decode_nal_units(H264Context *h, uint8_t *buf, int buf_size){
         buf_index+=3;
       }  
         
-        ptr= decode_nal(h, buf + buf_index, &dst_length, &consumed, buf_size - buf_index);
+        ptr= decode_nal(h, buf + buf_index, &dst_length, &consumed, h->is_avc ? nalsize : buf_size - buf_index);
         if(ptr[dst_length - 1] == 0) dst_length--;
         bit_length= 8*dst_length - decode_rbsp_trailing(ptr + dst_length - 1);