DirectShow Filter to Stream Class Minidriver Communication

User-mode DirectShow filters interact with video capture minidrivers using Win32 API DeviceIoControl function calls. These calls are translated by the Stream class interface into stream request blocks (SRBs) and are then sent to video capture minidrivers for processing. There are two categories of SRBs: SRBs that are used for general device-level control, and SRBs that affect an individual stream. The major SRBs for each category are shown in the following table.

FunctionDeviceStream

PropertyWrite

SRB_SET_DEVICE_PROPERTY

SRB_SET_STREAM_PROPERTY

PropertyRead

SRB_GET_DEVICE_PROPERTY

SRB_GET_STREAM_PROPERTY

StreamWrite

None

SRB_WRITE_DATA

StreamRead

None

SRB_READ_DATA

OpenStream

SRB_OPEN_STREAM

None

CloseStream

SRB_CLOSE_STREAM

None

CreateFormat

SRB_GET_DATA_INTERSECTION

None

ChangeStreamState

None

SRB_SET_STREAM_STATE

 

Of the filters that constitute the "front end" of a video capture filter graph, such as the video capture filter, TV/radio tuner filter, TV audio filter, and crossbar filter, only the video capture filter truly participates in kernel streaming. The other filters are used to control device-level property sets in the video capture minidriver itself. Thus, minidrivers that support TV/radio tuning, TV audio, and crossbars do not expose kernel pins for each of their streams. These streams exist only as user-mode constructs to create the graph topology.

 

 

Send comments about this topic to Microsoft

Show:
© 2014 Microsoft