Indicates whether a media source supports hardware data flow.

Data type

BOOL stored as UINT32


This attribute is used when a media source proxies a hardware device and is able to transfer data downstream over a hardware bus, without sending data up to the CPU. For example, a webcam might deliver H.264-encoded video directly to an integrated hardware decoder.

In this scenario, the source and decoder are still represented in the Microsoft Media Foundation by a media source object and a Media Foundation transform (MFT). However, no data flows between these two objects at the pipeline layer, only at the hardware layer, as shown in the following diagram.

A diagram that shows a hardware proxy source.

The connection between the media source and the MFT is negotiated as follows.

  1. The pipeline queries the media source for the IMFMediaSourceEx interface. (This interface is optional for media sources to support.)
  2. The pipeline calls IMFMediaSourceEx::GetStreamAttributes to get an IMFAttributes pointer.
  3. The pipeline queries for the MF_SOURCE_STREAM_SUPPORTS_HW_CONNECTION attribute. If the attribute is present and equal to TRUE, the media source supports hardware connections.
  4. The pipeline checks if the MFT is also a hardware proxy, by checking for the MFT_ENUM_HARDWARE_URL_Attribute attribute on the MFT. For details, see Hardware MFTs.
  5. The pipeline sets the MFT_CONNECTED_STREAM_ATTRIBUTE attribute on the MFT. The value of this attribute is the IMFAttribute pointer obtained from the media source in step 2.
  6. The pipeline sets the MFT_CONNECTED_TO_HW_STREAM attribute to TRUE on both the media source and the MFT.


Minimum supported client

Windows 8 [desktop apps | Windows Store apps]

Minimum supported server

Windows Server 2012 [desktop apps | Windows Store apps]



See also

Alphabetical List of Media Foundation Attributes
Hardware MFTs