@stream-io/video-react-native-sdk 1.22.1-alpha.2 → 1.22.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +2822 -0
- package/dist/commonjs/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.js +79 -0
- package/dist/commonjs/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.js.map +1 -0
- package/dist/commonjs/components/Participant/ParticipantView/{VideoRenderer.js → VideoRenderer/index.js} +16 -88
- package/dist/commonjs/components/Participant/ParticipantView/VideoRenderer/index.js.map +1 -0
- package/dist/commonjs/version.js +1 -1
- package/dist/commonjs/version.js.map +1 -1
- package/dist/module/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.js +73 -0
- package/dist/module/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.js.map +1 -0
- package/dist/module/components/Participant/ParticipantView/{VideoRenderer.js → VideoRenderer/index.js} +16 -89
- package/dist/module/components/Participant/ParticipantView/VideoRenderer/index.js.map +1 -0
- package/dist/module/version.js +1 -1
- package/dist/module/version.js.map +1 -1
- package/dist/typescript/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.d.ts +25 -0
- package/dist/typescript/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.d.ts.map +1 -0
- package/dist/typescript/components/Participant/ParticipantView/{VideoRenderer.d.ts → VideoRenderer/index.d.ts} +2 -2
- package/dist/typescript/components/Participant/ParticipantView/VideoRenderer/index.d.ts.map +1 -0
- package/dist/typescript/version.d.ts +1 -1
- package/dist/typescript/version.d.ts.map +1 -1
- package/ios/StreamInCallManager.swift +10 -23
- package/package.json +4 -4
- package/src/components/Participant/ParticipantView/VideoRenderer/TrackSubscriber.tsx +125 -0
- package/src/components/Participant/ParticipantView/{VideoRenderer.tsx → VideoRenderer/index.tsx} +18 -107
- package/src/version.ts +1 -1
- package/dist/commonjs/components/Participant/ParticipantView/VideoRenderer.js.map +0 -1
- package/dist/module/components/Participant/ParticipantView/VideoRenderer.js.map +0 -1
- package/dist/typescript/components/Participant/ParticipantView/VideoRenderer.d.ts.map +0 -1
- package/ios/StreamVideoReactNative.xcodeproj/project.xcworkspace/xcuserdata/santhoshvaiyapuri.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- package/ios/StreamVideoReactNative.xcodeproj/xcuserdata/santhoshvaiyapuri.xcuserdatad/xcschemes/xcschememanagement.plist +0 -14
|
@@ -19,7 +19,7 @@ enum DefaultAudioDevice {
|
|
|
19
19
|
@objc(StreamInCallManager)
|
|
20
20
|
class StreamInCallManager: RCTEventEmitter {
|
|
21
21
|
|
|
22
|
-
private let audioSessionQueue = DispatchQueue(label: "io.getstream.rn.audioSessionQueue"
|
|
22
|
+
private let audioSessionQueue = DispatchQueue(label: "io.getstream.rn.audioSessionQueue")
|
|
23
23
|
|
|
24
24
|
private var audioManagerActivated = false
|
|
25
25
|
private var callAudioRole: CallAudioRole = .communicator
|
|
@@ -118,23 +118,13 @@ class StreamInCallManager: RCTEventEmitter {
|
|
|
118
118
|
|
|
119
119
|
if (defaultAudioDevice == .speaker) {
|
|
120
120
|
// defaultToSpeaker will route to speaker if nothing else is connected
|
|
121
|
-
intendedOptions = [.
|
|
121
|
+
intendedOptions = [.allowBluetooth, .defaultToSpeaker]
|
|
122
122
|
} else {
|
|
123
123
|
// having no defaultToSpeaker makes sure audio goes to earpiece if nothing is connected
|
|
124
|
-
intendedOptions = [.
|
|
124
|
+
intendedOptions = [.allowBluetooth]
|
|
125
125
|
}
|
|
126
126
|
}
|
|
127
127
|
|
|
128
|
-
// STEP 1: Configure iOS native audio session FIRST (this does the pre-warming so that webrtc worker thread isnt stalled on audio unit initialisation)
|
|
129
|
-
let nativeSession = AVAudioSession.sharedInstance()
|
|
130
|
-
do {
|
|
131
|
-
try nativeSession.setCategory(intendedCategory, mode: intendedMode, options: intendedOptions)
|
|
132
|
-
try nativeSession.setActive(true)
|
|
133
|
-
log("configureAudioSession: Native AVAudioSession configured successfully")
|
|
134
|
-
} catch {
|
|
135
|
-
log("configureAudioSession: Failed to configure native session: \(error.localizedDescription)")
|
|
136
|
-
}
|
|
137
|
-
|
|
138
128
|
// START: set the config that webrtc must use when it takes control
|
|
139
129
|
let rtcConfig = RTCAudioSessionConfiguration.webRTC()
|
|
140
130
|
rtcConfig.category = intendedCategory.rawValue
|
|
@@ -143,7 +133,6 @@ class StreamInCallManager: RCTEventEmitter {
|
|
|
143
133
|
RTCAudioSessionConfiguration.setWebRTC(rtcConfig)
|
|
144
134
|
// END
|
|
145
135
|
|
|
146
|
-
|
|
147
136
|
// START: compare current audio session with intended, and update if different
|
|
148
137
|
let session = RTCAudioSession.sharedInstance()
|
|
149
138
|
let currentCategory = session.category
|
|
@@ -153,7 +142,6 @@ class StreamInCallManager: RCTEventEmitter {
|
|
|
153
142
|
|
|
154
143
|
if currentCategory != intendedCategory.rawValue || currentMode != intendedMode.rawValue || currentOptions != intendedOptions || !currentIsActive {
|
|
155
144
|
session.lockForConfiguration()
|
|
156
|
-
defer { session.unlockForConfiguration() }
|
|
157
145
|
do {
|
|
158
146
|
try session.setCategory(intendedCategory, mode: intendedMode, options: intendedOptions)
|
|
159
147
|
try session.setActive(true)
|
|
@@ -168,6 +156,7 @@ class StreamInCallManager: RCTEventEmitter {
|
|
|
168
156
|
log("configureAudioSession: Error setting mode: \(error.localizedDescription)")
|
|
169
157
|
}
|
|
170
158
|
}
|
|
159
|
+
session.unlockForConfiguration()
|
|
171
160
|
} else {
|
|
172
161
|
log("configureAudioSession: no change needed")
|
|
173
162
|
}
|
|
@@ -191,14 +180,12 @@ class StreamInCallManager: RCTEventEmitter {
|
|
|
191
180
|
|
|
192
181
|
@objc(setForceSpeakerphoneOn:)
|
|
193
182
|
func setForceSpeakerphoneOn(enable: Bool) {
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
self.log("Error setting speakerphone: \(error)")
|
|
201
|
-
}
|
|
183
|
+
let session = AVAudioSession.sharedInstance()
|
|
184
|
+
do {
|
|
185
|
+
try session.overrideOutputAudioPort(enable ? .speaker : .none)
|
|
186
|
+
try session.setActive(true)
|
|
187
|
+
} catch {
|
|
188
|
+
log("Error setting speakerphone: \(error)")
|
|
202
189
|
}
|
|
203
190
|
}
|
|
204
191
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@stream-io/video-react-native-sdk",
|
|
3
|
-
"version": "1.22.
|
|
3
|
+
"version": "1.22.2",
|
|
4
4
|
"description": "Stream Video SDK for React Native",
|
|
5
5
|
"author": "https://getstream.io",
|
|
6
6
|
"homepage": "https://getstream.io/video/docs/react-native/",
|
|
@@ -125,9 +125,9 @@
|
|
|
125
125
|
"@react-native-firebase/app": "^23.4.0",
|
|
126
126
|
"@react-native-firebase/messaging": "^23.4.0",
|
|
127
127
|
"@react-native/babel-preset": "^0.81.4",
|
|
128
|
-
"@stream-io/noise-cancellation-react-native": "
|
|
128
|
+
"@stream-io/noise-cancellation-react-native": "^0.4.0",
|
|
129
129
|
"@stream-io/react-native-webrtc": "125.4.4",
|
|
130
|
-
"@stream-io/video-filters-react-native": "
|
|
130
|
+
"@stream-io/video-filters-react-native": "^0.8.0",
|
|
131
131
|
"@testing-library/jest-native": "^5.4.3",
|
|
132
132
|
"@testing-library/react-native": "13.3.3",
|
|
133
133
|
"@tsconfig/node18": "^18.2.4",
|
|
@@ -162,4 +162,4 @@
|
|
|
162
162
|
"typescript"
|
|
163
163
|
]
|
|
164
164
|
}
|
|
165
|
-
}
|
|
165
|
+
}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
import { forwardRef, useImperativeHandle, useEffect, useMemo } from 'react';
|
|
2
|
+
import { LayoutChangeEvent } from 'react-native';
|
|
3
|
+
import {
|
|
4
|
+
Call,
|
|
5
|
+
CallingState,
|
|
6
|
+
hasScreenShare,
|
|
7
|
+
hasVideo,
|
|
8
|
+
SfuModels,
|
|
9
|
+
type VideoTrackType,
|
|
10
|
+
DebounceType,
|
|
11
|
+
} from '@stream-io/video-client';
|
|
12
|
+
import {
|
|
13
|
+
BehaviorSubject,
|
|
14
|
+
combineLatest,
|
|
15
|
+
distinctUntilChanged,
|
|
16
|
+
distinctUntilKeyChanged,
|
|
17
|
+
map,
|
|
18
|
+
takeWhile,
|
|
19
|
+
} from 'rxjs';
|
|
20
|
+
export type TrackSubscriberHandle = {
|
|
21
|
+
onLayoutUpdate: (event: LayoutChangeEvent) => void;
|
|
22
|
+
};
|
|
23
|
+
|
|
24
|
+
type TrackSubscriberProps = {
|
|
25
|
+
participantSessionId: string;
|
|
26
|
+
call: Call;
|
|
27
|
+
trackType: VideoTrackType;
|
|
28
|
+
isVisible: boolean;
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* This component is used to subscribe to the video + audio track of the participant in the following cases:
|
|
33
|
+
* 1. When the participant starts publishing the video track
|
|
34
|
+
* 2. When the participant changes the video track dimensions
|
|
35
|
+
* 3. When the participant becomes visible
|
|
36
|
+
* 4. On joined callingState, this handles reconnection
|
|
37
|
+
|
|
38
|
+
* This component is used to unsubscribe to video track and subscribe only to the audio track of the participant (by passing undefined dimensions) in the following cases:
|
|
39
|
+
* 1. When the participant stops publishing the video track
|
|
40
|
+
* 2. When the participant becomes invisible
|
|
41
|
+
*/
|
|
42
|
+
const TrackSubscriber = forwardRef<TrackSubscriberHandle, TrackSubscriberProps>(
|
|
43
|
+
(props, ref) => {
|
|
44
|
+
const { call, participantSessionId, trackType, isVisible } = props;
|
|
45
|
+
const dimensions$ = useMemo(() => {
|
|
46
|
+
return new BehaviorSubject<SfuModels.VideoDimension | undefined>(
|
|
47
|
+
undefined,
|
|
48
|
+
);
|
|
49
|
+
}, []);
|
|
50
|
+
|
|
51
|
+
useEffect(() => {
|
|
52
|
+
const requestTrackWithDimensions = (
|
|
53
|
+
debounceType: DebounceType,
|
|
54
|
+
dimension: SfuModels.VideoDimension | undefined,
|
|
55
|
+
) => {
|
|
56
|
+
if (dimension && (dimension.width === 0 || dimension.height === 0)) {
|
|
57
|
+
// ignore 0x0 dimensions. this can happen when the video element
|
|
58
|
+
// is not visible (e.g., has display: none).
|
|
59
|
+
// we treat this as "unsubscription" as we don't want to keep
|
|
60
|
+
// consuming bandwidth for a video that is not visible on the screen.
|
|
61
|
+
dimension = undefined;
|
|
62
|
+
}
|
|
63
|
+
call.state.updateParticipantTracks(trackType, {
|
|
64
|
+
[participantSessionId]: { dimension },
|
|
65
|
+
});
|
|
66
|
+
call.dynascaleManager.applyTrackSubscriptions(debounceType);
|
|
67
|
+
};
|
|
68
|
+
const isPublishingTrack$ = call.state.participants$.pipe(
|
|
69
|
+
map((ps) => ps.find((p) => p.sessionId === participantSessionId)),
|
|
70
|
+
takeWhile((p) => !!p),
|
|
71
|
+
distinctUntilChanged(),
|
|
72
|
+
distinctUntilKeyChanged('publishedTracks'),
|
|
73
|
+
map((p) =>
|
|
74
|
+
trackType === 'videoTrack' ? hasVideo(p) : hasScreenShare(p),
|
|
75
|
+
),
|
|
76
|
+
distinctUntilChanged(),
|
|
77
|
+
);
|
|
78
|
+
const isJoinedState$ = call.state.callingState$.pipe(
|
|
79
|
+
map((callingState) => callingState === CallingState.JOINED),
|
|
80
|
+
);
|
|
81
|
+
|
|
82
|
+
const subscription = combineLatest([
|
|
83
|
+
dimensions$,
|
|
84
|
+
isPublishingTrack$,
|
|
85
|
+
isJoinedState$,
|
|
86
|
+
]).subscribe(([dimension, isPublishing, isJoined]) => {
|
|
87
|
+
if (isJoined && isPublishing && !isVisible) {
|
|
88
|
+
// the participant is publishing and we are not visible, so we unsubscribe from the video track
|
|
89
|
+
requestTrackWithDimensions(DebounceType.FAST, undefined);
|
|
90
|
+
} else if (isJoined && isPublishing && isVisible && dimension) {
|
|
91
|
+
// the participant is publishing and we are visible and have valid dimensions, so we subscribe to the video track
|
|
92
|
+
requestTrackWithDimensions(DebounceType.IMMEDIATE, dimension);
|
|
93
|
+
} else if (isJoined && !isPublishing) {
|
|
94
|
+
// the participant stopped publishing a track, so we unsubscribe from the video track
|
|
95
|
+
requestTrackWithDimensions(DebounceType.FAST, undefined);
|
|
96
|
+
}
|
|
97
|
+
// if isPublishing but no dimension yet, we wait for dimensions
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
return () => {
|
|
101
|
+
subscription.unsubscribe();
|
|
102
|
+
};
|
|
103
|
+
}, [call, participantSessionId, trackType, isVisible, dimensions$]);
|
|
104
|
+
|
|
105
|
+
useImperativeHandle(
|
|
106
|
+
ref,
|
|
107
|
+
() => ({
|
|
108
|
+
onLayoutUpdate: (event) => {
|
|
109
|
+
const dimension = {
|
|
110
|
+
width: Math.trunc(event.nativeEvent.layout.width),
|
|
111
|
+
height: Math.trunc(event.nativeEvent.layout.height),
|
|
112
|
+
};
|
|
113
|
+
dimensions$.next(dimension);
|
|
114
|
+
},
|
|
115
|
+
}),
|
|
116
|
+
[dimensions$],
|
|
117
|
+
);
|
|
118
|
+
|
|
119
|
+
return null;
|
|
120
|
+
},
|
|
121
|
+
);
|
|
122
|
+
|
|
123
|
+
TrackSubscriber.displayName = 'TrackSubscriber';
|
|
124
|
+
|
|
125
|
+
export default TrackSubscriber;
|
package/src/components/Participant/ParticipantView/{VideoRenderer.tsx → VideoRenderer/index.tsx}
RENAMED
|
@@ -2,21 +2,20 @@ import React, { useEffect, useRef } from 'react';
|
|
|
2
2
|
import { Platform, StyleSheet, View } from 'react-native';
|
|
3
3
|
import type { MediaStream } from '@stream-io/react-native-webrtc';
|
|
4
4
|
import { RTCView } from '@stream-io/react-native-webrtc';
|
|
5
|
-
import type { ParticipantViewProps } from '
|
|
5
|
+
import type { ParticipantViewProps } from '../ParticipantView';
|
|
6
6
|
import {
|
|
7
|
-
CallingState,
|
|
8
7
|
hasPausedTrack,
|
|
9
8
|
hasScreenShare,
|
|
10
9
|
hasVideo,
|
|
11
|
-
SfuModels,
|
|
12
10
|
type VideoTrackType,
|
|
13
11
|
VisibilityState,
|
|
14
12
|
} from '@stream-io/video-client';
|
|
15
13
|
import { useCall, useCallStateHooks } from '@stream-io/video-react-bindings';
|
|
16
|
-
import { ParticipantVideoFallback as DefaultParticipantVideoFallback } from '
|
|
17
|
-
import { useTheme } from '
|
|
18
|
-
import { useTrackDimensions } from '
|
|
19
|
-
import { useScreenshotIosContext } from '
|
|
14
|
+
import { ParticipantVideoFallback as DefaultParticipantVideoFallback } from '../ParticipantVideoFallback';
|
|
15
|
+
import { useTheme } from '../../../../contexts/ThemeContext';
|
|
16
|
+
import { useTrackDimensions } from '../../../../hooks/useTrackDimensions';
|
|
17
|
+
import { useScreenshotIosContext } from '../../../../contexts/internal/ScreenshotIosContext';
|
|
18
|
+
import TrackSubscriber, { TrackSubscriberHandle } from './TrackSubscriber';
|
|
20
19
|
|
|
21
20
|
const DEFAULT_VIEWPORT_VISIBILITY_STATE: Record<
|
|
22
21
|
VideoTrackType,
|
|
@@ -56,16 +55,9 @@ export const VideoRenderer = ({
|
|
|
56
55
|
theme: { videoRenderer },
|
|
57
56
|
} = useTheme();
|
|
58
57
|
const call = useCall();
|
|
59
|
-
const {
|
|
60
|
-
|
|
58
|
+
const { useCameraState, useIncomingVideoSettings } = useCallStateHooks();
|
|
59
|
+
const trackSubscriberRef = useRef<TrackSubscriberHandle>(null);
|
|
61
60
|
const { isParticipantVideoEnabled } = useIncomingVideoSettings();
|
|
62
|
-
const callingState = useCallCallingState();
|
|
63
|
-
const pendingVideoLayoutRef = useRef<SfuModels.VideoDimension | undefined>(
|
|
64
|
-
undefined,
|
|
65
|
-
);
|
|
66
|
-
const subscribedVideoLayoutRef = useRef<SfuModels.VideoDimension | undefined>(
|
|
67
|
-
undefined,
|
|
68
|
-
);
|
|
69
61
|
const { direction } = useCameraState();
|
|
70
62
|
const viewRef = useRef(null);
|
|
71
63
|
const {
|
|
@@ -91,7 +83,6 @@ export const VideoRenderer = ({
|
|
|
91
83
|
? hasScreenShare(participant)
|
|
92
84
|
: hasVideo(participant);
|
|
93
85
|
|
|
94
|
-
const hasJoinedCall = callingState === CallingState.JOINED;
|
|
95
86
|
const videoStreamToRender = (isScreenSharing
|
|
96
87
|
? screenShareStream
|
|
97
88
|
: videoStream) as unknown as MediaStream | undefined;
|
|
@@ -179,11 +170,6 @@ export const VideoRenderer = ({
|
|
|
179
170
|
},
|
|
180
171
|
}));
|
|
181
172
|
}
|
|
182
|
-
if (subscribedVideoLayoutRef.current) {
|
|
183
|
-
// when video is enabled again, we want to use the last subscribed dimension to resubscribe
|
|
184
|
-
pendingVideoLayoutRef.current = subscribedVideoLayoutRef.current;
|
|
185
|
-
subscribedVideoLayoutRef.current = undefined;
|
|
186
|
-
}
|
|
187
173
|
}
|
|
188
174
|
}, [
|
|
189
175
|
sessionId,
|
|
@@ -194,94 +180,10 @@ export const VideoRenderer = ({
|
|
|
194
180
|
isLocalParticipant,
|
|
195
181
|
]);
|
|
196
182
|
|
|
197
|
-
useEffect(() => {
|
|
198
|
-
if (!hasJoinedCall && subscribedVideoLayoutRef.current) {
|
|
199
|
-
// when call is joined again, we want to use the last subscribed dimension to resubscribe
|
|
200
|
-
pendingVideoLayoutRef.current = subscribedVideoLayoutRef.current;
|
|
201
|
-
subscribedVideoLayoutRef.current = undefined;
|
|
202
|
-
}
|
|
203
|
-
}, [hasJoinedCall]);
|
|
204
|
-
|
|
205
|
-
/**
|
|
206
|
-
* This effect updates the subscription either
|
|
207
|
-
* 1. when video tracks are published and was unpublished before
|
|
208
|
-
* 2. when the view's visibility changes
|
|
209
|
-
* 3. when call was rejoined
|
|
210
|
-
*/
|
|
211
|
-
useEffect(() => {
|
|
212
|
-
if (!call || isLocalParticipant) {
|
|
213
|
-
return;
|
|
214
|
-
}
|
|
215
|
-
// NOTE: We only want to update the subscription if the pendingVideoLayoutRef is set
|
|
216
|
-
const updateIsNeeded = pendingVideoLayoutRef.current;
|
|
217
|
-
|
|
218
|
-
if (!updateIsNeeded || !isPublishingVideoTrack || !hasJoinedCall) {
|
|
219
|
-
return;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
// NOTE: When the view is not visible, we want to subscribe to audio only.
|
|
223
|
-
// We unsubscribe their video by setting the dimension to undefined
|
|
224
|
-
const dimension = isVisible ? pendingVideoLayoutRef.current : undefined;
|
|
225
|
-
call.state.updateParticipantTracks(trackType, {
|
|
226
|
-
[sessionId]: { dimension },
|
|
227
|
-
});
|
|
228
|
-
call.dynascaleManager.applyTrackSubscriptions();
|
|
229
|
-
|
|
230
|
-
if (dimension) {
|
|
231
|
-
subscribedVideoLayoutRef.current = pendingVideoLayoutRef.current;
|
|
232
|
-
pendingVideoLayoutRef.current = undefined;
|
|
233
|
-
}
|
|
234
|
-
}, [
|
|
235
|
-
call,
|
|
236
|
-
isPublishingVideoTrack,
|
|
237
|
-
trackType,
|
|
238
|
-
isVisible,
|
|
239
|
-
sessionId,
|
|
240
|
-
hasJoinedCall,
|
|
241
|
-
isLocalParticipant,
|
|
242
|
-
]);
|
|
243
|
-
|
|
244
|
-
useEffect(() => {
|
|
245
|
-
return () => {
|
|
246
|
-
subscribedVideoLayoutRef.current = undefined;
|
|
247
|
-
pendingVideoLayoutRef.current = undefined;
|
|
248
|
-
};
|
|
249
|
-
}, [trackType, sessionId]);
|
|
250
|
-
|
|
251
183
|
const onLayout: React.ComponentProps<typeof RTCView>['onLayout'] = (
|
|
252
184
|
event,
|
|
253
185
|
) => {
|
|
254
|
-
|
|
255
|
-
return;
|
|
256
|
-
}
|
|
257
|
-
const dimension = {
|
|
258
|
-
width: Math.trunc(event.nativeEvent.layout.width),
|
|
259
|
-
height: Math.trunc(event.nativeEvent.layout.height),
|
|
260
|
-
};
|
|
261
|
-
|
|
262
|
-
// NOTE: If the participant hasn't published a video track yet,
|
|
263
|
-
// or the view is not viewable, we store the dimensions and handle it
|
|
264
|
-
// when the track is published or the video is enabled.
|
|
265
|
-
if (!isPublishingVideoTrack || !isVisible || !hasJoinedCall) {
|
|
266
|
-
pendingVideoLayoutRef.current = dimension;
|
|
267
|
-
return;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
// NOTE: We don't want to update the subscription if the dimension hasn't changed
|
|
271
|
-
if (
|
|
272
|
-
subscribedVideoLayoutRef.current?.width === dimension.width &&
|
|
273
|
-
subscribedVideoLayoutRef.current?.height === dimension.height
|
|
274
|
-
) {
|
|
275
|
-
return;
|
|
276
|
-
}
|
|
277
|
-
call.state.updateParticipantTracks(trackType, {
|
|
278
|
-
[sessionId]: {
|
|
279
|
-
dimension,
|
|
280
|
-
},
|
|
281
|
-
});
|
|
282
|
-
call.dynascaleManager.applyTrackSubscriptions();
|
|
283
|
-
subscribedVideoLayoutRef.current = dimension;
|
|
284
|
-
pendingVideoLayoutRef.current = undefined;
|
|
186
|
+
trackSubscriberRef.current?.onLayoutUpdate(event);
|
|
285
187
|
};
|
|
286
188
|
|
|
287
189
|
return (
|
|
@@ -289,6 +191,15 @@ export const VideoRenderer = ({
|
|
|
289
191
|
onLayout={onLayout}
|
|
290
192
|
style={[styles.container, videoRenderer.container]}
|
|
291
193
|
>
|
|
194
|
+
{call && !isLocalParticipant && (
|
|
195
|
+
<TrackSubscriber
|
|
196
|
+
ref={trackSubscriberRef}
|
|
197
|
+
call={call}
|
|
198
|
+
participantSessionId={sessionId}
|
|
199
|
+
trackType={trackType}
|
|
200
|
+
isVisible={isVisible}
|
|
201
|
+
/>
|
|
202
|
+
)}
|
|
292
203
|
{canShowVideo &&
|
|
293
204
|
videoStreamToRender &&
|
|
294
205
|
(objectFit || isVideoDimensionsValid) ? (
|
package/src/version.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export const version = '1.22.
|
|
1
|
+
export const version = '1.22.2';
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_reactNativeWebrtc","_videoClient","_videoReactBindings","_ParticipantVideoFallback","_ThemeContext","_useTrackDimensions","_ScreenshotIosContext","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DEFAULT_VIEWPORT_VISIBILITY_STATE","videoTrack","VisibilityState","UNKNOWN","screenShareTrack","VideoRenderer","trackType","participant","isVisible","ParticipantVideoFallback","DefaultParticipantVideoFallback","objectFit","videoZOrder","theme","videoRenderer","useTheme","useCall","useCallCallingState","useCameraState","useIncomingVideoSettings","useCallStateHooks","isParticipantVideoEnabled","callingState","pendingVideoLayoutRef","useRef","undefined","subscribedVideoLayoutRef","direction","viewRef","register","registerIosScreenshot","deregister","deregisterIosScreenshot","useScreenshotIosContext","videoDimensions","useTrackDimensions","isVideoDimensionsValid","width","height","isLocalParticipant","sessionId","viewportVisibilityState","videoStream","screenShareStream","isScreenSharing","isPublishingVideoTrack","hasScreenShare","hasVideo","hasJoinedCall","CallingState","JOINED","videoStreamToRender","canShowVideo","hasPausedTrack","useEffect","Platform","OS","mirror","VISIBLE","state","updateParticipant","p","INVISIBLE","current","updateIsNeeded","dimension","updateParticipantTracks","dynascaleManager","applyTrackSubscriptions","onLayout","event","Math","trunc","nativeEvent","layout","createElement","View","style","styles","container","RTCView","streamURL","toURL","ref","zOrder","exports","StyleSheet","create","absoluteFillObject"],"sourceRoot":"../../../../../src","sources":["components/Participant/ParticipantView/VideoRenderer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"names":["React","useEffect","useRef","Platform","StyleSheet","View","RTCView","CallingState","hasPausedTrack","hasScreenShare","hasVideo","VisibilityState","useCall","useCallStateHooks","ParticipantVideoFallback","DefaultParticipantVideoFallback","useTheme","useTrackDimensions","useScreenshotIosContext","DEFAULT_VIEWPORT_VISIBILITY_STATE","videoTrack","UNKNOWN","screenShareTrack","VideoRenderer","trackType","participant","isVisible","objectFit","videoZOrder","theme","videoRenderer","call","useCallCallingState","useCameraState","useIncomingVideoSettings","isParticipantVideoEnabled","callingState","pendingVideoLayoutRef","undefined","subscribedVideoLayoutRef","direction","viewRef","register","registerIosScreenshot","deregister","deregisterIosScreenshot","videoDimensions","isVideoDimensionsValid","width","height","isLocalParticipant","sessionId","viewportVisibilityState","videoStream","screenShareStream","isScreenSharing","isPublishingVideoTrack","hasJoinedCall","JOINED","videoStreamToRender","canShowVideo","OS","mirror","VISIBLE","state","updateParticipant","p","INVISIBLE","current","updateIsNeeded","dimension","updateParticipantTracks","dynascaleManager","applyTrackSubscriptions","onLayout","event","Math","trunc","nativeEvent","layout","createElement","style","styles","container","streamURL","toURL","ref","zOrder","create","absoluteFillObject"],"sourceRoot":"../../../../../src","sources":["components/Participant/ParticipantView/VideoRenderer.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"VideoRenderer.d.ts","sourceRoot":"","sources":["../../../../../src/components/Participant/ParticipantView/VideoRenderer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA4B,MAAM,OAAO,CAAC;AAIjD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAwB9D;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,IAAI,CACnC,oBAAoB,EAClB,0BAA0B,GAC1B,WAAW,GACX,aAAa,GACb,WAAW,GACX,WAAW,GACX,aAAa,CAChB,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,0FAO3B,kBAAkB,sBAqQpB,CAAC"}
|
|
Binary file
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
-
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
|
3
|
-
<plist version="1.0">
|
|
4
|
-
<dict>
|
|
5
|
-
<key>SchemeUserState</key>
|
|
6
|
-
<dict>
|
|
7
|
-
<key>StreamVideoReactNative.xcscheme_^#shared#^_</key>
|
|
8
|
-
<dict>
|
|
9
|
-
<key>orderHint</key>
|
|
10
|
-
<integer>0</integer>
|
|
11
|
-
</dict>
|
|
12
|
-
</dict>
|
|
13
|
-
</dict>
|
|
14
|
-
</plist>
|