indeo3: release buffer before calling decode_plane
authorPaul B Mahol <onemda@gmail.com>
Fri, 2 Nov 2012 23:39:03 +0000 (23:39 +0000)
committerPaul B Mahol <onemda@gmail.com>
Fri, 2 Nov 2012 23:43:23 +0000 (23:43 +0000)
libavcodec/indeo3.c

index bd2bc3b..1f341e3 100644 (file)
@@ -1084,6 +1084,9 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
     /* use BS_BUFFER flag for buffer switching */
     ctx->buf_sel = (ctx->frame_flags >> BS_BUFFER) & 1;
 
+    if (ctx->frame.data[0])
+        avctx->release_buffer(avctx, &ctx->frame);
+
     /* decode luma plane */
     if ((res = decode_plane(ctx, avctx, ctx->planes, ctx->y_data_ptr, ctx->y_data_size, 40)))
         return res;
@@ -1095,9 +1098,6 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size,
     if ((res = decode_plane(ctx, avctx, &ctx->planes[2], ctx->v_data_ptr, ctx->v_data_size, 10)))
         return res;
 
-    if (ctx->frame.data[0])
-        avctx->release_buffer(avctx, &ctx->frame);
-
     ctx->frame.reference = 0;
     if ((res = avctx->get_buffer(avctx, &ctx->frame)) < 0) {
         av_log(ctx->avctx, AV_LOG_ERROR, "get_buffer() failed\n");