[vp9d]: fix issue for frame is NULL

when frame is null, it cannot get_frame_poc from frame.

Change-Id: If94488640b46eeb0faa800c1966c0d747ed9f396
Signed-off-by: Ding Wei <leo.ding@rock-chips.com>
This commit is contained in:
Ding Wei
2021-12-13 16:16:18 +08:00
parent 3b0e3598bf
commit 8b0c4429e7

View File

@@ -539,28 +539,30 @@ static MPP_RET hal_vp9d_vdpu34x_gen_regs(void *hal, HalTaskInfo *task)
vp9_hw_regs->common.reg028.sw_poc_arb_flag = 1;
mpp_buf_slot_get_prop(p_hal->slots, task->dec.output, SLOT_FRAME, &mframe);
vp9_hw_regs->vp9d_param.reg65.cur_poc = mpp_frame_get_poc(mframe);
vp9_hw_regs->vp9d_param.reg65.cur_poc = mframe ? mpp_frame_get_poc(mframe) : 0;
// last poc
ref_idx = pic_param->frame_refs[0].Index7Bits;
ref_frame_idx = pic_param->ref_frame_map[ref_idx].Index7Bits;
if (ref_frame_idx < 0x7f) {
mframe = NULL;
mpp_buf_slot_get_prop(p_hal ->slots, ref_frame_idx, SLOT_FRAME, &mframe);
vp9_hw_regs->vp9d_param.reg95.last_poc = mpp_frame_get_poc(mframe);
vp9_hw_regs->vp9d_param.reg95.last_poc = mframe ? mpp_frame_get_poc(mframe) : 0;
}
// golden poc
ref_idx = pic_param->frame_refs[1].Index7Bits;
ref_frame_idx = pic_param->ref_frame_map[ref_idx].Index7Bits;
if (ref_frame_idx < 0x7f) {
mframe = NULL;
mpp_buf_slot_get_prop(p_hal ->slots, ref_frame_idx, SLOT_FRAME, &mframe);
vp9_hw_regs->vp9d_param.reg96.golden_poc = mpp_frame_get_poc(mframe);
vp9_hw_regs->vp9d_param.reg96.golden_poc = mframe ? mpp_frame_get_poc(mframe) : 0;
}
// altref poc
ref_idx = pic_param->frame_refs[2].Index7Bits;
ref_frame_idx = pic_param->ref_frame_map[ref_idx].Index7Bits;
if (ref_frame_idx < 0x7f) {
mframe = NULL;
mpp_buf_slot_get_prop(p_hal ->slots, ref_frame_idx, SLOT_FRAME, &mframe);
vp9_hw_regs->vp9d_param.reg97.altref_poc = mpp_frame_get_poc(mframe);
vp9_hw_regs->vp9d_param.reg97.altref_poc = mframe ? mpp_frame_get_poc(mframe) : 0;
}
// colref poc
vp9_hw_regs->vp9d_param.reg98.col_ref_poc =