Package-level declarations
Functions
Link copied to clipboard
fun LivestreamPlayer(modifier: Modifier = Modifier, call: Call, enablePausing: Boolean = true, onPausedPlayer: (isPaused: Boolean) -> Unit? = {}, backstageContent: @Composable BoxScope.(Call) -> Unit = {
LivestreamBackStage(call)
}, videoRendererConfig: VideoRendererConfig = videoRenderConfig(), livestreamFlow: Flow<ParticipantState.Video?> = call.state.participants.flatMapLatest { participants: List<ParticipantState> ->
// For each participant, create a small Flow that watches videoEnabled.
val participantVideoFlows = participants.map { participant ->
participant.videoEnabled.map { enabled -> participant to enabled }
}
// Combine these Flows: whenever a participant’s videoEnabled changes,
// we re-calculate which participants have video.
combine(participantVideoFlows) { participantEnabledPairs ->
participantEnabledPairs
.filter { (_, isEnabled) -> isEnabled }
.map { (participant, _) -> participant }
}
}.flatMapLatest { participantWithVideo ->
participantWithVideo.firstOrNull()?.video ?: flow { emit(null) }
}, rendererContent: @Composable BoxScope.(Call) -> Unit = defaultRenderer, overlayContent: @Composable BoxScope.(Call) -> Unit = defaultLivestreamPlayerOverlay, liveStreamEndedContent: @Composable BoxScope.(Call) -> Unit = {
LivestreamEndedUi(call)
}, liveStreamHostVideoNotAvailableContent: @Composable BoxScope.(Call) -> Unit = {
HostVideoNotAvailableUi(call)
}, liveStreamErrorContent: @Composable BoxScope.(Call, () -> Unit) -> Unit = { _, retryJoin ->
LivestreamErrorUi(call, retryJoin)
}, onRetryJoin: () -> Unit = {})
Renders a livestream video player UI based on the current state of the provided call.