Merge pull request #4576 from nextcloud/backport/4569/stable-20.1

[stable-20.1] Fix audio and video not received
This commit is contained in:
Marcel Hibbe 2025-01-03 14:42:50 +01:00 committed by GitHub
commit c3df5863a0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -204,7 +204,7 @@ class CallActivity : CallBaseActivity() {
private var audioConstraints: MediaConstraints? = null private var audioConstraints: MediaConstraints? = null
private var videoConstraints: MediaConstraints? = null private var videoConstraints: MediaConstraints? = null
private var sdpConstraints: MediaConstraints? = null private var sdpConstraints: MediaConstraints? = null
private var sdpConstraintsForMCU: MediaConstraints? = null private var sdpConstraintsForMCUPublisher: MediaConstraints? = null
private var videoSource: VideoSource? = null private var videoSource: VideoSource? = null
private var localVideoTrack: VideoTrack? = null private var localVideoTrack: VideoTrack? = null
private var audioSource: AudioSource? = null private var audioSource: AudioSource? = null
@ -809,7 +809,7 @@ class CallActivity : CallBaseActivity() {
// create sdpConstraints // create sdpConstraints
sdpConstraints = MediaConstraints() sdpConstraints = MediaConstraints()
sdpConstraintsForMCU = MediaConstraints() sdpConstraintsForMCUPublisher = MediaConstraints()
sdpConstraints!!.mandatory.add(MediaConstraints.KeyValuePair("OfferToReceiveAudio", "true")) sdpConstraints!!.mandatory.add(MediaConstraints.KeyValuePair("OfferToReceiveAudio", "true"))
var offerToReceiveVideoString = "true" var offerToReceiveVideoString = "true"
if (isVoiceOnlyCall) { if (isVoiceOnlyCall) {
@ -818,10 +818,10 @@ class CallActivity : CallBaseActivity() {
sdpConstraints!!.mandatory.add( sdpConstraints!!.mandatory.add(
MediaConstraints.KeyValuePair("OfferToReceiveVideo", offerToReceiveVideoString) MediaConstraints.KeyValuePair("OfferToReceiveVideo", offerToReceiveVideoString)
) )
sdpConstraintsForMCU!!.mandatory.add(MediaConstraints.KeyValuePair("OfferToReceiveAudio", "false")) sdpConstraintsForMCUPublisher!!.mandatory.add(MediaConstraints.KeyValuePair("OfferToReceiveAudio", "false"))
sdpConstraintsForMCU!!.mandatory.add(MediaConstraints.KeyValuePair("OfferToReceiveVideo", "false")) sdpConstraintsForMCUPublisher!!.mandatory.add(MediaConstraints.KeyValuePair("OfferToReceiveVideo", "false"))
sdpConstraintsForMCU!!.optional.add(MediaConstraints.KeyValuePair("internalSctpDataChannels", "true")) sdpConstraintsForMCUPublisher!!.optional.add(MediaConstraints.KeyValuePair("internalSctpDataChannels", "true"))
sdpConstraintsForMCU!!.optional.add(MediaConstraints.KeyValuePair("DtlsSrtpKeyAgreement", "true")) sdpConstraintsForMCUPublisher!!.optional.add(MediaConstraints.KeyValuePair("DtlsSrtpKeyAgreement", "true"))
sdpConstraints!!.optional.add(MediaConstraints.KeyValuePair("internalSctpDataChannels", "true")) sdpConstraints!!.optional.add(MediaConstraints.KeyValuePair("internalSctpDataChannels", "true"))
sdpConstraints!!.optional.add(MediaConstraints.KeyValuePair("DtlsSrtpKeyAgreement", "true")) sdpConstraints!!.optional.add(MediaConstraints.KeyValuePair("DtlsSrtpKeyAgreement", "true"))
if (!isVoiceOnlyCall) { if (!isVoiceOnlyCall) {
@ -2350,18 +2350,22 @@ class CallActivity : CallBaseActivity() {
sessionId: String?, sessionId: String?,
type: String type: String
): PeerConnectionWrapper { ): PeerConnectionWrapper {
val tempSdpConstraints: MediaConstraints?
val tempIsMCUPublisher: Boolean val tempIsMCUPublisher: Boolean
val tempHasMCU: Boolean val tempHasMCU: Boolean
val tempLocalStream: MediaStream? val tempLocalStream: MediaStream?
if (hasMCU && publisher) { if (hasMCU && publisher) {
tempSdpConstraints = sdpConstraintsForMCUPublisher
tempIsMCUPublisher = true tempIsMCUPublisher = true
tempHasMCU = true tempHasMCU = true
tempLocalStream = localStream tempLocalStream = localStream
} else if (hasMCU) { } else if (hasMCU) {
tempSdpConstraints = sdpConstraints
tempIsMCUPublisher = false tempIsMCUPublisher = false
tempHasMCU = true tempHasMCU = true
tempLocalStream = null tempLocalStream = null
} else { } else {
tempSdpConstraints = sdpConstraints
tempIsMCUPublisher = false tempIsMCUPublisher = false
tempHasMCU = false tempHasMCU = false
tempLocalStream = if ("screen" != type) { tempLocalStream = if ("screen" != type) {
@ -2374,7 +2378,7 @@ class CallActivity : CallBaseActivity() {
return PeerConnectionWrapper( return PeerConnectionWrapper(
peerConnectionFactory, peerConnectionFactory,
iceServers, iceServers,
sdpConstraintsForMCU, tempSdpConstraints,
sessionId, sessionId,
callSession, callSession,
tempLocalStream, tempLocalStream,