changeset 4578:006563b9ab27 libavcodec

dont check buffer size if the decode function wont be called at all
author michael
date Fri, 23 Feb 2007 00:47:21 +0000
parents 88cf097ebe75
children 03f7feb14dd3
files utils.c
diffstat 1 files changed, 12 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/utils.c	Fri Feb 23 00:20:39 2007 +0000
+++ b/utils.c	Fri Feb 23 00:47:21 2007 +0000
@@ -894,18 +894,19 @@
 {
     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++;