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-03-14 20:37:57 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
6be14d0dab7a8f2dabb83d172c1ae97f5c885c61
6be14d0d
1 parent
968ef6d8
local tracks
显示空白字符变更
内嵌
并排对比
正在显示
6 个修改的文件
包含
132 行增加
和
0 行删除
livekit-android-sdk/build.gradle
livekit-android-sdk/src/main/java/io/livekit/android/room/track/AudioOptions.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/track/DataTrackOptions.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/track/LocalAudioTrack.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/track/LocalDataTrack.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/track/LocalVideoTrack.kt
livekit-android-sdk/build.gradle
查看文件 @
6be14d0
...
...
@@ -37,6 +37,7 @@ android {
}
kotlinOptions
{
freeCompilerArgs
=
[
"-Xinline-classes"
]
jvmTarget
=
java_version
}
}
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/track/AudioOptions.kt
0 → 100644
查看文件 @
6be14d0
package io.livekit.android.room.track
class AudioOptions {
}
\ No newline at end of file
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/track/DataTrackOptions.kt
0 → 100644
查看文件 @
6be14d0
package io.livekit.android.room.track
data class DataTrackOptions(
val ordered: Boolean = true,
val maxPacketLifetime: Int = -1,
val maxRetransmits: Int = -1,
val name: String
)
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/track/LocalAudioTrack.kt
0 → 100644
查看文件 @
6be14d0
package io.livekit.android.room.track
class LocalAudioTrack(
name: String,
audioOptions: AudioOptions? = null,
rtcTrack: org.webrtc.AudioTrack
) : AudioTrack(name, rtcTrack) {
var sid: Sid? = null
internal set
var audioOptions = audioOptions
private set
}
\ No newline at end of file
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/track/LocalDataTrack.kt
0 → 100644
查看文件 @
6be14d0
package io.livekit.android.room.track
import org.webrtc.DataChannel
import java.nio.ByteBuffer
class LocalDataTrack(
val options: DataTrackOptions,
rtcTrack: DataChannel
) : DataTrack(options.name, rtcTrack) {
var sid: Sid? = null
internal set
fun sendString(message: String) {
val byteBuffer = ByteBuffer.wrap(message.toByteArray())
val buffer = DataChannel.Buffer(byteBuffer, false)
rtcTrack.send(buffer)
}
fun sendBytes(byteBuffer: ByteBuffer) {
val buffer = DataChannel.Buffer(byteBuffer, true)
rtcTrack.send(buffer)
}
}
\ No newline at end of file
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/track/LocalVideoTrack.kt
0 → 100644
查看文件 @
6be14d0
package io.livekit.android.room.track
import android.content.Context
import com.github.ajalt.timberkt.Timber
import org.webrtc.*
import java.util.*
class LocalVideoTrack(
private val capturer: VideoCapturer,
private val source: VideoSource,
name: String,
rtcTrack: org.webrtc.VideoTrack
) : VideoTrack(name, rtcTrack) {
var sid: Sid? = null
companion object {
internal fun track(
peerConnectionFactory: PeerConnectionFactory,
context: Context,
enabled: Boolean,
name: String
): LocalVideoTrack {
val source = peerConnectionFactory.createVideoSource(false)
val capturer = createVideoCapturer(context) ?: TODO()
val rootEglBase = EglBase.create()
capturer.initialize(
SurfaceTextureHelper.create("CaptureThread", rootEglBase.eglBaseContext),
context,
source.capturerObserver
)
val track = peerConnectionFactory.createVideoTrack(UUID.randomUUID().toString(), source)
track.setEnabled(enabled)
return LocalVideoTrack(
capturer = capturer,
source = source,
name = name,
rtcTrack = track,
)
}
private fun createVideoCapturer(context: Context): VideoCapturer? {
val videoCapturer: VideoCapturer? = if (Camera2Enumerator.isSupported(context)) {
createCameraCapturer(Camera2Enumerator(context))
} else {
createCameraCapturer(Camera1Enumerator(true))
}
if (videoCapturer == null) {
Timber.d { "Failed to open camera" }
return null
}
return videoCapturer
}
private fun createCameraCapturer(enumerator: CameraEnumerator): VideoCapturer? {
val deviceNames = enumerator.deviceNames
// First, try to find front facing camera
for (deviceName in deviceNames) {
if (enumerator.isFrontFacing(deviceName)) {
Timber.v { "Creating front facing camera capturer." }
val videoCapturer = enumerator.createCapturer(deviceName, null)
if (videoCapturer != null) {
return videoCapturer
}
}
}
// Front facing camera not found, try something else
for (deviceName in deviceNames) {
if (!enumerator.isFrontFacing(deviceName)) {
Timber.v { "Creating other camera capturer." }
val videoCapturer = enumerator.createCapturer(deviceName, null)
if (videoCapturer != null) {
return videoCapturer
}
}
}
return null
}
}
}
\ No newline at end of file
...
...
请
注册
或
登录
后发表评论