⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tdeinterlaceyv12.cpp

📁 the De-interlace video processing developed with C++ enviroment in Motion adaptive in 3D and Bi-indi
💻 CPP
📖 第 1 页 / 共 5 页
字号:
					t9 = (abs(prvpnY[x] - prv2pnY[x]) < mthreshL);
					t10 = (abs(nxtppY[x] - nxt2ppY[x]) < mthreshL);
					t11 = (abs(nxtpnY[x] - nxt2pnY[x]) < mthreshL);
					t12 = (abs(srcppY[x] - prv2ppY[x]) < mthreshL);
					t13 = (abs(srcpnY[x] - prv2pnY[x]) < mthreshL);
					t14 = (abs(nxtppY[x] - prvppY[x]) < mthreshL);
					t15 = (abs(nxtpnY[x] - prvpnY[x]) < mthreshL);
					t16 = (abs(nxt2ppY[x] - srcppY[x]) < mthreshL);
					t17 = (abs(nxt2pnY[x] - srcpnY[x]) < mthreshL);
					t18 = (abs(nxtpY[x] - prvpY[x]) < mthreshL);
					t19 = (abs(nxt2pY[x] - srcpY[x]) < mthreshL);
					if (t6 && ((t1 && t2 && ((t3 && t4 && t14 && t15) || (t5 && t18))) || 
							(t3 && t4 && t7 && t19) || 
							(t5 && t18 && ((t1 && t3 && t14) || (t2 && t4 && t15) || (t1 && t8 && t12) || (t2 && t9 && t13))) ||
							(t7 && t19 && ((t1 && t3 && t14) || (t2 && t4 && t15) || (t3 && t10 && t16) || (t4 && t11 && t17)))))
						maskwY[x] = val1;
					else if (t1 && t2 && t3 && t4 && t5 && t7 && t14 && t15) maskwY[x] = val1;
					else if (t1 && t5 && t2 && t8 && t9 && t12 && t13) maskwY[x] = 10;
					else if (t3 && t7 && t4 && t10 && t11 && t16 && t17) maskwY[x] = 30;
					else if (abs(srcpY[x]-srcppY[x])<4 && abs(srcpY[x]-srcpnY[x])<4) maskwY[x] = 110;
					else if (abs(nxtpY[x]-srcppY[x])<4 && abs(nxtpY[x]-srcpnY[x])<4) maskwY[x] = 130;
					else maskwY[x] = 60;
				}
				prv2ppY += prv2_pitchY;
				prv2pY += prv2_pitchY;
				prv2pnY += prv2_pitchY;
				prvppY += prv_pitchY;
				prvpY += prv_pitchY;
				prvpnY += prv_pitchY;
				srcppY += src_pitchY;
				srcpY += src_pitchY;
				srcpnY += src_pitchY;
				nxtppY += nxt_pitchY;
				nxtpY += nxt_pitchY;
				nxtpnY += nxt_pitchY;
				nxt2ppY += nxt2_pitchY;
				nxt2pY += nxt2_pitchY;
				nxt2pnY += nxt2_pitchY;
				maskwY += mask_pitchY;
			}
			for (y=1; y<HeightUV-1; y+=2)
			{
				for (x=0; x<WidthUV; ++x)
				{
					t1 = (abs(srcppV[x] - prvppV[x]) < mthreshC);
					t2 = (abs(srcpnV[x] - prvpnV[x]) < mthreshC);
					t3 = (abs(srcppV[x] - nxtppV[x]) < mthreshC);
					t4 = (abs(srcpnV[x] - nxtpnV[x]) < mthreshC);
					t5 = (abs(srcpV[x] - prvpV[x]) < mthreshC);
					t6 = (abs(srcpV[x] - nxtpV[x]) < mthreshC);
					t7 = (abs(nxtpV[x] - nxt2pV[x]) < mthreshC);
					t8 = (abs(prvppV[x] - prv2ppV[x]) < mthreshC);
					t9 = (abs(prvpnV[x] - prv2pnV[x]) < mthreshC);
					t10 = (abs(nxtppV[x] - nxt2ppV[x]) < mthreshC);
					t11 = (abs(nxtpnV[x] - nxt2pnV[x]) < mthreshC);
					t12 = (abs(srcppV[x] - prv2ppV[x]) < mthreshC);
					t13 = (abs(srcpnV[x] - prv2pnV[x]) < mthreshC);
					t14 = (abs(nxtppV[x] - prvppV[x]) < mthreshC);
					t15 = (abs(nxtpnV[x] - prvpnV[x]) < mthreshC);
					t16 = (abs(nxt2ppV[x] - srcppV[x]) < mthreshC);
					t17 = (abs(nxt2pnV[x] - srcpnV[x]) < mthreshC);
					t18 = (abs(nxtpV[x] - prvpV[x]) < mthreshC);
					t19 = (abs(nxt2pV[x] - srcpV[x]) < mthreshC);
					if (t6 && ((t1 && t2 && ((t3 && t4 && t14 && t15) || (t5 && t18))) || 
							(t3 && t4 && t7 && t19) || 
							(t5 && t18 && ((t1 && t3 && t14) || (t2 && t4 && t15) || (t1 && t8 && t12) || (t2 && t9 && t13))) ||
							(t7 && t19 && ((t1 && t3 && t14) || (t2 && t4 && t15) || (t3 && t10 && t16) || (t4 && t11 && t17)))))
						maskwV[x] = val1;
					else if (t1 && t2 && t3 && t4 && t5 && t7 && t14 && t15) maskwV[x] = val1;
					else if (t1 && t5 && t2 && t8 && t9 && t12 && t13) maskwV[x] = 10;
					else if (t3 && t7 && t4 && t10 && t11 && t16 && t17) maskwV[x] = 30;
					else if (abs(srcpV[x]-srcppV[x])<4 && abs(srcpV[x]-srcpnV[x])<4) maskwV[x] = 110;
					else if (abs(nxtpV[x]-srcppV[x])<4 && abs(nxtpV[x]-srcpnV[x])<4) maskwV[x] = 130;
					else maskwV[x] = 60;
					t1 = (abs(srcppU[x] - prvppU[x]) < mthreshC);
					t2 = (abs(srcpnU[x] - prvpnU[x]) < mthreshC);
					t3 = (abs(srcppU[x] - nxtppU[x]) < mthreshC);
					t4 = (abs(srcpnU[x] - nxtpnU[x]) < mthreshC);
					t5 = (abs(srcpU[x] - prvpU[x]) < mthreshC);
					t6 = (abs(srcpU[x] - nxtpU[x]) < mthreshC);
					t7 = (abs(nxtpU[x] - nxt2pU[x]) < mthreshC);
					t8 = (abs(prvppU[x] - prv2ppU[x]) < mthreshC);
					t9 = (abs(prvpnU[x] - prv2pnU[x]) < mthreshC);
					t10 = (abs(nxtppU[x] - nxt2ppU[x]) < mthreshC);
					t11 = (abs(nxtpnU[x] - nxt2pnU[x]) < mthreshC);
					t12 = (abs(srcppU[x] - prv2ppU[x]) < mthreshC);
					t13 = (abs(srcpnU[x] - prv2pnU[x]) < mthreshC);
					t14 = (abs(nxtppU[x] - prvppU[x]) < mthreshC);
					t15 = (abs(nxtpnU[x] - prvpnU[x]) < mthreshC);
					t16 = (abs(nxt2ppU[x] - srcppU[x]) < mthreshC);
					t17 = (abs(nxt2pnU[x] - srcpnU[x]) < mthreshC);
					t18 = (abs(nxtpU[x] - prvpU[x]) < mthreshC);
					t19 = (abs(nxt2pU[x] - srcpU[x]) < mthreshC);
					if (t6 && ((t1 && t2 && ((t3 && t4 && t14 && t15) || (t5 && t18))) || 
							(t3 && t4 && t7 && t19) || 
							(t5 && t18 && ((t1 && t3 && t14) || (t2 && t4 && t15) || (t1 && t8 && t12) || (t2 && t9 && t13))) ||
							(t7 && t19 && ((t1 && t3 && t14) || (t2 && t4 && t15) || (t3 && t10 && t16) || (t4 && t11 && t17)))))
						maskwU[x] = val1;
					else if (t1 && t2 && t3 && t4 && t5 && t7 && t14 && t15) maskwU[x] = val1;
					else if (t1 && t5 && t2 && t8 && t9 && t12 && t13) maskwU[x] = 10;
					else if (t3 && t7 && t4 && t10 && t11 && t16 && t17) maskwU[x] = 30;
					else if (abs(srcpU[x]-srcppU[x])<4 && abs(srcpU[x]-srcpnU[x])<4) maskwU[x] = 110;
					else if (abs(nxtpU[x]-srcppU[x])<4 && abs(nxtpU[x]-srcpnU[x])<4) maskwU[x] = 130;
					else maskwU[x] = 60;
				}
				prv2ppV += prv2_pitchUV;
				prv2pV += prv2_pitchUV;
				prv2pnV += prv2_pitchUV;
				prv2ppU += prv2_pitchUV;
				prv2pU += prv2_pitchUV;
				prv2pnU += prv2_pitchUV;
				prvppV += prv_pitchUV;
				prvpV += prv_pitchUV;
				prvpnV += prv_pitchUV;
				prvppU += prv_pitchUV;
				prvpU += prv_pitchUV;
				prvpnU += prv_pitchUV;
				srcppV += src_pitchUV;
				srcpV += src_pitchUV;
				srcpnV += src_pitchUV;
				srcppU += src_pitchUV;
				srcpU += src_pitchUV;
				srcpnU += src_pitchUV;
				nxtppV += nxt_pitchUV;
				nxtpV += nxt_pitchUV;
				nxtpnV += nxt_pitchUV;
				nxtppU += nxt_pitchUV;
				nxtpU += nxt_pitchUV;
				nxtpnU += nxt_pitchUV;
				nxt2ppV += nxt2_pitchUV;
				nxt2pV += nxt2_pitchUV;
				nxt2pnV += nxt2_pitchUV;
				nxt2ppU += nxt2_pitchUV;
				nxt2pU += nxt2_pitchUV;
				nxt2pnU += nxt2_pitchUV;
				maskwV += mask_pitchUV;
				maskwU += mask_pitchUV;
			}
		}
	}
	else
	{
		val1 = mtnmode > 1 ? (accumP < accumN ? 20 : 10) : 50;
		if (n <= 1 || n >= nfrms-1)
		{
			for (y=1; y<HeightY-1; y+=2)
			{
				for (x=0; x<WidthY; ++x)
				{
					t1 = n == 0 ? false : (abs(srcppY[x] - prvppY[x]) < mthreshL);
					t2 = n == 0 ? false : (abs(srcpnY[x] - prvpnY[x]) < mthreshL);
					t3 = n == nfrms ? false : (abs(srcppY[x] - nxtppY[x]) < mthreshL);
					t4 = n == nfrms ? false : (abs(srcpnY[x] - nxtpnY[x]) < mthreshL);
					t5 = n <= 1 ? false : (abs(prvpY[x] - prv2pY[x]) < mthreshL);
					t6 = n == 0 ? false : (abs(srcpY[x] - prvpY[x]) < mthreshL);
					t7 = n == nfrms ? false : (abs(srcpY[x] - nxtpY[x]) < mthreshL);
					t8 = n <= 1 ? false : (abs(prvppY[x] - prv2ppY[x]) < mthreshL);
					t9 = n <= 1 ? false : (abs(prvpnY[x] - prv2pnY[x]) < mthreshL);
					t10 = n >= nfrms-1 ? false : (abs(nxtppY[x] - nxt2ppY[x]) < mthreshL);
					t11 = n >= nfrms-1 ? false : (abs(nxtpnY[x] - nxt2pnY[x]) < mthreshL);
					t12 = (abs(srcppY[x] - prv2ppY[x]) < mthreshL);
					t13 = (abs(srcpnY[x] - prv2pnY[x]) < mthreshL);
					t14 = (abs(nxtppY[x] - prvppY[x]) < mthreshL);
					t15 = (abs(nxtpnY[x] - prvpnY[x]) < mthreshL);
					t16 = (abs(nxt2ppY[x] - srcppY[x]) < mthreshL);
					t17 = (abs(nxt2pnY[x] - srcpnY[x]) < mthreshL);
					t18 = (abs(srcpY[x] - prv2pY[x]) < mthreshL);
					t19 = (abs(nxtpY[x] - prvpY[x]) < mthreshL);
					if (t6 && ((t1 && t2 && ((t3 && t4 && t14 && t15) || (t5 && t18))) || 
							(t3 && t4 && t7 && t19) || 
							(t5 && t18 && ((t1 && t3 && t14) || (t2 && t4 && t15) || (t1 && t8 && t12) || (t2 && t9 && t13))) ||
							(t7 && t19 && ((t1 && t3 && t14) || (t2 && t4 && t15) || (t3 && t10 && t16) || (t4 && t11 && t17)))))
						maskwY[x] = val1;
					else if (t1 && t2 && t3 && t4 && t5 && t7 && t14 && t15) maskwY[x] = val1;
					else if (t1 && t5 && t2 && t8 && t9 && t12 && t13) maskwY[x] = 20;
					else if (t3 && t7 && t4 && t10 && t11 && t16 && t17) maskwY[x] = 10;
					else if (abs(prvpY[x]-srcppY[x])<4 && abs(prvpY[x]-srcpnY[x])<4) maskwY[x] = 120;
					else if (abs(srcpY[x]-srcppY[x])<4 && abs(srcpY[x]-srcpnY[x])<4) maskwY[x] = 110;
					else maskwY[x] = 60;
				}
				prv2ppY += prv2_pitchY;
				prv2pY += prv2_pitchY;
				prv2pnY += prv2_pitchY;
				prvppY += prv_pitchY;
				prvpY += prv_pitchY;
				prvpnY += prv_pitchY;
				srcppY += src_pitchY;
				srcpY += src_pitchY;
				srcpnY += src_pitchY;
				nxtppY += nxt_pitchY;
				nxtpY += nxt_pitchY;
				nxtpnY += nxt_pitchY;
				nxt2ppY += nxt2_pitchY;
				nxt2pY += nxt2_pitchY;
				nxt2pnY += nxt2_pitchY;
				maskwY += mask_pitchY;
			}
			for (y=1; y<HeightUV-1; y+=2)
			{
				for (x=0; x<WidthUV; ++x)
				{
					t1 = n == 0 ? false : (abs(srcppV[x] - prvppV[x]) < mthreshC);
					t2 = n == 0 ? false : (abs(srcpnV[x] - prvpnV[x]) < mthreshC);
					t3 = n == nfrms ? false : (abs(srcppV[x] - nxtppV[x]) < mthreshC);
					t4 = n == nfrms ? false : (abs(srcpnV[x] - nxtpnV[x]) < mthreshC);
					t5 = n <= 1 ? false : (abs(prvpV[x] - prv2pV[x]) < mthreshC);
					t6 = n == 0 ? false : (abs(srcpV[x] - prvpV[x]) < mthreshC);
					t7 = n == nfrms ? false : (abs(srcpV[x] - nxtpV[x]) < mthreshC);
					t8 = n <= 1 ? false : (abs(prvppV[x] - prv2ppV[x]) < mthreshC);
					t9 = n <= 1 ? false : (abs(prvpnV[x] - prv2pnV[x]) < mthreshC);
					t10 = n >= nfrms-1 ? false : (abs(nxtppV[x] - nxt2ppV[x]) < mthreshC);
					t11 = n >= nfrms-1 ? false : (abs(nxtpnV[x] - nxt2pnV[x]) < mthreshC);
					t12 = (abs(srcppV[x] - prv2ppV[x]) < mthreshC);
					t13 = (abs(srcpnV[x] - prv2pnV[x]) < mthreshC);
					t14 = (abs(nxtppV[x] - prvppV[x]) < mthreshC);
					t15 = (abs(nxtpnV[x] - prvpnV[x]) < mthreshC);
					t16 = (abs(nxt2ppV[x] - srcppV[x]) < mthreshC);
					t17 = (abs(nxt2pnV[x] - srcpnV[x]) < mthreshC);
					t18 = (abs(srcpV[x] - prv2pV[x]) < mthreshC);
					t19 = (abs(nxtpV[x] - prvpV[x]) < mthreshC);
					if (t6 && ((t1 && t2 && ((t3 && t4 && t14 && t15) || (t5 && t18))) || 
							(t3 && t4 && t7 && t19) || 
							(t5 && t18 && ((t1 && t3 && t14) || (t2 && t4 && t15) || (t1 && t8 && t12) || (t2 && t9 && t13))) ||
							(t7 && t19 && ((t1 && t3 && t14) || (t2 && t4 && t15) || (t3 && t10 && t16) || (t4 && t11 && t17)))))
						maskwV[x] = val1;
					else if (t1 && t2 && t3 && t4 && t5 && t7 && t14 && t15) maskwV[x] = val1;
					else if (t1 && t5 && t2 && t8 && t9 && t12 && t13) maskwV[x] = 20;
					else if (t3 && t7 && t4 && t10 && t11 && t16 && t17) maskwV[x] = 10;
					else if (abs(prvpV[x]-srcppV[x])<4 && abs(prvpV[x]-srcpnV[x])<4) maskwV[x] = 120;
					else if (abs(srcpV[x]-srcppV[x])<4 && abs(srcpV[x]-srcpnV[x])<4) maskwV[x] = 110;
					else maskwV[x] = 60;
					t1 = n == 0 ? false : (abs(srcppU[x] - prvppU[x]) < mthreshC);
					t2 = n == 0 ? false : (abs(srcpnU[x] - prvpnU[x]) < mthreshC);
					t3 = n == nfrms ? false : (abs(srcppU[x] - nxtppU[x]) < mthreshC);
					t4 = n == nfrms ? false : (abs(srcpnU[x] - nxtpnU[x]) < mthreshC);
					t5 = n <= 1 ? false : (abs(prvpU[x] - prv2pU[x]) < mthreshC);
					t6 = n == 0 ? false : (abs(srcpU[x] - prvpU[x]) < mthreshC);
					t7 = n == nfrms ? false : (abs(srcpU[x] - nxtpU[x]) < mthreshC);
					t8 = n <= 1 ? false : (abs(prvppU[x] - prv2ppU[x]) < mthreshC);
					t9 = n <= 1 ? false : (abs(prvpnU[x] - prv2pnU[x]) < mthreshC);
					t10 = n >= nfrms-1 ? false : (abs(nxtppU[x] - nxt2ppU[x]) < mthreshC);
					t11 = n >= nfrms-1 ? false : (abs(nxtpnU[x] - nxt2pnU[x]) < mthreshC);
					t12 = (abs(srcppU[x] - prv2ppU[x]) < mthreshC);
					t13 = (abs(srcpnU[x] - prv2pnU[x]) < mthreshC);
					t14 = (abs(nxtppU[x] - prvppU[x]) < mthreshC);
					t15 = (abs(nxtpnU[x] - prvpnU[x]) < mthreshC);
					t16 = (abs(nxt2ppU[x] - srcppU[x]) < mthreshC);
					t17 = (abs(nxt2pnU[x] - srcpnU[x]) < mthreshC);
					t18 = (abs(srcpU[x] - prv2pU[x]) < mthreshC);
					t19 = (abs(nxtpU[x] - prvpU[x]) < mthreshC);
					if (t6 && ((t1 && t2 && ((t3 && t4 && t14 && t15) || (t5 && t18))) || 
							(t3 && t4 && t7 && t19) || 
							(t5 && t18 && ((t1 && t3 && t14) || (t2 && t4 && t15) || (t1 && t8 && t12) || (t2 && t9 && t13))) ||
							(t7 && t19 && ((t1 && t3 && t14) || (t2 && t4 && t15) || (t3 && t10 && t16) || (t4 && t11 && t17)))))
						maskwU[x] = val1;
					else if (t1 && t2 && t3 && t4 && t5 && t7 && t14 && t15) maskwU[x] = val1;
					else if (t1 && t5 && t2 && t8 && t9 && t12 && t13) maskwU[x] = 20;
					else if (t3 && t7 && t4 && t10 && t11 && t16 && t17) maskwU[x] = 10;
					else if (abs(prvpU[x]-srcppU[x])<4 && abs(prvpU[x]-srcpnU[x])<4) maskwU[x] = 120;
					else if (abs(srcpU[x]-srcppU[x])<4 && abs(srcpU[x]-srcpnU[x])<4) maskwU[x] = 110;
					else maskwU[x] = 60;
				}
				prv2ppV += prv2_pitchUV;
				prv2pV += prv2_pitchUV;
				prv2pnV += prv2_pitchUV;
				prv2ppU += prv2_pitchUV;
				prv2pU += prv2_pitchUV;
				prv2pnU += prv2_pitchUV;
				prvppV += prv_pitchUV;
				prvpV += prv_pitchUV;
				prvpnV += prv_pitchUV;
				prvppU += prv_pitchUV;
				prvpU += prv_pitchUV;
				prvpnU += prv_pitchUV;
				srcppV += src_pitchUV;
				srcpV += src_pitchUV;
				srcpnV += src_pitchUV;
				srcppU += src_pitchUV;
				srcpU += src_pitchUV;
				srcpnU += src_pitchUV;
				nxtppV += nxt_pitchUV;
				nxtpV += nxt_pitchUV;
				nxtpnV += nxt_pitchUV;
				nxtppU += nxt_pitchUV;
				nxtpU += nxt_pitchUV;
				nxtpnU += nxt_pitchUV;
				nxt2ppV += nxt2_pitchUV;
				nxt2pV += nxt2_pitchUV;
				nxt2pnV += nxt2_pitchUV;
				nxt2ppU += nxt2_pitchUV;
				nxt2pU += nxt2_pitchUV;
				nxt2pnU += nxt2_pitchUV;
				maskwV += mask_pitchUV;
				maskwU += mask_pitchUV;
			}
		}
		else
		{
			for (y=1; y<HeightY-1; y+=2)
			{
				for (x=0; x<WidthY; ++x)
				{
					t1 = (abs(srcppY[x] - prvppY[x]) < mthreshL);
					t2 = (abs(srcpnY[x] - prvpnY[x]) < mthreshL);
					t3 = (abs(srcppY[x] - nxtppY[x]) < mthreshL);
					t4 = (abs(srcpnY[x] - nxtpnY[x]) < mthreshL);
					t5 = (abs(prvpY[x] - prv2pY[x]) < mthreshL);
					t6 = (abs(srcpY[x] - prvpY[x]) < mthreshL);
					t7 = (abs(srcpY[x] - nxtpY[x]) < mthreshL);
					t8 = (abs(prvppY[x] - prv2ppY[x]) < mthreshL);
					t9 = (abs(prvpnY[x] - prv2pnY[x]) < mthreshL);
					t10 = (abs(nxtppY[x] - nxt2ppY[x]) < mthreshL);
					t11 = (abs(nxtpnY[x] - nxt2pnY[x]) < mthreshL);
					t12 = (abs(srcppY[x] - prv2ppY[x]) < mthreshL);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -