> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes. # SelfParticipant > The local participant in a call, with additional device and media control. `SelfParticipant` is the local user's view of themselves on a call. It extends [`Participant`](/docs/browser-sdk/v4/reference/participant) — inheriting every remote-side observable and control method — and adds the local-only surface area: device selection, screen sharing, the local `MediaStream`, and the per-call [`SelfCapabilities`](/docs/browser-sdk/v4/reference/self-capabilities) that gate which controls the server allows. Instances are created by the call on join and obtainable via [`call.self$`](/docs/browser-sdk/v4/reference/webrtc-call/self\$). Device-related methods (`selectAudio*`, `selectVideo*`, `addAudioInputDevice`, `disableVideoInput`, etc.) update the local capture and renegotiate the peer connection automatically. Screen-share methods (`startScreenShare`, `stopScreenShare`) acquire a `getDisplayMedia` track, publish it to the call, and update [`screenShareStatus$`](#screen-share-status\$) accordingly. Media-processing toggles (`setAutoGainControl`, `setEchoCancellation`, `setNoiseSuppression`) modify the active audio track in place. For checking whether a given action is permitted before exposing it in the UI, read [`capabilities`](#capabilities) (the underlying [`SelfCapabilities`](/docs/browser-sdk/v4/reference/self-capabilities) instance, which itself exposes each capability as both a snapshot and an observable). ## **Extends** * [`Participant`](/docs/browser-sdk/v4/reference/participant) ## **Implements** * [`CallSelfParticipant`](/docs/browser-sdk/v4/reference/interfaces/call-self-participant) ## **Properties** **`capabilities`** `SelfCapabilities` Capabilities for this participant. Contains all capability flags as both observables and values. --- **`id`** `string` — required Unique member ID of this participant. --- ## **Accessors** #### [addressId\$](/docs/browser-sdk/v4/reference/self-participant/address-id\$) Observable of the participant's address ID. #### [audioMuted\$](/docs/browser-sdk/v4/reference/self-participant/audio-muted\$) Observable indicating whether the participant's audio is muted. #### [autoGain\$](/docs/browser-sdk/v4/reference/self-participant/auto-gain\$) Observable indicating whether auto-gain control is enabled. #### [callId](/docs/browser-sdk/v4/reference/self-participant/call-id) Call ID for this participant's leg, or `undefined` if not available. #### [deaf\$](/docs/browser-sdk/v4/reference/self-participant/deaf\$) Observable indicating whether the participant is deafened. #### [denoise\$](/docs/browser-sdk/v4/reference/self-participant/denoise\$) Observable indicating whether noise reduction is active. #### [destroyed\$](/docs/browser-sdk/v4/reference/self-participant/destroyed\$) Observable that emits when the instance is destroyed #### [echoCancellation\$](/docs/browser-sdk/v4/reference/self-participant/echo-cancellation\$) Observable indicating whether echo cancellation is enabled. #### [handraised\$](/docs/browser-sdk/v4/reference/self-participant/handraised\$) Observable indicating whether the participant has raised their hand. #### [inputSensitivity\$](/docs/browser-sdk/v4/reference/self-participant/input-sensitivity\$) Observable of the **conference-only** microphone energy/gate sensitivity level for this member. #### [inputVolume\$](/docs/browser-sdk/v4/reference/self-participant/input-volume\$) Observable of the participant's **server-side** microphone input volume as reported by the mix engine. #### [isAudience](/docs/browser-sdk/v4/reference/self-participant/is-audience) Whether the participant is an audience member (view-only). #### [isTalking\$](/docs/browser-sdk/v4/reference/self-participant/is-talking\$) Observable indicating whether the participant is currently speaking. #### [lowbitrate\$](/docs/browser-sdk/v4/reference/self-participant/lowbitrate\$) Observable indicating whether low-bitrate mode is active. #### [meta\$](/docs/browser-sdk/v4/reference/self-participant/meta\$) Observable of custom metadata for this participant. #### [name\$](/docs/browser-sdk/v4/reference/self-participant/name\$) Observable of the participant's display name. #### [nodeId\$](/docs/browser-sdk/v4/reference/self-participant/node-id\$) Observable of the server node ID for this participant. #### [noiseSuppression\$](/docs/browser-sdk/v4/reference/self-participant/noise-suppression\$) Observable indicating whether noise suppression is enabled. #### [outputVolume\$](/docs/browser-sdk/v4/reference/self-participant/output-volume\$) Observable of the participant's **server-side** speaker output volume as reported by the mix engine (FreeSWITCH channel write volume). #### [position\$](/docs/browser-sdk/v4/reference/self-participant/position\$) Observable of the participant's layout position. #### [screenShareStatus\$](/docs/browser-sdk/v4/reference/self-participant/screen-share-status\$) Observable of the current screen share status. #### [studioAudio\$](/docs/browser-sdk/v4/reference/self-participant/studio-audio\$) Observable indicating whether studio audio (raw/unprocessed audio) mode is enabled. #### [target](/docs/browser-sdk/v4/reference/self-participant/target) The member's own RPC target triple. Throws `ParticipantNotReadyError` until the member's call context has been received. #### [type\$](/docs/browser-sdk/v4/reference/self-participant/type\$) Observable of the participant type (e.g. `'member'`, `'screen'`). #### [userId\$](/docs/browser-sdk/v4/reference/self-participant/user-id\$) Observable of the participant's user ID. #### [videoMuted\$](/docs/browser-sdk/v4/reference/self-participant/video-muted\$) Observable indicating whether the participant's video is muted. #### [visible\$](/docs/browser-sdk/v4/reference/self-participant/visible\$) Observable indicating whether the participant is visible in the layout. ## **Methods** #### [addAdditionalDevice](/docs/browser-sdk/v4/reference/self-participant/add-additional-device) Adds an additional media input device to the call. #### [addAudioInputDevice](/docs/browser-sdk/v4/reference/self-participant/add-audio-input-device) Adds or replaces the primary audio input device with optional constraints or stream. #### [addInputDevices](/docs/browser-sdk/v4/reference/self-participant/add-input-devices) Adds or replaces primary input devices (audio and/or video). #### [addVideoInputDevice](/docs/browser-sdk/v4/reference/self-participant/add-video-input-device) Adds or replaces the primary video input device with optional constraints or stream. #### [destroy](/docs/browser-sdk/v4/reference/self-participant/destroy) Destroys the participant, releasing all subscriptions and references. #### [disableStudioAudio](/docs/browser-sdk/v4/reference/self-participant/disable-studio-audio) Disables studio audio mode by restoring all audio processing to enabled. Sets echoCancellation, noiseSuppression, and autoGainControl to true. #### [enableStudioAudio](/docs/browser-sdk/v4/reference/self-participant/enable-studio-audio) Enables studio audio mode by disabling all audio processing. Sets echoCancellation, noiseSuppression, and autoGainControl to false. #### [end](/docs/browser-sdk/v4/reference/self-participant/end) Ends the call for this participant. #### [mute](/docs/browser-sdk/v4/reference/self-participant/mute) Mutes local audio. Falls back to local device mute if the server RPC fails. #### [muteVideo](/docs/browser-sdk/v4/reference/self-participant/mute-video) Mutes local video. Falls back to local device mute if the server RPC fails. #### [remove](/docs/browser-sdk/v4/reference/self-participant/remove) Removes this participant from the call. #### [removeAdditionalDevice](/docs/browser-sdk/v4/reference/self-participant/remove-additional-device) Removes an additional media input device by ID. #### [selectAudioInputDevice](/docs/browser-sdk/v4/reference/self-participant/select-audio-input-device) Selects the audio input device for future calls. Optionally saves as a preference. #### [selectAudioOutputDevice](/docs/browser-sdk/v4/reference/self-participant/select-audio-output-device) Selects the audio output device. Optionally saves as a preference. #### [selectVideoInputDevice](/docs/browser-sdk/v4/reference/self-participant/select-video-input-device) Selects the video input device for future calls. Optionally saves as a preference. #### [setAudioInputDeviceConstraints](/docs/browser-sdk/v4/reference/self-participant/set-audio-input-device-constraints) Updates the audio input track constraints for the active call. #### [setAudioInputSensitivity](/docs/browser-sdk/v4/reference/self-participant/set-audio-input-sensitivity) Adjusts the **conference-only** microphone energy gate / sensitivity level for this member. #### [setAudioInputVolume](/docs/browser-sdk/v4/reference/self-participant/set-audio-input-volume) Sets the **server-side** microphone volume on this participant's bridged call leg. #### [setAudioOutputVolume](/docs/browser-sdk/v4/reference/self-participant/set-audio-output-volume) Sets the **server-side** speaker volume on this participant's bridged call leg (FreeSWITCH channel write volume) — what this participant hears from the mix before it reaches their client. #### [setInputDevicesConstraints](/docs/browser-sdk/v4/reference/self-participant/set-input-devices-constraints) Updates both audio and video input track constraints for the active call. #### [setMeta](/docs/browser-sdk/v4/reference/self-participant/set-meta) Replaces custom metadata for this participant. #### [setPosition](/docs/browser-sdk/v4/reference/self-participant/set-position) Sets the participant's position in the video layout. #### [setVideoInputDeviceConstraints](/docs/browser-sdk/v4/reference/self-participant/set-video-input-device-constraints) Updates the video input track constraints for the active call. #### [startScreenShare](/docs/browser-sdk/v4/reference/self-participant/start-screen-share) Starts sharing the local screen. #### [stopScreenShare](/docs/browser-sdk/v4/reference/self-participant/stop-screen-share) Stops the current screen share. #### [toggleAudioInputAutoGain](/docs/browser-sdk/v4/reference/self-participant/toggle-audio-input-auto-gain) Toggles automatic gain control. Exits studio mode if active. #### [toggleDeaf](/docs/browser-sdk/v4/reference/self-participant/toggle-deaf) Toggles the deafened state (mutes/unmutes incoming audio). #### [toggleEchoCancellation](/docs/browser-sdk/v4/reference/self-participant/toggle-echo-cancellation) Toggles echo cancellation. Exits studio mode if active. #### [toggleHandraise](/docs/browser-sdk/v4/reference/self-participant/toggle-handraise) Toggles the hand-raised state. #### [toggleLowbitrate](/docs/browser-sdk/v4/reference/self-participant/toggle-lowbitrate) `Participant`.`toggleLowbitrate` #### [toggleMute](/docs/browser-sdk/v4/reference/self-participant/toggle-mute) Toggles the participant's audio mute state. #### [toggleMuteVideo](/docs/browser-sdk/v4/reference/self-participant/toggle-mute-video) Toggles the participant's video mute state. #### [toggleNoiseSuppression](/docs/browser-sdk/v4/reference/self-participant/toggle-noise-suppression) Toggles noise suppression. Exits studio mode if active. #### [unmute](/docs/browser-sdk/v4/reference/self-participant/unmute) Unmutes local audio. Falls back to local device unmute if the server RPC fails. #### [unmuteVideo](/docs/browser-sdk/v4/reference/self-participant/unmute-video) Unmutes local video. Falls back to local device unmute if the server RPC fails. #### [updateMeta](/docs/browser-sdk/v4/reference/self-participant/update-meta) Merges values into custom metadata (unlike setMeta which replaces). > The local participant in a call, with additional device and media control. ## Docs - [addAdditionalDevice](https://signalwire.com/docs/browser-sdk/reference/self-participant/add-additional-device.md): Adds an additional media input device to the call. - [addAudioInputDevice](https://signalwire.com/docs/browser-sdk/reference/self-participant/add-audio-input-device.md): Adds or replaces the primary audio input device with optional constraints or stream. - [addInputDevices](https://signalwire.com/docs/browser-sdk/reference/self-participant/add-input-devices.md): Adds or replaces primary input devices (audio and/or video). - [addressId$](https://signalwire.com/docs/browser-sdk/reference/self-participant/address-id$.md): Observable of the participant's address ID. - [addVideoInputDevice](https://signalwire.com/docs/browser-sdk/reference/self-participant/add-video-input-device.md): Adds or replaces the primary video input device with optional constraints or stream. - [audioMuted$](https://signalwire.com/docs/browser-sdk/reference/self-participant/audio-muted$.md): Observable indicating whether the participant's audio is muted. - [autoGain$](https://signalwire.com/docs/browser-sdk/reference/self-participant/auto-gain$.md): Observable indicating whether auto-gain control is enabled. - [callId](https://signalwire.com/docs/browser-sdk/reference/self-participant/call-id.md): Call ID for this participant's leg, or undefined if not available. - [deaf$](https://signalwire.com/docs/browser-sdk/reference/self-participant/deaf$.md): Observable indicating whether the participant is deafened. - [denoise$](https://signalwire.com/docs/browser-sdk/reference/self-participant/denoise$.md): Observable indicating whether noise reduction is active. - [destroy](https://signalwire.com/docs/browser-sdk/reference/self-participant/destroy.md): Destroys the participant, releasing all subscriptions and references. - [destroyed$](https://signalwire.com/docs/browser-sdk/reference/self-participant/destroyed$.md): Observable that emits when the instance is destroyed - [disableStudioAudio](https://signalwire.com/docs/browser-sdk/reference/self-participant/disable-studio-audio.md): Disables studio audio mode by restoring all audio processing to enabled. - [echoCancellation$](https://signalwire.com/docs/browser-sdk/reference/self-participant/echo-cancellation$.md): Observable indicating whether echo cancellation is enabled. - [enableStudioAudio](https://signalwire.com/docs/browser-sdk/reference/self-participant/enable-studio-audio.md): Enables studio audio mode by disabling all audio processing. - [end](https://signalwire.com/docs/browser-sdk/reference/self-participant/end.md): Ends the call for this participant. - [handraised$](https://signalwire.com/docs/browser-sdk/reference/self-participant/handraised$.md): Observable indicating whether the participant has raised their hand. - [inputSensitivity$](https://signalwire.com/docs/browser-sdk/reference/self-participant/input-sensitivity$.md): Observable of the conference-only microphone energy/gate sensitivity level for this member. - [inputVolume$](https://signalwire.com/docs/browser-sdk/reference/self-participant/input-volume$.md): Observable of the participant's server-side microphone input volume as reported by the mix engine. - [isAudience](https://signalwire.com/docs/browser-sdk/reference/self-participant/is-audience.md): Whether the participant is an audience member (view-only). - [isTalking$](https://signalwire.com/docs/browser-sdk/reference/self-participant/is-talking$.md): Observable indicating whether the participant is currently speaking. - [lowbitrate$](https://signalwire.com/docs/browser-sdk/reference/self-participant/lowbitrate$.md): Observable indicating whether low-bitrate mode is active. - [meta$](https://signalwire.com/docs/browser-sdk/reference/self-participant/meta$.md): Observable of custom metadata for this participant. - [mute](https://signalwire.com/docs/browser-sdk/reference/self-participant/mute.md): Mutes local audio. - [muteVideo](https://signalwire.com/docs/browser-sdk/reference/self-participant/mute-video.md): Mutes local video. - [name$](https://signalwire.com/docs/browser-sdk/reference/self-participant/name$.md): Observable of the participant's display name. - [nodeId$](https://signalwire.com/docs/browser-sdk/reference/self-participant/node-id$.md): Observable of the server node ID for this participant. - [noiseSuppression$](https://signalwire.com/docs/browser-sdk/reference/self-participant/noise-suppression$.md): Observable indicating whether noise suppression is enabled. - [outputVolume$](https://signalwire.com/docs/browser-sdk/reference/self-participant/output-volume$.md): Observable of the participant's server-side speaker output volume as reported by the mix engine (FreeSWITCH channel write volume). - [position$](https://signalwire.com/docs/browser-sdk/reference/self-participant/position$.md): Observable of the participant's layout position. - [remove](https://signalwire.com/docs/browser-sdk/reference/self-participant/remove.md): Removes this participant from the call. - [removeAdditionalDevice](https://signalwire.com/docs/browser-sdk/reference/self-participant/remove-additional-device.md): Removes an additional media input device by ID. - [screenShareStatus$](https://signalwire.com/docs/browser-sdk/reference/self-participant/screen-share-status$.md): Observable of the current screen share status. - [selectAudioInputDevice](https://signalwire.com/docs/browser-sdk/reference/self-participant/select-audio-input-device.md): Selects the audio input device for future calls. - [selectAudioOutputDevice](https://signalwire.com/docs/browser-sdk/reference/self-participant/select-audio-output-device.md): Selects the audio output device. - [selectVideoInputDevice](https://signalwire.com/docs/browser-sdk/reference/self-participant/select-video-input-device.md): Selects the video input device for future calls. - [setAudioInputDeviceConstraints](https://signalwire.com/docs/browser-sdk/reference/self-participant/set-audio-input-device-constraints.md): Updates the audio input track constraints for the active call. - [setAudioInputSensitivity](https://signalwire.com/docs/browser-sdk/reference/self-participant/set-audio-input-sensitivity.md): Adjusts the conference-only microphone energy gate / sensitivity level for this member. - [setAudioInputVolume](https://signalwire.com/docs/browser-sdk/reference/self-participant/set-audio-input-volume.md): Sets the server-side microphone volume on this participant's bridged call leg. - [setAudioOutputVolume](https://signalwire.com/docs/browser-sdk/reference/self-participant/set-audio-output-volume.md): Sets the server-side speaker volume on this participant's bridged call leg (FreeSWITCH channel write volume) — what this participant hears from the mix before it reaches their client. - [setInputDevicesConstraints](https://signalwire.com/docs/browser-sdk/reference/self-participant/set-input-devices-constraints.md): Updates both audio and video input track constraints for the active call. - [setMeta](https://signalwire.com/docs/browser-sdk/reference/self-participant/set-meta.md): Replaces custom metadata for this participant. - [setPosition](https://signalwire.com/docs/browser-sdk/reference/self-participant/set-position.md): Sets the participant's position in the video layout. - [setVideoInputDeviceConstraints](https://signalwire.com/docs/browser-sdk/reference/self-participant/set-video-input-device-constraints.md): Updates the video input track constraints for the active call. - [startScreenShare](https://signalwire.com/docs/browser-sdk/reference/self-participant/start-screen-share.md): Starts sharing the local screen. - [stopScreenShare](https://signalwire.com/docs/browser-sdk/reference/self-participant/stop-screen-share.md): Stops the current screen share. - [studioAudio$](https://signalwire.com/docs/browser-sdk/reference/self-participant/studio-audio$.md): Observable indicating whether studio audio (raw/unprocessed audio) mode is enabled. - [target](https://signalwire.com/docs/browser-sdk/reference/self-participant/target.md): The member's own RPC target triple. - [toggleAudioInputAutoGain](https://signalwire.com/docs/browser-sdk/reference/self-participant/toggle-audio-input-auto-gain.md): Toggles automatic gain control. - [toggleDeaf](https://signalwire.com/docs/browser-sdk/reference/self-participant/toggle-deaf.md): Toggles the deafened state (mutes/unmutes incoming audio). - [toggleEchoCancellation](https://signalwire.com/docs/browser-sdk/reference/self-participant/toggle-echo-cancellation.md): Toggles echo cancellation. - [toggleHandraise](https://signalwire.com/docs/browser-sdk/reference/self-participant/toggle-handraise.md): Toggles the hand-raised state. - [toggleLowbitrate](https://signalwire.com/docs/browser-sdk/reference/self-participant/toggle-lowbitrate.md): Toggles low-bitrate mode for the local participant's outbound media. - [toggleMute](https://signalwire.com/docs/browser-sdk/reference/self-participant/toggle-mute.md): Toggles the participant's audio mute state. - [toggleMuteVideo](https://signalwire.com/docs/browser-sdk/reference/self-participant/toggle-mute-video.md): Toggles the participant's video mute state. - [toggleNoiseSuppression](https://signalwire.com/docs/browser-sdk/reference/self-participant/toggle-noise-suppression.md): Toggles noise suppression. - [type$](https://signalwire.com/docs/browser-sdk/reference/self-participant/type$.md): Observable of the participant type (e.g. - [unmute](https://signalwire.com/docs/browser-sdk/reference/self-participant/unmute.md): Unmutes local audio. - [unmuteVideo](https://signalwire.com/docs/browser-sdk/reference/self-participant/unmute-video.md): Unmutes local video. - [updateMeta](https://signalwire.com/docs/browser-sdk/reference/self-participant/update-meta.md): Merges values into custom metadata (unlike setMeta which replaces). - [userId$](https://signalwire.com/docs/browser-sdk/reference/self-participant/user-id$.md): Observable of the participant's user ID. - [videoMuted$](https://signalwire.com/docs/browser-sdk/reference/self-participant/video-muted$.md): Observable indicating whether the participant's video is muted. - [visible$](https://signalwire.com/docs/browser-sdk/reference/self-participant/visible$.md): Observable indicating whether the participant is visible in the layout.