Ignore:
Timestamp:
Sep 4, 2015, 11:47:45 PM (7 years ago)
Author:
roman
Message:

Improved event code logging, added non-ROT FGT (incomplete)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/DirectShowSpy/FilterGraphSpy.h

    r489 r503  
    2121#include "RunPropertyBag.h"
    2222#include "MediaSampleTrace.h"
     23#include "FilterGraphTable.h"
    2324
    2425HRESULT FilterGraphHelper_OpenGraphStudioNext(LONG nParentWindowHandle, LPCWSTR pszMonikerDisplayName, VARIANT_BOOL* pbResult);
     
    681682        _FilterGraphHelper::CRotRunningFilterGraph m_RunningFilterGraph;
    682683        INT m_nRunningFilterGraphReference;
     684        CLocalObjectPtr<CFilterGraphTableItem> m_pFilterGraphTableItem;
    683685        SYSTEMTIME m_Time;
    684686        CStringW m_sMonikerDisplayName;
     
    712714                CStringW sMonikerDisplayName;
    713715                static CConstIntegerRegistryValue g_nEnableRotMonikerItemNameSuffix(_T("Enable ROT Moniker Item Name Suffix")); // 0 Default (Enabled), 1 Disabled, 2 Enabled
    714                 if(g_nEnableRotMonikerItemNameSuffix != 1)
     716                if(g_nEnableRotMonikerItemNameSuffix != 1) // Disabled
    715717                {
    716718                        TCHAR pszPath[MAX_PATH] = { 0 };
     
    727729                        m_sMonikerDisplayName = sMonikerDisplayName;
    728730                }
     731                #pragma region Filter Graph Table Item
     732                static CConstIntegerRegistryValue g_nAutomaticFilterGraphTableItem(_T("Automatic Filter Graph Table Item")); // 0 Default (Disabled), 1 Disabled, 2 Enabled
     733                if(g_nAutomaticFilterGraphTableItem == 2) // Enabled
     734                        _ATLTRY
     735                        {
     736                                _A(!m_pFilterGraphTableItem->IsFilterGraphAvailable());
     737                                m_pFilterGraphTableItem->SetFilterGraph(this);
     738                                Release();
     739                        }
     740                        _ATLCATCHALL()
     741                        {
     742                                _Z_EXCEPTION();
     743                        }
     744                #pragma endregion
    729745                if(!m_bIsAggregated)
    730746                {
     
    744760                if(!m_RunningFilterGraph.GetCookie())
    745761                        return;
     762                #pragma region Filter Graph Table Item
     763                _ATLTRY
     764                {
     765                        if(m_pFilterGraphTableItem->IsFilterGraphAvailable())
     766                        {
     767                                AddRef();
     768                                m_pFilterGraphTableItem->SetFilterGraph(NULL);
     769                        }
     770                }
     771                _ATLCATCHALL()
     772                {
     773                        _Z_EXCEPTION();
     774                }
     775                #pragma endregion
    746776                if(m_nRunningFilterGraphReference != 2)
    747777                        AddRef();
     
    10291059                return FALSE;
    10301060        }
    1031         static BOOL LookupEventCodeName(LONG nEventCode, LPCSTR& pszName)
    1032         {
    1033                 // NOTE: See Windows SDK evcode.h
    1034                 static const struct { LONG nEventCode; LPCSTR pszName; } g_pMap[] =
    1035                 {
    1036                         #define A(x) { x, #x },
    1037                         A(EC_COMPLETE)
    1038                         A(EC_USERABORT)
    1039                         A(EC_ERRORABORT)
    1040                         A(EC_TIME)
    1041                         A(EC_REPAINT)
    1042                         A(EC_STREAM_ERROR_STOPPED)
    1043                         A(EC_STREAM_ERROR_STILLPLAYING)
    1044                         A(EC_ERROR_STILLPLAYING)
    1045                         A(EC_PALETTE_CHANGED)
    1046                         A(EC_VIDEO_SIZE_CHANGED)
    1047                         A(EC_QUALITY_CHANGE)
    1048                         A(EC_SHUTTING_DOWN)
    1049                         A(EC_CLOCK_CHANGED)
    1050                         A(EC_PAUSED)
    1051                         A(EC_OPENING_FILE)
    1052                         A(EC_BUFFERING_DATA)
    1053                         A(EC_FULLSCREEN_LOST)
    1054                         A(EC_ACTIVATE)
    1055                         A(EC_NEED_RESTART)
    1056                         A(EC_WINDOW_DESTROYED)
    1057                         A(EC_DISPLAY_CHANGED)
    1058                         A(EC_STARVATION)
    1059                         A(EC_OLE_EVENT)
    1060                         A(EC_NOTIFY_WINDOW)
    1061                         A(EC_STREAM_CONTROL_STOPPED)
    1062                         A(EC_STREAM_CONTROL_STARTED)
    1063                         A(EC_END_OF_SEGMENT)
    1064                         A(EC_SEGMENT_STARTED)
    1065                         A(EC_LENGTH_CHANGED)
    1066                         A(EC_DEVICE_LOST)
    1067                         A(EC_SAMPLE_NEEDED)
    1068                         A(EC_PROCESSING_LATENCY)
    1069                         A(EC_SAMPLE_LATENCY)
    1070                         A(EC_SCRUB_TIME)
    1071                         A(EC_STEP_COMPLETE)
    1072                         #undef A
    1073                 };
    1074                 for(SIZE_T nIndex = 0; nIndex < DIM(g_pMap); nIndex++)
    1075                         if(g_pMap[nIndex].nEventCode == nEventCode)
    1076                         {
    1077                                 pszName = g_pMap[nIndex].pszName;
    1078                                 return TRUE;
    1079                         }
    1080                 return FALSE;
    1081         }
    10821061        CStringW GetMonikerDisplayName() const
    10831062        {
     
    15601539    STDMETHOD(Notify)(LONG nEventCode, LONG_PTR nParameter1, LONG_PTR nParameter2)
    15611540        {
    1562                 #if TRUE
    1563                         LPCSTR pszEventName = NULL;
    1564                         if(LookupEventCodeName(nEventCode, pszEventName))
    1565                         {
    1566                                 _Z4(atlTraceCOM, 4, _T("nEventCode %hs (0x%02X), nParameter1 0x%p, nParameter2 0x%p\n"), pszEventName, nEventCode, nParameter1, nParameter2);
    1567                         } else
    1568                 #endif
    1569                 _Z4(atlTraceCOM, 4, _T("nEventCode 0x%02X, nParameter1 0x%p, nParameter2 0x%p\n"), nEventCode, nParameter1, nParameter2);
     1541                _Z4(atlTraceCOM, 4, _T("nEventCode %s, nParameter1 0x%p, nParameter2 0x%p\n"), _FilterGraphHelper::FormatEventCode(nEventCode), nParameter1, nParameter2);
    15701542                #if defined(_M_IX86)
    15711543                        // WARN: Guarding section around might be preventing from walknig frame up the stack
     
    15931565                const HRESULT nGetEventResult = m_pInnerMediaEventEx->GetEvent(pnEventCode, pnParameter1, pnParameter2, nTimeout);
    15941566                if(pnEventCode && pnParameter1 && pnParameter2)
    1595                         _Z4(atlTraceCOM, (nGetEventResult != E_ABORT) ? 4 : 5, _T("nGetEventResult 0x%x, *pnEventCode 0x%02X, *pnParameter1 0x%p, *pnParameter2 0x%p\n"), nGetEventResult, *pnEventCode, *pnParameter1, *pnParameter2);
     1567                        _Z4(atlTraceCOM, (nGetEventResult != E_ABORT) ? 4 : 5, _T("nGetEventResult 0x%08X, *pnEventCode %s, *pnParameter1 0x%p, *pnParameter2 0x%p\n"), nGetEventResult, _FilterGraphHelper::FormatEventCode(*pnEventCode), *pnParameter1, *pnParameter2);
    15961568                return nGetEventResult;
    15971569        }
     
    16011573                const HRESULT nWaitForCompletionResult = m_pInnerMediaEventEx->WaitForCompletion(nTimeout, pnEventCode);
    16021574                if(pnEventCode)
    1603                         _Z4(atlTraceCOM, 4, _T("nWaitForCompletionResult 0x%x, *pnEventCode 0x%02X\n"), nWaitForCompletionResult, *pnEventCode);
     1575                        _Z4(atlTraceCOM, 4, _T("nWaitForCompletionResult 0x%08X, *pnEventCode %s\n"), nWaitForCompletionResult, _FilterGraphHelper::FormatEventCode(*pnEventCode));
    16041576                return nWaitForCompletionResult;
    16051577        }
    16061578        STDMETHOD(CancelDefaultHandling)(LONG nEventCode)
    16071579        {
    1608                 #if TRUE
    1609                         LPCSTR pszEventName = NULL;
    1610                         if(LookupEventCodeName(nEventCode, pszEventName))
    1611                         {
    1612                                 _Z4(atlTraceCOM, 4, _T("nEventCode %hs (0x%02X)\n"), pszEventName, nEventCode);
    1613                         } else
    1614                 #endif
    1615                 _Z4(atlTraceCOM, 4, _T("nEventCode 0x%02X\n"), nEventCode);
     1580                _Z4(atlTraceCOM, 4, _T("nEventCode %s\n"), _FilterGraphHelper::FormatEventCode(nEventCode));
    16161581                return m_pInnerMediaEventEx->CancelDefaultHandling(nEventCode);
    16171582        }
    16181583        STDMETHOD(RestoreDefaultHandling)(LONG nEventCode)
    16191584        {
    1620                 #if TRUE
    1621                         LPCSTR pszEventName = NULL;
    1622                         if(LookupEventCodeName(nEventCode, pszEventName))
    1623                         {
    1624                                 _Z4(atlTraceCOM, 4, _T("nEventCode %hs (0x%02X)\n"), pszEventName, nEventCode);
    1625                         } else
    1626                 #endif
    1627                 _Z4(atlTraceCOM, 4, _T("nEventCode 0x%02X\n"), nEventCode);
     1585                _Z4(atlTraceCOM, 4, _T("nEventCode %s\n"), _FilterGraphHelper::FormatEventCode(nEventCode));
    16281586                return m_pInnerMediaEventEx->RestoreDefaultHandling(nEventCode);
    16291587        }
    16301588        STDMETHOD(FreeEventParams)(LONG nEventCode, LONG_PTR nParameter1, LONG_PTR nParameter2)
    16311589        {
    1632                 _Z4(atlTraceCOM, 4, _T("nEventCode 0x%02X, nParameter1 0x%p, nParameter2 0x%p\n"), nEventCode, nParameter1, nParameter2);
     1590                _Z4(atlTraceCOM, 4, _T("nEventCode %s, nParameter1 0x%p, nParameter2 0x%p\n"), _FilterGraphHelper::FormatEventCode(nEventCode), nParameter1, nParameter2);
    16331591                return m_pInnerMediaEventEx->FreeEventParams(nEventCode, nParameter1, nParameter2);
    16341592        }
Note: See TracChangeset for help on using the changeset viewer.