AVClient

AVClient

An interface for an Audio/Video client which is extended to provide broadcasting functionality.

Members

isMuted

Is the current user muted?

isVoiceActivated

Is audio broadcasting voice-activation enabled?

isVoiceAlways

Is audio broadcasting always enabled?

isVoicePTT

Is audio broadcasting push-to-talk enabled?

master :AVMaster

The master orchestration instance

Type:

settings :AVSettings

The active audio/video settings being used

Type:

Methods

(async) connect() → {Promise.<boolean>}

Connect to any servers or services needed in order to provide audio/video functionality. Any parameters needed in order to establish the connection should be drawn from the settings object. This function should return a boolean for whether the connection attempt was successful.

Returns:

Was the connection attempt successful?

Type
Promise.<boolean>

(async) disconnect() → {Promise.<boolean>}

Disconnect from any servers or services which are used to provide audio/video functionality. This function should return a boolean for whether a valid disconnection occurred.

Returns:

Did a disconnection occur?

Type
Promise.<boolean>

(async) getAudioSinks() → {Promise.<{object}>}

Provide an Object of available audio sources which can be used by this implementation. Each object key should be a device id and the key should be a human-readable label.

Returns:
Type
Promise.<{object}>

(async) getAudioSources() → {Promise.<{object}>}

Provide an Object of available audio sources which can be used by this implementation. Each object key should be a device id and the key should be a human-readable label.

Returns:
Type
Promise.<{object}>

getConnectedUsers() → {Array.<string>}

Return an array of Foundry User IDs which are currently connected to A/V. The current user should also be included as a connected user in addition to all peers.

Returns:

The connected User IDs

Type
Array.<string>

getLevelsStreamForUser(userId) → {MediaStream|null}

Provide a MediaStream for monitoring a given user's voice volume levels.

Parameters:
Name Type Description
userId string

The User ID.

Returns:

The MediaStream for the user, or null if the user does not have one.

Type
MediaStream | null

getMediaStreamForUser(userId) → {MediaStream|null}

Provide a MediaStream instance for a given user ID

Parameters:
Name Type Description
userId string

The User id

Returns:

The MediaStream for the user, or null if the user does not have one

Type
MediaStream | null

(async) getVideoSources() → {Promise.<{object}>}

Provide an Object of available video sources which can be used by this implementation. Each object key should be a device id and the key should be a human-readable label.

Returns:
Type
Promise.<{object}>

(async) initialize() → {Promise.<void>}

One-time initialization actions that should be performed for this client implementation. This will be called only once when the Game object is first set-up.

Returns:
Type
Promise.<void>

isAudioEnabled() → {boolean}

Is outbound audio enabled for the current user?

Returns:
Type
boolean

isVideoEnabled() → {boolean}

Is outbound video enabled for the current user?

Returns:
Type
boolean

onSettingsChanged(changed)

Handle changes to A/V configuration settings.

Parameters:
Name Type Description
changed object

The settings which have changed

(async) setUserVideo(userId, videoElement)

Set the Video Track for a given User ID to a provided VideoElement

Parameters:
Name Type Description
userId string

The User ID to set to the element

videoElement HTMLVideoElement

The HTMLVideoElement to which the video should be set

toggleAudio(enable)

Set whether the outbound audio feed for the current game user is enabled. This method should be used when the user marks themselves as muted or if the gamemaster globally mutes them.

Parameters:
Name Type Description
enable boolean

Whether the outbound audio track should be enabled (true) or disabled (false)

toggleBroadcast(broadcast)

Set whether the outbound audio feed for the current game user is actively broadcasting. This can only be true if audio is enabled, but may be false if using push-to-talk or voice activation modes.

Parameters:
Name Type Description
broadcast boolean

Whether outbound audio should be sent to connected peers or not?

toggleVideo(enable)

Set whether the outbound video feed for the current game user is enabled. This method should be used when the user marks themselves as hidden or if the gamemaster globally hides them.

Parameters:
Name Type Description
enable boolean

Whether the outbound video track should be enabled (true) or disabled (false)

(async) updateLocalStream()

Replace the local stream for each connected peer with a re-generated MediaStream.