Open vodemn opened 1 year ago
So when joining a DolbyVoice conference with audio disabled I noticed this error in log:
(dvc_conference_impl.cc:339): SetMute failed in direction == webrtc_integration::DvcDirection::OUTPUT || mute == true || listener_mode_ == false with status false
Hello, any updates on that?
@IharPaliashchuk Is this issue happened with voxeet-uxkit-ios or on Voxeet-sdk-ios? as you have mentioned voxeet-uxkit-ios it has latest version 1.7.4
If you are referring to voxeet-sdk-ios v 3.4.0 then we have stopped supporting this version [2023-03-31 end of support]. Please refer our SDK support page for more info.
I would recommend you to upgrade to the latest supported version and try again.
@mohsindlb we use voxeet-sdk-ios v3.8.0
I see similar logs to what was posted before. Crashes sometimes occur when a user joins a conference with audio enabled.
@IharPaliashchuk Thanks for confirming. I will check and get back to you.
@IharPaliashchuk I tried to reproduce the scenario with sdk v 3.8.0 but my application does not crashes. Do you have any specific steps to reproduce this? I tried with our getting started app. Can you please share your code snippet to look into it?
However I can see the audio stream object in participant and stream event, even though we join the conference without audio. I will check on this and get back to you.
@mohsindlb Thank you the reply. Actually, our app is a Flutter app and we only use native code for VoxeetSDK communication. We don't use any special settings and follow the getting started app.
Let me send some code which is related to VoxeetSDK.
let keys = call.arguments as! Array<String>
VoxeetSDK.shared.initialize(consumerKey: keys[0], consumerSecret: keys[1])
VoxeetSDK.shared.session.delegate = self.sessionEventsHandler
VoxeetSDK.shared.conference.delegate = self.conferenceEventsHandler
VoxeetSDK.shared.notification.delegate = self.notificationEventsHandler
or
let token = call.arguments as! String
VoxeetSDK.shared.initialize(accessToken: token, refreshTokenClosureWithParam: { [weak self] closure, _ in
self?.sdkMethodChannel!.invokeMethod("getRefreshToken", arguments: nil, result: { result -> Void in
let token = result is String ? result as? String : nil
closure(token)
})
})
VoxeetSDK.shared.session.delegate = self.sessionEventsHandler
VoxeetSDK.shared.conference.delegate = self.conferenceEventsHandler
VoxeetSDK.shared.notification.delegate = self.notificationEventsHandler
then
VoxeetSDK.shared.session.open(info: info) { self._handleError($0, result) }
let args = call.arguments as! Dictionary<String, Any?>
let createArgs = args["create"] as! Dictionary<String, Any>
let createOptions = VTConferenceOptions()
createOptions.alias = createArgs["alias"] as? String
createOptions.params.audioOnly = createArgs["audioOnly"] as! Bool
createOptions.params.dolbyVoice = createArgs["dolbyVoice"] as! Bool
VoxeetSDK.shared.conference.create(options: createOptions) { conference in
let joinArgs = args["join"] as! Dictionary<String, Any?>
self._joinConference(
conference,
result,
hasAudio: joinArgs["audio"] as! Bool,
hasVideo: joinArgs["video"] as! Bool
)
} fail: {
self._handleError($0, result)
}
private func _joinConference(
_ conference: VTConference,
_ result: @escaping FlutterResult,
hasAudio: Bool,
hasVideo: Bool
) {
let joinOptions = VTJoinOptions()
let constraints = VTJoinOptionsConstraints()
constraints.audio = conference.params.dolbyVoice ? true : hasAudio
constraints.video = hasVideo
joinOptions.constraints = constraints
VoxeetSDK.shared.conference.join(conference: conference, options: joinOptions) {
if (conference.params.dolbyVoice && !hasAudio) { //fix to do not have crashes
VoxeetSDK.shared.audio.local.stop {_ in }
}
result($0.toJson())
} fail: {
self._handleError($0, result)
}
}
case "startAudio":
VoxeetSDK.shared.audio.local.start { self._handleError($0 as NSError?, result) }
case "stopAudio":
VoxeetSDK.shared.audio.local.stop { self._handleError($0 as NSError?, result) }
case "startVideo":
VoxeetSDK.shared.video.local.start { self._handleError($0 as NSError?, result) }
case "stopVideo":
VoxeetSDK.shared.video.local.stop { self._handleError($0 as NSError?, result) }
I would like to mention that everything works on each platform (joining a conference and inviting participants, enabling/disabling audio/video and leaving), only ios has crushes sometimes if user joins with enabled audio.
@IharPaliashchuk I have created #70 on your behalf as the issue you are describing is when a user tries to join a conference with Audio enabled. This issue is about having a stream object when audio is disabled.
When joining a dolbyVoice conference with disabled audio,
ConferenceService
fires 2 events:participantAdded
andstreamAdded
. In the first event participant has an empty streams array (which corresponds tojoinOptions.constraints
) and the second one adds an audio stream, even though join constraint for audio was set to false.This only happens with dolbyVoice conferences.
Expected Behaviour
Audio stream should not be added when joining dolbyVoice conference with disabled audio.
Specifications