| Previous | Next |
| NS_E_NO_PROFILE_IN_SOURCEGROUP | NS_E_VIDCAPSTARTFAILED |
NS_E_VIDEODRIVER_UNSTABLE
How to interpret the code in a real encoding session
0xC00D1B68 is named NS_E_VIDEODRIVER_UNSTABLE. Its practical scope is driver state after an unrecoverable capture failure makes further graph use unsafe, which belongs to video capture and compressor negotiation rather than to every part of Windows Media playback or Windows itself.
Mechanism and point of failure
A live video source passes through device opening, capture-format negotiation, optional clipping and preview-window setup before an encoder codec accepts the frames in a session that returns this result. Width, height, pixel format and driver state belong to this boundary.
Seeing a device in enumeration or obtaining a preview frame does not establish that the requested capture format can be delivered continuously to the encoder in a session that returns this result. A typical reproduction is: the application catches a driver failure and repeatedly calls Start on the damaged graph. This makes the first result from the Encoder more valuable than a later generic message.
Reproduction matrix
| Field | What to preserve |
|---|---|
| Decisive values | first driver error, subsequent errors, device-removal events and whether the same filter instance was reused |
| Producing object | device moniker, driver version, requested and native width/height, frame rate, BITMAPINFOHEADER compression and bit depth, preview state, source-plug-in result and first driver error |
| Session correlation | the same source-group generation, audience index, object identity and callback sequence that produced this result |
| Lower-level evidence | the first COM, driver, file-system or codec HRESULT observed before the Encoder mapped the condition to this result |
| Controlled comparison | a known-good session that changes only the setting named in the videodriver unstable boundary |
Evidence matrix
| Observation | How to interpret it |
|---|---|
| Observation that supports it | The decisive evidence is first driver error, subsequent errors, device-removal events and whether the same filter instance was reused. It confirms driver state after an unrecoverable capture failure makes further graph use unsafe in the same object generation. |
| Observation that points to an earlier failure | The recorded values satisfy the videodriver unstable rule, but a source, driver, COM activation or file operation returns a different HRESULT first. |
| Observation that points to a later failure | The Encoder passes this boundary (driver state after an unrecoverable capture failure makes further graph use unsafe), but a codec, archive or broadcast sink then fails in a subsequent stage. |
| Verification after correction | Apply this isolated change: tear down the capture graph and retest the device in a new process using a native format. The original videodriver unstable call should then advance past the same checkpoint. |
The operational impact of it is limited to the video capture and compressor negotiation transition that owns driver state after an unrecoverable capture failure makes further graph use unsafe. In the representative case where the application catches a driver failure and repeatedly calls Start on the damaged graph, keep the first failing call and its object identity so a later wrapper cannot replace the videodriver unstable evidence.
Minimal experiment
- Record
0xC00D1B68, it, the Encoder version and the exact API call or property access that returned it. - Export the current
.wmeor.prxconfiguration, then capture first driver error, subsequent errors, device-removal events and whether the same filter instance was reused. - verify the video capture and compressor negotiation precondition without changing the source, profile and output sink at the same time.
- Run one controlled comparison in which only this condition changes: tear down the capture graph and retest the device in a new process using a native format.
- After the change, recreate the affected Encoder object rather than assuming the existing graph discarded its earlier videodriver unstable state.
Do not collapse these results together
| Result | Why it is a different boundary |
|---|---|
NS_E_VIDEODEVICE_UNEXPECTED | video device initialization after enumeration where the driver returns an unclassified failure |
NS_E_VIDCAPSTARTFAILED | transition of the configured video capture graph into streaming state |
NS_E_VIDEODEVICE_BUSY | exclusive opening of the selected video capture device or capture pin |
What to change—and what to leave alone
Change the smallest responsible precondition: tear down the capture graph and retest the device in a new process using a native format. While retesting it, keep all unrelated source, audience and output values fixed until the same call is repeated.
Do not keep retrying an unstable capture driver in the same process after preserving the first error; close the graph and test one known-native format in a fresh process in a session that returns it.
Authoritative documentation
- IWMEncVideoSource2.Width and live capture sizing.
- BITMAPINFOHEADER structure.
- ICCompressQuery video-compressor format check.
- Retrieving the configured encoder input.
Looking for a different code? Search another status or error code.
