di: need wait pre-link stop when process I frame [1/1]

PD#SWPL-148072

Problem:
When prelink mode, I frame may be bypassed some frames.
But under v4l decode flow, I frame can not be bypassed. Otherwise,
it will display garbage.

Solution:
When prelink mode and v4l decode case, I process flow will wait for
prelink stop and not bypass.

Verify:
Verified on txhd2

Change-Id: I770b278e86c0cb9e89b7bf5ce392de91b4054259
Signed-off-by: Brian Zhu <brian.zhu@amlogic.com>
This commit is contained in:
Brian Zhu
2023-11-30 15:06:39 +08:00
committed by Luan Yuan
parent 02fba23c98
commit bb6d653e81
+18 -2
View File
@@ -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)