amazon-chime-sdk / com.amazonaws.services.chime.sdk.meetings.audiovideo / DefaultAudioVideoController

# DefaultAudioVideoController

`class DefaultAudioVideoController : AudioVideoControllerFacade`

### Constructors

#### <init> | `DefaultAudioVideoController(audioClientController: AudioClientController, audioClientObserver: AudioClientObserver, clientMetricsCollector: ClientMetricsCollector, configuration: MeetingSessionConfiguration, videoClientController: VideoClientController, videoClientObserver: VideoClientObserver, logger: Logger?)`

### Functions

#### addAudioVideoObserver | Subscribe to audio, video, and connection events with an AudioVideoObserver. `fun addAudioVideoObserver(observer: AudioVideoObserver): Unit`
#### addMetricsObserver | Subscribe to metrics events with an MetricsObserver. `fun addMetricsObserver(observer: MetricsObserver): Unit`
#### demoteFromPrimaryMeeting | Remove the promoted attendee from the Primary meeting. This client will stop sharing audio, video, and data messages. This will revert the end-user to precisely the state they were before a call to promoteToPrimaryMeeting `fun demoteFromPrimaryMeeting(): Unit`
#### promoteToPrimaryMeeting | Allows an attendee in a Replica meeting to immediately transition to a Primary meeting attendee without need for reconnection. `fun promoteToPrimaryMeeting(credentials: MeetingSessionCredentials, observer: PrimaryMeetingPromotionObserver): Unit`
#### removeAudioVideoObserver | Unsubscribes from audio, video, and connection events by removing specified AudioVideoObserver. `fun removeAudioVideoObserver(observer: AudioVideoObserver): Unit`
#### removeMetricsObserver | Unsubscribes from metrics by removing specified MetricsObserver. `fun removeMetricsObserver(observer: MetricsObserver): Unit`
#### start | Starts audio and video. `fun start(): Unit` Starts audio and video with the given configuration. `fun start(audioVideoConfiguration: AudioVideoConfiguration): Unit`
#### startLocalVideo | Start local video and begin transmitting frames from an internally held DefaultCameraCaptureSource. stopLocalVideo will stop the internal capture source if being used. `fun startLocalVideo(): Unit` Start local video with configuration and begin transmitting frames from an internally held DefaultCameraCaptureSource. stopLocalVideo will stop the internal capture source if being used. `fun startLocalVideo(config: LocalVideoConfiguration): Unit` Start local video with a provided custom VideoSource which can be used to provide custom VideoFrame objects to be transmitted to remote clients `fun startLocalVideo(source: VideoSource): Unit` Start local video with with configuration and a provided custom VideoSource which can be used to provide custom VideoFrame objects to be transmitted to remote clients `fun startLocalVideo(source: VideoSource, config: LocalVideoConfiguration): Unit`
#### startRemoteVideo | Start remote video. `fun startRemoteVideo(): Unit`
#### stop | Stops audio and video. It's important to call this when your meeting connection is no longer needed in order to clean up and explicitly release resources. `fun stop(): Unit`
#### stopLocalVideo | Stops sending video for local attendee. This will additionally stop the internal capture source if being used. If using a custom video source, this will call VideoSource.removeVideoSink on the previously provided source. `fun stopLocalVideo(): Unit`
#### stopRemoteVideo | Stop remote video. `fun stopRemoteVideo(): Unit`
#### updateVideoSourceSubscriptions | Add, update, or remove subscriptions to remote video sources provided via `remoteVideoSourcesDidBecomeAvailable`. `fun updateVideoSourceSubscriptions(addedOrUpdated: Map<RemoteVideoSource, VideoSubscriptionConfiguration>, removed: Array<RemoteVideoSource>): Unit`