| Previous | Next |
| VFW_E_MONO_AUDIO_HW | VFW_E_NO_AUDIO_HARDWARE |
VFW_E_NO_DECOMPRESSOR
Exact result and bit fields
VFW_E_NO_DECOMPRESSOR has the unsigned HRESULT value 2147746389 (0x80040255) and the signed 32-bit representation -2147220907. AllStat describes it as “Cannot play back the video stream: no suitable decompressor could be found”. In the operation that produces this result, graph building finds an encoded video stream but cannot locate a decoder that accepts its subtype and produces a renderable output.
The high bit is set, so this value is a failure HRESULT. Its facility field is 4 (FACILITY_ITF) and its low code is 597 (0x0255). These fields classify this result, but they do not identify which filter, thread, device, file or graph generation returned it.
Conditions that can produce it
- Cause 1 for this HRESULT: the required decoder is not installed.
- Cause 2 for this HRESULT: registered decoders reject the stream profile or format block.
- Cause 3 for this HRESULT: merit or architecture rules hide the only compatible decoder.
Contract boundary
This result describes a capability or format boundary in a component graph. Container recognition, elementary-stream parsing, decoder selection, property metadata and renderer acceptance are different stages and need separate evidence.
The practical owner to locate for this HRESULT is the source filter, decoder or codec property provider and downstream connection. When handling this result, capture the native result before a wrapper replaces it with a generic exception, and keep the graph generation or object identity with the record.
Step-by-step diagnosis
- Capture it at the first native return, not only at the top-level playback failure.
- identify the exact graph stage described here: graph building finds an encoded video stream but cannot locate a decoder that accepts its subtype and produces a renderable output.
- compare the live object state, topology and input with the documented interface preconditions.
- Before changing filters, drivers, registry data or media for this HRESULT, collect the code-specific evidence below.
- Test one evidence-backed the correction on the smallest reproducible graph.
- Verify that the corrected run no longer returns it and does not merely replace it with a nearby HRESULT.
Evidence worth preserving
Log the interface and method, filter CLSID and friendly name, process and thread, graph state, connected pin names, media-type summary, renderer or device identity where relevant, and the first preceding HRESULT. Record lengths and hashes instead of raw content when the incident includes media paths, codec configuration, property values and stream metadata.
- Evidence 1 for this HRESULT: input major type, subtype and format block.
- Evidence 2 for this HRESULT: Filter Mapper candidates and rejection HRESULTs.
- Evidence 3 for this HRESULT: process architecture and installed decoder versions.
Correction strategy
- Action 1 for this HRESULT: install or register a compatible decoder through supported deployment.
- Action 2 for this HRESULT: use explicit decoder insertion when policy requires a known component.
- Action 3 for this HRESULT: validate stream profile before playback and report the missing capability.
Example incident
An H.264 file is parsed successfully on a minimal server image, but no decoder accepts the video pin; installing the approved decoder resolves it. This example keeps the diagnosis at the specific the boundary instead of treating every DirectShow failure as a codec reinstall problem.
Retry and recovery
Retry rule for this HRESULT: Retry after decoder availability or stream selection changes; rebuilding an identical graph with the same filter inventory is not a useful retry. A safe it retry must use a changed capability, state, object generation or input. While recovering from it, preserve cancellation and avoid replaying side effects when the original operation may have partially completed.
How it differs from nearby results
VFW_E_UNSUPPORTED_VIDEO can indicate that the video format is unsupported at a broader playback level; it specifically points to absent suitable decoding. Keep those cases separate in telemetry, UI messages and retry policy because their next actions are different.
Implementation notes
Code that handles it should preserve the original HRESULT, the failed stage and an opaque correlation identifier. After it, do not infer success from partial graph construction, and do not continue using interfaces retained from a graph or device generation that has already changed.
Operational remediation for this HRESULT should favor supported component installation, device configuration and documented DirectShow calls. Manual registry or driver changes are appropriate only when the collected evidence for this HRESULT points to that layer and a rollback is available.
Official Microsoft references
- Microsoft: DirectShow error and success codes
- Microsoft: using the Filter Mapper
- Microsoft: overview of DirectShow graph building
Looking for a different code? Search another status or error code.
