📄 tdeinterlaceyv12.cpp
字号:
srcppY += src_pitchY;
srcpY += src_pitchY;
srcpnY += src_pitchY;
nxtppY += nxt_pitchY;
nxtpY += nxt_pitchY;
nxtpnY += nxt_pitchY;
nxt2pY += 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 == 0 ? false : (abs(srcpV[x] - prvpV[x]) < mthreshC);
t6 = n == nfrms ? false : (abs(srcpV[x] - nxtpV[x]) < mthreshC);
t7 = n >= nfrms-1 ? false : (abs(nxtpV[x] - nxt2pV[x]) < mthreshC);
if (t6 && ((t1 && t2) || (t3 && t4) || (t2 && t4 && (t5 || t7)) || (t1 && t3 && (t5 || t7))))
maskwV[x] = val1;
else if (t1 && t2 && t3 && t4 && t5 && t7) maskwV[x] = val1;
else if (t1 && t5 && t2) maskwV[x] = 10;
else if (t3 && t7 && t4) 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 = 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 == 0 ? false : (abs(srcpU[x] - prvpU[x]) < mthreshC);
t6 = n == nfrms ? false : (abs(srcpU[x] - nxtpU[x]) < mthreshC);
t7 = n >= nfrms-1 ? false : (abs(nxtpU[x] - nxt2pU[x]) < mthreshC);
if (t6 && ((t1 && t2) || (t3 && t4) || (t2 && t4 && (t5 || t7)) || (t1 && t3 && (t5 || t7))))
maskwU[x] = val1;
else if (t1 && t2 && t3 && t4 && t5 && t7) maskwU[x] = val1;
else if (t1 && t5 && t2) maskwU[x] = 10;
else if (t3 && t7 && t4) 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;
}
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;
nxt2pV += nxt2_pitchUV;
nxt2pU += 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(srcpY[x] - prvpY[x]) < mthreshL);
t6 = (abs(srcpY[x] - nxtpY[x]) < mthreshL);
t7 = (abs(nxtpY[x] - nxt2pY[x]) < mthreshL);
if (t6 && ((t1 && t2) || (t3 && t4) || (t2 && t4 && (t5 || t7)) || (t1 && t3 && (t5 || t7))))
maskwY[x] = val1;
else if (t1 && t2 && t3 && t4 && t5 && t7) maskwY[x] = val1;
else if (t1 && t5 && t2) maskwY[x] = 10;
else if (t3 && t7 && t4) 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;
}
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;
nxt2pY += 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);
if (t6 && ((t1 && t2) || (t3 && t4) || (t2 && t4 && (t5 || t7)) || (t1 && t3 && (t5 || t7))))
maskwV[x] = val1;
else if (t1 && t2 && t3 && t4 && t5 && t7) maskwV[x] = val1;
else if (t1 && t5 && t2) maskwV[x] = 10;
else if (t3 && t7 && t4) 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);
if (t6 && ((t1 && t2) || (t3 && t4) || (t2 && t4 && (t5 || t7)) || (t1 && t3 && (t5 || t7))))
maskwU[x] = val1;
else if (t1 && t2 && t3 && t4 && t5 && t7) maskwU[x] = val1;
else if (t1 && t5 && t2) maskwU[x] = 10;
else if (t3 && t7 && t4) 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;
}
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;
nxt2pV += nxt2_pitchUV;
nxt2pU += 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);
if (t6 && ((t1 && t2) || (t3 && t4) || (t2 && t4 && (t5 || t7)) || (t1 && t3 && (t5 || t7))))
maskwY[x] = val1;
else if (t1 && t2 && t3 && t4 && t5 && t7) maskwY[x] = val1;
else if (t1 && t5 && t2) maskwY[x] = 20;
else if (t3 && t7 && t4) 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;
}
prv2pY += 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;
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);
if (t6 && ((t1 && t2) || (t3 && t4) || (t2 && t4 && (t5 || t7)) || (t1 && t3 && (t5 || t7))))
maskwV[x] = val1;
else if (t1 && t2 && t3 && t4 && t5 && t7) maskwV[x] = val1;
else if (t1 && t5 && t2) maskwV[x] = 20;
else if (t3 && t7 && t4) 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);
if (t6 && ((t1 && t2) || (t3 && t4) || (t2 && t4 && (t5 || t7)) || (t1 && t3 && (t5 || t7))))
maskwU[x] = val1;
else if (t1 && t2 && t3 && t4 && t5 && t7) maskwU[x] = val1;
else if (t1 && t5 && t2) maskwU[x] = 20;
else if (t3 && t7 && t4) 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;
}
prv2pV += prv2_pitchUV;
prv2pU += 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;
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);
if (t6 && ((t1 && t2) || (t3 && t4) || (t2 && t4 && (t5 || t7)) || (t1 && t3 && (t5 || t7))))
maskwY[x] = val1;
else if (t1 && t2 && t3 && t4 && t5 && t7) maskwY[x] = val1;
else if (t1 && t5 && t2) maskwY[x] = 20;
else if (t3 && t7 && t4) 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;
}
prv2pY += 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;
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(prvpV[x] - prv2pV[x]) < mthreshC);
t6 = (abs(srcpV[x] - prvpV[x]) < mthreshC);
t7 = (abs(srcpV[x] - nxtpV[x]) < mthreshC);
if (t6 && ((t1 && t2) || (t3 && t4) || (t2 && t4 && (t5 || t7)) || (t1 && t3 && (t5 || t7))))
maskwV[x] = val1;
else if (t1 && t2 && t3 && t4 && t5 && t7) maskwV[x] = val1;
else if (t1 && t5 && t2) maskwV[x] = 20;
else if (t3 && t7 && t4) 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 = (abs(srcppU[x] - prvppU[x]) < mthreshC);
t2 = (abs(srcpnU[x] - prvpnU[x]) < mthreshC);
t3 = (abs(srcppU[x] - nxtppU[x]) < mthreshC);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -