Repository navigation
Major Changes
-
Move to the LiveKit prefixed WebRTC builds:
io.github.webrtc-sdk:android-prefixedon Android and theLiveKitWebRTCpod on iOS. This prevents collisions against any other WebRTC implementations. - #455 (@davidliu)Apps that only use the JavaScript API need no changes.
Native integrations must migrate to the prefixed symbols:
- Android:
org.webrtc.*becomeslivekit.org.webrtc.*.
Custom-keep class org.webrtc.**ProGuard rules must be updated tolivekit.org.webrtc.**. - iOS: types gain an
LKprefix (RTCAudioRendererbecomesLKRTCAudioRenderer,RTCAudioBufferbecomesLKRTCAudioBuffer, and so on).
- Android:
Minor Changes
-
iOS: align the default
playAndRecordpresets with the LiveKit Swift SDK. - #455 (@davidliu)The duplex (recording) presets now request
mixWithOthers,allowBluetooth,
allowBluetoothA2DPandallowAirPlay, matchingplayAndRecordOptionsin the
Swift SDK. Previously onlyallowBluetoothandmixWithOtherswere requested,
so A2DP output devices and AirPlay routes were unavailable during a call on this
platform but available on others.When
preferSpeakerOutputis set,defaultToSpeakeris now requested as well.
ThevideoChatmode implies a speaker route, but iOS may rewrite the mode when
Voice Processing I/O is instantiated - the Swift SDK observed it switching to
voiceChat, which routes to the receiver. Requesting the option explicitly
keeps the speaker route across that rewrite.This affects the defaults used by
setupIOSAudioManagementand the deprecated
getDefaultAppleAudioConfigurationForMode. A customIOSAudioSessionPolicyor
AppleAudioConfigurationis unaffected - those supply their own options. -
iOS: pick the audio session mode based on Apple Voice Processing I/O state. - #455 (@davidliu)
iOS applies a reduced, call-tuned speaker gain while capture is active under the
voiceChat/videoChatsession modes. Apple Voice Processing I/O compensates
with its own loudness stage, so with VPIO off remote audio played back
noticeably quieter.LiveKitWebRTC144.7559.15 reports the resolved VPIO state to the audio device
module'swillEnableEnginehook. The default recording configuration now uses
that: with VPIO running it keepsvoiceChat/videoChatas before, and with VPIO
off (for example afterAudioDeviceModule.setVoiceProcessingEnabled(false)) it
switches to thedefaultmode, which keeps media gain. That mode routes to the
receiver, sopreferSpeakerOutputis expressed through thedefaultToSpeaker
category option instead of the implicit routing the chat modes provide. This
matches what the LiveKit Swift SDK already does.IOSAudioSessionPolicygains an optionalrecordingWithoutVoiceProcessing
configuration for the VPIO-off case. Policies that omit it keep using their
recordingconfiguration for both, so existing setups are unaffected.
AudioEngineConfigurationState, passed to the deprecated
setupIOSAudioManagementcallback form, gains a matching
isVoiceProcessingEnabledfield.Requires
@livekit/react-native-webrtcwith the five-argumentwillEnableEngine
delegate method. Older versions crash with an unrecognized selector when the
audio engine first enables.