MODULE_PARM_DESC(dif01_ratio, "dif01_ratio");
+static int flm22_force;
+
int comsum;
int FlmVOFSftTop(UINT8 *rCmb32Spcl, unsigned short *rPstCYWnd0,
flm22_th = flm22_min/2;
avg_flag = abs(nDIF01[HISDIFNUM-1] - nDIF01[HISDIFNUM-2]) > flm22_th
? 1:0;
- avg_flag = (nDIF01[HISDIFNUM-1] > (1<<16) && pRDat.iHeight == 288)
+ avg_flag =
+ (max(nDIF01[HISDIFNUM-1], nDIF01[HISDIFNUM-2]) > (1<<16)
+ && pRDat.iHeight == 288)
? avg_flag : 0;
/*-----------------*/
/* rFlmPstGCm = 1; */
else
nS1 = nS1 - pPar->flm22_comlev;
} else if ((dif01avg > pPar->flm22_dif01_avgth)
- && (avg_flag == 0)) {
+ && (avg_flag == 0 || flm22_avg_flag == 1)) {
if (nS1 < pPar->flm22_comlev)
nS1 = 0;
else
*rFlmPstMod = 0;
nS1 = 0;
}
+ if (flm22_force) {
+ *rFlmSltPre = nDIF01[HISDIFNUM-1] > nDIF01[HISDIFNUM-2] ? 1 : 0;
+ /* Post-processing: film mode,00: global combing,
+ * 01: 2-2 film, 10: 2-3 film, 11:-others
+ */
+ *rFlmPstMod = 1;
+ nS1 = 135;
+ }
pre_fld_motnum = glb_field_mot_num;
comsum = VOFSftTop(rFlmPstGCm, rFlmSltPre, rFlmPstMod,
flm22_th = flm22_min/2;
dif_flag = abs(nDif01[HISDIFNUM-1]-nDif01[HISDIFNUM-2])
> flm22_th ? 1:0;
- dif_flag = nDif01[HISDIFNUM-1] > (1<<16) ? dif_flag : 0;
- if (flm22_flag && dif_flag) {
+ dif_flag =
+ max(nDif01[HISDIFNUM-1], nDif01[HISDIFNUM-2]) > (1<<16) ?
+ dif_flag : 0;
+ if (flm22_flag && (dif_flag || pPar->flm22_avg_flag)) {
/* ---------------------- */
if (pFlg[HISDETNUM-1] == 3
|| pFlg[HISDETNUM-1] == 1) {
int flag_di01th = pPar->flag_di01th;
int numthd = pPar->numthd;
static int numdif;
- static int predifflag;
+ static int predifflag = 2;
static int predif01;
static int difflag;
if (abs(predif01 - nDif01) < dif01th && flag_di01th)
difflag = 2;
else {
+ if (pr_pd)
+ pr_info("predif01=%d,dif01=%d,predifflag=%d\n",
+ predif01, nDif01, predifflag);
if (predif01 < nDif01)
difflag = 1;
else
numdif = 0;
difflag = difflag^1;
predifflag = difflag;
- } else
+ } else {
+ predifflag = difflag;
difflag = 2;
+ }
+ if (pr_pd)
+ pr_info("difflag=%d\n", difflag);
}
+ if (pr_pd)
+ pr_info("difflag=%d\n", difflag);
predif01 = nDif01;
return difflag;
}
pr_info("%s", debug_str);
}
+ if (pr_pd)
+ pr_info("diff_flag=%d\n", difflag);
pulldown_mode_init(res);
if (difflag == 1 && flag_di_weave)
res->global_mode = PULL_DOWN_NORMAL;
else if (difflag == 0 && flag_di_weave == 1)
res->global_mode = PULL_DOWN_NORMAL_2;
+ else
+ res->global_mode = PULL_DOWN_NORMAL;
if (dectres.rFlmPstMod == 1)
cmb_sts->like_pulldown22_flag = dectres.rF22Flag;