Site icon EfmSoft

What does HRESULT 0x80040264 (VFW_E_BUFFER_UNDERFLOW) mean?

 
Previous Next
VFW_E_READ_ONLY VFW_E_UNSUPPORTED_STREAM

VFW_E_BUFFER_UNDERFLOW

Exact result and bit fields

VFW_E_BUFFER_UNDERFLOW has the unsigned HRESULT value 2147746404 (0x80040264) and the signed 32-bit representation -2147220892. AllStat describes it as “The buffer is not full enough”. In the operation that produces this result, a buffering component cannot satisfy an operation because too little data has accumulated.

The high bit is set, so this value is a failure HRESULT. Its facility field is 4 (FACILITY_ITF) and its low code is 612 (0x0264). 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

Contract boundary

This result occurs in the data-delivery and timing contract between DirectShow filters. Reference time, media time, sample flags, buffering and seeking formats are separate metadata channels and must not be substituted for one another without an explicit conversion.

The practical owner to locate for it is the first producer of the sample or seeking state and the immediate consumer. 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

  1. Capture it at the first native return, not only at the top-level playback failure.
  2. identify the exact graph stage described here: a buffering component cannot satisfy an operation because too little data has accumulated.
  3. compare the live object state, topology and input with the documented interface preconditions.
  4. Before changing filters, drivers, registry data or media for it, collect the code-specific evidence below.
  5. Test one evidence-backed the correction on the smallest reproducible graph.
  6. 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 timestamps, media positions, source identifiers and sample payload details.

Correction strategy

Example incident

A network source starts immediately with only one packet buffered and starves on the first decode request; enforcing preroll prevents 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 it: Retry when additional data arrives or playback demand is reduced; use bounded backoff and cancellation rather than a tight loop. 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_TIMEOUT reports an elapsed deadline, whereas it reports an insufficient current data level that may recover as data arrives. 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 it should favor supported component installation, device configuration and documented DirectShow calls. Manual registry or driver changes are appropriate only when the collected evidence for it points to that layer and a rollback is available.

Official Microsoft references


Looking for a different code? Search another status or error code.

Exit mobile version