avcodec/qsv_enc: do not reuse enc_ctrl from previous frames

fixes #8857

If we do not clear the enc_ctrl, we will reuse previous frames' data like FrameType.

Reviewed-by: Xiang, Haihao <haihao.xiang@intel.com>
Signed-off-by: James Almer <jamrial@gmail.com>
This commit is contained in:
Xu Guangxin 2021-01-06 11:12:34 +08:00 committed by James Almer
parent bb9141cc13
commit 3bbe0c210b
1 changed files with 2 additions and 0 deletions

View File

@ -1271,6 +1271,8 @@ static void clear_unused_frames(QSVEncContext *q)
while (cur) {
if (cur->used && !cur->surface.Data.Locked) {
free_encoder_ctrl_payloads(&cur->enc_ctrl);
//do not reuse enc_ctrl from previous frame
memset(&cur->enc_ctrl, 0, sizeof(cur->enc_ctrl));
if (cur->frame->format == AV_PIX_FMT_QSV) {
av_frame_unref(cur->frame);
}