# Class: VideoInterface

## Constructor

#### new VideoInterface(videoInterfaceService)

  VideoInterface class provides functionality for managing the video device that is used by the user.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `videoInterfaceService` | AvayaClientServices.Base.VideoInterfaceService |

## Methods

#### getAvailableDevices() → {Array.<AvayaClientServices.Base.VideoDevice>|Array.<AvayaClientServices.Base.AudioDevice>}

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#getAvailableDevices

  ##### Returns:

  { Array.<AvayaClientServices.Base.VideoDevice> | Array.<AvayaClientServices.Base.AudioDevice> }

#### getLocalMediaStream(channelId) → {MediaStream}

  Returns the local MediaStream associated with the channelId.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `channelId` | number | ID of the channel.

  ##### Returns:

  { MediaStream }

#### getMediaAccessCapability() → {AvayaClientServices.Base.Capability}

  The function returns capability to perform media access.

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#getMediaAccessCapability

  ##### Returns:

  { AvayaClientServices.Base.Capability }

#### getRemoteMediaStream(channelId) → {MediaStream}

  Returns the remote MediaStream associated with the channelId.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `channelId` | number | ID of the channel.

  ##### Returns:

  { MediaStream }

#### getSelectDeviceCapability() → {AvayaClientServices.Base.Capability}

  The function returns capability to select device.

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#getSelectDeviceCapability

  ##### Returns:

  { AvayaClientServices.Base.Capability }

#### getSelectedDevice() → {AvayaClientServices.Base.VideoDevice}

  The function gets the selected capture device for video.

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#getSelectedDevice

  ##### Returns:

  { AvayaClientServices.Base.VideoDevice }

#### getVideoBackgroundCapability() → {AvayaClientServices.Base.Capability}

  Returns a capability indicating if the SDK can perform processing of video backgrounds.

  ##### Returns:

  { AvayaClientServices.Base.Capability }

#### hasAvailableDevices() → {boolean}

  Returns a boolean indicating if devices of this type exists. This method
  will work prior to the user granting access to the mic/camera media stream.

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#hasAvailableDevices

  ##### Returns:

  { boolean }

#### setSelectedDevice(device)

  The function sets the capture device for video. This will not affect any active video sessions.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `device` | AvayaClientServices.Base.VideoDevice | AvayaClientServices.Base.AudioDevice |

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#setSelectedDevice

#### start() → {AvayaClientServices.Base.Promise}

  Starts media interface

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#start

  ##### Returns:

  { AvayaClientServices.Base.Promise }

#### stop() → {AvayaClientServices.Base.Promise}

  Stop media interface

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#stop

  ##### Returns:

  { AvayaClientServices.Base.Promise }

### Managing callbacks

#### addOnDevicesAddedCallback(callback) → {void}

  Add callback on specific event

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `callback` | AvayaClientServices.Base.MediaInterface#onDevicesAddedCallback | Function to be called

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#addOnDevicesAddedCallback

  ##### Returns:

  { void }

#### addOnDevicesRemovedCallback(callback) → {void}

  Add callback on specific event

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `callback` | AvayaClientServices.Base.MediaInterface#onDevicesRemovedCallback | Function to be called

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#addOnDevicesRemovedCallback

  ##### Returns:

  { void }

#### addOnDevicesUnavailableCallback(callback) → {void}

  Add callback on specific event

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `callback` | AvayaClientServices.Base.MediaInterface#onDevicesUnavailableCallback | Function to be called

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#addOnDevicesUnavailableCallback

  ##### Returns:

  { void }

#### addOnSelectedDeviceChangedCallback(callback) → {void}

  Add callback on specific event

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `callback` | AvayaClientServices.Base.MediaInterface#onSelectedDeviceChanged | Function to be called

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#addOnSelectedDeviceChangedCallback

  ##### Returns:

  { void }

#### addOnSelectedDeviceRemovedCallback(callback) → {void}

  Add callback on specific event

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `callback` | AvayaClientServices.Base.MediaInterface#onSelectedDeviceRemovedCallback | Function to be called

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#addOnSelectedDeviceRemovedCallback

  ##### Returns:

  { void }

#### addOnVideoBackgroundFailed(func)

  Registers a callback for when video background processing has failed to start.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `func` | AvayaClientServices.Base.VideoInterface#OnVideoBackgroundFailedCallback |

#### addOnVideoBackgroundStarted(func)

  Registers a callback for when video background processing has been successfully started.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `func` | AvayaClientServices.Base.VideoInterface#OnVideoBackgroundStartedCallback |

#### cleanUpOnDevicesAddedCallbacks() → {void}

  Removes all previously added callbacks

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#cleanUpOnDevicesAddedCallbacks

  ##### Returns:

  { void }

#### cleanUpOnDevicesRemovedCallbacks() → {void}

  Removes all previously added callbacks

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#cleanUpOnDevicesRemovedCallbacks

  ##### Returns:

  { void }

#### cleanUpOnDevicesUnavailableCallbacks() → {void}

  Removes all previously added callbacks

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#cleanUpOnDevicesUnavailableCallbacks

  ##### Returns:

  { void }

#### cleanUpOnDevicesUpdatedCallbacks() → {void}

  Removes all previously added callbacks

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#cleanUpOnDevicesUpdatedCallbacks

  ##### Returns:

  { void }

#### cleanUpOnSelectedDeviceChangedCallbacks() → {void}

  Removes all previously added callbacks

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#cleanUpOnSelectedDeviceChangedCallbacks

  ##### Returns:

  { void }

#### cleanUpOnSelectedDeviceRemovedCallbacks() → {void}

  Removes all previously added callbacks

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#cleanUpOnSelectedDeviceRemovedCallbacks

  ##### Returns:

  { void }

#### removeOnDevicesAddedCallback(callback) → {void}

  Remove previously added callback

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `callback` | AvayaClientServices.Base.MediaInterface#onDevicesAddedCallback | Function to be removed

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#removeOnDevicesAddedCallback

  ##### Returns:

  { void }

#### removeOnDevicesRemovedCallback(callback) → {void}

  Remove previously added callback

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `callback` | AvayaClientServices.Base.MediaInterface#onDevicesRemovedCallback | Function to be removed

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#removeOnDevicesRemovedCallback

  ##### Returns:

  { void }

#### removeOnDevicesUnavailableCallback(callback) → {void}

  Remove previously added callback

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `callback` | AvayaClientServices.Base.MediaInterface#onDevicesUnavailableCallback | Function to be removed

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#removeOnDevicesUnavailableCallback

  ##### Returns:

  { void }

#### removeOnDevicesUpdatedCallback(callback) → {void}

  Remove previously added callback

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `callback` | AvayaClientServices.Base.MediaInterface#addOnDevicesUpdatedCallback | Function to be removed

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#removeOnDevicesUpdatedCallback

  ##### Returns:

  { void }

#### removeOnSelectedDeviceChangedCallback(callback) → {void}

  Remove previously added callback

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `callback` | AvayaClientServices.Base.MediaInterface#onSelectedDeviceChanged | Function to be removed

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#removeOnSelectedDeviceChangedCallback

  ##### Returns:

  { void }

#### removeOnSelectedDeviceRemovedCallback(callback) → {void}

  Remove previously added callback

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `callback` | AvayaClientServices.Base.MediaInterface#onSelectedDeviceRemovedCallback | Function to be removed

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#removeOnSelectedDeviceRemovedCallback

  ##### Returns:

  { void }

#### removeOnVideoBackgroundFailed(func)

  Removes a callback for when video background processing has failed to start.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `func` | AvayaClientServices.Base.VideoInterface#OnVideoBackgroundFailedCallback |

#### removeOnVideoBackgroundStarted(func)

  Removes a callback for when video background processing has been successfully started.

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `func` | AvayaClientServices.Base.VideoInterface#OnVideoBackgroundStartedCallback |

## Type Definitions

#### addOnDevicesUpdatedCallback(mediaInterface, devices) → {void}

  Called to report that audio or video devices label were updated

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `mediaInterface` | AvayaClientServices.Base.MediaInterface |
  `devices` | Array.<AvayaClientServices.Base.VideoDevice> | Array.<AvayaClientServices.Base.AudioDevice> |

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#addOnDevicesUpdatedCallback

  ##### Returns:

  { void }

#### onDevicesAddedCallback(mediaInterface, devices) → {void}

  Called to report that audio or video devices were added

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `mediaInterface` | AvayaClientServices.Base.MediaInterface |
  `devices` | Array.<AvayaClientServices.Base.VideoDevice> | Array.<AvayaClientServices.Base.AudioDevice> |

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#onDevicesAddedCallback

  ##### Returns:

  { void }

#### onDevicesRemovedCallback(mediaInterface, devices) → {void}

  Called to report that audio or video devices were removed

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `mediaInterface` | AvayaClientServices.Base.MediaInterface |
  `devices` | Array.<AvayaClientServices.Base.VideoDevice> | Array.<AvayaClientServices.Base.AudioDevice> |

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#onDevicesRemovedCallback

  ##### Returns:

  { void }

#### onDevicesUnavailableCallback(mediaInterface) → {void}

  Called to report that no device is available

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `mediaInterface` | AvayaClientServices.Base.MediaInterface |

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#onDevicesUnavailableCallback

  ##### Returns:

  { void }

#### onSelectedDeviceChanged(mediaInterface, device) → {void}

  Called to report that device was changed

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `mediaInterface` | AvayaClientServices.Base.MediaInterface |
  `device` | AvayaClientServices.Base.AudioDevice | AvayaClientServices.Base.VideoDevice |

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#onSelectedDeviceChanged

  ##### Returns:

  { void }

#### onSelectedDeviceRemovedCallback(mediaInterface, device) → {void}

  Called to report that selected device was removed

  ##### Parameters:

  Name | Type | Description
  --- | --- | ---
  `mediaInterface` | AvayaClientServices.Base.MediaInterface |
  `device` | AvayaClientServices.Base.VideoDevice | AvayaClientServices.Base.AudioDevice |

  Inherited From:
    - AvayaClientServices.Base.MediaInterface#onSelectedDeviceRemovedCallback

  ##### Returns:

  { void }

#### OnVideoBackgroundFailedCallback()

  A callback that will be executed when video background processing has failed to start.

#### OnVideoBackgroundStartedCallback()

  A callback that will be executed when video background processing has been successfully started.