| Previous | Next |
| VFW_E_SAMPLE_TIME_NOT_SET | VFW_E_NO_TIME_FORMAT_SET |
VFW_E_MEDIA_TIME_NOT_SET
Exact result and bit fields
VFW_E_MEDIA_TIME_NOT_SET has the unsigned HRESULT value 2147746385 (0x80040251) and the signed 32-bit representation -2147220911. AllStat describes it as “No media time stamp has been set for this sample”. In the operation that produces this result, a caller asks an IMediaSample for media start and stop positions when no media-time pair was assigned.
The high bit is set, so this value is a failure HRESULT. Its facility field is 4 (FACILITY_ITF) and its low code is 593 (0x0251). These fields classify this result, but they do not identify which filter, thread, device, file or graph generation returned it.
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.
- Evidence 1 for this HRESULT: GetMediaTime result and sample identity.
- Evidence 2 for this HRESULT: source format and native unit used for media positions.
- Evidence 3 for this HRESULT: transform chain and metadata-copy behavior.
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 this HRESULT 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.
Conditions that can produce it
- Cause 1 for this HRESULT: the parser does not expose source-unit positions.
- Cause 2 for this HRESULT: SetMediaTime was called with null pointers to clear the values.
- Cause 3 for this HRESULT: a sample wrapper preserved presentation time but dropped media time.
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: a caller asks an IMediaSample for media start and stop positions when no media-time pair was assigned.
- 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.
Correction strategy
- Action 1 for this HRESULT: treat media time as optional unless the filter contract requires it.
- Action 2 for this HRESULT: propagate media positions through transforms that preserve source ordering.
- Action 3 for this HRESULT: avoid substituting reference time without a documented conversion.
Example incident
An indexer expects frame numbers from GetMediaTime, but the source only timestamps samples in reference time; changing the indexer contract avoids it. This example keeps the diagnosis at the specific the boundary instead of treating every DirectShow failure as a codec reinstall problem.
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.
Retry and recovery
Retry rule for this HRESULT: Retry when a later sample or corrected producer provides media positions; repeating GetMediaTime on the same unchanged sample will return the same result. 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_SAMPLE_TIME_NOT_SET reports absent presentation timestamps; it reports absent source-media positions. Keep those cases separate in telemetry, UI messages and retry policy because their next actions are different.
Official Microsoft references
- Microsoft: DirectShow error and success codes
- Microsoft: IMediaSample::GetMediaTime
- Microsoft: media samples and allocators
Looking for a different code? Search another status or error code.