Commit dff6197d authored by Anton Khirnov's avatar Anton Khirnov

nuv: do not rely on get_buffer() initializing the frame.

parent 39a9fdd0
......@@ -149,7 +149,7 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
AVFrame *picture = data;
int orig_size = buf_size;
int keyframe;
int result;
int result, init_frame = !avctx->frame_number;
enum {
NUV_UNCOMPRESSED = '0',
NUV_RTJPEG = '1',
......@@ -221,8 +221,10 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
buf_size -= RTJPEG_HEADER_SIZE;
}
if (keyframe && c->pic.data[0])
if (keyframe && c->pic.data[0]) {
avctx->release_buffer(avctx, &c->pic);
init_frame = 1;
}
c->pic.reference = 3;
c->pic.buffer_hints = FF_BUFFER_HINTS_VALID | FF_BUFFER_HINTS_READABLE |
FF_BUFFER_HINTS_PRESERVE | FF_BUFFER_HINTS_REUSABLE;
......@@ -231,6 +233,11 @@ static int decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
return result;
}
if (init_frame) {
memset(c->pic.data[0], 0, avctx->height * c->pic.linesize[0]);
memset(c->pic.data[1], 0x80, avctx->height * c->pic.linesize[1] / 2);
memset(c->pic.data[2], 0x80, avctx->height * c->pic.linesize[2] / 2);
}
c->pic.pict_type = keyframe ? AV_PICTURE_TYPE_I : AV_PICTURE_TYPE_P;
c->pic.key_frame = keyframe;
......
#tb 0: 1/1000
0, 0, 0, 0, 221184, 0xf48c94f6
0, 40, 40, 0, 221184, 0x89b625b2
0, 60, 60, 0, 221184, 0x37e04714
0, 80, 80, 0, 221184, 0x4f4c5224
0, 100, 100, 0, 221184, 0x9193c9f1
0, 120, 120, 0, 221184, 0x5d1a6197
0, 140, 140, 0, 221184, 0x40cd51e7
0, 0, 0, 0, 221184, 0xdaf54f83
0, 40, 40, 0, 221184, 0xeea3e3b4
0, 60, 60, 0, 221184, 0x5f1a8525
0, 80, 80, 0, 221184, 0x950bb170
0, 100, 100, 0, 221184, 0x6262e94c
0, 120, 120, 0, 221184, 0x28752197
0, 140, 140, 0, 221184, 0x0c2811e7
0, 160, 160, 0, 221184, 0xb2c1a729
0, 200, 200, 0, 221184, 0x998d6144
0, 220, 220, 0, 221184, 0xf5d52311
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment