What does HRESULT 0x80EE0020 (RTC_E_MEDIA_NEED_TERMINAL) mean?

 
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 areaRTC media controller and terminal
Condition to provethe media stream has no terminal/device bound for the requested direction
Objects to correlateRTC session, media type, terminal/device, stream direction, controller state, acoustic echo cancellation
Safe corrective directionselect 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

  1. Collect enough evidence to enumerate terminals for the media type and record selection/default-device changes.
  2. Test the competing explanation explicitly, because a negotiated stream can exist without a usable local capture or render terminal.
  3. 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_STATEthe requested media action is illegal in the current controller state
RTC_E_START_STREAMRTC could not move a negotiated stream into the started state
RTC_E_MEDIA_SESSION_NOT_EXISTthe 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.