Skip to content

Commit fcf948c

Browse files
authored
Skip audio session config in manual rendering mode (#964)
Re-add manual rendering mode skip logic removed in #793
1 parent f5fa80e commit fcf948c

3 files changed

Lines changed: 11 additions & 0 deletions

File tree

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
patch type="changed" "Skip AVAudioSession configuration in manual rendering mode"

Sources/LiveKit/Audio/AudioSessionEngineObserver.swift

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -215,6 +215,11 @@ public class AudioSessionEngineObserver: AudioEngineObserver, Loggable, @uncheck
215215
// MARK: - AudioEngineObserver
216216

217217
public func engineWillEnable(_ engine: AVAudioEngine, isPlayoutEnabled: Bool, isRecordingEnabled: Bool) -> Int {
218+
// No device access in manual rendering mode, skip session requirement.
219+
if engine.isInManualRenderingMode {
220+
return _state.next?.engineWillEnable(engine, isPlayoutEnabled: isPlayoutEnabled, isRecordingEnabled: isRecordingEnabled) ?? 0
221+
}
222+
218223
let requirement = SessionRequirement(isPlayoutEnabled: isPlayoutEnabled, isRecordingEnabled: isRecordingEnabled)
219224
do {
220225
try set(requirement: requirement, for: sessionRequirementId)
@@ -227,6 +232,10 @@ public class AudioSessionEngineObserver: AudioEngineObserver, Loggable, @uncheck
227232
public func engineDidDisable(_ engine: AVAudioEngine, isPlayoutEnabled: Bool, isRecordingEnabled: Bool) -> Int {
228233
let nextResult = _state.next?.engineDidDisable(engine, isPlayoutEnabled: isPlayoutEnabled, isRecordingEnabled: isRecordingEnabled) ?? 0
229234

235+
if engine.isInManualRenderingMode {
236+
return nextResult
237+
}
238+
230239
let requirement = SessionRequirement(isPlayoutEnabled: isPlayoutEnabled, isRecordingEnabled: isRecordingEnabled)
231240
do {
232241
try set(requirement: requirement, for: sessionRequirementId)

Sources/LiveKit/Audio/Manager/AudioManager.swift

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -366,6 +366,7 @@ public class AudioManager: Loggable {
366366
/// Enables manual rendering (no-device) mode of AVAudioEngine.
367367
/// In this mode, you can provide audio buffers by calling `AudioManager.shared.mixer.capture(appAudio:)` continuously.
368368
/// Remote audio will not play out automatically. Get remote mixed audio buffers with `AudioManager.shared.add(localAudioRenderer:)` or individual tracks with ``RemoteAudioTrack/add(audioRenderer:)``.
369+
/// - Note: While enabled, the SDK will not configure `AVAudioSession`. Configure it yourself if your app does its own audio I/O.
369370
public func setManualRenderingMode(_ enabled: Bool) throws {
370371
let result = RTC.audioDeviceModule.setManualRenderingMode(enabled)
371372
try checkAdmResult(code: result)

0 commit comments

Comments
 (0)