IEEE 1394 Streaming Filter Driver Development Concepts (Windows CE 5.0)
For the IEEE 1394 standard, nearly all devices that stream audio/video (A/V) use a predefined set of protocols, including IEC-61883, AV/C, and a device-type specific protocol known as an AV/C subunit. AV/C subunits are standardized command sets for different classes of devices. For example, there is a command set for an AV/C subunit for tuning, one for VCRs, one for on-screen displays, and so on. Any physical device might export any number of AV/C subunits; for example, a camcorder usually exports both a camera subunit and a VCR subunit. These devices all stream A/V data.
To effectively support software, you need to provide a separate device driver for each subunit type that you intend to support. For example, you can provide a driver that is responsible for AV/C tuner subunits, one for AV/C VCR subunits, and so on. As all of the mentioned drivers need to support the ability to manage these A/V streams, Microsoft recommends that you standardize the interface so that the same commands used to initiate a stream on one device function equally well to initiate a stream on another device. If the commands are the same, it follows that the code should also be the same. To avoid replication of code, use the same module to manage this functionality over all of the subunit drivers. On Microsoft® Windows®–based desktop platforms, a DLL usually manages this functionality. In WDM, this functionality is managed using a filter driver.
A filter driver is a particular device driver that allows most commands to pass through, but filters out commands specific to its purpose and takes explicit action on those commands. In WDM, it explicitly filters out and completes high-level application programming interface (API) commands intended to carry out tasks such as starting a stream, sending a frame, and so on.
IEEE 1394 Streaming Filter Driver API
The IEEE 1394 streaming filter driver API definition is low-level and intended primarily for a standardized streaming architecture, such as Microsoft® DirectShow®. The API can still be used directly by an application.
The API works by having high-level drivers merely pass requests that they cannot handle down to lower-level drivers. The highest-level driver in the stack is the subunit driver, which can manipulate a particular AV/C subunit. The next level down in the stack is the streaming filter driver, which can perform streaming actions. Below that stack are AV/C and 61883; these modules do not export I/O control codes (IOCTLs) to applications. All of the IOCTLs for the modules are of type IRP_MJ_INTERNAL_DEVICE_CONTROL. These IOCTLs are not something that an application can send, but are used by the subunit driver and the streaming driver to perform their tasks.
See Also
IEEE 1394 Streaming Filter Driver Architecture | IEEE 1394 Streaming Filter Driver Support in an AV/C Subunit | IEEE 1394 Streaming Filter Driver Use From an Application
Send Feedback on this topic to the authors