- After a successful UVC 1.5 H.264 COMMIT, usbvideo.sys will not issue Encoding Unit requests or SET_INTERFACE alt=1 if the negotiated stream cannot be validated as a usable Media Foundation capture stream. Typical reasons include:
- The negotiated frame interval or capabilities do not match what the driver and Media Foundation expect for the advertised H.264 profile/level and usage.
- The device’s H.264 capabilities (as exposed via the H.264 UVC extensions) do not conform to the Microsoft H.264 UVC extensions that usbvideo.sys is designed to work with.
- The device does not present itself correctly as a color or sensor camera, or required registry/BOS configuration for camera type and DMFT chain is missing or inconsistent.
- The validation is done at the UVC/Media Foundation boundary, where the driver translates the negotiated UVC H.264 format into an internal media type (which includes the equivalent of KS_H264VIDEOINFO). If that translation fails, the stack will not proceed to open the isochronous alternate setting. The documentation indicates:
- The UVC class driver discovers H.264 features, negotiates the session, and streams H.264 payloads only if the device firmware follows the Microsoft H.264 UVC guidelines.
- For H.264 cameras, the firmware must implement video streaming according to the Microsoft H.264/MPEG‑4 video class driver specification and the proposed H.264 UVC extensions.
- Verify the H.264 descriptors and controls strictly match the Microsoft H.264 UVC specification (including profile/level, capabilities, and frame intervals) and the example constrained‑baseline 720p configuration.
- Run the HLK “Camera Driver Test – UVC Test 1” and the H.264 camera tests (such as “MultiCamera Preview, Record H.264 Video and AAC Audio”). These tests validate that the camera and driver are compatible with Windows Media Foundation and will surface failures such as no samples produced, failure to enter run state, or timeouts.
- Use the HLK troubleshooting guidance to interpret errors like MF_E_HW_MFT_FAILED_START_STREAMING or MF_E_SINK_NO_SAMPLES_PROCESSED, which indicate that the device did not successfully enter the run state or did not deliver valid samples.
- Windows supports H.264 UVC cameras through the inbox UVC driver starting with Windows 8, and the driver can stream H.264 payloads from a camera without requiring a proprietary driver, provided the firmware follows the Microsoft H.264 UVC specification. The documentation does not state that a raw (NV12/YUY2) format is required alongside H.264 for preview; instead, it emphasizes that:
- The inbox UVC driver supports H.264 streaming and uses Media Foundation for encoding/decoding.
- H.264 cameras must implement the Microsoft H.264 UVC extensions correctly so that usbvideo.sys can discover capabilities, negotiate the session, and stream.
References: