| Previous | Next |
| RTC_E_MEDIA_NEED_TERMINAL | RTC_E_MEDIA_VIDEO_DEVICE_NOT_AVAILABLE |
RTC_E_MEDIA_AUDIO_DEVICE_NOT_AVAILABLE
Where the state changes: RTC_E_MEDIA_AUDIO_DEVICE_NOT_AVAILABLE
This result is useful only when preserved with its producing phase; in binding negotiated audio or video streams to media terminals and moving the media controller through legal states, it denotes the chosen audio capture or render device is unavailable to RTC.
The machine-readable identity of this result is 0x80EE0021 in the RTC interface facility 0xEE; the result identity matters because RTC uses separate facilities for API conditions, SIP final responses, and PINT service statuses.
Before changing configuration, capture endpoint identity, direction, device-removal event, exclusive-use state, and format; the RTC codes surrounding this result are not equivalent because device unavailability is local and can coexist with a valid SIP session and SDP negotiation.
Telemetry and packet evidence
- Code-specific proof: capture endpoint identity, direction, device-removal event, exclusive-use state, and format.
- Addressing context: terminal/device identifier.
- RTC callback state: controller state before and after call.
- Transaction boundary: stream direction and negotiated codec.
- Media or profile detail: device removal or format-change event.
Step-by-step isolation
- Confirm the distinction that device unavailability is local and can coexist with a valid
SIPsession andSDPnegotiation. - Start a fresh operation after you select another compatible endpoint or wait for the device to return without rebuilding signaling unnecessarily, and compare its final state with the failing run.
Protocol and object state
| RTC area | RTC media controller and terminal |
|---|---|
| Condition to prove | the chosen audio capture or render device is unavailable to RTC |
| Objects to correlate | RTC session, media type, terminal/device, stream direction, controller state, acoustic echo cancellation |
| Safe corrective direction | select another compatible endpoint or wait for the device to return without rebuilding signaling unnecessarily |
Signaling success does not guarantee that a capture or render device exists or that a media stream can start. AddStream, RemoveStream, hold, and terminal selection change the media state machine and can race with callbacks from the previous operation.
Recovery
Recovery should be narrow: select another compatible endpoint or wait for the device to return without rebuilding signaling unnecessarily; while handling this result, do not let a higher layer simultaneously recreate the same session, registration, listener, or profile.
Example: A USB headset is removed between call acceptance and media start.
Comparison with adjacent codes
RTC_E_START_STREAM | RTC could not move a negotiated stream into the started state |
|---|---|
RTC_E_MEDIA_NEED_TERMINAL | the media stream has no terminal/device bound for the requested direction |
RTC_E_ANOTHER_MEDIA_SESSION_ACTIVE | RTC permits only one active media session for the relevant resource and another session currently owns it |
Actions that do not address this condition
- Do not assume the default Windows device is the terminal selected by the RTC object.
- Do not recreate the entire SIP session before determining whether only a local terminal failed.
Technical references
Looking for a different code? Search another status or error code.
