diff --git a/libavcodec/utils.c b/libavcodec/utils.c
index 5bd0012a4772923c10d0be261b065b61d86ba75f..0a0971fc3e9b3b8179ae139197ae8a68d7981489 100644
--- a/libavcodec/utils.c
+++ b/libavcodec/utils.c
@@ -642,9 +642,12 @@ int avcodec_decode_audio(AVCodecContext *avctx, int16_t *samples,
     int ret;
 
     *frame_size_ptr= 0;
-    ret = avctx->codec->decode(avctx, samples, frame_size_ptr, 
-                               buf, buf_size);
-    avctx->frame_number++;
+    if((avctx->codec->capabilities & CODEC_CAP_DELAY) || buf_size){
+        ret = avctx->codec->decode(avctx, samples, frame_size_ptr, 
+                                buf, buf_size);
+        avctx->frame_number++;
+    }else
+        ret= 0;
     return ret;
 }