AmazonChimeSDK/AmazonChimeSDK/audiovideo/AudioVideoConfiguration.swift (112 lines of code) (raw):
//
// AudioVideoConfiguration.swift
// AmazonChimeSDK
//
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
// SPDX-License-Identifier: Apache-2.0
//
import Foundation
/// `AudioVideoConfiguration` represents the configuration to be used for audio and video during a meeting session.
@objcMembers public class AudioVideoConfiguration: NSObject {
public static let defaultAudioMode: AudioMode = .stereo48K
public static let defaultAudioDeviceCapabilities: AudioDeviceCapabilities = .inputAndOutput
public static let defaultCallKitEnabled: Bool = false
public static let defaultEnableAudioRedundancy: Bool = true
public static let defaultVideoMaxResolution: VideoResolution = .videoResolutionHD
public static let defaultReconnectTimeoutMs: Int = 180 * 1000
public let audioMode: AudioMode
public let audioDeviceCapabilities: AudioDeviceCapabilities
public let callKitEnabled: Bool
public let enableAudioRedundancy: Bool
public let videoMaxResolution: VideoResolution
/// Maximum amount of time in milliseconds to allow for reconnecting. Default value is 180000.
public let reconnectTimeoutMs: Int
// These convenience initializers exist so that Objective-C code can initialize this class without specifying all the parameters.
convenience override public init() {
self.init(audioMode: Self.defaultAudioMode,
audioDeviceCapabilities: Self.defaultAudioDeviceCapabilities,
callKitEnabled: Self.defaultCallKitEnabled,
enableAudioRedundancy: Self.defaultEnableAudioRedundancy,
videoMaxResolution: Self.defaultVideoMaxResolution)
}
convenience public init(audioMode: AudioMode) {
self.init(audioMode: audioMode,
audioDeviceCapabilities: Self.defaultAudioDeviceCapabilities,
callKitEnabled: Self.defaultCallKitEnabled,
enableAudioRedundancy: Self.defaultEnableAudioRedundancy,
videoMaxResolution: Self.defaultVideoMaxResolution)
}
convenience public init(audioDeviceCapabilities: AudioDeviceCapabilities) {
self.init(audioMode: Self.defaultAudioMode,
audioDeviceCapabilities: audioDeviceCapabilities,
callKitEnabled: Self.defaultCallKitEnabled,
enableAudioRedundancy: Self.defaultEnableAudioRedundancy,
videoMaxResolution: Self.defaultVideoMaxResolution)
}
convenience public init(callKitEnabled: Bool) {
self.init(audioMode: Self.defaultAudioMode,
audioDeviceCapabilities: Self.defaultAudioDeviceCapabilities,
callKitEnabled: callKitEnabled,
enableAudioRedundancy: Self.defaultEnableAudioRedundancy,
videoMaxResolution: Self.defaultVideoMaxResolution)
}
convenience public init(enableAudioRedundancy: Bool) {
self.init(audioMode: Self.defaultAudioMode,
audioDeviceCapabilities: Self.defaultAudioDeviceCapabilities,
callKitEnabled: Self.defaultCallKitEnabled,
enableAudioRedundancy: enableAudioRedundancy,
videoMaxResolution: Self.defaultVideoMaxResolution)
}
convenience public init(videoMaxResolution: VideoResolution) {
self.init(audioMode: Self.defaultAudioMode,
audioDeviceCapabilities: Self.defaultAudioDeviceCapabilities,
callKitEnabled: Self.defaultCallKitEnabled,
enableAudioRedundancy: Self.defaultEnableAudioRedundancy,
videoMaxResolution: videoMaxResolution)
}
convenience public init(reconnectTimeoutMs: Int) {
self.init(audioMode: Self.defaultAudioMode,
audioDeviceCapabilities: Self.defaultAudioDeviceCapabilities,
callKitEnabled: Self.defaultCallKitEnabled,
enableAudioRedundancy: Self.defaultEnableAudioRedundancy,
videoMaxResolution: Self.defaultVideoMaxResolution,
reconnectTimeoutMs: reconnectTimeoutMs)
}
convenience public init(audioMode: AudioMode, callKitEnabled: Bool) {
self.init(audioMode: audioMode,
audioDeviceCapabilities: Self.defaultAudioDeviceCapabilities,
callKitEnabled: callKitEnabled,
enableAudioRedundancy: Self.defaultEnableAudioRedundancy,
videoMaxResolution: Self.defaultVideoMaxResolution)
}
convenience public init(audioMode: AudioMode, callKitEnabled: Bool, enableAudioRedundancy: Bool) {
self.init(audioMode: audioMode,
audioDeviceCapabilities: Self.defaultAudioDeviceCapabilities,
callKitEnabled: callKitEnabled,
enableAudioRedundancy: enableAudioRedundancy,
videoMaxResolution: Self.defaultVideoMaxResolution)
}
convenience public init(audioMode: AudioMode, callKitEnabled: Bool, enableAudioRedundancy: Bool, videoMaxResolution: VideoResolution) {
self.init(audioMode: audioMode,
audioDeviceCapabilities: Self.defaultAudioDeviceCapabilities,
callKitEnabled: callKitEnabled,
enableAudioRedundancy: enableAudioRedundancy,
videoMaxResolution: videoMaxResolution)
}
convenience public init(audioMode: AudioMode, audioDeviceCapabilities: AudioDeviceCapabilities, callKitEnabled: Bool, enableAudioRedundancy: Bool, videoMaxResolution: VideoResolution) {
self.init(audioMode: audioMode,
audioDeviceCapabilities: audioDeviceCapabilities,
callKitEnabled: callKitEnabled,
enableAudioRedundancy: enableAudioRedundancy,
videoMaxResolution: videoMaxResolution,
reconnectTimeoutMs: Self.defaultReconnectTimeoutMs)
}
public init(audioMode: AudioMode, audioDeviceCapabilities: AudioDeviceCapabilities, callKitEnabled: Bool, enableAudioRedundancy: Bool, videoMaxResolution: VideoResolution, reconnectTimeoutMs: Int) {
self.audioMode = audioMode
self.audioDeviceCapabilities = audioDeviceCapabilities
self.callKitEnabled = callKitEnabled
self.enableAudioRedundancy = enableAudioRedundancy
self.videoMaxResolution = videoMaxResolution
self.reconnectTimeoutMs = reconnectTimeoutMs
}
override public var description: String {
return [
"audioMode: \(self.audioMode.description)",
"audioDeviceCapabilities: \(self.audioDeviceCapabilities.description)",
"callKitEnabled: \(self.callKitEnabled)",
"enableAudioRedundancy: \(self.enableAudioRedundancy)",
"videoMaxResolution: \(self.videoMaxResolution.description)",
"reconnectTimeoutMs: \(self.reconnectTimeoutMs.description)",
].joined(separator: ", ")
}
}