summaryrefslogtreecommitdiff
path: root/libavcodec/nuv.c
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2019-09-03 23:54:19 -0300
committerJames Almer <jamrial@gmail.com>2019-09-04 10:07:12 -0300
commita0739e8a16ac8e9d2ab2f00a590c20d7316b1430 (patch)
treef61a8500aa3a052db6871cc32cd1c6475e7492e2 /libavcodec/nuv.c
parent343f8d514e521ea52fc64aab0ddf1d497b0e4cec (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.c4
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]);