How to use Frame Rate convertor DMO in MF app RRS feed

  • Question

  • I wish to use the Frame Rate convertor DSP in my media foundation application. I'm using the 'SourceReader' to read samples. Can anyone tell me where and how to integrate the DMO with MF to obtain frame rate conversion. I don't seem to understand what kind of samples (compressed/uncompressed) to feed to the DMO to obtain new frame rate. How does the DMO change the frame rate? Does it give a new time-stamp to the new samples? There are no code examples demonstrating its use. Please help, I'm stuck.

    • Edited by mots_g Wednesday, December 7, 2011 8:18 AM
    Wednesday, December 7, 2011 7:11 AM

All replies

  • According to this document http://msdn.microsoft.com/en-us/library/windows/desktop/ff819100(v=vs.85).aspx, the DSP duplicates or drops frames to reach the target frame rate...

    I'm not sure whether its possible to use this DSP with the SourceReader. You might need to switch to the media session where you will be able to do manual topology building. Depending on your application, this step might involve writing quite a few code...

    But if you do control the session by yourself, it should be possible to just instantiate the GUID CLSID_CFrameRateConvertDmo (e.g. CoCreateInstance) and insert it into your topology (it offers the IMFTransform interface)... 

    Monday, December 12, 2011 4:20 PM
  • Hi Stefan,

    I need to use it with the 'SourceReader' architecture. I resorted on the DSP approach after trying post-processing using DXVA-HD. However, for DXVA-HD, it showed no device capabilities to perform frame rate conversion or ITelecine.  

    On my DMO approch, I've instantiated the device and could 'setinput' and 'output type' on it. After reading a sample from the source reader, I try to feed it to the DMO by calling 'ProcessInput' but it fails giving 'E_NOTIMPL'. I was hoping that if the call succeeded on ProcessInput and then on ProcessOutput, the new sample would have difference time-stamp(new time stamp) and also the DMO would appropriately drop/generate a new frame. However, I couldn't make it go beyond ProcessInput.

    Is there another way you could suggest to obtain frame rate conversion using the SourceReader?



    Tuesday, December 13, 2011 6:43 AM