OSDN Git Service

prores: only call get_buffer once per frame
authorMichael Niedermayer <michaelni@gmx.at>
Sun, 9 Oct 2011 19:51:55 +0000 (21:51 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sun, 9 Oct 2011 19:52:16 +0000 (21:52 +0200)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavcodec/proresdec_gpl.c

index 9fbb8ee..a375f9c 100644 (file)
@@ -575,6 +575,12 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
     buf += frame_hdr_size;
     buf_size -= frame_hdr_size;
 
+    if (frame->data[0])
+        avctx->release_buffer(avctx, frame);
+
+    if (avctx->get_buffer(avctx, frame) < 0)
+        return -1;
+
  decode_picture:
     pic_size = decode_picture_header(avctx, buf, buf_size);
     if (pic_size < 0) {
@@ -582,12 +588,6 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
         return -1;
     }
 
-    if (frame->data[0])
-        avctx->release_buffer(avctx, frame);
-
-    if (avctx->get_buffer(avctx, frame) < 0)
-        return -1;
-
     if (decode_picture(avctx)) {
         av_log(avctx, AV_LOG_ERROR, "error decoding picture\n");
         return -1;