Open lvl1337 opened 1 month ago
The automatic formula for assigning temporal filter strenghts is as follows:
const int log2GopSize = std::min<int>( 6, vvenc::floorLog2( c->m_GOPSize ) );
c->m_vvencMCTF.numFrames = c->m_vvencMCTF.numStrength = std::max( 1, log2GopSize - ( ( c->m_QP - ( c->m_RCTargetBitrate > 0 ? 1 : 0 ) ) >> 4 ) );
for ( int i = 0; i < c->m_vvencMCTF.numFrames; i++ )
{
c->m_vvencMCTF.MCTFFrames[i] = c->m_GOPSize >> ( c->m_vvencMCTF.numFrames - i - 1 );
c->m_vvencMCTF.MCTFStrengths[i] = vvenc::Clip3( 0.0, 2.0, ( c->m_QP - 4.0 ) / 8.0 ) / double ( c->m_vvencMCTF.numFrames - i );
}
c->m_vvencMCTF.MCTFStrengths[c->m_vvencMCTF.numFrames - 1] = vvenc::Clip3( 0.0, 1.5, ( c->m_QP - 4.0 ) * 3.0 / 32.0 );
You can override the defaults using the parameters MCTFFrame
and MCTFStrength
(eg. --MCTFFrame=32,16,8 --MCTFStrength=1,1,1
). m_GOPSize
is always 32, all the other parameters are your input.
Let me know if you find better parameters.
It would also be helpful to have your video to be able to inspect what is happening.
Best, Adam
What the title says. I've tried with QPA on and off but both have the same issues. FGA does improve it a good bit but things like subtle banding or background art seem to be getting blurred immensely. This is known to be related to a trick regarding improvements in PSNR scores but it's psychovisually displeasing, even more so since the temporal filter is not doing a good job at cleaning up source artifacts.
Assigning a strength factor to this would allow for weakening the effect of the temporal filter as the user sees fit, leading to this problem not being as serious as it is now.