avutil/frame: continue to process bufs even if some are empty
authorXidorn Quan <quanxunzhen@gmail.com>
Mon, 20 May 2013 15:28:06 +0000 (23:28 +0800)
committerMichael Niedermayer <michaelni@gmx.at>
Mon, 20 May 2013 21:34:15 +0000 (23:34 +0200)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavutil/frame.c

index 11601ad..24ad0dd 100644 (file)
@@ -259,7 +259,9 @@ int av_frame_ref(AVFrame *dst, AVFrame *src)
     }
 
     /* ref the buffers */
-    for (i = 0; i < FF_ARRAY_ELEMS(src->buf) && src->buf[i]; i++) {
+    for (i = 0; i < FF_ARRAY_ELEMS(src->buf); i++) {
+        if (!src->buf[i])
+            continue;
         dst->buf[i] = av_buffer_ref(src->buf[i]);
         if (!dst->buf[i]) {
             ret = AVERROR(ENOMEM);
@@ -366,8 +368,9 @@ int av_frame_is_writable(AVFrame *frame)
     if (!frame->buf[0])
         return 0;
 
-    for (i = 0; i < FF_ARRAY_ELEMS(frame->buf) && frame->buf[i]; i++)
-        ret &= !!av_buffer_is_writable(frame->buf[i]);
+    for (i = 0; i < FF_ARRAY_ELEMS(frame->buf); i++)
+        if (frame->buf[i])
+            ret &= !!av_buffer_is_writable(frame->buf[i]);
     for (i = 0; i < frame->nb_extended_buf; i++)
         ret &= !!av_buffer_is_writable(frame->extended_buf[i]);