mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2025-01-13 21:28:01 +02:00
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])
|
if (ctx->frame.data[0])
|
||||||
avctx->release_buffer(avctx, &ctx->frame);
|
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 */
|
/* decode luma plane */
|
||||||
if ((res = decode_plane(ctx, avctx, ctx->planes, ctx->y_data_ptr, ctx->y_data_size, 40)))
|
if ((res = decode_plane(ctx, avctx, ctx->planes, ctx->y_data_ptr, ctx->y_data_size, 40)))
|
||||||
return res;
|
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)))
|
if ((res = decode_plane(ctx, avctx, &ctx->planes[2], ctx->v_data_ptr, ctx->v_data_size, 10)))
|
||||||
return res;
|
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,
|
output_plane(&ctx->planes[0], ctx->buf_sel,
|
||||||
ctx->frame.data[0], ctx->frame.linesize[0],
|
ctx->frame.data[0], ctx->frame.linesize[0],
|
||||||
avctx->height);
|
avctx->height);
|
||||||
|
Loading…
Reference in New Issue
Block a user