Changeset 359


Ignore:
Timestamp:
Jan 30, 2015, 5:12:31 AM (8 years ago)
Author:
roman
Message:

Suppress exceptions on missing property pages in property frame helper; Suppress exceptions on reading non-implemented properties via IQualProp

Location:
trunk/DirectShowSpy
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/DirectShowSpy/FilterGraphHelper.h

    r348 r359  
    18851885                                                const CLSID& ClassIdentifier = pClassIdentifiers[nPageIndex];
    18861886                                                if(ClassIdentifier == CLSID_NULL)
    1887                                                         continue;
     1887                                                        continue; // Fake
    18881888                                                _ATLTRY
    18891889                                                {
    18901890                                                        CComPtr<IPropertyPage> pPropertyPage;
    1891                                                         __C(pPropertyPage.CoCreateInstance(ClassIdentifier));
     1891                                                        const HRESULT nCoCreateInstanceResult = pPropertyPage.CoCreateInstance(ClassIdentifier);
     1892                                                        _A(SUCCEEDED(nCoCreateInstanceResult) || nCoCreateInstanceResult == REGDB_E_CLASSNOTREG);
     1893                                                        if(nCoCreateInstanceResult == REGDB_E_CLASSNOTREG)
     1894                                                                continue; // Missing [Optional] Page
     1895                                                        __C(nCoCreateInstanceResult);
    18921896                                                        CData Data(pBaseFilter, ClassIdentifier, pPropertyPage);
    18931897                                                        Data.m_pSite.Construct()->Initialize(this, pBaseFilter, pPropertyPage);
  • trunk/DirectShowSpy/RunPropertyBag.h

    r348 r359  
    6666                                {
    6767                                        INT nFramesDroppedInRenderer, nFramesDrawn, nAvgFrameRate, nJitter, nAvgSyncOffset, nDevSyncOffset;
    68                                         __C(pQualProp->get_FramesDroppedInRenderer(&nFramesDroppedInRenderer));
    69                                         __C(pQualProp->get_FramesDrawn(&nFramesDrawn));
    70                                         __C(pQualProp->get_AvgFrameRate(&nAvgFrameRate));
    71                                         __C(pQualProp->get_Jitter(&nJitter));
    72                                         __C(pQualProp->get_AvgSyncOffset(&nAvgSyncOffset));
    73                                         __C(pQualProp->get_DevSyncOffset(&nDevSyncOffset));
    74                                         PropertyBagNeeded(pPropertyBag);
    75                                         pPropertyBag->WriteValue(_T("FramesDroppedInRenderer"), CComVariant((LONG) nFramesDroppedInRenderer));
    76                                         pPropertyBag->WriteValue(_T("FramesDrawn"), CComVariant((LONG) nFramesDrawn));
    77                                         pPropertyBag->WriteValue(_T("AvgFrameRate"), CComVariant((DOUBLE) nAvgFrameRate / 100));
    78                                         pPropertyBag->WriteValue(_T("Jitter"), CComVariant((LONG) nJitter));
    79                                         pPropertyBag->WriteValue(_T("AvgSyncOffset"), CComVariant((LONG) nAvgSyncOffset));
    80                                         pPropertyBag->WriteValue(_T("DevSyncOffset"), CComVariant((LONG) nDevSyncOffset));
     68                                        // NOTE: IQualProp methods are not implemented on EVR even though the interface itself is exposed
     69                                        const HRESULT nGetAvgFrameRateResult = pQualProp->get_AvgFrameRate(&nAvgFrameRate);
     70                                        if(SUCCEEDED(nGetAvgFrameRateResult))
     71                                        {
     72                                                __C(pQualProp->get_FramesDroppedInRenderer(&nFramesDroppedInRenderer));
     73                                                __C(pQualProp->get_FramesDrawn(&nFramesDrawn));
     74                                                //__C(pQualProp->get_AvgFrameRate(&nAvgFrameRate));
     75                                                __C(pQualProp->get_Jitter(&nJitter));
     76                                                __C(pQualProp->get_AvgSyncOffset(&nAvgSyncOffset));
     77                                                __C(pQualProp->get_DevSyncOffset(&nDevSyncOffset));
     78                                                PropertyBagNeeded(pPropertyBag);
     79                                                pPropertyBag->WriteValue(_T("FramesDroppedInRenderer"), CComVariant((LONG) nFramesDroppedInRenderer));
     80                                                pPropertyBag->WriteValue(_T("FramesDrawn"), CComVariant((LONG) nFramesDrawn));
     81                                                pPropertyBag->WriteValue(_T("AvgFrameRate"), CComVariant((DOUBLE) nAvgFrameRate / 100));
     82                                                pPropertyBag->WriteValue(_T("Jitter"), CComVariant((LONG) nJitter));
     83                                                pPropertyBag->WriteValue(_T("AvgSyncOffset"), CComVariant((LONG) nAvgSyncOffset));
     84                                                pPropertyBag->WriteValue(_T("DevSyncOffset"), CComVariant((LONG) nDevSyncOffset));
     85                                        }
    8186                                }
    8287                                _ATLCATCHALL()
Note: See TracChangeset for help on using the changeset viewer.