diff --git a/packages/client/src/Call.ts b/packages/client/src/Call.ts index 8c5c8aaa6e..9845f19293 100644 --- a/packages/client/src/Call.ts +++ b/packages/client/src/Call.ts @@ -345,6 +345,7 @@ export class Call { setup = async () => { await withoutConcurrency(this.joinLeaveConcurrencyTag, async () => { if (this.initialized) return; + globalThis.streamRNVideoSDK?.callManager.setup(); this.leaveCallHooks.add( this.on('all', (event) => { @@ -659,6 +660,8 @@ export class Call { this.cancelAutoDrop(); this.clientStore.unregisterCall(this); + globalThis.streamRNVideoSDK?.callManager.stop(); + this.camera.dispose(); this.microphone.dispose(); this.screenShare.dispose(); @@ -884,6 +887,8 @@ export class Call { throw new Error(`Illegal State: call.join() shall be called only once`); } + globalThis.streamRNVideoSDK?.callManager.start(); + // we will count the number of join failures per SFU. // once the number of failures reaches 2, we will piggyback on the `migrating_from` // field to force the coordinator to provide us another SFU diff --git a/packages/client/src/types.ts b/packages/client/src/types.ts index 312bb0c4a6..43d5b71f63 100644 --- a/packages/client/src/types.ts +++ b/packages/client/src/types.ts @@ -322,6 +322,29 @@ export type CallConstructor = { clientStore: StreamVideoWriteableStateStore; }; +export type StreamRNVideoSDKGlobals = { + callManager: { + /** + * Sets up the in call manager. + */ + setup(): void; + + /** + * Starts the in call manager. + */ + start(): void; + + /** + * Stops the in call manager. + */ + stop(): void; + }; +}; + +declare global { + var streamRNVideoSDK: StreamRNVideoSDKGlobals | undefined; +} + /** * The options to pass to {@link Call.join} method. */ diff --git a/packages/react-native-sdk/android/src/main/java/com/streamvideo/reactnative/audio/AudioDeviceManager.kt b/packages/react-native-sdk/android/src/main/java/com/streamvideo/reactnative/audio/AudioDeviceManager.kt index d6cd7d7850..6f1f630b6b 100644 --- a/packages/react-native-sdk/android/src/main/java/com/streamvideo/reactnative/audio/AudioDeviceManager.kt +++ b/packages/react-native-sdk/android/src/main/java/com/streamvideo/reactnative/audio/AudioDeviceManager.kt @@ -31,7 +31,6 @@ import com.streamvideo.reactnative.audio.utils.AudioDeviceEndpointUtils import com.streamvideo.reactnative.audio.utils.AudioFocusUtil import com.streamvideo.reactnative.audio.utils.AudioManagerUtil import com.streamvideo.reactnative.audio.utils.AudioManagerUtil.Companion.getAvailableAudioDevices -import com.streamvideo.reactnative.audio.utils.AudioSetupStoreUtil import com.streamvideo.reactnative.audio.utils.CallAudioRole import com.streamvideo.reactnative.callmanager.ProximityManager import com.streamvideo.reactnative.callmanager.StreamInCallManagerModule @@ -90,6 +89,8 @@ class AudioDeviceManager( @EndpointType private var userSelectedAudioDevice: Int? = null + var enableStereo: Boolean = false + private val mAudioManager = mReactContext.getSystemService(Context.AUDIO_SERVICE) as AudioManager @@ -99,7 +100,6 @@ class AudioDeviceManager( private var audioFocusLost = false private var audioFocusUtil = AudioFocusUtil(mAudioManager, this) - private var audioSetupStoreUtil = AudioSetupStoreUtil(mReactContext, mAudioManager, this) var callAudioRole: CallAudioRole = CallAudioRole.Communicator @@ -113,33 +113,38 @@ class AudioDeviceManager( mAudioManager.registerAudioDeviceCallback(this, null) } + fun setup() { + if (callAudioRole == CallAudioRole.Communicator) { + mAudioManager.mode = AudioManager.MODE_IN_COMMUNICATION + } else { + // Audio routing is handled automatically by the system in normal media mode + // and bluetooth microphones may not work on some devices. + mAudioManager.mode = AudioManager.MODE_NORMAL + } + audioFocusUtil.setup(callAudioRole, mReactContext) + } + fun start(activity: Activity) { runInAudioThread { + setup() userSelectedAudioDevice = null selectedAudioDeviceEndpoint = null - audioSetupStoreUtil.storeOriginalAudioSetup() if (callAudioRole == CallAudioRole.Communicator) { // Audio routing is manually controlled by the SDK in communication media mode // and local microphone can be published - mAudioManager.mode = AudioManager.MODE_IN_COMMUNICATION activity.volumeControlStream = AudioManager.STREAM_VOICE_CALL bluetoothManager.start() mAudioManager.registerAudioDeviceCallback(this, null) updateAudioDeviceState() proximityManager.start() } else { - // Audio routing is handled automatically by the system in normal media mode - // and bluetooth microphones may not work on some devices. - mAudioManager.mode = AudioManager.MODE_NORMAL activity.volumeControlStream = AudioManager.USE_DEFAULT_STREAM_TYPE } - - audioSetupStoreUtil.storeOriginalAudioSetup() audioFocusUtil.requestFocus(callAudioRole, mReactContext) } } - fun stop() { + fun stop(activity: Activity) { runInAudioThread { if (callAudioRole == CallAudioRole.Communicator) { if (Build.VERSION.SDK_INT >= 31) { @@ -150,7 +155,7 @@ class AudioDeviceManager( bluetoothManager.stop() proximityManager.stop() } - audioSetupStoreUtil.restoreOriginalAudioSetup() + activity.volumeControlStream = AudioManager.USE_DEFAULT_STREAM_TYPE audioFocusUtil.abandonFocus() } } diff --git a/packages/react-native-sdk/android/src/main/java/com/streamvideo/reactnative/audio/utils/AudioFocusUtil.kt b/packages/react-native-sdk/android/src/main/java/com/streamvideo/reactnative/audio/utils/AudioFocusUtil.kt index 96d87e1683..44d837b2f1 100644 --- a/packages/react-native-sdk/android/src/main/java/com/streamvideo/reactnative/audio/utils/AudioFocusUtil.kt +++ b/packages/react-native-sdk/android/src/main/java/com/streamvideo/reactnative/audio/utils/AudioFocusUtil.kt @@ -4,6 +4,7 @@ import android.media.AudioAttributes import android.media.AudioFocusRequest import android.media.AudioManager import android.os.Build +import androidx.annotation.RequiresApi import com.facebook.react.bridge.ReactContext import com.oney.WebRTCModule.WebRTCModule import org.webrtc.audio.JavaAudioDeviceModule @@ -25,18 +26,31 @@ class AudioFocusUtil( private lateinit var request: AudioFocusRequest + @RequiresApi(26) + private fun getAudioAttributes(mode: CallAudioRole): AudioAttributes { + return AudioAttributes.Builder() + .setUsage(if (mode == CallAudioRole.Communicator) AudioAttributes.USAGE_VOICE_COMMUNICATION else AudioAttributes.USAGE_MEDIA) + .setContentType(if (mode == CallAudioRole.Communicator) AudioAttributes.CONTENT_TYPE_SPEECH else AudioAttributes.CONTENT_TYPE_MUSIC) + .build() + } + + private fun setup(audioAttributes: AudioAttributes, reactContext: ReactContext) { + val webRTCModule = reactContext.getNativeModule(WebRTCModule::class.java)!! + val adm = webRTCModule.audioDeviceModule as JavaAudioDeviceModule + WebRtcAudioTrackHelper.setAudioOutputAttributes(adm, audioAttributes) + } + + fun setup(mode: CallAudioRole, reactContext: ReactContext) { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { + val audioAttributes = getAudioAttributes(mode) + setup(audioAttributes, reactContext) + } + } fun requestFocus(mode: CallAudioRole, reactContext: ReactContext) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - val audioAttributes = AudioAttributes.Builder() - .setUsage(if (mode == CallAudioRole.Communicator) AudioAttributes.USAGE_VOICE_COMMUNICATION else AudioAttributes.USAGE_MEDIA) - .setContentType(if (mode == CallAudioRole.Communicator) AudioAttributes.CONTENT_TYPE_SPEECH else AudioAttributes.CONTENT_TYPE_MUSIC) - .build() - - // 1. set audio attributes to webrtc - val webRTCModule = reactContext.getNativeModule(WebRTCModule::class.java)!! - val adm = webRTCModule.audioDeviceModule as JavaAudioDeviceModule - WebRtcAudioTrackHelper.setAudioOutputAttributes(adm, audioAttributes) + val audioAttributes = getAudioAttributes(mode) + setup(audioAttributes, reactContext) // 2. request the audio focus with the audio attributes request = AudioFocusRequest.Builder(AudioManager.AUDIOFOCUS_GAIN_TRANSIENT) diff --git a/packages/react-native-sdk/android/src/main/java/com/streamvideo/reactnative/audio/utils/AudioSetupStoreUtil.kt b/packages/react-native-sdk/android/src/main/java/com/streamvideo/reactnative/audio/utils/AudioSetupStoreUtil.kt deleted file mode 100644 index a112dce934..0000000000 --- a/packages/react-native-sdk/android/src/main/java/com/streamvideo/reactnative/audio/utils/AudioSetupStoreUtil.kt +++ /dev/null @@ -1,41 +0,0 @@ -package com.streamvideo.reactnative.audio.utils - -import android.media.AudioManager -import android.util.Log -import com.facebook.react.bridge.ReactContext -import com.streamvideo.reactnative.audio.AudioDeviceManager -import com.streamvideo.reactnative.callmanager.StreamInCallManagerModule.Companion.TAG - -class AudioSetupStoreUtil( - private val mReactContext: ReactContext, - private val mAudioManager: AudioManager, - private val mAudioDeviceManager: AudioDeviceManager -) { - private var isOrigAudioSetupStored = false - private var origIsSpeakerPhoneOn = false - private var origIsMicrophoneMute = false - private var origAudioMode = AudioManager.MODE_NORMAL - - fun storeOriginalAudioSetup() { - if (!isOrigAudioSetupStored) { - origAudioMode = mAudioManager.mode - origIsSpeakerPhoneOn = AudioManagerUtil.isSpeakerphoneOn(mAudioManager) - origIsMicrophoneMute = mAudioManager.isMicrophoneMute - isOrigAudioSetupStored = true - } - } - - fun restoreOriginalAudioSetup() { - if (isOrigAudioSetupStored) { - if (origIsSpeakerPhoneOn) { - mAudioDeviceManager.setSpeakerphoneOn(true) - } - mAudioManager.setMicrophoneMute(origIsMicrophoneMute) - mAudioManager.mode = origAudioMode - mReactContext.currentActivity?.apply { - volumeControlStream = AudioManager.USE_DEFAULT_STREAM_TYPE - } - isOrigAudioSetupStored = false - } - } -} diff --git a/packages/react-native-sdk/android/src/main/java/com/streamvideo/reactnative/callmanager/StreamInCallManagerModule.kt b/packages/react-native-sdk/android/src/main/java/com/streamvideo/reactnative/callmanager/StreamInCallManagerModule.kt index 2184138d00..8295fc5948 100644 --- a/packages/react-native-sdk/android/src/main/java/com/streamvideo/reactnative/callmanager/StreamInCallManagerModule.kt +++ b/packages/react-native-sdk/android/src/main/java/com/streamvideo/reactnative/callmanager/StreamInCallManagerModule.kt @@ -80,6 +80,22 @@ class StreamInCallManagerModule(reactContext: ReactApplicationContext) : } } + @ReactMethod + fun setEnableStereoAudioOutput(enabled: Boolean) { + AudioDeviceManager.runInAudioThread { + if (audioManagerActivated) { + Log.e(TAG, "setAudioRole(): AudioManager is already activated and so enabling stereo audio output cannot be changed") + return@runInAudioThread + } + mAudioDeviceManager.enableStereo = enabled + } + } + + @ReactMethod + fun setup() { + mAudioDeviceManager.setup() + } + @ReactMethod fun start() { AudioDeviceManager.runInAudioThread { @@ -99,7 +115,9 @@ class StreamInCallManagerModule(reactContext: ReactApplicationContext) : AudioDeviceManager.runInAudioThread { if (audioManagerActivated) { Log.d(TAG, "stop() mAudioDeviceManager") - mAudioDeviceManager.stop() + reactApplicationContext.currentActivity?.let { + mAudioDeviceManager.stop(it) + } setMicrophoneMute(false) setKeepScreenOn(false) audioManagerActivated = false diff --git a/packages/react-native-sdk/ios/StreamInCallManager.m b/packages/react-native-sdk/ios/StreamInCallManager.m index 98ac049976..cefa76a91b 100644 --- a/packages/react-native-sdk/ios/StreamInCallManager.m +++ b/packages/react-native-sdk/ios/StreamInCallManager.m @@ -7,6 +7,10 @@ @interface RCT_EXTERN_MODULE(StreamInCallManager, RCTEventEmitter) RCT_EXTERN_METHOD(setDefaultAudioDeviceEndpointType:(NSString *)endpointType) +RCT_EXTERN_METHOD(setEnableStereoAudioOutput:(BOOL)enable) + +RCT_EXTERN_METHOD(setup) + RCT_EXTERN_METHOD(start) RCT_EXTERN_METHOD(stop) diff --git a/packages/react-native-sdk/ios/StreamInCallManager.swift b/packages/react-native-sdk/ios/StreamInCallManager.swift index 246b4dc46b..1859be84ef 100644 --- a/packages/react-native-sdk/ios/StreamInCallManager.swift +++ b/packages/react-native-sdk/ios/StreamInCallManager.swift @@ -24,6 +24,7 @@ class StreamInCallManager: RCTEventEmitter { private var audioManagerActivated = false private var callAudioRole: CallAudioRole = .communicator private var defaultAudioDevice: DefaultAudioDevice = .speaker + private var enableStereo: Bool = false private var previousVolume: Float = 0.75 private struct AudioSessionState { @@ -34,6 +35,7 @@ class StreamInCallManager: RCTEventEmitter { private var previousAudioSessionState: AudioSessionState? private var hasRegisteredRouteObserver = false + private var stereoRefreshWorkItem: DispatchWorkItem? override func invalidate() { stop() @@ -65,6 +67,67 @@ class StreamInCallManager: RCTEventEmitter { self.defaultAudioDevice = endpointType.lowercased() == "earpiece" ? .earpiece : .speaker } } + + @objc(setEnableStereoAudioOutput:) + func setEnableStereoAudioOutput(enabled: Bool) { + audioSessionQueue.async { [self] in + if audioManagerActivated { + log("AudioManager is already activated, enable stereo audio output cannot be changed.") + return + } + self.enableStereo = enabled + } + } + + @objc + func setup() { + let intendedCategory: AVAudioSession.Category! + let intendedMode: AVAudioSession.Mode! + let intendedOptions: AVAudioSession.CategoryOptions! + + let adm = getAudioDeviceModule() + adm.reset() + + if (callAudioRole == .listener) { + // enables high quality audio playback but disables microphone + intendedCategory = .playback + intendedMode = .default + intendedOptions = [] + // TODO: for stereo we should disallow BluetoothHFP and allow only allowBluetoothA2DP + // note: this is the behaviour of iOS native SDK, but fails here with (OSStatus error -50.) + // intendedOptions = self.enableStereo ? [.allowBluetoothA2DP] : [] + if (self.enableStereo) { + adm.setStereoPlayoutPreference(true) + } + } else { + intendedCategory = .playAndRecord + intendedMode = .voiceChat + + // XCode 16 and older don't expose .allowBluetoothHFP + // https://forums.swift.org/t/xcode-26-avaudiosession-categoryoptions-allowbluetooth-deprecated/80956 + #if compiler(>=6.2) // For Xcode 26.0+ + let bluetoothOption: AVAudioSession.CategoryOptions = .allowBluetoothHFP + #else + let bluetoothOption: AVAudioSession.CategoryOptions = .allowBluetooth + #endif + + if (defaultAudioDevice == .speaker) { + // defaultToSpeaker will route to speaker if nothing else is connected + intendedOptions = [bluetoothOption, .defaultToSpeaker] + } else { + // having no defaultToSpeaker makes sure audio goes to earpiece if nothing is connected + intendedOptions = [bluetoothOption] + } + } + + // START: set the config that webrtc must use when it takes control + let rtcConfig = RTCAudioSessionConfiguration.webRTC() + rtcConfig.category = intendedCategory.rawValue + rtcConfig.mode = intendedMode.rawValue + rtcConfig.categoryOptions = intendedOptions + RTCAudioSessionConfiguration.setWebRTC(rtcConfig) + // END + } @objc func start() { @@ -72,13 +135,23 @@ class StreamInCallManager: RCTEventEmitter { if audioManagerActivated { return } - let session = AVAudioSession.sharedInstance() + let currentAvAudiosession = AVAudioSession.sharedInstance() previousAudioSessionState = AudioSessionState( - category: session.category, - mode: session.mode, - options: session.categoryOptions + category: currentAvAudiosession.category, + mode: currentAvAudiosession.mode, + options: currentAvAudiosession.categoryOptions ) - configureAudioSession() + setup() + let session = RTCAudioSession.sharedInstance() + session.lockForConfiguration() + defer { + session.unlockForConfiguration() + } + do { + try session.setActive(true) + } catch { + log("Error activating audio session: \(error.localizedDescription)") + } DispatchQueue.main.async { // Enable wake lock to prevent the screen from dimming/locking during a call @@ -120,6 +193,9 @@ class StreamInCallManager: RCTEventEmitter { } audioManagerActivated = false } + // Cancel any pending debounced stereo refresh + stereoRefreshWorkItem?.cancel() + stereoRefreshWorkItem = nil // Disable wake lock and proximity when call manager stops so the device can sleep again DispatchQueue.main.async { // Disable proximity monitoring to disable earpiece detection @@ -131,68 +207,6 @@ class StreamInCallManager: RCTEventEmitter { } } - private func configureAudioSession() { - let intendedCategory: AVAudioSession.Category! - let intendedMode: AVAudioSession.Mode! - let intendedOptions: AVAudioSession.CategoryOptions! - - if (callAudioRole == .listener) { - // enables high quality audio playback but disables microphone - intendedCategory = .playback - intendedMode = .default - intendedOptions = [] - } else { - intendedCategory = .playAndRecord - intendedMode = .voiceChat - - // XCode 16 and older don't expose .allowBluetoothHFP - // https://forums.swift.org/t/xcode-26-avaudiosession-categoryoptions-allowbluetooth-deprecated/80956 - #if compiler(>=6.2) // For Xcode 26.0+ - let bluetoothOption: AVAudioSession.CategoryOptions = .allowBluetoothHFP - #else - let bluetoothOption: AVAudioSession.CategoryOptions = .allowBluetooth - #endif - - if (defaultAudioDevice == .speaker) { - // defaultToSpeaker will route to speaker if nothing else is connected - intendedOptions = [bluetoothOption, .defaultToSpeaker] - } else { - // having no defaultToSpeaker makes sure audio goes to earpiece if nothing is connected - intendedOptions = [bluetoothOption] - } - } - - // START: set the config that webrtc must use when it takes control - let rtcConfig = RTCAudioSessionConfiguration.webRTC() - rtcConfig.category = intendedCategory.rawValue - rtcConfig.mode = intendedMode.rawValue - rtcConfig.categoryOptions = intendedOptions - RTCAudioSessionConfiguration.setWebRTC(rtcConfig) - // END - - // START: activate the webrtc audio session - let session = RTCAudioSession.sharedInstance() - session.lockForConfiguration() - defer { - session.unlockForConfiguration() - } - do { - try session.setCategory(intendedCategory, mode: intendedMode, options: intendedOptions) - try session.setActive(true) - log("configureAudioSession: setCategory success \(intendedCategory.rawValue) \(intendedMode.rawValue) \(intendedOptions.rawValue)") - } catch { - log("configureAudioSession: setCategory failed due to: \(error.localizedDescription)") - do { - try session.setMode(intendedMode) - try session.setActive(true) - log("configureAudioSession: setMode success \(intendedMode.rawValue)") - } catch { - log("configureAudioSession: Error setting mode: \(error.localizedDescription)") - } - } - // END - } - @objc(showAudioRoutePicker) public func showAudioRoutePicker() { guard #available(iOS 11.0, tvOS 11.0, macOS 10.15, *) else { @@ -317,6 +331,28 @@ class StreamInCallManager: RCTEventEmitter { } @objc private func handleAudioRouteChange(_ notification: Notification) { + guard let userInfo = notification.userInfo, + let reasonValue = userInfo[AVAudioSessionRouteChangeReasonKey] as? UInt, + let reason = AVAudioSession.RouteChangeReason(rawValue: reasonValue) else { + return + } + + log("Audio route change reason: \(reason.rawValue)") + + if reason == .routeConfigurationChange { + log("Route configuration changed") + // Cancel any pending debounced refresh + stereoRefreshWorkItem?.cancel() + // Create a new debounced work item + let workItem = DispatchWorkItem { [weak self] in + self?.getAudioDeviceModule().refreshStereoPlayoutState() + self?.log("Executed debounced refreshStereoPlayoutState") + } + stereoRefreshWorkItem = workItem + // Schedule the work item after 2 seconds + audioSessionQueue.asyncAfter(deadline: .now() + 2.0, execute: workItem) + } + // Route changes can arrive on arbitrary queues; ensure UI-safe work on main DispatchQueue.main.async { [weak self] in self?.updateProximityMonitoring() @@ -367,6 +403,11 @@ class StreamInCallManager: RCTEventEmitter { } // MARK: - Helper Methods + private func getAudioDeviceModule() -> AudioDeviceModule { + let webrtcModule = self.bridge.module(forName: "WebRTCModule") as! WebRTCModule + return webrtcModule.audioDeviceModule + } + private func getCurrentWindow() -> UIWindow? { if #available(iOS 13.0, *) { return UIApplication.shared.connectedScenes diff --git a/packages/react-native-sdk/src/index.ts b/packages/react-native-sdk/src/index.ts index cd733a9782..12a8674e98 100644 --- a/packages/react-native-sdk/src/index.ts +++ b/packages/react-native-sdk/src/index.ts @@ -8,6 +8,7 @@ import 'intl-pluralrules'; import { registerGlobals } from '@stream-io/react-native-webrtc'; import Logger from '@stream-io/react-native-webrtc/src/Logger'; import { Platform } from 'react-native'; +import { registerSDKGlobals } from './utils/internal/registerSDKGlobals'; // We're registering globals, because our video JS client is serving SDKs that use browser based webRTC functions. // This will result in creation of 2 global objects: `window` and `navigator` @@ -15,6 +16,7 @@ import { Platform } from 'react-native'; if (Platform.OS !== 'web') { registerGlobals(); } +registerSDKGlobals(); // only enable warning and error logs from webrtc library Logger.enable(`${Logger.ROOT_PREFIX}:(WARN|ERROR)`); diff --git a/packages/react-native-sdk/src/modules/call-manager/CallManager.ts b/packages/react-native-sdk/src/modules/call-manager/CallManager.ts index f25583be2e..c70ecc566b 100644 --- a/packages/react-native-sdk/src/modules/call-manager/CallManager.ts +++ b/packages/react-native-sdk/src/modules/call-manager/CallManager.ts @@ -98,6 +98,9 @@ export class CallManager { const type = config.deviceEndpointType ?? 'speaker'; NativeManager.setDefaultAudioDeviceEndpointType(type); } + if (config?.audioRole === 'listener' && config.enableStereoAudioOutput) { + NativeManager.setEnableStereoAudioOutput(true); + } NativeManager.start(); }; @@ -108,6 +111,13 @@ export class CallManager { NativeManager.stop(); }; + /** + * Sets up the in call manager. + */ + setup = (): void => { + NativeManager.setup(); + }; + /** * For debugging purposes, will emit a log event with the current audio state. * in the native layer. diff --git a/packages/react-native-sdk/src/modules/call-manager/native-module.d.ts b/packages/react-native-sdk/src/modules/call-manager/native-module.d.ts index d1fc9bbf0c..746eb501d0 100644 --- a/packages/react-native-sdk/src/modules/call-manager/native-module.d.ts +++ b/packages/react-native-sdk/src/modules/call-manager/native-module.d.ts @@ -51,6 +51,11 @@ export interface CallManager extends NativeModule { */ stop: () => void; + /** + * Setup the in call manager. + */ + setup: () => void; + /** * Mutes the speaker */ @@ -66,6 +71,12 @@ export interface CallManager extends NativeModule { */ setForceSpeakerphoneOn: (boolean) => void; + /** + * Enables or disables stereo audio output. + * @param enable - Whether to enable stereo audio output. + */ + setEnableStereoAudioOutput: (enable: boolean) => void; + /** * Log the current audio state natively. * Meant for debugging purposes. diff --git a/packages/react-native-sdk/src/modules/call-manager/types.ts b/packages/react-native-sdk/src/modules/call-manager/types.ts index 52567da61a..bc7c28c04e 100644 --- a/packages/react-native-sdk/src/modules/call-manager/types.ts +++ b/packages/react-native-sdk/src/modules/call-manager/types.ts @@ -22,4 +22,5 @@ export type StreamInCallManagerConfig = } | { audioRole: 'listener'; + enableStereoAudioOutput?: boolean; }; diff --git a/packages/react-native-sdk/src/utils/internal/registerSDKGlobals.ts b/packages/react-native-sdk/src/utils/internal/registerSDKGlobals.ts new file mode 100644 index 0000000000..e20a7de297 --- /dev/null +++ b/packages/react-native-sdk/src/utils/internal/registerSDKGlobals.ts @@ -0,0 +1,26 @@ +import { StreamRNVideoSDKGlobals } from '@stream-io/video-client'; +import { callManager } from '../../modules/call-manager'; + +declare global { + var streamRNVideoSDK: StreamRNVideoSDKGlobals | undefined; +} + +const streamRNVideoSDKGlobals: StreamRNVideoSDKGlobals = { + callManager: { + setup: () => { + callManager.setup(); + }, + start: () => { + callManager.start(); + }, + stop: () => { + callManager.stop(); + }, + }, +}; + +export function registerSDKGlobals() { + if (!global.streamRNVideoSDK) { + global.streamRNVideoSDK = streamRNVideoSDKGlobals; + } +} diff --git a/sample-apps/react-native/dogfood/ios/Podfile.lock b/sample-apps/react-native/dogfood/ios/Podfile.lock index c549c224c5..dbd1c1b2ad 100644 --- a/sample-apps/react-native/dogfood/ios/Podfile.lock +++ b/sample-apps/react-native/dogfood/ios/Podfile.lock @@ -2,12 +2,12 @@ PODS: - boost (1.84.0) - DoubleConversion (1.1.6) - fast_float (8.0.0) - - FBLazyVector (0.81.4) + - FBLazyVector (0.81.5) - fmt (11.0.2) - glog (0.3.5) - - hermes-engine (0.81.4): - - hermes-engine/Pre-built (= 0.81.4) - - hermes-engine/Pre-built (0.81.4) + - hermes-engine (0.81.5): + - hermes-engine/Pre-built (= 0.81.5) + - hermes-engine/Pre-built (0.81.5) - RCT-Folly (2024.11.18.00): - boost - DoubleConversion @@ -27,28 +27,28 @@ PODS: - fast_float (= 8.0.0) - fmt (= 11.0.2) - glog - - RCTDeprecation (0.81.4) - - RCTRequired (0.81.4) - - RCTTypeSafety (0.81.4): - - FBLazyVector (= 0.81.4) - - RCTRequired (= 0.81.4) - - React-Core (= 0.81.4) - - React (0.81.4): - - React-Core (= 0.81.4) - - React-Core/DevSupport (= 0.81.4) - - React-Core/RCTWebSocket (= 0.81.4) - - React-RCTActionSheet (= 0.81.4) - - React-RCTAnimation (= 0.81.4) - - React-RCTBlob (= 0.81.4) - - React-RCTImage (= 0.81.4) - - React-RCTLinking (= 0.81.4) - - React-RCTNetwork (= 0.81.4) - - React-RCTSettings (= 0.81.4) - - React-RCTText (= 0.81.4) - - React-RCTVibration (= 0.81.4) - - React-callinvoker (0.81.4) + - RCTDeprecation (0.81.5) + - RCTRequired (0.81.5) + - RCTTypeSafety (0.81.5): + - FBLazyVector (= 0.81.5) + - RCTRequired (= 0.81.5) + - React-Core (= 0.81.5) + - React (0.81.5): + - React-Core (= 0.81.5) + - React-Core/DevSupport (= 0.81.5) + - React-Core/RCTWebSocket (= 0.81.5) + - React-RCTActionSheet (= 0.81.5) + - React-RCTAnimation (= 0.81.5) + - React-RCTBlob (= 0.81.5) + - React-RCTImage (= 0.81.5) + - React-RCTLinking (= 0.81.5) + - React-RCTNetwork (= 0.81.5) + - React-RCTSettings (= 0.81.5) + - React-RCTText (= 0.81.5) + - React-RCTVibration (= 0.81.5) + - React-callinvoker (0.81.5) - React-Codegen (0.1.0) - - React-Core (0.81.4): + - React-Core (0.81.5): - boost - DoubleConversion - fast_float @@ -58,7 +58,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTDeprecation - - React-Core/Default (= 0.81.4) + - React-Core/Default (= 0.81.5) - React-cxxreact - React-featureflags - React-hermes @@ -73,7 +73,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/CoreModulesHeaders (0.81.4): + - React-Core/CoreModulesHeaders (0.81.5): - boost - DoubleConversion - fast_float @@ -98,7 +98,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/Default (0.81.4): + - React-Core/Default (0.81.5): - boost - DoubleConversion - fast_float @@ -122,7 +122,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/DevSupport (0.81.4): + - React-Core/DevSupport (0.81.5): - boost - DoubleConversion - fast_float @@ -132,8 +132,8 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTDeprecation - - React-Core/Default (= 0.81.4) - - React-Core/RCTWebSocket (= 0.81.4) + - React-Core/Default (= 0.81.5) + - React-Core/RCTWebSocket (= 0.81.5) - React-cxxreact - React-featureflags - React-hermes @@ -148,7 +148,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTActionSheetHeaders (0.81.4): + - React-Core/RCTActionSheetHeaders (0.81.5): - boost - DoubleConversion - fast_float @@ -173,7 +173,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTAnimationHeaders (0.81.4): + - React-Core/RCTAnimationHeaders (0.81.5): - boost - DoubleConversion - fast_float @@ -198,7 +198,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTBlobHeaders (0.81.4): + - React-Core/RCTBlobHeaders (0.81.5): - boost - DoubleConversion - fast_float @@ -223,7 +223,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTImageHeaders (0.81.4): + - React-Core/RCTImageHeaders (0.81.5): - boost - DoubleConversion - fast_float @@ -248,7 +248,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTLinkingHeaders (0.81.4): + - React-Core/RCTLinkingHeaders (0.81.5): - boost - DoubleConversion - fast_float @@ -273,7 +273,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTNetworkHeaders (0.81.4): + - React-Core/RCTNetworkHeaders (0.81.5): - boost - DoubleConversion - fast_float @@ -298,7 +298,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTSettingsHeaders (0.81.4): + - React-Core/RCTSettingsHeaders (0.81.5): - boost - DoubleConversion - fast_float @@ -323,7 +323,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTTextHeaders (0.81.4): + - React-Core/RCTTextHeaders (0.81.5): - boost - DoubleConversion - fast_float @@ -348,7 +348,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTVibrationHeaders (0.81.4): + - React-Core/RCTVibrationHeaders (0.81.5): - boost - DoubleConversion - fast_float @@ -373,7 +373,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-Core/RCTWebSocket (0.81.4): + - React-Core/RCTWebSocket (0.81.5): - boost - DoubleConversion - fast_float @@ -383,7 +383,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - RCTDeprecation - - React-Core/Default (= 0.81.4) + - React-Core/Default (= 0.81.5) - React-cxxreact - React-featureflags - React-hermes @@ -398,7 +398,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-CoreModules (0.81.4): + - React-CoreModules (0.81.5): - boost - DoubleConversion - fast_float @@ -406,20 +406,20 @@ PODS: - glog - RCT-Folly - RCT-Folly/Fabric - - RCTTypeSafety (= 0.81.4) - - React-Core/CoreModulesHeaders (= 0.81.4) - - React-jsi (= 0.81.4) + - RCTTypeSafety (= 0.81.5) + - React-Core/CoreModulesHeaders (= 0.81.5) + - React-jsi (= 0.81.5) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - React-NativeModulesApple - React-RCTBlob - React-RCTFBReactNativeSpec - - React-RCTImage (= 0.81.4) + - React-RCTImage (= 0.81.5) - React-runtimeexecutor - ReactCommon - SocketRocket - - React-cxxreact (0.81.4): + - React-cxxreact (0.81.5): - boost - DoubleConversion - fast_float @@ -428,19 +428,19 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - React-callinvoker (= 0.81.4) - - React-debug (= 0.81.4) - - React-jsi (= 0.81.4) + - React-callinvoker (= 0.81.5) + - React-debug (= 0.81.5) + - React-jsi (= 0.81.5) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - - React-logger (= 0.81.4) - - React-perflogger (= 0.81.4) + - React-logger (= 0.81.5) + - React-perflogger (= 0.81.5) - React-runtimeexecutor - - React-timing (= 0.81.4) + - React-timing (= 0.81.5) - SocketRocket - - React-debug (0.81.4) - - React-defaultsnativemodule (0.81.4): + - React-debug (0.81.5) + - React-defaultsnativemodule (0.81.5): - boost - DoubleConversion - fast_float @@ -457,7 +457,7 @@ PODS: - React-microtasksnativemodule - React-RCTFBReactNativeSpec - SocketRocket - - React-domnativemodule (0.81.4): + - React-domnativemodule (0.81.5): - boost - DoubleConversion - fast_float @@ -477,7 +477,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-Fabric (0.81.4): + - React-Fabric (0.81.5): - boost - DoubleConversion - fast_float @@ -491,23 +491,23 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/animations (= 0.81.4) - - React-Fabric/attributedstring (= 0.81.4) - - React-Fabric/bridging (= 0.81.4) - - React-Fabric/componentregistry (= 0.81.4) - - React-Fabric/componentregistrynative (= 0.81.4) - - React-Fabric/components (= 0.81.4) - - React-Fabric/consistency (= 0.81.4) - - React-Fabric/core (= 0.81.4) - - React-Fabric/dom (= 0.81.4) - - React-Fabric/imagemanager (= 0.81.4) - - React-Fabric/leakchecker (= 0.81.4) - - React-Fabric/mounting (= 0.81.4) - - React-Fabric/observers (= 0.81.4) - - React-Fabric/scheduler (= 0.81.4) - - React-Fabric/telemetry (= 0.81.4) - - React-Fabric/templateprocessor (= 0.81.4) - - React-Fabric/uimanager (= 0.81.4) + - React-Fabric/animations (= 0.81.5) + - React-Fabric/attributedstring (= 0.81.5) + - React-Fabric/bridging (= 0.81.5) + - React-Fabric/componentregistry (= 0.81.5) + - React-Fabric/componentregistrynative (= 0.81.5) + - React-Fabric/components (= 0.81.5) + - React-Fabric/consistency (= 0.81.5) + - React-Fabric/core (= 0.81.5) + - React-Fabric/dom (= 0.81.5) + - React-Fabric/imagemanager (= 0.81.5) + - React-Fabric/leakchecker (= 0.81.5) + - React-Fabric/mounting (= 0.81.5) + - React-Fabric/observers (= 0.81.5) + - React-Fabric/scheduler (= 0.81.5) + - React-Fabric/telemetry (= 0.81.5) + - React-Fabric/templateprocessor (= 0.81.5) + - React-Fabric/uimanager (= 0.81.5) - React-featureflags - React-graphics - React-jsi @@ -519,7 +519,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/animations (0.81.4): + - React-Fabric/animations (0.81.5): - boost - DoubleConversion - fast_float @@ -544,7 +544,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/attributedstring (0.81.4): + - React-Fabric/attributedstring (0.81.5): - boost - DoubleConversion - fast_float @@ -569,7 +569,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/bridging (0.81.4): + - React-Fabric/bridging (0.81.5): - boost - DoubleConversion - fast_float @@ -594,7 +594,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/componentregistry (0.81.4): + - React-Fabric/componentregistry (0.81.5): - boost - DoubleConversion - fast_float @@ -619,7 +619,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/componentregistrynative (0.81.4): + - React-Fabric/componentregistrynative (0.81.5): - boost - DoubleConversion - fast_float @@ -644,7 +644,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/components (0.81.4): + - React-Fabric/components (0.81.5): - boost - DoubleConversion - fast_float @@ -658,10 +658,10 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/components/legacyviewmanagerinterop (= 0.81.4) - - React-Fabric/components/root (= 0.81.4) - - React-Fabric/components/scrollview (= 0.81.4) - - React-Fabric/components/view (= 0.81.4) + - React-Fabric/components/legacyviewmanagerinterop (= 0.81.5) + - React-Fabric/components/root (= 0.81.5) + - React-Fabric/components/scrollview (= 0.81.5) + - React-Fabric/components/view (= 0.81.5) - React-featureflags - React-graphics - React-jsi @@ -673,7 +673,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/components/legacyviewmanagerinterop (0.81.4): + - React-Fabric/components/legacyviewmanagerinterop (0.81.5): - boost - DoubleConversion - fast_float @@ -698,7 +698,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/components/root (0.81.4): + - React-Fabric/components/root (0.81.5): - boost - DoubleConversion - fast_float @@ -723,7 +723,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/components/scrollview (0.81.4): + - React-Fabric/components/scrollview (0.81.5): - boost - DoubleConversion - fast_float @@ -748,7 +748,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/components/view (0.81.4): + - React-Fabric/components/view (0.81.5): - boost - DoubleConversion - fast_float @@ -775,7 +775,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-Fabric/consistency (0.81.4): + - React-Fabric/consistency (0.81.5): - boost - DoubleConversion - fast_float @@ -800,7 +800,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/core (0.81.4): + - React-Fabric/core (0.81.5): - boost - DoubleConversion - fast_float @@ -825,7 +825,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/dom (0.81.4): + - React-Fabric/dom (0.81.5): - boost - DoubleConversion - fast_float @@ -850,7 +850,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/imagemanager (0.81.4): + - React-Fabric/imagemanager (0.81.5): - boost - DoubleConversion - fast_float @@ -875,7 +875,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/leakchecker (0.81.4): + - React-Fabric/leakchecker (0.81.5): - boost - DoubleConversion - fast_float @@ -900,7 +900,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/mounting (0.81.4): + - React-Fabric/mounting (0.81.5): - boost - DoubleConversion - fast_float @@ -925,7 +925,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/observers (0.81.4): + - React-Fabric/observers (0.81.5): - boost - DoubleConversion - fast_float @@ -939,7 +939,7 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/observers/events (= 0.81.4) + - React-Fabric/observers/events (= 0.81.5) - React-featureflags - React-graphics - React-jsi @@ -951,7 +951,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/observers/events (0.81.4): + - React-Fabric/observers/events (0.81.5): - boost - DoubleConversion - fast_float @@ -976,7 +976,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/scheduler (0.81.4): + - React-Fabric/scheduler (0.81.5): - boost - DoubleConversion - fast_float @@ -1003,7 +1003,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/telemetry (0.81.4): + - React-Fabric/telemetry (0.81.5): - boost - DoubleConversion - fast_float @@ -1028,7 +1028,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/templateprocessor (0.81.4): + - React-Fabric/templateprocessor (0.81.5): - boost - DoubleConversion - fast_float @@ -1053,7 +1053,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/uimanager (0.81.4): + - React-Fabric/uimanager (0.81.5): - boost - DoubleConversion - fast_float @@ -1067,7 +1067,7 @@ PODS: - React-Core - React-cxxreact - React-debug - - React-Fabric/uimanager/consistency (= 0.81.4) + - React-Fabric/uimanager/consistency (= 0.81.5) - React-featureflags - React-graphics - React-jsi @@ -1080,7 +1080,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-Fabric/uimanager/consistency (0.81.4): + - React-Fabric/uimanager/consistency (0.81.5): - boost - DoubleConversion - fast_float @@ -1106,7 +1106,7 @@ PODS: - React-utils - ReactCommon/turbomodule/core - SocketRocket - - React-FabricComponents (0.81.4): + - React-FabricComponents (0.81.5): - boost - DoubleConversion - fast_float @@ -1121,8 +1121,8 @@ PODS: - React-cxxreact - React-debug - React-Fabric - - React-FabricComponents/components (= 0.81.4) - - React-FabricComponents/textlayoutmanager (= 0.81.4) + - React-FabricComponents/components (= 0.81.5) + - React-FabricComponents/textlayoutmanager (= 0.81.5) - React-featureflags - React-graphics - React-jsi @@ -1135,7 +1135,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components (0.81.4): + - React-FabricComponents/components (0.81.5): - boost - DoubleConversion - fast_float @@ -1150,17 +1150,17 @@ PODS: - React-cxxreact - React-debug - React-Fabric - - React-FabricComponents/components/inputaccessory (= 0.81.4) - - React-FabricComponents/components/iostextinput (= 0.81.4) - - React-FabricComponents/components/modal (= 0.81.4) - - React-FabricComponents/components/rncore (= 0.81.4) - - React-FabricComponents/components/safeareaview (= 0.81.4) - - React-FabricComponents/components/scrollview (= 0.81.4) - - React-FabricComponents/components/switch (= 0.81.4) - - React-FabricComponents/components/text (= 0.81.4) - - React-FabricComponents/components/textinput (= 0.81.4) - - React-FabricComponents/components/unimplementedview (= 0.81.4) - - React-FabricComponents/components/virtualview (= 0.81.4) + - React-FabricComponents/components/inputaccessory (= 0.81.5) + - React-FabricComponents/components/iostextinput (= 0.81.5) + - React-FabricComponents/components/modal (= 0.81.5) + - React-FabricComponents/components/rncore (= 0.81.5) + - React-FabricComponents/components/safeareaview (= 0.81.5) + - React-FabricComponents/components/scrollview (= 0.81.5) + - React-FabricComponents/components/switch (= 0.81.5) + - React-FabricComponents/components/text (= 0.81.5) + - React-FabricComponents/components/textinput (= 0.81.5) + - React-FabricComponents/components/unimplementedview (= 0.81.5) + - React-FabricComponents/components/virtualview (= 0.81.5) - React-featureflags - React-graphics - React-jsi @@ -1173,7 +1173,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/inputaccessory (0.81.4): + - React-FabricComponents/components/inputaccessory (0.81.5): - boost - DoubleConversion - fast_float @@ -1200,7 +1200,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/iostextinput (0.81.4): + - React-FabricComponents/components/iostextinput (0.81.5): - boost - DoubleConversion - fast_float @@ -1227,7 +1227,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/modal (0.81.4): + - React-FabricComponents/components/modal (0.81.5): - boost - DoubleConversion - fast_float @@ -1254,7 +1254,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/rncore (0.81.4): + - React-FabricComponents/components/rncore (0.81.5): - boost - DoubleConversion - fast_float @@ -1281,7 +1281,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/safeareaview (0.81.4): + - React-FabricComponents/components/safeareaview (0.81.5): - boost - DoubleConversion - fast_float @@ -1308,7 +1308,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/scrollview (0.81.4): + - React-FabricComponents/components/scrollview (0.81.5): - boost - DoubleConversion - fast_float @@ -1335,7 +1335,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/switch (0.81.4): + - React-FabricComponents/components/switch (0.81.5): - boost - DoubleConversion - fast_float @@ -1362,7 +1362,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/text (0.81.4): + - React-FabricComponents/components/text (0.81.5): - boost - DoubleConversion - fast_float @@ -1389,7 +1389,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/textinput (0.81.4): + - React-FabricComponents/components/textinput (0.81.5): - boost - DoubleConversion - fast_float @@ -1416,7 +1416,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/unimplementedview (0.81.4): + - React-FabricComponents/components/unimplementedview (0.81.5): - boost - DoubleConversion - fast_float @@ -1443,7 +1443,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/components/virtualview (0.81.4): + - React-FabricComponents/components/virtualview (0.81.5): - boost - DoubleConversion - fast_float @@ -1470,7 +1470,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricComponents/textlayoutmanager (0.81.4): + - React-FabricComponents/textlayoutmanager (0.81.5): - boost - DoubleConversion - fast_float @@ -1497,7 +1497,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-FabricImage (0.81.4): + - React-FabricImage (0.81.5): - boost - DoubleConversion - fast_float @@ -1506,21 +1506,21 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - RCTRequired (= 0.81.4) - - RCTTypeSafety (= 0.81.4) + - RCTRequired (= 0.81.5) + - RCTTypeSafety (= 0.81.5) - React-Fabric - React-featureflags - React-graphics - React-ImageManager - React-jsi - - React-jsiexecutor (= 0.81.4) + - React-jsiexecutor (= 0.81.5) - React-logger - React-rendererdebug - React-utils - ReactCommon - SocketRocket - Yoga - - React-featureflags (0.81.4): + - React-featureflags (0.81.5): - boost - DoubleConversion - fast_float @@ -1529,7 +1529,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - SocketRocket - - React-featureflagsnativemodule (0.81.4): + - React-featureflagsnativemodule (0.81.5): - boost - DoubleConversion - fast_float @@ -1544,7 +1544,7 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon/turbomodule/core - SocketRocket - - React-graphics (0.81.4): + - React-graphics (0.81.5): - boost - DoubleConversion - fast_float @@ -1557,7 +1557,7 @@ PODS: - React-jsiexecutor - React-utils - SocketRocket - - React-hermes (0.81.4): + - React-hermes (0.81.5): - boost - DoubleConversion - fast_float @@ -1566,16 +1566,16 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - React-cxxreact (= 0.81.4) + - React-cxxreact (= 0.81.5) - React-jsi - - React-jsiexecutor (= 0.81.4) + - React-jsiexecutor (= 0.81.5) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - - React-perflogger (= 0.81.4) + - React-perflogger (= 0.81.5) - React-runtimeexecutor - SocketRocket - - React-idlecallbacksnativemodule (0.81.4): + - React-idlecallbacksnativemodule (0.81.5): - boost - DoubleConversion - fast_float @@ -1591,7 +1591,7 @@ PODS: - React-runtimescheduler - ReactCommon/turbomodule/core - SocketRocket - - React-ImageManager (0.81.4): + - React-ImageManager (0.81.5): - boost - DoubleConversion - fast_float @@ -1606,7 +1606,7 @@ PODS: - React-rendererdebug - React-utils - SocketRocket - - React-jserrorhandler (0.81.4): + - React-jserrorhandler (0.81.5): - boost - DoubleConversion - fast_float @@ -1621,7 +1621,7 @@ PODS: - React-jsi - ReactCommon/turbomodule/bridging - SocketRocket - - React-jsi (0.81.4): + - React-jsi (0.81.5): - boost - DoubleConversion - fast_float @@ -1631,7 +1631,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - SocketRocket - - React-jsiexecutor (0.81.4): + - React-jsiexecutor (0.81.5): - boost - DoubleConversion - fast_float @@ -1640,15 +1640,15 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - React-cxxreact (= 0.81.4) - - React-jsi (= 0.81.4) + - React-cxxreact (= 0.81.5) + - React-jsi (= 0.81.5) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - - React-perflogger (= 0.81.4) + - React-perflogger (= 0.81.5) - React-runtimeexecutor - SocketRocket - - React-jsinspector (0.81.4): + - React-jsinspector (0.81.5): - boost - DoubleConversion - fast_float @@ -1663,10 +1663,10 @@ PODS: - React-jsinspectornetwork - React-jsinspectortracing - React-oscompat - - React-perflogger (= 0.81.4) + - React-perflogger (= 0.81.5) - React-runtimeexecutor - SocketRocket - - React-jsinspectorcdp (0.81.4): + - React-jsinspectorcdp (0.81.5): - boost - DoubleConversion - fast_float @@ -1675,7 +1675,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - SocketRocket - - React-jsinspectornetwork (0.81.4): + - React-jsinspectornetwork (0.81.5): - boost - DoubleConversion - fast_float @@ -1688,7 +1688,7 @@ PODS: - React-performancetimeline - React-timing - SocketRocket - - React-jsinspectortracing (0.81.4): + - React-jsinspectortracing (0.81.5): - boost - DoubleConversion - fast_float @@ -1699,7 +1699,7 @@ PODS: - React-oscompat - React-timing - SocketRocket - - React-jsitooling (0.81.4): + - React-jsitooling (0.81.5): - boost - DoubleConversion - fast_float @@ -1707,16 +1707,16 @@ PODS: - glog - RCT-Folly - RCT-Folly/Fabric - - React-cxxreact (= 0.81.4) - - React-jsi (= 0.81.4) + - React-cxxreact (= 0.81.5) + - React-jsi (= 0.81.5) - React-jsinspector - React-jsinspectorcdp - React-jsinspectortracing - React-runtimeexecutor - SocketRocket - - React-jsitracing (0.81.4): + - React-jsitracing (0.81.5): - React-jsi - - React-logger (0.81.4): + - React-logger (0.81.5): - boost - DoubleConversion - fast_float @@ -1725,7 +1725,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - SocketRocket - - React-Mapbuffer (0.81.4): + - React-Mapbuffer (0.81.5): - boost - DoubleConversion - fast_float @@ -1735,7 +1735,7 @@ PODS: - RCT-Folly/Fabric - React-debug - SocketRocket - - React-microtasksnativemodule (0.81.4): + - React-microtasksnativemodule (0.81.5): - boost - DoubleConversion - fast_float @@ -2008,7 +2008,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - React-NativeModulesApple (0.81.4): + - React-NativeModulesApple (0.81.5): - boost - DoubleConversion - fast_float @@ -2028,8 +2028,8 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - SocketRocket - - React-oscompat (0.81.4) - - React-perflogger (0.81.4): + - React-oscompat (0.81.5) + - React-perflogger (0.81.5): - boost - DoubleConversion - fast_float @@ -2038,7 +2038,7 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - SocketRocket - - React-performancetimeline (0.81.4): + - React-performancetimeline (0.81.5): - boost - DoubleConversion - fast_float @@ -2051,9 +2051,9 @@ PODS: - React-perflogger - React-timing - SocketRocket - - React-RCTActionSheet (0.81.4): - - React-Core/RCTActionSheetHeaders (= 0.81.4) - - React-RCTAnimation (0.81.4): + - React-RCTActionSheet (0.81.5): + - React-Core/RCTActionSheetHeaders (= 0.81.5) + - React-RCTAnimation (0.81.5): - boost - DoubleConversion - fast_float @@ -2069,7 +2069,7 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - SocketRocket - - React-RCTAppDelegate (0.81.4): + - React-RCTAppDelegate (0.81.5): - boost - DoubleConversion - fast_float @@ -2103,7 +2103,7 @@ PODS: - React-utils - ReactCommon - SocketRocket - - React-RCTBlob (0.81.4): + - React-RCTBlob (0.81.5): - boost - DoubleConversion - fast_float @@ -2122,7 +2122,7 @@ PODS: - React-RCTNetwork - ReactCommon - SocketRocket - - React-RCTFabric (0.81.4): + - React-RCTFabric (0.81.5): - boost - DoubleConversion - fast_float @@ -2157,7 +2157,7 @@ PODS: - React-utils - SocketRocket - Yoga - - React-RCTFBReactNativeSpec (0.81.4): + - React-RCTFBReactNativeSpec (0.81.5): - boost - DoubleConversion - fast_float @@ -2171,10 +2171,10 @@ PODS: - React-Core - React-jsi - React-NativeModulesApple - - React-RCTFBReactNativeSpec/components (= 0.81.4) + - React-RCTFBReactNativeSpec/components (= 0.81.5) - ReactCommon - SocketRocket - - React-RCTFBReactNativeSpec/components (0.81.4): + - React-RCTFBReactNativeSpec/components (0.81.5): - boost - DoubleConversion - fast_float @@ -2197,7 +2197,7 @@ PODS: - ReactCommon - SocketRocket - Yoga - - React-RCTImage (0.81.4): + - React-RCTImage (0.81.5): - boost - DoubleConversion - fast_float @@ -2213,14 +2213,14 @@ PODS: - React-RCTNetwork - ReactCommon - SocketRocket - - React-RCTLinking (0.81.4): - - React-Core/RCTLinkingHeaders (= 0.81.4) - - React-jsi (= 0.81.4) + - React-RCTLinking (0.81.5): + - React-Core/RCTLinkingHeaders (= 0.81.5) + - React-jsi (= 0.81.5) - React-NativeModulesApple - React-RCTFBReactNativeSpec - ReactCommon - - ReactCommon/turbomodule/core (= 0.81.4) - - React-RCTNetwork (0.81.4): + - ReactCommon/turbomodule/core (= 0.81.5) + - React-RCTNetwork (0.81.5): - boost - DoubleConversion - fast_float @@ -2238,7 +2238,7 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - SocketRocket - - React-RCTRuntime (0.81.4): + - React-RCTRuntime (0.81.5): - boost - DoubleConversion - fast_float @@ -2258,7 +2258,7 @@ PODS: - React-runtimeexecutor - React-RuntimeHermes - SocketRocket - - React-RCTSettings (0.81.4): + - React-RCTSettings (0.81.5): - boost - DoubleConversion - fast_float @@ -2273,10 +2273,10 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - SocketRocket - - React-RCTText (0.81.4): - - React-Core/RCTTextHeaders (= 0.81.4) + - React-RCTText (0.81.5): + - React-Core/RCTTextHeaders (= 0.81.5) - Yoga - - React-RCTVibration (0.81.4): + - React-RCTVibration (0.81.5): - boost - DoubleConversion - fast_float @@ -2290,11 +2290,11 @@ PODS: - React-RCTFBReactNativeSpec - ReactCommon - SocketRocket - - React-rendererconsistency (0.81.4) - - React-renderercss (0.81.4): + - React-rendererconsistency (0.81.5) + - React-renderercss (0.81.5): - React-debug - React-utils - - React-rendererdebug (0.81.4): + - React-rendererdebug (0.81.5): - boost - DoubleConversion - fast_float @@ -2304,7 +2304,7 @@ PODS: - RCT-Folly/Fabric - React-debug - SocketRocket - - React-RuntimeApple (0.81.4): + - React-RuntimeApple (0.81.5): - boost - DoubleConversion - fast_float @@ -2333,7 +2333,7 @@ PODS: - React-runtimescheduler - React-utils - SocketRocket - - React-RuntimeCore (0.81.4): + - React-RuntimeCore (0.81.5): - boost - DoubleConversion - fast_float @@ -2355,7 +2355,7 @@ PODS: - React-runtimescheduler - React-utils - SocketRocket - - React-runtimeexecutor (0.81.4): + - React-runtimeexecutor (0.81.5): - boost - DoubleConversion - fast_float @@ -2365,10 +2365,10 @@ PODS: - RCT-Folly/Fabric - React-debug - React-featureflags - - React-jsi (= 0.81.4) + - React-jsi (= 0.81.5) - React-utils - SocketRocket - - React-RuntimeHermes (0.81.4): + - React-RuntimeHermes (0.81.5): - boost - DoubleConversion - fast_float @@ -2389,7 +2389,7 @@ PODS: - React-runtimeexecutor - React-utils - SocketRocket - - React-runtimescheduler (0.81.4): + - React-runtimescheduler (0.81.5): - boost - DoubleConversion - fast_float @@ -2411,9 +2411,9 @@ PODS: - React-timing - React-utils - SocketRocket - - React-timing (0.81.4): + - React-timing (0.81.5): - React-debug - - React-utils (0.81.4): + - React-utils (0.81.5): - boost - DoubleConversion - fast_float @@ -2423,11 +2423,11 @@ PODS: - RCT-Folly - RCT-Folly/Fabric - React-debug - - React-jsi (= 0.81.4) + - React-jsi (= 0.81.5) - SocketRocket - - ReactAppDependencyProvider (0.81.4): + - ReactAppDependencyProvider (0.81.5): - ReactCodegen - - ReactCodegen (0.81.4): + - ReactCodegen (0.81.5): - boost - DoubleConversion - fast_float @@ -2453,7 +2453,7 @@ PODS: - ReactCommon/turbomodule/bridging - ReactCommon/turbomodule/core - SocketRocket - - ReactCommon (0.81.4): + - ReactCommon (0.81.5): - boost - DoubleConversion - fast_float @@ -2461,9 +2461,9 @@ PODS: - glog - RCT-Folly - RCT-Folly/Fabric - - ReactCommon/turbomodule (= 0.81.4) + - ReactCommon/turbomodule (= 0.81.5) - SocketRocket - - ReactCommon/turbomodule (0.81.4): + - ReactCommon/turbomodule (0.81.5): - boost - DoubleConversion - fast_float @@ -2472,15 +2472,15 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - React-callinvoker (= 0.81.4) - - React-cxxreact (= 0.81.4) - - React-jsi (= 0.81.4) - - React-logger (= 0.81.4) - - React-perflogger (= 0.81.4) - - ReactCommon/turbomodule/bridging (= 0.81.4) - - ReactCommon/turbomodule/core (= 0.81.4) + - React-callinvoker (= 0.81.5) + - React-cxxreact (= 0.81.5) + - React-jsi (= 0.81.5) + - React-logger (= 0.81.5) + - React-perflogger (= 0.81.5) + - ReactCommon/turbomodule/bridging (= 0.81.5) + - ReactCommon/turbomodule/core (= 0.81.5) - SocketRocket - - ReactCommon/turbomodule/bridging (0.81.4): + - ReactCommon/turbomodule/bridging (0.81.5): - boost - DoubleConversion - fast_float @@ -2489,13 +2489,13 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - React-callinvoker (= 0.81.4) - - React-cxxreact (= 0.81.4) - - React-jsi (= 0.81.4) - - React-logger (= 0.81.4) - - React-perflogger (= 0.81.4) + - React-callinvoker (= 0.81.5) + - React-cxxreact (= 0.81.5) + - React-jsi (= 0.81.5) + - React-logger (= 0.81.5) + - React-perflogger (= 0.81.5) - SocketRocket - - ReactCommon/turbomodule/core (0.81.4): + - ReactCommon/turbomodule/core (0.81.5): - boost - DoubleConversion - fast_float @@ -2504,14 +2504,14 @@ PODS: - hermes-engine - RCT-Folly - RCT-Folly/Fabric - - React-callinvoker (= 0.81.4) - - React-cxxreact (= 0.81.4) - - React-debug (= 0.81.4) - - React-featureflags (= 0.81.4) - - React-jsi (= 0.81.4) - - React-logger (= 0.81.4) - - React-perflogger (= 0.81.4) - - React-utils (= 0.81.4) + - React-callinvoker (= 0.81.5) + - React-cxxreact (= 0.81.5) + - React-debug (= 0.81.5) + - React-featureflags (= 0.81.5) + - React-jsi (= 0.81.5) + - React-logger (= 0.81.5) + - React-perflogger (= 0.81.5) + - React-utils (= 0.81.5) - SocketRocket - RNCallKeep (4.3.16): - React @@ -2937,7 +2937,7 @@ PODS: - SocketRocket - Yoga - SocketRocket (0.7.1) - - stream-chat-react-native (8.6.0): + - stream-chat-react-native (8.9.1): - boost - DoubleConversion - fast_float @@ -2966,7 +2966,7 @@ PODS: - ReactCommon/turbomodule/core - SocketRocket - Yoga - - stream-io-noise-cancellation-react-native (0.4.0): + - stream-io-noise-cancellation-react-native (0.4.2): - boost - DoubleConversion - fast_float @@ -2996,7 +2996,7 @@ PODS: - stream-react-native-webrtc - StreamVideoNoiseCancellation - Yoga - - stream-io-video-filters-react-native (0.8.0): + - stream-io-video-filters-react-native (0.9.2): - boost - DoubleConversion - fast_float @@ -3025,9 +3025,10 @@ PODS: - SocketRocket - stream-react-native-webrtc - Yoga - - stream-react-native-webrtc (137.0.0): + - stream-react-native-webrtc (137.0.2): - React-Core - - stream-video-react-native (1.24.1): + - StreamWebRTC (~> 137.0.52) + - stream-video-react-native (1.26.1): - boost - DoubleConversion - fast_float @@ -3057,6 +3058,7 @@ PODS: - stream-react-native-webrtc - Yoga - StreamVideoNoiseCancellation (1.0.3) + - StreamWebRTC (137.0.54) - VisionCamera (4.7.2): - VisionCamera/Core (= 4.7.2) - VisionCamera/React (= 4.7.2) @@ -3170,6 +3172,7 @@ SPEC REPOS: - React-Codegen - SocketRocket - StreamVideoNoiseCancellation + - StreamWebRTC EXTERNAL SOURCES: boost: @@ -3370,80 +3373,80 @@ SPEC CHECKSUMS: boost: 7e761d76ca2ce687f7cc98e698152abd03a18f90 DoubleConversion: cb417026b2400c8f53ae97020b2be961b59470cb fast_float: b32c788ed9c6a8c584d114d0047beda9664e7cc6 - FBLazyVector: 941bef1c8eeabd9fe1f501e30a5220beee913886 + FBLazyVector: 5beb8028d5a2e75dd9634917f23e23d3a061d2aa fmt: a40bb5bd0294ea969aaaba240a927bd33d878cdd glog: 5683914934d5b6e4240e497e0f4a3b42d1854183 - hermes-engine: 35c763d57c9832d0eef764316ca1c4d043581394 + hermes-engine: 9f4dfe93326146a1c99eb535b1cb0b857a3cd172 RCT-Folly: 846fda9475e61ec7bcbf8a3fe81edfcaeb090669 - RCTDeprecation: c0ed3249a97243002615517dff789bf4666cf585 - RCTRequired: 58719f5124f9267b5f9649c08bf23d9aea845b23 - RCTTypeSafety: 4aefa8328ab1f86da273f08517f1f6b343f6c2cc - React: 2073376f47c71b7e9a0af7535986a77522ce1049 - React-callinvoker: 751b6f2c83347a0486391c3f266f291f0f53b27e + RCTDeprecation: 5eb1d2eeff5fb91151e8a8eef45b6c7658b6c897 + RCTRequired: cebcf9442fc296c9b89ac791dfd463021d9f6f23 + RCTTypeSafety: b99aa872829ee18f6e777e0ef55852521c5a6788 + React: 914f8695f9bf38e6418228c2ffb70021e559f92f + React-callinvoker: 23cd4e33928608bd0cc35357597568b8b9a5f068 React-Codegen: 4b8b4817cea7a54b83851d4c1f91f79aa73de30a - React-Core: dff5d29973349b11dd6631c9498456d75f846d5e - React-CoreModules: c0ae04452e4c5d30e06f8e94692a49107657f537 - React-cxxreact: 376fd672c95dfb64ad5cc246e6a1e9edb78dec4c - React-debug: d4955c86870792887ed695df6ebf0e94e39dc7e1 - React-defaultsnativemodule: bd2b805c6daa85d430d034aa748544b377ada152 - React-domnativemodule: b5c04a4a74ed9c3cb25adc72583b017868600464 - React-Fabric: 93a9ff378f1edf29e9a22a24ad55a1be061e7985 - React-FabricComponents: 83bd54366d4ecb8bec563aa1a78d49915763d503 - React-FabricImage: 8bcd88e553047d4ed5c7ea3def8d6c0e3dd88cfc - React-featureflags: 4ea691ab154d505277859416aa226ae32edeef5f - React-featureflagsnativemodule: b8f00b01436294a30dc62fb5e50b70aa3910309c - React-graphics: d6207795fe822668daeb9c6e1f1470a8500d9eec - React-hermes: fcbdc45ecf38259fe3b12642bd0757c52270a107 - React-idlecallbacksnativemodule: f390a518e1a862453f45f86a1bc248350634d858 - React-ImageManager: acb99e093632b7fc2953dd45f2abaeeea2d9588e - React-jserrorhandler: 958ab9afbe7acdbfe8ca225f7503313409b1319a - React-jsi: 59ec3190dd364cca86a58869e7755477d2468948 - React-jsiexecutor: b87d78a2e8dd7a6f56e9cdac038da45de98c944f - React-jsinspector: 9c33e0c4eeeb10a23b61c4501947b57977980e0e - React-jsinspectorcdp: d7b2c3feddd3669f0eaad2ac1e0f7afbc1d1cf18 - React-jsinspectornetwork: 696d0cf07016e69c053deffba30003fa448904a3 - React-jsinspectortracing: 05d49cd8795db15a279eab6f7604dfa9fe9622f1 - React-jsitooling: 0f9894c3656c3c13d4fcfe6e1dc964fd340acf49 - React-jsitracing: dc11027f9e4e829d32bf17626ec831581ea05223 - React-logger: a3cb5b29c32b8e447b5a96919340e89334062b48 - React-Mapbuffer: e4a65db5f4df53369f39558c0cf2f480f6d3d6c7 - React-microtasksnativemodule: 86334c5c06315e0bccb7b6e6f2c905e92f98b615 + React-Core: 6a0a97598e9455348113bfe4c573fe8edac34469 + React-CoreModules: a88a6ca48b668401b9780e272e2a607e70f9f955 + React-cxxreact: 06265fd7e8d5c3b6b49e00d328ef76e5f1ae9c8b + React-debug: 29aed758c756956a51b4560223edbd15191ca4c5 + React-defaultsnativemodule: c406bf7cd78036efffb7dec9df469257a1bca58c + React-domnativemodule: 925ea5ff8cb05c68e910057e6349e5898cce00f3 + React-Fabric: 13130d0a70f17e913865b04673ee64603d6c42fe + React-FabricComponents: 1f01ea24a1314bf9abcac4743bb7ad8791336be6 + React-FabricImage: f364dc54fcf8b0ef77192674a009aa4f65b34d75 + React-featureflags: 32217ac18a8c216fc571044186fb04164af72772 + React-featureflagsnativemodule: 9c552bb908a7434baa846002ee1752a77b1a5520 + React-graphics: 3034a698e46e947f74a443e761f1feef742e9d71 + React-hermes: a852be3ab9e1f515e46ba3ea9f48c31d4a9df437 + React-idlecallbacksnativemodule: c43fe1f2221b0548cc366bf15f88efb3b3221bbf + React-ImageManager: 7efd7b19cdfaa3a82482e9e6ac0b56606a3ec271 + React-jserrorhandler: 597057d0b9d158c03e02aa376a4a95f64f46a910 + React-jsi: 7b53959aea60909ac6bbe4dd0bdec6c10d7dc597 + React-jsiexecutor: 19938072af05ade148474bac41e0324a2d733f44 + React-jsinspector: eb6bb244a75cbd56f32767daf2efdb344e2ff10c + React-jsinspectorcdp: 727f37537e9c7ab22b6b86c802d879efae5e2757 + React-jsinspectornetwork: 11d47e644701c58038ef8d7f54a405ddd62b3b16 + React-jsinspectortracing: 8875637e6c65b3b9a3852b006856562e874e7a78 + React-jsitooling: b6e6a2551459a6ef9e1529df2ea981fa27ed3a91 + React-jsitracing: 879e2b2f80dd33d84175989de0a8db5d662505db + React-logger: a913317214a26565cd4c045347edf1bcacb80a3f + React-Mapbuffer: 017336879e2e0fb7537bbc08c24f34e2384c9260 + React-microtasksnativemodule: 63ee6730cec233feab9cdcc0c100dc28a12e4165 react-native-blob-util: 7f71e0af02279ef38a2ba43e8c2fcb79cf927732 react-native-image-picker: 6051cfd030121b880a58f1cc0e5e33e9887804e4 react-native-mmkv: 7b9c7469fa0a7e463f9411ad3e4fe273bd5ff030 react-native-netinfo: cec9c4e86083cb5b6aba0e0711f563e2fbbff187 react-native-safe-area-context: ee1e8e2a7abf737a8d4d9d1a5686a7f2e7466236 react-native-video: d9d12aa2325ae06222e97e8bd801bbc31df2675d - React-NativeModulesApple: 8c7eb6057b00c191a11ad5ced41826ec5a0e4d78 - React-oscompat: 93b5535ea7f7dff46aaee4f78309a70979bdde9d - React-perflogger: 5536d2df3d18fe0920263466f7b46a56351c0510 - React-performancetimeline: c6c9393c1a0453a51e1852e3531defe60790b36c - React-RCTActionSheet: 42195ae666e6d79b4af2346770f765b7c29435b9 - React-RCTAnimation: fa103ccc3503b1ed8dedca7e62e7823937748843 - React-RCTAppDelegate: 665d4baf19424cef08276e9ac0d8771eec4519f9 - React-RCTBlob: 0fa9530c255644db095f2c4fd8d89738d9d9ecc0 - React-RCTFabric: 95eb4a92c5c166e21bae07231d327174e56f202d - React-RCTFBReactNativeSpec: fd66225b71f902a8bfa939fb5f7ec743958298df - React-RCTImage: ba824e61ce2e920a239a65d130b83c3a1d426dff - React-RCTLinking: d2dc199c37e71e6f505d9eca3e5c33be930014d4 - React-RCTNetwork: 87137d4b9bd77e5068f854dd5c1f30d4b072faf6 - React-RCTRuntime: b10bd5e5506af0d6205c4101dd1560fe7beead95 - React-RCTSettings: 71f5c7fd7b5f4e725a4e2114a4b4373d0e46048f - React-RCTText: b94d4699b49285bee22b8ebf768924d607eccee3 - React-RCTVibration: 6e3993c4f6c36a3899059f9a9ead560ddaf5a7d7 - React-rendererconsistency: 612d0f6603d9837bb1236d7fd5194203b35c8799 - React-renderercss: e5c2c3b84976f7a587cde8423c671db07a6a77da - React-rendererdebug: cc7a6131733605b8897754f72c0c35c79f77da9e - React-RuntimeApple: 3f96102fc1ebf738d36719cdce5422a5769293fb - React-RuntimeCore: f05563107927f155180dfa008fed2ac1316a6aec - React-runtimeexecutor: dd3ec3b76761b43e7b37d07a70de91fc1dd24e7e - React-RuntimeHermes: 7fcb384acc111ea21bcffe2e4a15f31b58bb702e - React-runtimescheduler: 7d2eaa4e7d652a391f47df7ff510260413429bd9 - React-timing: f5d4ba74be96a24b9b2a1a910142ed14e03013d9 - React-utils: eb92d1db56a9bb5911b2c77fb4c2e8d331c8b9dd - ReactAppDependencyProvider: 433ddfb4536948630aadd5bd925aff8a632d2fe3 - ReactCodegen: 2cfa890e84ecf7f3a708f1ed9c0f2c0b22a23c9a - ReactCommon: e9ab32f1d1482d207867b4fdd139361302b9dcc6 + React-NativeModulesApple: cbceb3c4cb726838c461b13802a76cefa6f3476f + React-oscompat: eb0626e8ba1a2c61673c991bf9dc21834898475d + React-perflogger: 509e1f9a3ee28df71b0a66de806ac515ce951246 + React-performancetimeline: 9ce28cce1cded27410c293283f99fe62bebdb920 + React-RCTActionSheet: 30fe8f9f8d86db4a25ff34595a658ecd837485fc + React-RCTAnimation: 3126eb1cb8e7a6ca33a52fd833d8018aa9311af1 + React-RCTAppDelegate: b03981c790aa40cf26e0f78cc0f1f2df8287ead4 + React-RCTBlob: 53c35e85c85d6bdaa55dc81a0b290d4e78431095 + React-RCTFabric: 59ad9008775f123019c508efff260594a8509791 + React-RCTFBReactNativeSpec: 82b605ab4f6f8da0a7ad88641161df5a0bafb1fb + React-RCTImage: 074b2faa71a152a456c974e118b60c9eeda94a64 + React-RCTLinking: e5ca17a4f7ae2ad7b0c0483be77e1b383ecd0a8a + React-RCTNetwork: c508d7548c9eceac30a8100a846ea00033a03366 + React-RCTRuntime: 6979568c0bc276fe785e085894f954fa15e0ec7e + React-RCTSettings: dd84c857a4fce42c1e08c1dabcda894e25af4a6e + React-RCTText: 6e4b177d047f98bccb90d6fb1ebdd3391cf8b299 + React-RCTVibration: 9572d4a06a0c92650bcc62913e50eb2a89f19fb6 + React-rendererconsistency: a7b47f8b186af64ff8509c8caec4114a2f1ae63f + React-renderercss: 9845c5063b3a2d0462ed4e4c7fc34219a5d608ed + React-rendererdebug: 3905e346c06347b86c6e49d427062cdd638a3044 + React-RuntimeApple: 97233caf2b635c40819bf5be38d818777f8229ab + React-RuntimeCore: dc41f86fcdf1fbb42a5b8388a29bf59dfa56b2f8 + React-runtimeexecutor: d16d045faaf6cd7de8d1aa8e31a51c13d8db84a4 + React-RuntimeHermes: 5a9d132554c8d6b416d794cd4ac7d927b2f88f7b + React-runtimescheduler: 689d805d43c28b8fb1ab390914e042d10e2ea2ab + React-timing: c39eeb992274aeaeb9f4666dc97a36a31d33fe94 + React-utils: 2f9ba0088251788ad66aa1855ff99ed2424024d2 + ReactAppDependencyProvider: 1bcd3527ac0390a1c898c114f81ff954be35ed79 + ReactCodegen: 2e921a931c5a4dd1d8ab37ade085fdf58fcfe1dd + ReactCommon: 6d0fa86a4510730da7c72560e0ced14258292ab9 RNCallKeep: 1930a01d8caf48f018be4f2db0c9f03405c2f977 RNCClipboard: e560338bf6cc4656a09ff90610b62ddc0dbdad65 RNCPushNotificationIOS: 6c4ca3388c7434e4a662b92e4dfeeee858e6f440 @@ -3458,14 +3461,15 @@ SPEC CHECKSUMS: RNVoipPushNotification: 4998fe6724d421da616dca765da7dc421ff54c4e RNWorklets: ad0606bee2a8103c14adb412149789c60b72bfb2 SocketRocket: d4aabe649be1e368d1318fdf28a022d714d65748 - stream-chat-react-native: c88c3a1087393358e660885479e21be1f2c286a3 - stream-io-noise-cancellation-react-native: ed874466f2e7967ada45a9e4dfad147dabe8f9dd - stream-io-video-filters-react-native: 1336c7f604d99d452817b90828389f47771f9417 - stream-react-native-webrtc: dcf95d3bd7f0503245b553af02484423805212ed - stream-video-react-native: 5a29ec88115d77bc6bc36623c4bfe3b8ce9ca2e6 + stream-chat-react-native: 2138656043846cd04d5d284605ef07af9a5309bc + stream-io-noise-cancellation-react-native: 17dfc185dc9b2552f70a1510cf818228dcd2e436 + stream-io-video-filters-react-native: 5f24440c96fda08d50d7e33910a60d354c9771fe + stream-react-native-webrtc: 1bef09475caf435abbbd8aec8f8c3a9b1ee1fdf0 + stream-video-react-native: e4023430bda1d702a1ce83355db70515ace3f727 StreamVideoNoiseCancellation: 41f5a712aba288f9636b64b17ebfbdff52c61490 + StreamWebRTC: 57bd35729bcc46b008de4e741a5b23ac28b8854d VisionCamera: 891edb31806dd3a239c8a9d6090d6ec78e11ee80 - Yoga: 9b30b783a17681321b52ac507a37219d7d795ace + Yoga: cc4a6600d61e4e9276e860d4d68eebb834a050ba PODFILE CHECKSUM: aa62ba474533b73121c2068a13a8b909b17efbaa diff --git a/sample-apps/react-native/dogfood/src/screens/LiveStream/ViewLiveStream.tsx b/sample-apps/react-native/dogfood/src/screens/LiveStream/ViewLiveStream.tsx index ba7f1a98e7..0913a85060 100644 --- a/sample-apps/react-native/dogfood/src/screens/LiveStream/ViewLiveStream.tsx +++ b/sample-apps/react-native/dogfood/src/screens/LiveStream/ViewLiveStream.tsx @@ -43,7 +43,7 @@ export const ViewLiveStreamChildren = ({ } = route; useEffect(() => { - callManager.start({ audioRole: 'listener' }); + callManager.start({ audioRole: 'listener', enableStereoAudioOutput: true }); return () => { callManager.stop(); };