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
2025-08-19 17:35:19 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Committed by
GitHub
2025-08-19 17:35:19 +0900
Commit
d4d2894bab27c89d4b74ffb0378d115e6d8586fd
d4d2894b
1 parent
be944f56
Properly trim data packet buffer as buffered amount changes (#743)
隐藏空白字符变更
内嵌
并排对比
正在显示
1 个修改的文件
包含
17 行增加
和
3 行删除
livekit-android-sdk/src/main/java/io/livekit/android/room/RTCEngine.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/RTCEngine.kt
查看文件 @
d4d2894
...
...
@@ -37,6 +37,7 @@ import io.livekit.android.util.Either
import io.livekit.android.util.FlowObservable
import io.livekit.android.util.LKLog
import io.livekit.android.util.TTLMap
import io.livekit.android.util.flow
import io.livekit.android.util.flowDelegate
import io.livekit.android.util.nullSafe
import io.livekit.android.util.withCheckLock
...
...
@@ -170,6 +171,7 @@ internal constructor(
private var lossyDataChannel: DataChannel? = null
private var lossyDataChannelSub: DataChannel? = null
private var reliableDataChannelManager: DataChannelManager? = null
private var reliableBufferedAmountJob: Job? = null
private var reliableDataChannelSubManager: DataChannelManager? = null
private var lossyDataChannelManager: DataChannelManager? = null
private var lossyDataChannelSubManager: DataChannelManager? = null
...
...
@@ -313,8 +315,18 @@ internal constructor(
RELIABLE_DATA_CHANNEL_LABEL,
reliableInit,
).also { dataChannel ->
reliableDataChannelManager = DataChannelManager(dataChannel, DataChannelObserver(dataChannel))
dataChannel.registerObserver(reliableDataChannelManager)
val dataChannelManager = DataChannelManager(dataChannel, DataChannelObserver(dataChannel))
reliableDataChannelManager = dataChannelManager
dataChannel.registerObserver(dataChannelManager)
reliableBufferedAmountJob?.cancel()
reliableBufferedAmountJob = coroutineScope.launch {
dataChannelManager::bufferedAmount.flow.collect { bufferedAmount ->
synchronized(reliableStateLock) {
reliableMessageBuffer.trim(bufferedAmount)
}
}
}
}
}
...
...
@@ -430,6 +442,8 @@ internal constructor(
subscriber?.closeBlocking()
subscriber = null
reliableBufferedAmountJob?.cancel()
reliableBufferedAmountJob = null
reliableDataChannelManager?.dispose()
reliableDataChannelManager = null
reliableDataChannel = null
...
...
@@ -918,7 +932,7 @@ internal constructor(
private const val MAX_RECONNECT_TIMEOUT = 60 * 1000
private const val MAX_ICE_CONNECT_TIMEOUT_MS = 20000
private const val DATA_CHANNEL_LOW_THRESHOLD = 2 * 1024 * 1024 //
64 K
B
private const val DATA_CHANNEL_LOW_THRESHOLD = 2 * 1024 * 1024 //
2 M
B
private val RELIABLE_RECEIVE_STATE_TTL_MS = 30.seconds
private val RELIABLE_RETRY_AMOUNT = (DATA_CHANNEL_LOW_THRESHOLD * 1.25).toLong()
...
...
请
注册
或
登录
后发表评论