Well, the problem is about correct usage of NNEDI, so it does fit here somehow.
Wrong:
Code:
Function nnEDIbob(clip Input)
{
[...]
GetParity(Input) ? Input.SeparateFields().nnEDI(dh=true,Field = 1) : Input.SeparateFields().nnEDI(dh=true,Field = 0)
AssumeFrameBased()
GetParity(Input) ? AssumeTFF() : AssumeBFF()
}
NNEDI has slightly different operating modes compared to EEDI2, hence you can not just replace EEDI2 -> NNEDI in all circumstances.
Correct:
Code:
Function nnEDIbob(clip Input)
{
[...]
Input.SeparateFields()
GetParity(Input) ? Interleave( SelectEven().nnEDI(dh=true,Field = 1), SelectOdd().nnEDI(dh=true,Field = 0) )
\ : Interleave( SelectEven().nnEDI(dh=true,Field = 0), SelectOdd().nnEDI(dh=true,Field = 1) )
AssumeFrameBased()
GetParity(Input) ? AssumeTFF() : AssumeBFF()
}
It would be less irritating if modes -2...3 were working the same way in EEDI2 and NNEDI, agreed.