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-10-04 23:29:01 +0900
Browse Files
Options
Browse Files
Download
Email Patches
Plain Diff
Commit
57748b8cb43a3d554802ae4de98928d11f3c4f45
57748b8c
1 parent
4d34558d
create and send offer through peer connection transport
显示空白字符变更
内嵌
并排对比
正在显示
2 个修改的文件
包含
18 行增加
和
29 行删除
livekit-android-sdk/src/main/java/io/livekit/android/room/PeerConnectionTransport.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/RTCEngine.kt
livekit-android-sdk/src/main/java/io/livekit/android/room/PeerConnectionTransport.kt
查看文件 @
57748b8
...
...
@@ -17,7 +17,7 @@ import javax.inject.Named
/**
* @suppress
*/
class PeerConnectionTransport
internal
class PeerConnectionTransport
@AssistedInject
constructor(
@Assisted config: PeerConnection.RTCConfiguration,
...
...
@@ -28,14 +28,14 @@ constructor(
connectionFactory: PeerConnectionFactory
) {
private val coroutineScope = CoroutineScope(ioDispatcher + SupervisorJob())
val peerConnection: PeerConnection = connectionFactory.createPeerConnection(
internal
val peerConnection: PeerConnection = connectionFactory.createPeerConnection(
config,
pcObserver
) ?: throw IllegalStateException("peer connection creation failed?")
val pendingCandidates = mutableListOf<IceCandidate>()
var restartingIce: Boolean = false
private val pendingCandidates = mutableListOf<IceCandidate>()
private var restartingIce: Boolean = false
var renegotiate = false
private
var renegotiate = false
interface Listener {
fun onOffer(sd: SessionDescription)
...
...
@@ -97,11 +97,17 @@ constructor(
// actually negotiate
Timber.d { "starting to negotiate" }
val offer = peerConnection.createOffer(constraints)
if (offer is Either.Left) {
peerConnection.setLocalDescription(offer.value)
listener?.onOffer(offer.value)
val sdpOffer = when (val outcome = peerConnection.createOffer(constraints)) {
is Either.Left -> outcome.value
is Either.Right -> {
Timber.d { "error creating offer: ${outcome.value}" }
return
}
}
Timber.v { "sdp offer = $sdpOffer, description: ${sdpOffer.description}, type: ${sdpOffer.type}" }
peerConnection.setLocalDescription(sdpOffer)
listener?.onOffer(sdpOffer)
}
...
...
livekit-android-sdk/src/main/java/io/livekit/android/room/RTCEngine.kt
查看文件 @
57748b8
...
...
@@ -34,7 +34,7 @@ import kotlin.coroutines.suspendCoroutine
@Singleton
class RTCEngine
@Inject
constructor(
internal
constructor(
val client: SignalClient,
private val pctFactory: PeerConnectionTransport.Factory,
@Named(InjectionNames.DISPATCHER_IO) ioDispatcher: CoroutineDispatcher,
...
...
@@ -269,7 +269,7 @@ constructor(
wsRetries = 0
// trigger publisher reconnect
subscriber.
restartingIce = true
subscriber.
prepareForIceRestart()
// only restart publisher if it's needed
if (hasPublished) {
publisher.createAndSendOffer(
...
...
@@ -294,24 +294,7 @@ constructor(
return
}
coroutineScope.launch {
val sdpOffer =
when (val outcome = publisher.peerConnection.createOffer(getPublisherOfferConstraints())) {
is Either.Left -> outcome.value
is Either.Right -> {
Timber.d { "error creating offer: ${outcome.value}" }
return@launch
}
}
Timber.v { "sdp offer = $sdpOffer, description: ${sdpOffer.description}, type: ${sdpOffer.type}" }
when (val outcome = publisher.peerConnection.setLocalDescription(sdpOffer)) {
is Either.Right -> {
Timber.d { "error setting local description: ${outcome.value}" }
return@launch
}
}
client.sendOffer(sdpOffer)
publisher.createAndSendOffer(getPublisherOfferConstraints())
}
}
...
...
请
注册
或
登录
后发表评论