|
|
|
@ -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]); |
|
|
|
|