17 extern "C" unsigned __int64 __getReg(
int whichReg );
18 #pragma intrinsic(__getReg) 33 #if 0 // This isn't tested yet 35 #elif defined (_IA64_) 37 #define INL_REGID_APITC 3116 38 return __getReg( INL_REGID_APITC );
42 #else // unsupported platform 45 #endif // _X86_/_IA64_ 48 #define DXMPERF_VIDEOREND 0x00000001 49 #define DXMPERF_AUDIOGLITCH 0x00000002 53 #define AUDIOBREAK_BIT 0x00000010 54 #define DXMPERF_AUDIORECV 0x00000020 55 #define DXMPERF_AUDIOSLAVE 0x00000040 56 #define DXMPERF_AUDIOBREAK 0x00000080 58 #define PERFLOG_CTOR( name, iface ) 59 #define PERFLOG_DTOR( name, iface ) 60 #define PERFLOG_DELIVER( name, source, dest, sample, pmt ) 61 #define PERFLOG_RECEIVE( name, source, dest, sample, pmt ) 62 #define PERFLOG_RUN( name, iface, time, oldstate ) 63 #define PERFLOG_PAUSE( name, iface, oldstate ) 64 #define PERFLOG_STOP( name, iface, oldstate ) 65 #define PERFLOG_JOINGRAPH( name, iface, graph ) 66 #define PERFLOG_GETBUFFER( allocator, sample ) 67 #define PERFLOG_RELBUFFER( allocator, sample ) 68 #define PERFLOG_CONNECT( connector, connectee, status, pmt ) 69 #define PERFLOG_RXCONNECT( connector, connectee, status, pmt ) 70 #define PERFLOG_DISCONNECT( disconnector, disconnectee, status ) 72 #define PERFLOG_GETTIME( clock, time ) 86 #define PERFLOG_AUDIOREND( clocktime, sampletime, psample, bytetime, cbytes ) 101 #define PERFLOG_AUDIORECV(StreamTime,SampleStart,SampleStop,Discontinuity,Duration) \ 102 if (PerflogEnableFlags & DXMPERF_AUDIORECV) { \ 103 PERFINFO_WMI_AUDIORECV perfData; \ 104 memset( &perfData, 0, sizeof( perfData ) ); \ 105 perfData.header.Size = sizeof( perfData ); \ 106 perfData.header.Flags = WNODE_FLAG_TRACED_GUID; \ 107 perfData.header.Guid = GUID_AUDIORECV; \ 108 perfData.data.streamTime = StreamTime; \ 109 perfData.data.sampleStart = SampleStart; \ 110 perfData.data.sampleStop = SampleStop; \ 111 perfData.data.discontinuity = Discontinuity; \ 112 perfData.data.hwduration = Duration; \ 113 PerflogTraceEvent((PEVENT_TRACE_HEADER) &perfData); \ 116 #define PERFLOG_AUDIOSLAVE(MasterClock,SlaveClock,ErrorAccum,LastHighErrorSeen,LastLowErrorSeen) \ 117 if (PerflogEnableFlags & DXMPERF_AUDIOSLAVE) { \ 118 PERFINFO_WMI_AUDIOSLAVE perfData; \ 119 memset( &perfData, 0, sizeof( perfData ) ); \ 120 perfData.header.Size = sizeof( perfData ); \ 121 perfData.header.Flags = WNODE_FLAG_TRACED_GUID; \ 122 perfData.header.Guid = GUID_AUDIOSLAVE; \ 123 perfData.data.masterClock = MasterClock; \ 124 perfData.data.slaveClock = SlaveClock; \ 125 perfData.data.errorAccum = ErrorAccum; \ 126 perfData.data.lastHighErrorSeen = LastHighErrorSeen;\ 127 perfData.data.lastLowErrorSeen = LastLowErrorSeen; \ 128 PerflogTraceEvent((PEVENT_TRACE_HEADER) &perfData); \ 131 #define PERFLOG_AUDIOADDBREAK(IterNextWrite,OffsetNextWrite,IterWrite,OffsetWrite) \ 132 if (PerflogEnableFlags & DXMPERF_AUDIOBREAK) { \ 133 PERFINFO_WMI_AUDIOADDBREAK perfData; \ 134 memset( &perfData, 0, sizeof( perfData ) ); \ 135 perfData.header.Size = sizeof( perfData ); \ 136 perfData.header.Flags = WNODE_FLAG_TRACED_GUID; \ 137 perfData.header.Guid = GUID_AUDIOADDBREAK; \ 138 perfData.data.iterNextWrite = IterNextWrite; \ 139 perfData.data.offsetNextWrite = OffsetNextWrite; \ 140 perfData.data.iterWrite = IterWrite; \ 141 perfData.data.offsetWrite = OffsetWrite; \ 142 PerflogTraceEvent((PEVENT_TRACE_HEADER) &perfData); \ 145 #define PERFLOG_VIDEOREND( sampletime, clocktime, psample ) \ 146 if (PerflogEnableFlags & DXMPERF_VIDEOREND) { \ 147 PERFINFO_WMI_AVREND perfData; \ 148 memset( &perfData, 0, sizeof( perfData ) ); \ 149 perfData.header.Size = sizeof( perfData ); \ 150 perfData.header.Flags = WNODE_FLAG_TRACED_GUID; \ 151 perfData.header.Guid = GUID_VIDEOREND; \ 152 perfData.data.cycleCounter = _RDTSC(); \ 153 perfData.data.dshowClock = (clocktime); \ 154 perfData.data.sampleTime = (sampletime); \ 155 PerflogTraceEvent ((PEVENT_TRACE_HEADER) &perfData); \ 158 #define PERFLOG_AUDIOGLITCH( instance, glitchtype, currenttime, previoustime ) \ 159 if (PerflogEnableFlags & DXMPERF_AUDIOGLITCH) { \ 160 PERFINFO_WMI_AUDIOGLITCH perfData; \ 161 memset( &perfData, 0, sizeof( perfData ) ); \ 162 perfData.header.Size = sizeof( perfData ); \ 163 perfData.header.Flags = WNODE_FLAG_TRACED_GUID; \ 164 perfData.header.Guid = GUID_DSOUNDGLITCH; \ 165 perfData.data.cycleCounter = _RDTSC(); \ 166 perfData.data.glitchType = (glitchtype); \ 167 perfData.data.sampleTime = (currenttime); \ 168 perfData.data.previousTime = (previoustime); \ 169 perfData.data.instanceId = (instance); \ 170 PerflogTraceEvent ((PEVENT_TRACE_HEADER) &perfData); \ 173 #define PERFLOG_FRAMEDROP( sampletime, clocktime, psample, renderer ) 206 #define PERFLOG_AUDIOBREAK( nextwrite, writepos, msecs ) \ 207 if (PerflogEnableFlags & AUDIOBREAK_BIT) { \ 208 PERFINFO_WMI_AUDIOBREAK perfData; \ 209 memset( &perfData, 0, sizeof( perfData ) ); \ 210 perfData.header.Size = sizeof( perfData ); \ 211 perfData.header.Flags = WNODE_FLAG_TRACED_GUID; \ 212 perfData.header.Guid = GUID_AUDIOBREAK; \ 213 perfData.data.cycleCounter = _RDTSC(); \ 214 perfData.data.dshowClock = (writepos); \ 215 perfData.data.sampleTime = (nextwrite); \ 216 perfData.data.sampleDuration = (msecs); \ 217 PerflogTraceEvent ((PEVENT_TRACE_HEADER) &perfData); \ 225 ULONGLONG DShowClock,
235 memset( &perfData, 0,
sizeof( perfData ) );
236 perfData.
header.Size =
sizeof( perfData );
237 perfData.
header.Flags = WNODE_FLAG_TRACED_GUID;
238 perfData.
header.Guid = GUID_STREAMTRACE;
250 #endif // _DXMPERF_H_
ULONG(__stdcall *_RegisterTraceGuids)(__in IN WMIDPREQUEST RequestAddress
VOID PerflogTraceEvent(__in PEVENT_TRACE_HEADER Event)
VOID PERFLOG_STREAMTRACE(ULONG Level, ULONG Id, ULONGLONG DShowClock, ULONGLONG Data1, ULONGLONG Data2, ULONGLONG Data3, ULONGLONG Data4)
PERFINFO_DSHOW_STREAMTRACE data
EVENT_TRACE_HEADER header