dont check buffer size if the decode function wont be called at all
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 23 Feb 2007 00:47:21 +0000 (00:47 +0000)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 23 Feb 2007 00:47:21 +0000 (00:47 +0000)
Originally committed as revision 8090 to svn://svn.ffmpeg.org/ffmpeg/trunk

libavcodec/utils.c

index 8855934..1e5db81 100644 (file)
@@ -894,18 +894,19 @@ int avcodec_decode_audio2(AVCodecContext *avctx, int16_t *samples,
 {
     int ret;
 
-    //FIXME remove the check below _after_ ensuring that all audio check that the available space is enough
-    if(*frame_size_ptr < AVCODEC_MAX_AUDIO_FRAME_SIZE){
-        av_log(avctx, AV_LOG_ERROR, "buffer smaller than AVCODEC_MAX_AUDIO_FRAME_SIZE\n");
-        return -1;
-    }
-    if(*frame_size_ptr < FF_MIN_BUFFER_SIZE ||
-       *frame_size_ptr < avctx->channels * avctx->frame_size * sizeof(int16_t) ||
-       *frame_size_ptr < buf_size){
-        av_log(avctx, AV_LOG_ERROR, "buffer %d too small\n", *frame_size_ptr);
-        return -1;
-    }
     if((avctx->codec->capabilities & CODEC_CAP_DELAY) || buf_size){
+        //FIXME remove the check below _after_ ensuring that all audio check that the available space is enough
+        if(*frame_size_ptr < AVCODEC_MAX_AUDIO_FRAME_SIZE){
+            av_log(avctx, AV_LOG_ERROR, "buffer smaller than AVCODEC_MAX_AUDIO_FRAME_SIZE\n");
+            return -1;
+        }
+        if(*frame_size_ptr < FF_MIN_BUFFER_SIZE ||
+        *frame_size_ptr < avctx->channels * avctx->frame_size * sizeof(int16_t) ||
+        *frame_size_ptr < buf_size){
+            av_log(avctx, AV_LOG_ERROR, "buffer %d too small\n", *frame_size_ptr);
+            return -1;
+        }
+
         ret = avctx->codec->decode(avctx, samples, frame_size_ptr,
                                 buf, buf_size);
         avctx->frame_number++;