mirror of https://git.ffmpeg.org/ffmpeg.git
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@gmail.com>
This commit is contained in:
parent
a04698c4a9
commit
b0428741c6
|
@ -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);
|
||||
|
|
Loading…
Reference in New Issue