Ignore:
Timestamp:
Sep 6, 2014, 12:46:49 AM (8 years ago)
Author:
roman
Message:

Print clocks on the filter graph report/text

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/DirectShowSpy/FilterGraphHelper.h

    r322 r325  
    32053205                }
    32063206                #pragma endregion
     3207                #pragma region Clock
     3208                {
     3209                        sText += AtlFormatString(_T("## ") _T("Clock") _T("\r\n") _T("\r\n"));
     3210                        CComPtr<IReferenceClock> pCurrentReferenceClock;
     3211                        _ATLTRY
     3212                        {
     3213                                const CComQIPtr<IMediaFilter> pMediaFilter = pFilterGraph;
     3214                                if(pMediaFilter)
     3215                                        __C(pMediaFilter->GetSyncSource(&pCurrentReferenceClock));
     3216                        }
     3217                        _ATLCATCHALL()
     3218                        {
     3219                                _Z_EXCEPTION();
     3220                        }
     3221                        CStringW sCurrentName;
     3222                        for(auto&& pBaseFilter: FilterArray)
     3223                        {
     3224                                const CComQIPtr<IReferenceClock> pReferenceClock = pBaseFilter;
     3225                                if(!pReferenceClock)
     3226                                        continue;
     3227                                const CStringW sName = _FilterGraphHelper::GetFilterName(pBaseFilter);
     3228                                CRoArrayT<CString> Array;
     3229                                _ATLTRY
     3230                                {
     3231                                        if(pCurrentReferenceClock == pReferenceClock)
     3232                                        {
     3233                                                sCurrentName = sName;
     3234                                                Array.Add(_T("Current"));
     3235                                        }
     3236                                        Array.Add(I(pReferenceClock));
     3237                                        REFERENCE_TIME nTime = 0;
     3238                                        __C(pReferenceClock->GetTime(&nTime));
     3239                                        Array.Add(I(_FilterGraphHelper::FormatReferenceTime(nTime)));
     3240                                        Array.Add(I(AtlFormatString(_T("0x%I64X"), nTime)));
     3241                                }
     3242                                _ATLCATCHALL()
     3243                                {
     3244                                        _Z_EXCEPTION();
     3245                                }
     3246                                sText += AtlFormatString(_T(" * ") _T("%s (%s)") _T("\r\n"), I(sName), _StringHelper::Join(Array, _T(", ")));
     3247                        }
     3248                        if(pCurrentReferenceClock)
     3249                        {
     3250                                if(sCurrentName.IsEmpty())
     3251                                {
     3252                                        CRoArrayT<CString> Array;
     3253                                        _ATLTRY
     3254                                        {
     3255                                                Array.Add(I(pCurrentReferenceClock));
     3256                                                REFERENCE_TIME nTime = 0;
     3257                                                __C(pCurrentReferenceClock->GetTime(&nTime));
     3258                                                Array.Add(I(_FilterGraphHelper::FormatReferenceTime(nTime)));
     3259                                                Array.Add(I(AtlFormatString(_T("0x%I64X"), nTime)));
     3260                                        }
     3261                                        _ATLCATCHALL()
     3262                                        {
     3263                                                _Z_EXCEPTION();
     3264                                        }
     3265                                        sText += AtlFormatString(_T(" * ") _T("Current: External (%s)") _T("\r\n"), _StringHelper::Join(Array, _T(", ")));
     3266                                }
     3267                        } else
     3268                                sText += AtlFormatString(_T(" * ") _T("Current: None") _T("\r\n"));
     3269                        sText += _T("\r\n");
     3270                }
     3271                #pragma endregion
    32073272                return sText;
    32083273        }
Note: See TracChangeset for help on using the changeset viewer.