in azure-communication-ui/calling/src/main/java/com/azure/android/communication/ui/calling/service/sdk/CallingSDKWrapper.kt [438:478]
override fun getLocalVideoStream(): CompletableFuture<LocalVideoStream> {
val result = CompletableFuture<LocalVideoStream>()
setupCallCompletableFuture.whenComplete { _, error ->
if (error == null) {
val localVideoStreamCompletableFuture = getLocalVideoStreamCompletableFuture()
if (localVideoStreamCompletableFuture.isDone) {
result.complete(localVideoStreamCompletableFuture.get())
} else if (!canCreateLocalVideoStream()) {
// cleanUpResources() could have been called before this, so we need to check if it's still
// alright to call initializeCameras()
result.complete(null)
} else {
initializeCameras().whenComplete { _, error ->
if (error != null) {
localVideoStreamCompletableFuture.completeExceptionally(error)
result.completeExceptionally(error)
} else {
val desiredCamera = if (isAndroidTV(context)) {
getCameraByFacingTypeSelection()
} else {
getCamera(CameraFacing.FRONT)
}
localVideoStreamCompletableFuture.complete(
LocalVideoStreamWrapper(
NativeLocalVideoStream(
desiredCamera,
context
)
)
)
result.complete(localVideoStreamCompletableFuture.get())
}
}
}
}
}
return result
}