diff --git a/mpp/hal/rkdec/vp9d/hal_vp9d_vdpu34x.c b/mpp/hal/rkdec/vp9d/hal_vp9d_vdpu34x.c index 5d082b1f..11da4718 100644 --- a/mpp/hal/rkdec/vp9d/hal_vp9d_vdpu34x.c +++ b/mpp/hal/rkdec/vp9d/hal_vp9d_vdpu34x.c @@ -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 =