Search code examples
videorenderms-media-foundation

MFT with EVR gives out less number of frames


I have a topology as below, it works fine for all frames of video sequence:

Source->Video Decoder MFT->Custom Video Edit MFT->Video Encoder MFT->Custom Sink MFT

But If I insert a Tee node after "Custom Video Edit MFT" to connect to Enhanced Video Renderer (EVR) as well, then the application doesn't run for all frames of the video sequence.

I tried to figure out the cause using mftrace, but it didn't help much. Is there a possibility of frame skips by any node if custom MFT takes too long time? I appreciate if some hints to debug this issue or any wild guess.

FYI, this issue observed only when I try with UHD (3840x2160) resolution video. It works well for HD (1920x1080) resolution.


Solution

  • Finally the issue is resolved by turning off the MF_SESSION_QUALITY_MANAGER as below, it avoids possible frame dropping:

       CComPtr<IMFAttributes> attrib;
        MFCreateAttributes(&attrib, 1);
        attrib->SetGUID(MF_SESSION_QUALITY_MANAGER, GUID_NULL);
        hr = MFCreateMediaSession(attrib, &_mediaSession);