updated track provider as per ENG-2175

This commit is contained in:
Jon 2021-07-12 19:29:18 +01:00
parent 6e25f32f4b
commit abd6b16a85
1 changed files with 35 additions and 17 deletions

View File

@ -53,7 +53,9 @@ export const TracksProvider = ({ children }) => {
); );
const pauseVideoTrack = useCallback((id) => { const pauseVideoTrack = useCallback((id) => {
// Ignore undefined, local or screenshare /**
* Ignore undefined, local or screenshare.
*/
if ( if (
!id || !id ||
isLocalId(id) || isLocalId(id) ||
@ -74,27 +76,36 @@ export const TracksProvider = ({ children }) => {
const resumeVideoTrack = useCallback( const resumeVideoTrack = useCallback(
(id) => { (id) => {
// Ignore undefined, local or screenshare /**
* Ignore undefined, local or screenshare.
*/
if (!id || isLocalId(id) || isScreenId(id)) return; if (!id || isLocalId(id) || isScreenId(id)) return;
const videoTrack = callObject.participants()?.[id]?.tracks?.video; const videoTrack = callObject.participants()?.[id]?.tracks?.video;
if (!videoTrack?.subscribed) {
const subscribe = () => {
if (videoTrack?.subscribed) return;
callObject.updateParticipant(id, { callObject.updateParticipant(id, {
setSubscribedTracks: true, setSubscribedTracks: true,
}); });
return; };
}
if ( switch (rtcpeers.getCurrentType()) {
rtcpeers.getCurrentType() !== 'sfu' || case 'peer-to-peer':
!rtcpeers.soup.implementationIsAcceptingCalls subscribe();
) { break;
return; case 'sfu': {
} if (!rtcpeers.soup.implementationIsAcceptingCalls) return;
const consumer = rtcpeers.soup?.findConsumerForTrack(id, 'cam-video'); const consumer = rtcpeers.soup?.findConsumerForTrack(id, 'cam-video');
if (!consumer) { if (!(consumer && consumer.appData)) {
rtcpeers.soup.setResumeOnSubscribeForTrack(id, 'cam-video', true); rtcpeers.soup.setResumeOnSubscribeForTrack(id, 'cam-video', true);
} else { subscribe();
rtcpeers.soup.resumeConsumer(consumer); } else {
rtcpeers.soup.resumeConsumer(consumer);
}
break;
}
default:
break;
} }
}, },
[callObject] [callObject]
@ -132,6 +143,13 @@ export const TracksProvider = ({ children }) => {
pauseVideoTrack(id); pauseVideoTrack(id);
} }
/**
* Fast resume tracks.
*/
if (shouldSubscribe && !shouldPause) {
resumeVideoTrack(id);
}
if ( if (
isLocalId(id) || isLocalId(id) ||
isScreenId(id) || isScreenId(id) ||