From b0428741c633c4ec1ae967111597dcfbf7799528 Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Sun, 4 Nov 2012 14:34:02 +0000 Subject: [PATCH] indeo3: move get_buffer() above decode_plane() calls This ensure that decode_plane() mmx code like AV_COPY64() does not interfere with possible float instructions in release_buffer/get_buffer. Found-by: Carl Eugen Hoyos Signed-off-by: Paul B Mahol --- libavcodec/indeo3.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/libavcodec/indeo3.c b/libavcodec/indeo3.c index 1f341e379e..013d6107cf 100644 --- a/libavcodec/indeo3.c +++ b/libavcodec/indeo3.c @@ -1087,6 +1087,12 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *data_size, 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"); + return res; + } + /* decode luma plane */ if ((res = decode_plane(ctx, avctx, ctx->planes, ctx->y_data_ptr, ctx->y_data_size, 40))) return res; @@ -1098,12 +1104,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; - ctx->frame.reference = 0; - if ((res = avctx->get_buffer(avctx, &ctx->frame)) < 0) { - av_log(ctx->avctx, AV_LOG_ERROR, "get_buffer() failed\n"); - return res; - } - output_plane(&ctx->planes[0], ctx->buf_sel, ctx->frame.data[0], ctx->frame.linesize[0], avctx->height);