| Previous | Next |
| RTC_E_MEDIA_CONTROLLER_STATE | RTC_E_MEDIA_AUDIO_DEVICE_NOT_AVAILABLE |
RTC_E_MEDIA_NEED_TERMINAL
Operational meaning: RTC_E_MEDIA_NEED_TERMINAL
Read this result as an RTC state-machine result: at this point in binding negotiated audio or video streams to media terminals and moving the media controller through legal states, the media stream has no terminal/device bound for the requested direction.
Log this result as 0x80EE0020 in the RTC interface facility 0xEE, not only as a signed decimal; the facility distinguishes local RTC validation from a response status mapped by the stack.
Before changing configuration, enumerate terminals for the media type and record selection/default-device changes; the RTC codes surrounding this result are not equivalent because a negotiated stream can exist without a usable local capture or render terminal.
Signals worth preserving
- Code-specific proof: enumerate terminals for the media type and record selection/default-device changes.
- Correlation key: session and media type.
- Protocol or object snapshot: terminal/device identifier.
- Last completed transition: controller state before and after call.
- Expected output: stream direction and negotiated codec.
Recovery and control flow
The appropriate response to it is not a blanket reconnect. Instead, select and bind a compatible terminal before starting media, while preserving ownership of cleanup and any bounded retry.
Example: An audio call is created on a system where the application never selected a render terminal.
Protocol and object state
| RTC area | RTC media controller and terminal |
|---|---|
| Condition to prove | the media stream has no terminal/device bound for the requested direction |
| Objects to correlate | RTC session, media type, terminal/device, stream direction, controller state, acoustic echo cancellation |
| Safe corrective direction | select and bind a compatible terminal before starting media |
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.
Verification workflow
- Collect enough evidence to enumerate terminals for the media type and record selection/default-device changes.
- Test the competing explanation explicitly, because a negotiated stream can exist without a usable local capture or render terminal.
- Apply the targeted fix — select and bind a compatible terminal before starting media — and validate both protocol completion and object cleanup.
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.
Do not confuse it with
RTC_E_MEDIA_CONTROLLER_STATE | the requested media action is illegal in the current controller state |
|---|---|
RTC_E_START_STREAM | RTC could not move a negotiated stream into the started state |
RTC_E_MEDIA_SESSION_NOT_EXIST | the requested media-session object no longer exists for the RTC signaling session |
Technical references
Looking for a different code? Search another status or error code.
