1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-01-08 13:22:53 +02:00

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

This commit is contained in:
Anton Khirnov 2013-01-30 15:04:51 +01:00
parent 39a9fdd00f
commit dff6197dfb
2 changed files with 16 additions and 9 deletions

View File

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

View File

@ -1,11 +1,11 @@
#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