I'm rendering video via a direct IMFSinkWriter and it works with 23.98fps just fine.
We tried with 20fps and it doesn't work, it also doesn't work with several fps in between 30 and 60
Have you tried using MFTrace from the Windows 7 SDK? My c# code uses SharpDX (a thin wrapper around Media Foundation) and sets the frame rate like so:
double fps = 20.0;
mediaTypeOut.Set(MediaTypeAttributeKeys.FrameRate, 1000L + ((long)(fps * 1000.0d) << 32));
I was able to use 20, 23.98, 29.97, 30, and 60 and they all generate good files using the VCE chip (1920x1080 on Gigabte R9 290 GPU) verified in VLC player. FWIW encode speed is 75fps which I'm pretty happy with.
Retrieving data ...