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
David Liu
2021-11-02 11:05:49 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
5077822dd00a894f7d7692413ce0841abaf44cdc
5077822d
1 parent
05c46c0a
better simulcast dimension calculations
隐藏空白字符变更
内嵌
并排对比
正在显示
1 个修改的文件
包含
37 行增加
和
3 行删除
livekit-android-sdk/src/main/java/io/livekit/android/room/participant/LocalParticipant.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/participant/LocalParticipant.kt
查看文件 @
5077822
...
...
@@ -14,6 +14,7 @@ import livekit.LivekitModels
import livekit.LivekitRtc
import org.webrtc.*
import kotlin.math.abs
import kotlin.math.roundToInt
class LocalParticipant
@AssistedInject
...
...
@@ -206,13 +207,46 @@ internal constructor(
val midPreset = presets[1]
val lowPreset = presets[0]
fun calculateScale(parameter: VideoCaptureParameter): Double {
return height / parameter.height.toDouble()
}
fun checkEvenDimensions(parameter: VideoCaptureParameter): Boolean {
fun isEven(value: Double) = ((value.roundToInt()) % 2 == 0)
val scale = calculateScale(parameter)
return isEven(parameter.height * scale) && isEven(parameter.width * scale)
}
// if resolution is high enough, we send both h and q res.
// otherwise only send h
if (width >= 960) {
encodings.add(midPreset.encoding.toRtpEncoding("h", 2.0))
encodings.add(lowPreset.encoding.toRtpEncoding("q", 4.0))
val hasEvenDimensions =
checkEvenDimensions(midPreset.capture) && checkEvenDimensions(lowPreset.capture)
val midScale = if (hasEvenDimensions) calculateScale(midPreset.capture) else 2.0
val lowScale = if (hasEvenDimensions) calculateScale(lowPreset.capture) else 4.0
encodings.add(
midPreset.encoding.toRtpEncoding(
"h",
midScale
)
)
encodings.add(
lowPreset.encoding.toRtpEncoding(
"q",
lowScale
)
)
} else {
encodings.add(lowPreset.encoding.toRtpEncoding("h", 2.0))
val hasEvenDimensions = checkEvenDimensions(lowPreset.capture)
val lowScale = if (hasEvenDimensions) calculateScale(lowPreset.capture) else 2.0
encodings.add(
lowPreset.encoding.toRtpEncoding(
"h",
lowScale
)
)
}
} else {
encodings.add(encoding.toRtpEncoding())
...
...
请
注册
或
登录
后发表评论