PERFINFO_DSHOW_STREAMTRACE structure

[The feature associated with this page, DirectShow, is a legacy feature. It has been superseded by MediaPlayer, IMFMediaEngine, and Audio/Video Capture in Media Foundation. Those features have been optimized for Windows 10 and Windows 11. Microsoft strongly recommends that new code use MediaPlayer, IMFMediaEngine and Audio/Video Capture in Media Foundation instead of DirectShow, when possible. Microsoft suggests that existing code that uses the legacy APIs be rewritten to use the new APIs if possible.]

The PERFINFO_DSHOW_STREAMTRACE structure contains data for a DirectShow trace event of type GUID_STREAMTRACE.

Syntax

typedef struct _PERFINFO_DSHOW_STREAMTRACE {
  ULONG     id;
  ULONG     reserved;
  ULONGLONG dshowClock;
  ULONGLONG data[4];
} PERFINFO_DSHOW_STREAMTRACE, *PPERFINFO_DSHOW_STREAMTRACE;

Members

id

Event identifier. See Remarks.

reserved

Reserved. Set to zero.

dshowClock

Stream time for this event, in 100-nanosecond units. This value is optional and can be zero.

data

Optional event data consisting of four ULONGLONG values. The meaning of this data depends on the event identifier.

Remarks

The following event identifiers are defined.

Event identifier Description
PERFINFO_STREAMTRACE_MPEG2DEMUX_PTS_TRANSLATION Logged when the MPEG-2 Demultiplexer filter converts a presentation time stamp (PTS) to stream time.
  • data[0]: Converted start time.
  • data[1]: Converted stop time.
  • data[2]. Stream identifier for the input pin.
  • data[3]: PTS that was converted.
PERFINFO_STREAMTRACE_MPEG2DEMUX_SAMPLE_RECEIVE Logged when MPEG-2 Demultiplexer receives a sample.
PERFINFO_STREAMTRACE_VMR_BEGIN_ADVISE Logged when the VMR schedules a sample for rendering, immediately before the VMR calls IReferenceClock::AdviseTime.
  • data[0]: Reference time when streaming began, which corresponds to stream time zero.
PERFINFO_STREAMTRACE_VMR_BEGIN_DECODE Logged when the VMR begins a decoding operation—that is, when the decoder calls IAMVideoAccelerator::BeginFrame. No event data.
PERFINFO_STREAMTRACE_VMR_BEGIN_DEINTERLACE Logged when the VMR begins a deinterlacing or video compositing operation. No event data.
PERFINFO_STREAMTRACE_VMR_DROPPED_FRAME Logged when the VMR drops a frame; for example, if a sample was late.
  • data[0]: Sample start time.
  • data[1]: Sample end time.
PERFINFO_STREAMTRACE_VMR_END_ADVISE Logged when the VMR receives an advise notification from the reference clock. No event data.
PERFINFO_STREAMTRACE_VMR_END_DECODE Logged when the VMR ends a decoding operation—that is, when the decoder calls IAMVideoAccelerator::EndFrame. No event data.
PERFINFO_STREAMTRACE_VMR_END_DEINTERLACE Logged when the VMR completes a deinterlacing or video compositing operation. No event data.
PERFINFO_STREAMTRACE_VMR_RECEIVE Logged when the VMR receives a new sample. No event data.
PERFINFO_STREAMTRACE_VMR_RENDER_TIME Logged when the VMR finishes rendering a frame.
  • data[0]: Time that it took to render this frame.
  • data[1]: Running average of frame rendering times.

 

To log this event from a DirectShow filter, use the PERFLOG_STREAMTRACE function, which is defined in the header file Dxmperf.h. This header is included in the DirectShow base classes.

Requirements

Requirement Value
Header
Perfstruct.h

See also

DirectShow Structures

Event Tracing in DirectShow

Trace Event GUIDs