| Previous | Next |
| NS_E_CANNOT_DELETE_ACTIVE_SOURCEGROUP | NS_E_AUDIODEVICE_UNEXPECTED |
NS_E_AUDIODEVICE_BUSY
How to interpret the code in a real encoding session
0xC00D1B61 is named NS_E_AUDIODEVICE_BUSY. Its practical scope is exclusive opening of the selected audio capture endpoint, which belongs to audio capture-device negotiation rather than to every part of Windows Media playback or Windows itself.
Mechanism and point of failure
For a live audio input, the source plug-in must open the selected endpoint and negotiate a WAVEFORMATEX-compatible stream before the source group can be prepared in a session that returns NS_E_AUDIODEVICE_BUSY. Device ownership and format support are independent checks at the audiodevice busy checkpoint.
A device visible in the Encoder UI can still reject the requested format or be exclusively held by another process when the encoding graph is built in a session that returns NS_E_AUDIODEVICE_BUSY. A typical reproduction is: another recorder keeps the capture pin open when Encoder prepares the session. For NS_E_AUDIODEVICE_BUSY, this makes the first result from the Encoder more valuable than a later generic message.
Reproduction matrix
| Field | What to preserve |
|---|---|
| Decisive values | device moniker, process handles or mixer owner, sharing mode and the first open HRESULT |
| Producing object | device moniker and friendly name, process holding the endpoint, WAVEFORMATEX tag, channel count, samples per second, bits per sample, block alignment and source-plug-in HRESULT |
| Session correlation | the same source-group generation, audience index, object identity and callback sequence that produced NS_E_AUDIODEVICE_BUSY |
| Lower-level evidence | the first COM, driver, file-system or codec HRESULT observed before the Encoder mapped the condition to NS_E_AUDIODEVICE_BUSY |
| Controlled comparison | a known-good session that changes only the setting named in the audiodevice busy boundary |
Evidence matrix
| Observation | How to interpret it |
|---|---|
| Observation that supports this result | The decisive evidence is device moniker, process handles or mixer owner, sharing mode and the first open HRESULT. It confirms exclusive opening of the selected audio capture endpoint in the same object generation. |
| Observation that points to an earlier failure | The recorded values satisfy the audiodevice busy 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 (exclusive opening of the selected audio capture endpoint), but a codec, archive or broadcast sink then fails in a subsequent stage. |
| Verification after correction | Apply this isolated change: release the process holding the endpoint or select an independently available input. The original audiodevice busy call should then advance past the same checkpoint. |
The operational impact of NS_E_AUDIODEVICE_BUSY is limited to the audio capture-device negotiation transition that owns exclusive opening of the selected audio capture endpoint. For NS_E_AUDIODEVICE_BUSY, 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 another recorder keeps the capture pin open when Encoder prepares the session, keep the first failing call and its object identity so a later wrapper cannot replace the audiodevice busy evidence.
Minimal experiment
- Record
0xC00D1B61,NS_E_AUDIODEVICE_BUSY, the Encoder version and the exact API call or property access that returned it. - Export the current
.wmeor.prxconfiguration, then capture device moniker, process handles or mixer owner, sharing mode and the first open HRESULT. - For
NS_E_AUDIODEVICE_BUSY, verify the audio capture-device negotiation precondition without changing the source, profile and output sink at the same time. - Run one controlled comparison in which only this condition changes: release the process holding the endpoint or select an independently available input.
- After the change, recreate the affected Encoder object rather than assuming the existing graph discarded its earlier audiodevice busy state.
Do not collapse these results together
| Result | Why it is a different boundary |
|---|---|
NS_E_AUDIODEVICE_UNEXPECTED | audio capture initialization after device discovery but outside a recognized busy or format rejection |
NS_E_AUDIODEVICE_BADFORMAT | negotiation of the requested WAVEFORMATEX with the audio capture device |
NS_E_NO_AUDIODATA | watchdog detects that an opened audio source has stopped delivering samples |
What to change—and what to leave alone
Change the smallest responsible precondition: release the process holding the endpoint or select an independently available input. While retesting NS_E_AUDIODEVICE_BUSY, keep all unrelated source, audience and output values fixed until the same call is repeated.
Do not change the audio driver, sample rate and source plug-in simultaneously; first preserve the exact WAVEFORMATEX and the first open or negotiation HRESULT in a session that returns NS_E_AUDIODEVICE_BUSY.
Authoritative documentation for NS_E_AUDIODEVICE_BUSY
- Retrieving the configured encoder input.
- WAVEFORMATEX structure.
- Preparing a source group for encoding.
- WMEncoder.Start.
Looking for a different code? Search another status or error code.