mirror of
https://github.com/nyanmisaka/mpp.git
synced 2025-10-19 07:24:34 +08:00
[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:
@@ -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;
|
vp9_hw_regs->common.reg028.sw_poc_arb_flag = 1;
|
||||||
mpp_buf_slot_get_prop(p_hal->slots, task->dec.output, SLOT_FRAME, &mframe);
|
mpp_buf_slot_get_prop(p_hal->slots, task->dec.output, SLOT_FRAME, &mframe);
|
||||||
|
vp9_hw_regs->vp9d_param.reg65.cur_poc = mframe ? mpp_frame_get_poc(mframe) : 0;
|
||||||
vp9_hw_regs->vp9d_param.reg65.cur_poc = mpp_frame_get_poc(mframe);
|
|
||||||
// last poc
|
// last poc
|
||||||
ref_idx = pic_param->frame_refs[0].Index7Bits;
|
ref_idx = pic_param->frame_refs[0].Index7Bits;
|
||||||
ref_frame_idx = pic_param->ref_frame_map[ref_idx].Index7Bits;
|
ref_frame_idx = pic_param->ref_frame_map[ref_idx].Index7Bits;
|
||||||
if (ref_frame_idx < 0x7f) {
|
if (ref_frame_idx < 0x7f) {
|
||||||
|
mframe = NULL;
|
||||||
mpp_buf_slot_get_prop(p_hal ->slots, ref_frame_idx, SLOT_FRAME, &mframe);
|
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
|
// golden poc
|
||||||
ref_idx = pic_param->frame_refs[1].Index7Bits;
|
ref_idx = pic_param->frame_refs[1].Index7Bits;
|
||||||
ref_frame_idx = pic_param->ref_frame_map[ref_idx].Index7Bits;
|
ref_frame_idx = pic_param->ref_frame_map[ref_idx].Index7Bits;
|
||||||
if (ref_frame_idx < 0x7f) {
|
if (ref_frame_idx < 0x7f) {
|
||||||
|
mframe = NULL;
|
||||||
mpp_buf_slot_get_prop(p_hal ->slots, ref_frame_idx, SLOT_FRAME, &mframe);
|
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
|
// altref poc
|
||||||
ref_idx = pic_param->frame_refs[2].Index7Bits;
|
ref_idx = pic_param->frame_refs[2].Index7Bits;
|
||||||
ref_frame_idx = pic_param->ref_frame_map[ref_idx].Index7Bits;
|
ref_frame_idx = pic_param->ref_frame_map[ref_idx].Index7Bits;
|
||||||
if (ref_frame_idx < 0x7f) {
|
if (ref_frame_idx < 0x7f) {
|
||||||
|
mframe = NULL;
|
||||||
mpp_buf_slot_get_prop(p_hal ->slots, ref_frame_idx, SLOT_FRAME, &mframe);
|
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
|
// colref poc
|
||||||
vp9_hw_regs->vp9d_param.reg98.col_ref_poc =
|
vp9_hw_regs->vp9d_param.reg98.col_ref_poc =
|
||||||
|
Reference in New Issue
Block a user