mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
4xm: fold last_picture lazy allocation in decode_p_frame
This commit is contained in:
parent
42d73f7f6b
commit
50ec1db62d
@ -394,6 +394,17 @@ static int decode_p_frame(FourXContext *f, AVFrame *frame,
|
||||
uint16_t *src;
|
||||
unsigned int bitstream_size, bytestream_size, wordstream_size, extra,
|
||||
bytestream_offset, wordstream_offset;
|
||||
int ret;
|
||||
|
||||
if (!f->last_picture->data[0]) {
|
||||
if ((ret = ff_get_buffer(f->avctx, f->last_picture,
|
||||
AV_GET_BUFFER_FLAG_REF)) < 0) {
|
||||
av_log(f->avctx, AV_LOG_ERROR, "get_buffer() failed\n");
|
||||
return ret;
|
||||
}
|
||||
memset(f->last_picture->data[0], 0,
|
||||
f->avctx->height * FFABS(f->last_picture->linesize[0]));
|
||||
}
|
||||
|
||||
src = (uint16_t *)f->last_picture->data[0];
|
||||
|
||||
@ -842,15 +853,6 @@ static int decode_frame(AVCodecContext *avctx, void *data,
|
||||
if ((ret = decode_i_frame(f, picture, buf, frame_size)) < 0)
|
||||
return ret;
|
||||
} else if (frame_4cc == AV_RL32("pfrm") || frame_4cc == AV_RL32("pfr2")) {
|
||||
if (!f->last_picture->data[0]) {
|
||||
if ((ret = ff_get_buffer(avctx, f->last_picture,
|
||||
AV_GET_BUFFER_FLAG_REF)) < 0) {
|
||||
av_log(avctx, AV_LOG_ERROR, "get_buffer() failed\n");
|
||||
return ret;
|
||||
}
|
||||
memset(f->last_picture->data[0], 0, avctx->height * FFABS(f->last_picture->linesize[0]));
|
||||
}
|
||||
|
||||
picture->pict_type = AV_PICTURE_TYPE_P;
|
||||
if ((ret = decode_p_frame(f, picture, buf, frame_size)) < 0)
|
||||
return ret;
|
||||
|
Loading…
Reference in New Issue
Block a user