Skip to content

Commit ad7a88e

Browse files
committed
[Fix]Issue with releasing audio filters
1 parent 2256a74 commit ad7a88e

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

Sources/StreamVideo/WebRTC/AudioFilter/Filters/NoiseCancellationFilter.swift

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,8 @@ public final class NoiseCancellationFilter: AudioFilter, @unchecked Sendable, Ob
6161
public func initialize(sampleRate: Int, channels: Int) {
6262
serialQueue.addTaskOperation { @MainActor [weak self] in
6363
guard let self, !isActive else { return }
64-
self.initializeClosure(sampleRate, channels)
65-
self.isActive = true
64+
initializeClosure(sampleRate, channels)
65+
isActive = true
6666
log.debug("AudioFilter:\(id) initialize sampleRate:\(sampleRate) channels:\(channels).")
6767
}
6868
}
@@ -85,7 +85,7 @@ public final class NoiseCancellationFilter: AudioFilter, @unchecked Sendable, Ob
8585
/// Releases the filter by stopping noise cancellation for the active call.
8686
public func release() {
8787
serialQueue.addTaskOperation { [weak self] in
88-
guard let self, let activeCall = self.activeCall else {
88+
guard let self, let activeCall else {
8989
return
9090
}
9191
await stopNoiseCancellation(for: activeCall)
@@ -128,9 +128,12 @@ public final class NoiseCancellationFilter: AudioFilter, @unchecked Sendable, Ob
128128
}
129129

130130
private func stopNoiseCancellation(for call: Call?) async {
131-
Task(disposableBag: disposableBag) { @MainActor [weak self] in
132-
self?.isActive = false
131+
guard isActive else {
132+
return
133133
}
134+
_ = await Task(disposableBag: disposableBag) { @MainActor [weak self] in
135+
self?.isActive = false
136+
}.result
134137
releaseClosure() // Invoke the release closure.
135138
log.debug("AudioFilter:\(id) is now inactive 🔴.")
136139

0 commit comments

Comments
 (0)