[FFmpeg-cvslog] indeo3: move get_buffer() above decode_plane() calls

Paul B Mahol git at videolan.org
Sun Nov 4 15:43:54 CET 2012


ffmpeg | branch: master | Paul B Mahol <onemda at gmail.com> | Sun Nov  4 14:34:02 2012 +0000| [b0428741c633c4ec1ae967111597dcfbf7799528] | committer: Paul B Mahol

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 <onemda at gmail.com>

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=b0428741c633c4ec1ae967111597dcfbf7799528
---

 libavcodec/indeo3.c |   12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/libavcodec/indeo3.c b/libavcodec/indeo3.c
index 1f341e3..013d610 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);



More information about the ffmpeg-cvslog mailing list