| Previous | Next |
| NS_E_DRMPROFILE_NOTFOUND | NS_E_NO_AUDIO_TIMECOMPRESSION |
NS_E_INVALID_TIMECODE
How to interpret the code in a real encoding session
0xC00D1BD6 is named NS_E_INVALID_TIMECODE. Its practical scope is parsing or range validation of the configured starting timecode, which belongs to smpte timecode generation and validation rather than to every part of Windows Media playback or Windows itself.
Mechanism and point of failure
Encoder timecode is tied to a video stream, source capabilities and a selected SMPTE mode in a session that returns this result. Device-control time values include frame-rate and frame-count information, while generated timecode adds compatibility constraints for multiple source groups and MBR profiles.
A source can produce video frames but still lack usable device timecode or violate the topology required for generated timecode in a session that returns this result. A typical reproduction is: frame 29 is used in a 25-fps timecode or drop-frame notation is malformed. This makes the first result from the Encoder more valuable than a later generic message.
Reproduction matrix
| Field | What to preserve |
|---|---|
| Decisive values | raw StartingTimecode, frame-rate mode, drop-frame flag and frame component ranges |
| Producing object | EnableTimecode flag, StartingTimecode, SMPTE mode, frame rate, drop-frame setting, source support, source-group count, audience count and first timecode sample |
| 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 invalid timecode boundary |
Evidence matrix
| Observation | How to interpret it |
|---|---|
| Observation that supports it | The decisive evidence is raw StartingTimecode, frame-rate mode, drop-frame flag and frame component ranges. It confirms parsing or range validation of the configured starting timecode in the same object generation. |
| Observation that points to an earlier failure | The recorded values satisfy the invalid timecode 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 (parsing or range validation of the configured starting timecode), but a codec, archive or broadcast sink then fails in a subsequent stage. |
| Verification after correction | Apply this isolated change: supply a valid timecode consistent with the selected SMPTE frame rate. The original invalid timecode call should then advance past the same checkpoint. |
The operational impact of it is limited to the smpte timecode generation and validation transition that owns parsing or range validation of the configured starting timecode. In the representative case where frame 29 is used in a 25-fps timecode or drop-frame notation is malformed, keep the first failing call and its object identity so a later wrapper cannot replace the invalid timecode evidence.
Minimal experiment
- Record
0xC00D1BD6, it, the Encoder version and the exact API call or property access that returned it. - Export the current
.wmeor.prxconfiguration, then capture raw StartingTimecode, frame-rate mode, drop-frame flag and frame component ranges. - verify the smpte timecode generation and validation precondition without changing the source, profile and output sink at the same time.
- Run one controlled comparison in which only this condition changes: supply a valid timecode consistent with the selected SMPTE frame rate.
- After the change, recreate the affected Encoder object rather than assuming the existing graph discarded its earlier invalid timecode state.
Do not collapse these results together
| Result | Why it is a different boundary |
|---|---|
NS_E_NO_SMPTE_WITH_MULTIPLE_SOURCEGROUPS | generated or source timecode is requested in a session with multiple source groups |
NS_E_TIMECODE_REQUIRES_VIDEOSTREAM | timecode generation is enabled in an audio-only profile |
NS_E_INPUT_DOESNOT_SUPPORT_SMPTE | selected source cannot provide the SMPTE timecode requested from it |
What to change—and what to leave alone
Change the smallest responsible precondition: supply a valid timecode consistent with the selected SMPTE frame rate. While retesting it, keep all unrelated source, audience and output values fixed until the same call is repeated.
Do not convert timecode to wall-clock strings before preserving the raw frame count, frame-rate code and drop-frame mode in a session that returns it.
Authoritative documentation
- WMTIMECODE device-control structure.
- WMEncoder.StartingTimecode.
- WMEncoder.EnableTimecode.
- Detecting profile compatibility.
Looking for a different code? Search another status or error code.