locked
IMFQualityAdvise2::NotifyQualityEvent pwdFlags [Out] parameter is NULL RRS feed

  • Question

  • hi there,

    i´m currently implementing quality management into a custom decoder MFT. 

    However, the docs for IMFQualityAdvise2 contain a single Method with two parameters:

     

    HRESULT NotifyQualityEvent(
      [in]   IMFMediaEvent *pEvent,
      [out]  DWORD *pdwFlags
    );

     

    But setting the MF_QUALITY_CANNOT_KEEP_UP flag is not possible as the pwdFlags pointer is a NULL pointer.

    returning E_POINTER does not result in an additional call with a valid ptr set there.

    The docs say

    If the decoder sets the MF_QUALITY_CANNOT_KEEP_UP flag, the quality manager tries to reduce latency through the media source and the media sink. For example, it might request the Enhanced Video Renderer (EVR) to drop frames. During this period, the quality manager stops calling the decoder's IMFQualityAdvise2::NotifyQualityEvent method, until samples are no longer arriving late at the sink. At that point, the quality manager resumes calling NotifyQualityEvent on the decoder.

    So, how am i supposed to notify that the decoder cannot keep up when i cannot set this flag?

    Is this a bug or is this a NULL ptr intentionally? at least it´s not documented. 

    My setup contains a custom media source that does not implement QoS stuff and the default EVR presenter.

    any ideas would be appreciated

    joachim


    Thursday, November 24, 2011 10:42 AM

All replies

  • I do not know how this could happen without a custom quality manager.  The default quality manager passes a reference to a stack variable in the pdwFlags parameter, so it should never be NULL.  Microsoft MFTs return E_POINTER if the parameter is NULL.

    Can you explain more about what is happening in your app so that I can try and reproduce it?

    Tuesday, January 3, 2012 10:50 PM