Toggle navigation
Toggle navigation
此项目
正在载入...
Sign in
xuning
/
livekitAndroidXuningTest
转到一个项目
Toggle navigation
项目
群组
代码片段
帮助
Toggle navigation pinning
Project
Activity
Repository
Pipelines
Graphs
Issues
0
Merge Requests
0
Wiki
Network
Create a new issue
Builds
Commits
Authored by
davidliu
2022-07-13 20:33:39 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Committed by
GitHub
2022-07-13 20:33:39 +0900
Commit
bafec0b6fd501dabee1c9aadacf06532d1bdae69
bafec0b6
1 parent
4ed18751
Don't republish muted tracks (#113)
隐藏空白字符变更
内嵌
并排对比
正在显示
2 个修改的文件
包含
32 行增加
和
30 行删除
livekit-android-sdk/src/main/java/io/livekit/android/room/participant/LocalParticipant.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/track/LocalTrackPublication.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/participant/LocalParticipant.kt
查看文件 @
bafec0b
...
...
@@ -48,13 +48,6 @@ internal constructor(
.mapNotNull { it as? LocalTrackPublication }
.toList()
private var isReconnecting = false
/**
* Holds on to publishes that need to be republished after a full reconnect.
*/
private var publishes = mutableMapOf<Track, TrackPublishOptions>()
/**
* Creates an audio track, recording audio through the microphone with the given [options].
*
...
...
@@ -214,18 +207,15 @@ internal constructor(
),
publishListener: PublishListener? = null
) {
val published = publishTrackImpl(
track,
publishTrackImpl(
track = track,
options = options,
requestConfig = {
disableDtx = !options.dtx
source = LivekitModels.TrackSource.MICROPHONE
},
publishListener = publishListener,
)
if (published) {
publishes[track] = options
}
}
suspend fun publishVideoTrack(
...
...
@@ -238,8 +228,9 @@ internal constructor(
val videoLayers =
EncodingUtils.videoLayersFromEncodings(track.dimensions.width, track.dimensions.height, encodings)
val published = publishTrackImpl(
track,
publishTrackImpl(
track = track,
options = options,
requestConfig = {
width = track.dimensions.width
height = track.dimensions.height
...
...
@@ -253,10 +244,6 @@ internal constructor(
encodings = encodings,
publishListener = publishListener
)
if (published) {
publishes[track] = options
}
}
...
...
@@ -265,6 +252,7 @@ internal constructor(
*/
private suspend fun publishTrackImpl(
track: Track,
options: TrackPublishOptions,
requestConfig: LivekitRtc.AddTrackRequest.Builder.() -> Unit,
encodings: List<RtpParameters.Encoding> = emptyList(),
publishListener: PublishListener? = null
...
...
@@ -306,7 +294,12 @@ internal constructor(
// TODO: enable setting preferred codec
val publication = LocalTrackPublication(trackInfo, track, this)
val publication = LocalTrackPublication(
info = trackInfo,
track = track,
participant = this,
options = options,
)
addTrackPublication(publication)
publishListener?.onPublishSuccess(publication)
...
...
@@ -402,15 +395,13 @@ internal constructor(
engine.updateSubscriptionPermissions(allParticipantsAllowed, participantTrackPermissions)
}
fun unpublishTrack(track: Track) {
fun unpublishTrack(track: Track
, stopOnUnpublish: Boolean = true
) {
val publication = localTrackPublications.firstOrNull { it.track == track }
if (publication === null) {
LKLog.d { "this track was never published." }
return
}
publishes.remove(track)
val sid = publication.sid
tracks = tracks.toMutableMap().apply { remove(sid) }
...
...
@@ -423,7 +414,9 @@ internal constructor(
}
}
}
track.stop()
if (stopOnUnpublish) {
track.stop()
}
internalListener?.onTrackUnpublished(publication, this)
eventBus.postEvent(ParticipantEvent.LocalTrackUnpublished(this, publication), scope)
}
...
...
@@ -536,11 +529,18 @@ internal constructor(
}
suspend fun republishTracks() {
for ((track, options) in publishes) {
when (track) {
is LocalAudioTrack -> publishAudioTrack(track, options as AudioTrackPublishOptions, null)
is LocalVideoTrack -> publishVideoTrack(track, options as VideoTrackPublishOptions, null)
else -> throw IllegalStateException("LocalParticipant has a non local track publish?")
val republishes = localTrackPublications
for (pub in republishes) {
val track = pub.track ?: continue
unpublishTrack(track, false)
// Cannot publish muted tracks.
if (!pub.muted) {
when (track) {
is LocalAudioTrack -> publishAudioTrack(track, pub.options as AudioTrackPublishOptions, null)
is LocalVideoTrack -> publishVideoTrack(track, pub.options as VideoTrackPublishOptions, null)
else -> throw IllegalStateException("LocalParticipant has a non local track publish?")
}
}
}
}
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/track/LocalTrackPublication.kt
查看文件 @
bafec0b
package io.livekit.android.room.track
import io.livekit.android.room.participant.LocalParticipant
import io.livekit.android.room.participant.TrackPublishOptions
import livekit.LivekitModels
class LocalTrackPublication(
info: LivekitModels.TrackInfo,
track: Track,
participant: LocalParticipant
participant: LocalParticipant,
val options: TrackPublishOptions,
) : TrackPublication(info, track, participant) {
/**
...
...
请
注册
或
登录
后发表评论