diff --git a/drivers/media/di_multi/deinterlace.c b/drivers/media/di_multi/deinterlace.c index b9a53b2fb..5548a6933 100644 --- a/drivers/media/di_multi/deinterlace.c +++ b/drivers/media/di_multi/deinterlace.c @@ -5307,6 +5307,16 @@ unsigned char dim_pre_bypass(struct di_ch_s *pch) return 74; } //pch->sumx.vfm_bypass = true; + + ppre = get_pre_stru(ch); + if (dip_itf_is_ins(pch) && + VFMT_IS_I(vframe->type) && + get_datal()->pre_vpp_active) { + dim_print("%s: waiting for pre-link stop vf:%px idx:%d\n", + __func__, vframe, ppre->in_seq); + return 76; + } + nins = nins_get(pch); if (!nins) return 75; @@ -5315,7 +5325,6 @@ unsigned char dim_pre_bypass(struct di_ch_s *pch) dbg_timer(ch, EDBG_TIMER_PRE_BYPASS_0 + nins->c.cnt); dim_bypass_set(pch, 1, bypassr); - ppre = get_pre_stru(ch); /*mem check*/ memcpy(&ppre->vfm_cpy, vframe, sizeof(ppre->vfm_cpy)); @@ -5546,6 +5555,14 @@ unsigned char dim_pre_de_buf_config(unsigned int channel) return 12; } /**************************************************/ + bypassr = is_bypass2(vframe, channel);//dim_is_bypass(vframe, channel); + if (dip_itf_is_ins(pch) && + VFMT_IS_I(vframe->type) && + get_datal()->pre_vpp_active) { + PR_INF("%s: waiting for pre-link stop vf:%px idx:%d\n", + __func__, vframe, ppre->in_seq); + return 26; + } /*mem check*/ memcpy(&ppre->vfm_cpy, vframe, sizeof(ppre->vfm_cpy)); #ifdef DIM_TB_DETECT @@ -5558,7 +5575,6 @@ unsigned char dim_pre_de_buf_config(unsigned int channel) channel, ECMD_TB_PROC); } #endif - bypassr = is_bypass2(vframe, channel);//dim_is_bypass(vframe, channel); /*2020-12-02: here use di_buf->vframe is err*/ change_type = is_source_change(vframe, channel); if (change_type)