Skip to content
This repository was archived by the owner on Aug 30, 2024. It is now read-only.

Commit eb4d5f3

Browse files
authored
Merge pull request #417 from DolbyIO/release/3.10.0
Release/3.10.0
2 parents ee6714e + b0abf7f commit eb4d5f3

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

46 files changed

+413
-184
lines changed

.github/workflows/ci.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,8 @@ jobs:
111111
- name: Fetch dependencies
112112
run: |
113113
flutter pub get
114+
- name: Update Cocoapods repo
115+
run: pod repo update
114116
- name: Run unmocked integration tests
115117
env:
116118
APP_KEY: ${{ secrets.DOLBYIO_APP_KEY }}

CHANGELOG.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,23 @@
1+
## 3.10.0
2+
3+
### Features
4+
5+
- Introduced the ability to change the [capture mode](https://api-references.dolby.io/comms-sdk-flutter/dolbyio_comms_sdk_flutter/LocalAudio/setCaptureMode.html) in non-Dolby Voice conferences and use either the [Standard](https://api-references.dolby.io/comms-sdk-flutter/dolbyio_comms_sdk_flutter/AudioCaptureMode.html#standard) or [Unprocessed](https://api-references.dolby.io/comms-sdk-flutter/dolbyio_comms_sdk_flutter/AudioCaptureMode.html#unprocessed) mode.
6+
7+
- Introduced a new [voiceFont](https://api-references.dolby.io/comms-sdk-flutter/dolbyio_comms_sdk_flutter/AudioCaptureOptions/voiceFont.html) property to [AudioCaptureOptions](https://api-references.dolby.io/comms-sdk-flutter/dolbyio_comms_sdk_flutter/AudioCaptureOptions-class.html) that is supported in the [Standard](https://api-references.dolby.io/comms-sdk-flutter/dolbyio_comms_sdk_flutter/AudioCaptureMode.html#standard) audio capture mode. [Voice fonts](https://api-references.dolby.io/comms-sdk-flutter/dolbyio_comms_sdk_flutter/AudioCaptureOptions/voiceFont.html) allow participants to modify their voices in real time to improve social interaction in entertainment scenarios. For more information about this feature, see the [Using Voice Fonts](https://docs.dolby.io/interactivity/docs/guides-using-voice-fonts) guide.
8+
9+
- Introduced a new [preview](https://api-references.dolby.io/comms-sdk-flutter/dolbyio_comms_sdk_flutter/LocalAudio/preview.html) service that allows the local participant to test different capture modes and voice fonts before a conference. The service sets a preview recorder that records the participant's audio and plays it back. Before playing the recorded audio, set the [captureMode](https://api-references.dolby.io/comms-sdk-flutter/dolbyio_comms_sdk_flutter/LocalAudio/setCaptureMode.html) to a preferred setting that you wish to try.
10+
11+
- Introduced a new [updateParticipantInfo](https://api-references.dolby.io/comms-sdk-flutter/dolbyio_comms_sdk_flutter/SessionService/updateParticipantInfo.html) method that lets participants modify their names and avatars while they are in a conference.
12+
13+
- The SDK now supports receiving two shared screens in one conference.
14+
15+
### Changes
16+
17+
- Changed the default value of the audio capture mode in non-Dolby Voice conferences to [Standard](https://api-references.dolby.io/comms-sdk-flutter/dolbyio_comms_sdk_flutter/AudioCaptureMode.html#standard) with [high](https://api-references.dolby.io/comms-sdk-flutter/dolbyio_comms_sdk_flutter/NoiseReduction.html#high) noise reduction. This setting optimizes captured audio for speech by aggressively removing non-speech content. If you want to transmit non-stationary background sounds to a conference and create a more natural audio experience, you can set noise reduction to [low](https://api-references.dolby.io/comms-sdk-flutter/dolbyio_comms_sdk_flutter/NoiseReduction.html#low), which offers a similar experience as the default setting in previous releases. If you wish to transmit non-voice audio to a conference as well and use input device setting without any processing, use the [Unprocessed](https://api-references.dolby.io/comms-sdk-flutter/dolbyio_comms_sdk_flutter/AudioCaptureMode.html#unprocessed) mode.
18+
19+
- The [current](https://api-references.dolby.io/comms-sdk-flutter/dolbyio_comms_sdk_flutter/ConferenceService/current.html) method now returns null when the user is not in a conference.
20+
121
## 3.10.0-beta.1
222

323
### Features

android/build.gradle

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ version '1.0-SNAPSHOT'
33

44
buildscript {
55
ext.kotlin_version = '1.7.10'
6-
ext.voxeet_sdk_version = "3.10.0"
6+
ext.voxeet_sdk_version = "[3.10.1,3.11)"
77
ext.dagger_version = "2.40.5"
88
repositories {
99
google()

android/gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
COMMS_SDK_VERSION="3.10.0-beta.1"
1+
COMMS_SDK_VERSION="3.10.0"
22
COMPONENT_NAME="flutter-sdk"

android/src/main/kotlin/io/dolby/comms/sdk/flutter/events/AudioPreviewEventEmitter.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,23 @@
11
package io.dolby.comms.sdk.flutter.events
22

33
import com.voxeet.VoxeetSDK
4-
import com.voxeet.android.media.capture.audio.preview.RecorderStatus
4+
import com.voxeet.android.media.capture.audio.preview.AudioPreviewStatus
55

66
class AudioPreviewEventEmitter(eventChannelHandler: EventChannelHandler) : NativeEventEmitter(eventChannelHandler) {
77

88
/**
99
* Emitted when the application user received an audio preview status changed.
1010
*/
11-
private val previewCallback: (RecorderStatus) -> Unit = { status ->
12-
android.util.Log.d("[KB]", "status changed: $status")
11+
private val previewCallback: (AudioPreviewStatus) -> Unit = { status ->
1312
emit(OnStatusChanged, status.name)
1413
}
1514

1615
override fun registerEventEmitter() {
17-
VoxeetSDK.audio().local.preview().callback = previewCallback
16+
VoxeetSDK.audio().local.preview().onStatusChanged = previewCallback
1817
}
1918

2019
override fun unregisterEventEmitter() {
21-
VoxeetSDK.audio().local.preview().callback = null
20+
VoxeetSDK.audio().local.preview().onStatusChanged = null
2221
}
2322

2423
companion object {

android/src/main/kotlin/io/dolby/comms/sdk/flutter/events/EventChannelHandler.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ class EventChannelHandler(private val channelName: String) : EventChannel.Stream
2222
}
2323

2424
override fun onListen(arguments: Any?, callback: EventChannel.EventSink?) {
25-
android.util.Log.d("[KB]", "arguments: ${arguments}")
2625
eventCallback = callback
2726
}
2827

android/src/main/kotlin/io/dolby/comms/sdk/flutter/module/ConferenceServiceNativeModule.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package io.dolby.comms.sdk.flutter.module
22

33
import com.voxeet.VoxeetSDK
44
import com.voxeet.sdk.json.internal.ParamsHolder
5+
import com.voxeet.sdk.models.Conference
56
import com.voxeet.sdk.models.VideoForwardingStrategy
67
import com.voxeet.sdk.services.builders.ConferenceCreateOptions
78
import com.voxeet.sdk.services.builders.VideoForwardingOptions
@@ -98,12 +99,14 @@ class ConferenceServiceNativeModule(private val scope: CoroutineScope) : NativeM
9899
private fun current(result: Result) = scope.launch(
99100
onError = result::onError,
100101
onSuccess = {
101-
VoxeetSDK
102-
.conference()
103-
.conference
104-
?.let { conf -> ConferenceMapper(conf).convertToMap() }
105-
?.let { result.success(it) }
106-
?: throw IllegalStateException("Could not get current conference")
102+
val conference = VoxeetSDK
103+
.conference()
104+
.conference
105+
if (conference != null && VoxeetSDK.conference().isInConference) {
106+
result.success(ConferenceMapper(conference).convertToMap())
107+
} else {
108+
result.success(null)
109+
}
107110
}
108111
)
109112

android/src/main/kotlin/io/dolby/comms/sdk/flutter/module/audio/AudioPreviewNativeModule.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ class AudioPreviewNativeModule(private val scope: CoroutineScope) : NativeModule
3232
::setCaptureMode.name -> setCaptureMode(call, result)
3333
::record.name -> record(call, result)
3434
::play.name -> play(call, result)
35-
::cancel.name -> cancel(result)
35+
::stop.name -> stop(result)
3636
::release.name -> release(result)
3737
}
3838
}
@@ -83,10 +83,10 @@ class AudioPreviewNativeModule(private val scope: CoroutineScope) : NativeModule
8383
}
8484
)
8585

86-
private fun cancel(result: MethodChannel.Result) = scope.launch(
86+
private fun stop(result: MethodChannel.Result) = scope.launch(
8787
onError = result::onError,
8888
onSuccess = {
89-
result.success(VoxeetSDK.audio().local.preview().cancel())
89+
result.success(VoxeetSDK.audio().local.preview().stop())
9090
}
9191
)
9292

ios/Classes/Bindings/AudioPreviewServiceBinding.swift

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ class AudioPreviewServiceBinding: Binding {
99
do {
1010
try self?.nativeEventEmitter.sendEvent(
1111
event: EventKeys.statusChanged,
12-
body: DTO.RecorderStatus(recorderStatus: status)
12+
body: DTO.AudioPreviewStatus(audioPreviewStatus: status)
1313
)
1414
} catch {
1515
fatalError(error.localizedDescription)
@@ -26,7 +26,7 @@ class AudioPreviewServiceBinding: Binding {
2626
completionHandler: FlutterMethodCallCompletionHandler
2727
) {
2828
let status = audioPreview().status
29-
completionHandler.success(encodable: DTO.RecorderStatus(recorderStatus: status))
29+
completionHandler.success(encodable: DTO.AudioPreviewStatus(audioPreviewStatus: status))
3030
}
3131

3232
/// Retrieves the comfort noise level setting for output devices in Dolby Voice conferences.
@@ -101,16 +101,15 @@ class AudioPreviewServiceBinding: Binding {
101101
}
102102
}
103103

104-
/// If playing or recording is underway calling this method will cancel the ongoing activity.
104+
/// If playing or recording is underway calling this method will stop the ongoing activity.
105105
/// - Parameters:
106106
/// - flutterArguments: Method arguments passed from Flutter.
107107
/// - completionHandler: Call methods on this instance when execution has finished.
108-
public func cancel(
108+
public func stop(
109109
flutterArguments: FlutterMethodCallArguments,
110110
completionHandler: FlutterMethodCallCompletionHandler
111111
) {
112-
audioPreview().cancel()
113-
completionHandler.success(flutterConvertible: true)
112+
completionHandler.success(flutterConvertible: audioPreview().stop())
114113
}
115114

116115
/// Release the internal memory and restart the audio session configuration.
@@ -144,8 +143,8 @@ extension AudioPreviewServiceBinding: FlutterBinding {
144143
play(flutterArguments: flutterArguments, completionHandler: completionHandler)
145144
case "record":
146145
record(flutterArguments: flutterArguments, completionHandler: completionHandler)
147-
case "cancel":
148-
cancel(flutterArguments: flutterArguments, completionHandler: completionHandler)
146+
case "stop":
147+
stop(flutterArguments: flutterArguments, completionHandler: completionHandler)
149148
case "release":
150149
release(flutterArguments: flutterArguments, completionHandler: completionHandler)
151150
default:

ios/Classes/Bindings/ConferenceServiceBinding.swift

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,11 @@ class ConferenceServiceBinding: Binding {
3434
}
3535

3636
func currentConference(completionHandler: FlutterMethodCallCompletionHandler) {
37-
do {
38-
guard let conference = VoxeetSDK.shared.conference.current else {
39-
throw BindingError.noCurrentConference
40-
}
41-
completionHandler.success(encodable: DTO.Confrence(conference: conference))
42-
} catch {
43-
completionHandler.failure(error)
37+
guard let conference = VoxeetSDK.shared.conference.current else {
38+
completionHandler.success()
39+
return
4440
}
41+
completionHandler.success(encodable: DTO.Confrence(conference: conference))
4542
}
4643

4744
// MARK: - Methods

0 commit comments

Comments
 (0)