| Previous | Next |
| NS_E_BAD_MARKIN | NS_E_NOMATCHING_MEDIASOURCE |
NS_E_BAD_MARKOUT
Where the Encoder produces this result
0xC00D1B59 (NS_E_BAD_MARKOUT) identifies validation of IWMEncSource.MarkOut against MarkIn and the end of the source. For NS_E_BAD_MARKOUT, the important diagnostic boundary is the Encoder object that validates this state; a later “cannot start encoding” dialog can hide that more precise origin.
Windows Media Encoder builds a timeline for every selected source before samples enter the codec in a session that returns NS_E_BAD_MARKOUT. Mark-in, mark-out, repeat and time-compression settings are therefore validated against the source duration and against each other before encoding begins at the bad markout checkpoint.
What has already succeeded
A file that opens and reports a duration can still fail here because timeline validation happens after source discovery but before the first encoded sample in a session that returns NS_E_BAD_MARKOUT. In a representative bad markout case, a replacement input is shorter than the file used when the .wme session was authored. The NS_E_BAD_MARKOUT observation should be tested at the producing object instead of being treated as a general codec or operating-system failure.
State snapshot to capture
| Field | What to preserve |
|---|---|
| Decisive values | raw MarkIn and MarkOut values, detected duration and whether the source duration changed after relinking |
| Producing object | source-group name, source URL or device moniker, MarkIn and MarkOut in milliseconds, detected duration, Repeat flag, preprocessing mode and encoder state |
| Session correlation | the same source-group generation, audience index, object identity and callback sequence that produced NS_E_BAD_MARKOUT |
| Lower-level evidence | the first COM, driver, file-system or codec HRESULT observed before the Encoder mapped the condition to NS_E_BAD_MARKOUT |
| Controlled comparison | a known-good session that changes only the setting named in the bad markout boundary |
How to read the next observation
| Observation | How to interpret it |
|---|---|
| Observation that supports this result | The decisive evidence is raw MarkIn and MarkOut values, detected duration and whether the source duration changed after relinking. It confirms validation of IWMEncSource.MarkOut against MarkIn and the end of the source in the same object generation. |
| Observation that points to an earlier failure | The recorded values satisfy the bad markout 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 (validation of IWMEncSource.MarkOut against MarkIn and the end of the source), but a codec, archive or broadcast sink then fails in a subsequent stage. |
| Verification after correction | Apply this isolated change: choose a MarkOut later than MarkIn and no later than the actual source duration. The original bad markout call should then advance past the same checkpoint. |
The operational impact of NS_E_BAD_MARKOUT is limited to the source timeline and clipping transition that owns validation of IWMEncSource.MarkOut against MarkIn and the end of the source. For NS_E_BAD_MARKOUT, it does not, by itself, prove that every input is corrupt, every codec is missing or the complete Windows Media installation is unusable. In the representative case where a replacement input is shorter than the file used when the .wme session was authored, keep the first failing call and its object identity so a later wrapper cannot replace the bad markout evidence.
A controlled diagnostic sequence
- Record
0xC00D1B59,NS_E_BAD_MARKOUT, the Encoder version and the exact API call or property access that returned it. - Export the current
.wmeor.prxconfiguration, then capture raw MarkIn and MarkOut values, detected duration and whether the source duration changed after relinking. - For
NS_E_BAD_MARKOUT, verify the source timeline and clipping precondition without changing the source, profile and output sink at the same time. - Run one controlled comparison in which only this condition changes: choose a MarkOut later than MarkIn and no later than the actual source duration.
- After the change, recreate the affected Encoder object rather than assuming the existing graph discarded its earlier bad markout state.
Nearby HRESULTs that mean something else
| Result | Why it is a different boundary |
|---|---|
NS_E_BAD_MARKIN | validation of IWMEncSource.MarkIn before the source timeline is committed |
NS_E_SOURCE_CANNOT_LOOP | Repeat is enabled for a source type that cannot be replayed |
NS_E_MARKIN_UNSUPPORTED | MarkIn or MarkOut clipping is requested for a source type that does not support seeking to marks |
Corrective action at the right layer
For NS_E_BAD_MARKOUT, the focused correction is to choose a MarkOut later than MarkIn and no later than the actual source duration. A retry is useful only after the recorded bad markout precondition changes.
Do not re-encode or trim the only copy of the input while diagnosing the timeline; preserve the original duration and timestamps so the invalid interval can be reproduced in a session that returns NS_E_BAD_MARKOUT.
Technical references for NS_E_BAD_MARKOUT
- IWMEncSource.MarkOut.
- IWMEncSource.Repeat.
- Preparing a source group for encoding.
- Two-pass encoding.
Looking for a different code? Search another status or error code.