diff options
author | James Almer <jamrial@gmail.com> | 2019-09-04 05:54:19 +0300 |
---|---|---|
committer | James Almer <jamrial@gmail.com> | 2019-09-04 16:07:12 +0300 |
commit | a0739e8a16ac8e9d2ab2f00a590c20d7316b1430 (patch) | |
tree | f61a8500aa3a052db6871cc32cd1c6475e7492e2 /libavcodec/nuv.c | |
parent | 343f8d514e521ea52fc64aab0ddf1d497b0e4cec (diff) |
avcodec/nuv: prevent frame copying when outputting duplicate frames
Signed-off-by: James Almer <jamrial@gmail.com>
Diffstat (limited to 'libavcodec/nuv.c')
-rw-r--r-- | libavcodec/nuv.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/libavcodec/nuv.c b/libavcodec/nuv.c index 2cca206d9b..bb80e3e884 100644 --- a/libavcodec/nuv.c +++ b/libavcodec/nuv.c @@ -162,6 +162,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, int keyframe, ret; int size_change = 0; int minsize = 0; + int flags = 0; int result, init_frame = !avctx->frame_number; enum { NUV_UNCOMPRESSED = '0', @@ -204,6 +205,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame, } break; case NUV_COPY_LAST: + flags |= FF_REGET_BUFFER_FLAG_READONLY; keyframe = 0; break; default: @@ -268,7 +270,7 @@ retry: init_frame = 1; } - if ((result = ff_reget_buffer(avctx, c->pic, 0)) < 0) + if ((result = ff_reget_buffer(avctx, c->pic, flags)) < 0) return result; if (init_frame) { memset(c->pic->data[0], 0, avctx->height * c->pic->linesize[0]); |