diff --git a/.changeset/match-swift-play-and-record-options.md b/.changeset/match-swift-play-and-record-options.md deleted file mode 100644 index fedb83ca..00000000 --- a/.changeset/match-swift-play-and-record-options.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -'@livekit/react-native': minor ---- - -iOS: align the default `playAndRecord` presets with the LiveKit Swift SDK. - -The duplex (recording) presets now request `mixWithOthers`, `allowBluetooth`, -`allowBluetoothA2DP` and `allowAirPlay`, matching `playAndRecordOptions` in the -Swift SDK. Previously only `allowBluetooth` and `mixWithOthers` were requested, -so A2DP output devices and AirPlay routes were unavailable during a call on this -platform but available on others. - -When `preferSpeakerOutput` is set, `defaultToSpeaker` is now requested as well. -The `videoChat` mode 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 `setupIOSAudioManagement` and the deprecated -`getDefaultAppleAudioConfigurationForMode`. A custom `IOSAudioSessionPolicy` or -`AppleAudioConfiguration` is unaffected - those supply their own options. diff --git a/.changeset/prefixed-webrtc-symbols.md b/.changeset/prefixed-webrtc-symbols.md deleted file mode 100644 index 00bdb51f..00000000 --- a/.changeset/prefixed-webrtc-symbols.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -'@livekit/react-native': major ---- - -Move to the LiveKit prefixed WebRTC builds: `io.github.webrtc-sdk:android-prefixed` on Android and the `LiveKitWebRTC` pod on iOS. This prevents collisions against any other WebRTC implementations. - -Apps that only use the JavaScript API need no changes. - -Native integrations must migrate to the prefixed symbols: - -* Android: `org.webrtc.*` becomes `livekit.org.webrtc.*`. - Custom `-keep class org.webrtc.**` ProGuard rules must be updated to `livekit.org.webrtc.**`. -* iOS: types gain an `LK` prefix (`RTCAudioRenderer` becomes `LKRTCAudioRenderer`, `RTCAudioBuffer` becomes `LKRTCAudioBuffer`, and so on). diff --git a/.changeset/voice-processing-aware-session-mode.md b/.changeset/voice-processing-aware-session-mode.md deleted file mode 100644 index 0334ec92..00000000 --- a/.changeset/voice-processing-aware-session-mode.md +++ /dev/null @@ -1,30 +0,0 @@ ---- -'@livekit/react-native': minor ---- - -iOS: pick the audio session mode based on Apple Voice Processing I/O state. - -iOS applies a reduced, call-tuned speaker gain while capture is active under the -`voiceChat`/`videoChat` session modes. Apple Voice Processing I/O compensates -with its own loudness stage, so with VPIO off remote audio played back -noticeably quieter. - -`LiveKitWebRTC` 144.7559.15 reports the resolved VPIO state to the audio device -module's `willEnableEngine` hook. The default recording configuration now uses -that: with VPIO running it keeps `voiceChat`/`videoChat` as before, and with VPIO -off (for example after `AudioDeviceModule.setVoiceProcessingEnabled(false)`) it -switches to the `default` mode, which keeps media gain. That mode routes to the -receiver, so `preferSpeakerOutput` is expressed through the `defaultToSpeaker` -category option instead of the implicit routing the chat modes provide. This -matches what the LiveKit Swift SDK already does. - -`IOSAudioSessionPolicy` gains an optional `recordingWithoutVoiceProcessing` -configuration for the VPIO-off case. Policies that omit it keep using their -`recording` configuration for both, so existing setups are unaffected. -`AudioEngineConfigurationState`, passed to the deprecated -`setupIOSAudioManagement` callback form, gains a matching -`isVoiceProcessingEnabled` field. - -Requires `@livekit/react-native-webrtc` with the five-argument `willEnableEngine` -delegate method. Older versions crash with an unrecognized selector when the -audio engine first enables. diff --git a/CHANGELOG.md b/CHANGELOG.md index 40d21bf3..28eab7de 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,65 @@ # @livekit/react-native +## 3.0.0 + +### Major Changes + +- Move to the LiveKit prefixed WebRTC builds: `io.github.webrtc-sdk:android-prefixed` on Android and the `LiveKitWebRTC` pod on iOS. This prevents collisions against any other WebRTC implementations. - [#455](https://github.com/livekit/client-sdk-react-native/pull/455) ([@davidliu](https://github.com/davidliu)) + + Apps that only use the JavaScript API need no changes. + + Native integrations must migrate to the prefixed symbols: + - Android: `org.webrtc.*` becomes `livekit.org.webrtc.*`. + Custom `-keep class org.webrtc.**` ProGuard rules must be updated to `livekit.org.webrtc.**`. + - iOS: types gain an `LK` prefix (`RTCAudioRenderer` becomes `LKRTCAudioRenderer`, `RTCAudioBuffer` becomes `LKRTCAudioBuffer`, and so on). + +### Minor Changes + +- iOS: align the default `playAndRecord` presets with the LiveKit Swift SDK. - [#455](https://github.com/livekit/client-sdk-react-native/pull/455) ([@davidliu](https://github.com/davidliu)) + + The duplex (recording) presets now request `mixWithOthers`, `allowBluetooth`, + `allowBluetoothA2DP` and `allowAirPlay`, matching `playAndRecordOptions` in the + Swift SDK. Previously only `allowBluetooth` and `mixWithOthers` were requested, + so A2DP output devices and AirPlay routes were unavailable during a call on this + platform but available on others. + + When `preferSpeakerOutput` is set, `defaultToSpeaker` is now requested as well. + The `videoChat` mode 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 `setupIOSAudioManagement` and the deprecated + `getDefaultAppleAudioConfigurationForMode`. A custom `IOSAudioSessionPolicy` or + `AppleAudioConfiguration` is unaffected - those supply their own options. + +- iOS: pick the audio session mode based on Apple Voice Processing I/O state. - [#455](https://github.com/livekit/client-sdk-react-native/pull/455) ([@davidliu](https://github.com/davidliu)) + + iOS applies a reduced, call-tuned speaker gain while capture is active under the + `voiceChat`/`videoChat` session modes. Apple Voice Processing I/O compensates + with its own loudness stage, so with VPIO off remote audio played back + noticeably quieter. + + `LiveKitWebRTC` 144.7559.15 reports the resolved VPIO state to the audio device + module's `willEnableEngine` hook. The default recording configuration now uses + that: with VPIO running it keeps `voiceChat`/`videoChat` as before, and with VPIO + off (for example after `AudioDeviceModule.setVoiceProcessingEnabled(false)`) it + switches to the `default` mode, which keeps media gain. That mode routes to the + receiver, so `preferSpeakerOutput` is expressed through the `defaultToSpeaker` + category option instead of the implicit routing the chat modes provide. This + matches what the LiveKit Swift SDK already does. + + `IOSAudioSessionPolicy` gains an optional `recordingWithoutVoiceProcessing` + configuration for the VPIO-off case. Policies that omit it keep using their + `recording` configuration for both, so existing setups are unaffected. + `AudioEngineConfigurationState`, passed to the deprecated + `setupIOSAudioManagement` callback form, gains a matching + `isVoiceProcessingEnabled` field. + + Requires `@livekit/react-native-webrtc` with the five-argument `willEnableEngine` + delegate method. Older versions crash with an unrecognized selector when the + audio engine first enables. + ## 2.12.0 ### Minor Changes diff --git a/docs/assets/search.js b/docs/assets/search.js index 8355a255..48376c3b 100644 --- a/docs/assets/search.js +++ b/docs/assets/search.js @@ -1 +1 @@ -window.searchData = "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"; \ No newline at end of file +window.searchData = "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"; \ No newline at end of file diff --git a/docs/classes/AudioSession.html b/docs/classes/AudioSession.html index be549477..f451c75a 100644 --- a/docs/classes/AudioSession.html +++ b/docs/classes/AudioSession.html @@ -1,4 +1,4 @@ -
StaticconfigureStaticgetGets the available audio outputs for use with selectAudioOutput.
+StaticgetGets the available audio outputs for use with selectAudioOutput.
startAudioSession must be called prior to using this method.
For Android, will return if available:
react-native-avroutepicker for a native platform
control.
the available audio output types
-StaticselectSelect the provided audio output if available.
+StaticselectSelect the provided audio output if available.
startAudioSession must be called prior to using this method.
A deviceId retrieved from getAudioOutputs
-StaticsetDirectly change the AVAudioSession category/mode.
+StaticsetDirectly change the AVAudioSession category/mode.
The configuration to use. Null values will be omitted and the existing values will be unchanged.
-StaticsetSet default audio track volume when new tracks are subscribed. +
StaticsetSet default audio track volume when new tracks are subscribed. Does not affect any existing tracks.
A number between 0.0 and 1.0, where 0.0 represents 0% volume and 1.0 represents full volume.
-StaticshowiOS only, requires iOS 11+.
+StaticshowiOS only, requires iOS 11+.
Displays an AVRoutePickerView for the user to choose their audio output.
-StaticstartStarts an AudioSession.
-StaticstopStops the existing AudioSession.
-StaticstartStarts an AudioSession.
+StaticstopStops the existing AudioSession.
+ExperimentalExperimentalExperimentalExperimentalExperimentalExperimentalExperimentalExperimentalExperimentalExperimentalExperimentalExperimentalExperimentalExperimentalExperimentalExperimentalExperimentalExperimentalExperimentalExperimentalExperimentalExperimentalExperimentalExperimentalExperimentalOptionalparticipantIdentity: stringOptionalkeyIndex: numberExperimentalOptionalkeyIndex: numberExperimentalAccepts a passphrase that's used to create the crypto keys for a participant's stream.
-OptionalkeyIndex: numberExperimentalAccepts a passphrase that's used to create the crypto keys.
-OptionalkeyIndex: numberExperimentalExperimentalExperimentalExperimentalOptionalparticipantIdentity: stringOptionalkeyIndex: numberExperimentalOptionalkeyIndex: numberExperimentalAccepts a passphrase that's used to create the crypto keys for a participant's stream.
+OptionalkeyIndex: numberExperimentalAccepts a passphrase that's used to create the crypto keys.
+OptionalkeyIndex: numberExperimentalVisualizes audio signals from a TrackReference as bars. +
Visualizes audio signals from a TrackReference as bars.
If the state prop is set, it automatically transitions between VoiceAssistant states.
The LiveKitRoom component provides the room context to all its child components.
+
The LiveKitRoom component provides the room context to all its child components.
It is generally the starting point of your LiveKit app and the root of the LiveKit component tree.
It provides the room state as a React context to all child components, so you don't have to pass it yourself.
Use the default behavior of setupIOSAudioManagement instead.
AudioTrackState carries no voice-processing state, so this matches the
+voice-processing-enabled results of that function only.
+Registers the required globals needed for LiveKit to work.
+Registers the required globals needed for LiveKit to work.
Must be called before using LiveKit.
Optionaloptions: RegisterGlobalsOptionsOptional configuration for global registration
-Set the log level for both the @livekit/react-native package and the @livekit-client package.
+
Set the log level for both the @livekit/react-native package and the @livekit-client package.
To set the @livekit-client log independently, use the liveKitClientLogLevel prop on the options object.
Sets up automatic iOS audio session management based on audio engine state.
+Sets up automatic iOS audio session management based on audio engine state.
Call this once at app startup (e.g. in index.js). registerGlobals()
invokes it for you by default unless autoConfigureAudioSession: false
is passed.
OptionalpreferSpeakerOutput: booleanWhether to prefer speaker output. Defaults to true.
A cleanup function that removes the installed handlers or native configuration. A cleanup function from a superseded setup is a no-op.
-Sets up automatic iOS audio session management with a static native policy.
+Sets up automatic iOS audio session management with a static native policy.
Unused when a full policy is provided; kept for call-site consistency with the default overload.
Static recording/playout configuration applied natively.
setupIOSAudioManagement for the default native path and usage notes.
-The onConfigureNativeAudio callback is unsafe. It runs inside
the audio engine's lifecycle callbacks while native code waits for the
result (bounded at a few seconds). The callback must return quickly and
must not call APIs that enter the WebRTC engine or a peer connection
(for example addTransceiver, getUserMedia, or device enumeration):
those can block on the same engine operation the callback is holding up.
Prefer the default native path, or pass an IOSAudioSessionPolicy.
Default sort for participants, it'll order participants by:
+Default sort for participants, it'll order participants by:
OptionallocalParticipant: LocalParticipantOptionallocalParticipant: LocalParticipantOptionalonConfigureNativeAudio: (Use setupIOSAudioManagement instead. +
OptionalonConfigureNativeAudio: (Use setupIOSAudioManagement instead.
The room parameter is ignored — audio session is now managed
via audio engine events, not room track counts.
The onConfigureNativeAudio callback is also deprecated and unsafe: it
@@ -10,4 +10,4 @@
publication counts. Edge cases can differ. For example, a
published-but-muted local audio track that previously yielded
localOnly may now appear as remoteOnly or none.
A hook for tracking the volume of an audio track across multiple frequency bands.
+A hook for tracking the volume of an audio track across multiple frequency bands.
OptionaltrackOrTrackReference: LocalAudioTrack | RemoteAudioTrack | TrackReferenceOrPlaceholderOptionaloptions: MultiBandTrackVolumeOptionsA number array containing the volume for each frequency band.
-Optionaloptions: RoomOptionsOptionaloptions: RoomOptionsA hook for tracking the volume of an audio track.
+A hook for tracking the volume of an audio track.
OptionaltrackOrTrackReference: LocalAudioTrack | RemoteAudioTrack | TrackReferenceOrPlaceholderA number between 0-1 representing the volume.
-BetaBetaOptional BetabarNumber of bars that show up in the visualizer
-Optional BetaoptionsOptional BetastateIf set, the visualizer will transition between different voice assistant states
-Optional BetastyleCustom React Native styles for the container.
-Optional BetatrackOptional BetaoptionsOptional BetastateIf set, the visualizer will transition between different voice assistant states
+Optional BetastyleCustom React Native styles for the container.
+Optional BetatrackOptionalconnectIf set to true a connection to LiveKit room is initiated.
OptionalconnectDefine options how to connect to the LiveKit server.
+OptionalconnectDefine options how to connect to the LiveKit server.
Optional ExperimentalfeatureOptionalonOptionalonOptionalonOptionalonOptionalonOptionaloptionsOptions for when creating a new room. +
Optional ExperimentalfeatureOptionalonOptionalonOptionalonOptionalonOptionalonOptionaloptionsOptions for when creating a new room. When you pass your own room instance to this component, these options have no effect. Instead, set the options directly in the room instance.
OptionalroomOptional room instance. +
OptionalroomOptional room instance.
By passing your own room instance you overwrite the options parameter,
make sure to set the options directly on the room instance itself.
OptionalscreenPublish screen share immediately after connecting to your LiveKit room.
+OptionalscreenPublish screen share immediately after connecting to your LiveKit room.
URL to the LiveKit server. +
URL to the LiveKit server.
For example: wss://<domain>.livekit.cloud
To simplify the implementation, undefined is also accepted as an intermediate value, but only with a valid string url can the connection be established.
OptionalsimulateA user specific access token for a client to authenticate to the room. +
OptionalsimulateA user specific access token for a client to authenticate to the room.
This token is necessary to establish a connection to the room.
To simplify the implementation, undefined is also accepted as an intermediate value, but only with a valid string token can the connection be established.
OptionalvideoPublish video immediately after connecting to your LiveKit room.
+OptionalvideoPublish video immediately after connecting to your LiveKit room.
AlphaInterface for configuring options for the useMultibandTrackVolume hook.
-AlphaInterface for configuring options for the useMultibandTrackVolume hook.
+Optional Alphabandsthe number of bands to split the audio into
-Optional Alphamaxcut off frequency on the higher end
-Optional Alphamincut off frequency on the lower end
-Optional Alphaupdateupdate should run every x ms
-Optional Alphamaxcut off frequency on the higher end
+Optional Alphamincut off frequency on the lower end
+Optional Alphaupdateupdate should run every x ms
+OptionalcameraOptionalmetadataOptionalmicrophoneOptionalscreenOptionalcameraOptionalmetadataOptionalmicrophoneOptionalscreenOptionalaudioCorresponds to Android's AndroidAttributes content type.
Defaults to 'speech'.
See also https://developer.android.com/reference/android/media/AudioAttributes
-OptionalaudioCorresponds to Android's AudioAttributes usage type.
+OptionalaudioCorresponds to Android's AudioAttributes usage type.
Defaults to 'voiceCommunication'.
See also https://developer.android.com/reference/android/media/AudioAttributes
-OptionalaudioCorresponds to the duration hint when requesting audio focus.
+OptionalaudioCorresponds to the duration hint when requesting audio focus.
Defaults to 'gain'.
See also https://developer.android.com/reference/android/media/AudioManager#AUDIOFOCUS_GAIN
-OptionalaudioOptionalaudioCorresponds to https://developer.android.com/reference/android/media/AudioManager#setMode(int)
Defaults to 'inCommunication'.
-OptionalaudioCorresponds to the stream type when requesting audio focus. Used on pre-O devices.
+OptionalaudioCorresponds to the stream type when requesting audio focus. Used on pre-O devices.
Defaults to 'voiceCall'
See also https://developer.android.com/reference/android/media/AudioManager#STREAM_VOICE_CALL
-OptionalforceOn certain Android devices, audio routing does not function properly and +
OptionalforceOn certain Android devices, audio routing does not function properly and
bluetooth microphones will not work unless audio mode is set to
inCommunication or inCall. Audio routing is turned off those cases.
If this set to true, will attempt to do audio routing regardless of audio mode.
Defaults to false.
-OptionalmanageWhether LiveKit should handle managing the audio focus or not.
+OptionalmanageWhether LiveKit should handle managing the audio focus or not.
Defaults to true.
-Configuration for the underlying AudioSession.
+Configuration for the underlying AudioSession.
Android specific options:
By default, this is set to "speaker"
OptionalandroidOptionaliosOptionalandroidOptionaliosWhether Apple Voice Processing I/O is running for this engine state. The
+voiceChat/videoChat modes engage iOS's call-tuned speaker gain, which
+only VPIO compensates for, so a configuration derived for recording should
+account for this.
Retained only for the legacy useIOSAudioManagement hook and
+
Retained only for the legacy useIOSAudioManagement hook and
getDefaultAppleAudioConfigurationForMode. New code should use
setupIOSAudioManagement (optionally with an IOSAudioSessionPolicy).
That API is driven by playout/recording engine state, which has no direct
AudioTrackState equivalent.
Static recording/playout policy for setupIOSAudioManagement.
-Static recording/playout policy for setupIOSAudioManagement.
+OptionalrecordingRecording configuration to apply while Apple Voice Processing I/O is off,
+for example after AudioDeviceModule.setVoiceProcessingEnabled(false).
+A policy whose recording config uses voiceChat/videoChat should
+set a default-mode variant here, otherwise remote audio plays back
+noticeably quieter without VPIO to compensate for the call-tuned gain.
+Defaults to recording, so a policy that does not set this behaves
+exactly as before.
Unsafe. Prefer IOSAudioSessionPolicy or the default +
Unsafe. Prefer IOSAudioSessionPolicy or the default native path. See setupIOSAudioManagement.
-Options for construction an RNKeyProvider
-Options for construction an RNKeyProvider
+Props for the VideoTrack component.
-Props for the VideoTrack component.
+import { startIOSPIP, stopIOSPIP } from '@livekit/react-native-webrtc';
// Obtain a ref to the view
const videoRef = useRef<Component>(null);
const videoView = (
<VideoTrack
ref={videoRef}
iosPIP={{
enabled: true,
startAutomatically: true,
preferredSize: {
width: 9,
height: 16,
},
}}
...
/>
);
// Start/stop manually
startIOSPIP(videoRef);
stopIOSPIP(videoRef);
-OptionalmirrorIndicates whether the video should be mirrored during rendering. +
OptionalmirrorIndicates whether the video should be mirrored during rendering. This is commonly used for front-facing cameras.
-OptionalobjectSpecifies how the video content should be resized to fit its container. +
OptionalobjectSpecifies how the video content should be resized to fit its container. 'cover' (default): The video will fill the entire container, potentially cropping the video. 'contain': The entire video will be visible within the container, potentially leaving empty space.
-OptionalstyleCustom React Native styles for the video container.
-The track reference to display. This should be a TrackReference object +
OptionalstyleCustom React Native styles for the video container.
+The track reference to display. This should be a TrackReference object or undefined if no track is available.
-OptionalzSpecifies the depth-stacking order of this video view in the stacking space of all video views. +
OptionalzSpecifies the depth-stacking order of this video view in the stacking space of all video views. A larger zOrder value generally causes the view to cover those with lower values.
The support for zOrder is platform-dependent and/or implementation-specific. Thus, specifying a value for zOrder is to be @@ -38,4 +38,4 @@ application usually needs a maximum of two zOrder values: 0 for the remote video(s) which appear in the background, and 1 for the local video(s) which appear above the remote video(s).
-ConstA pre-configured AndroidAudioConfiguration for voice communication.
+ConstA pre-configured AndroidAudioConfiguration for voice communication.
A pre-configured AndroidAudioConfiguration for media playback.
-ConstVideoTrack component for displaying video tracks in a React Native application. +
ConstVideoTrack component for displaying video tracks in a React Native application. It supports both local and remote video tracks from LiveKit, and handles adaptive streaming for remote tracks.
ConstConst
Applies the provided audio configuration to the underlying AudioSession.
Must be called prior to connecting to a Room for the configuration to apply correctly.
See also
-setupIOSAudioManagementfor automatic configuration of iOS audio options.