mirror of https://git.ffmpeg.org/ffmpeg.git
avcodec/vaapi_encode: move pic->input_surface initialization to encode_alloc
When allocating the VAAPIEncodePicture, pic->input_surface can be initialized right in the place. This movement simplifies the send_frame logic and is the preparation for moving vaapi_encode_send_frame to the base layer. Signed-off-by: Tong Wu <tong1.wu@intel.com>
This commit is contained in:
parent
dea5204b41
commit
f303c26292
|
@ -878,7 +878,8 @@ static int vaapi_encode_discard(AVCodecContext *avctx,
|
|||
return 0;
|
||||
}
|
||||
|
||||
static VAAPIEncodePicture *vaapi_encode_alloc(AVCodecContext *avctx)
|
||||
static VAAPIEncodePicture *vaapi_encode_alloc(AVCodecContext *avctx,
|
||||
const AVFrame *frame)
|
||||
{
|
||||
VAAPIEncodeContext *ctx = avctx->priv_data;
|
||||
VAAPIEncodePicture *pic;
|
||||
|
@ -895,7 +896,7 @@ static VAAPIEncodePicture *vaapi_encode_alloc(AVCodecContext *avctx)
|
|||
}
|
||||
}
|
||||
|
||||
pic->input_surface = VA_INVALID_ID;
|
||||
pic->input_surface = (VASurfaceID)(uintptr_t)frame->data[3];
|
||||
pic->recon_surface = VA_INVALID_ID;
|
||||
pic->output_buffer = VA_INVALID_ID;
|
||||
|
||||
|
@ -1332,7 +1333,7 @@ static int vaapi_encode_send_frame(AVCodecContext *avctx, AVFrame *frame)
|
|||
if (err < 0)
|
||||
return err;
|
||||
|
||||
pic = vaapi_encode_alloc(avctx);
|
||||
pic = vaapi_encode_alloc(avctx, frame);
|
||||
if (!pic)
|
||||
return AVERROR(ENOMEM);
|
||||
|
||||
|
@ -1345,7 +1346,6 @@ static int vaapi_encode_send_frame(AVCodecContext *avctx, AVFrame *frame)
|
|||
if (ctx->input_order == 0 || frame->pict_type == AV_PICTURE_TYPE_I)
|
||||
pic->force_idr = 1;
|
||||
|
||||
pic->input_surface = (VASurfaceID)(uintptr_t)frame->data[3];
|
||||
pic->pts = frame->pts;
|
||||
pic->duration = frame->duration;
|
||||
|
||||
|
|
Loading…
Reference in New Issue