mirror of
https://github.com/pavlobu/deskreen.git
synced 2025-05-18 08:20:10 -07:00
55 lines
1.7 KiB
TypeScript
55 lines
1.7 KiB
TypeScript
import DesktopCapturerSourceType from '../DesktopCapturerSourcesService/DesktopCapturerSourceType';
|
|
import getDesktopSourceStreamBySourceID from './getDesktopSourceStreamBySourceID';
|
|
import prepareDataMessageToSendScreenSourceType from './prepareDataMessageToSendScreenSourceType';
|
|
|
|
export default async function handlePeerOnData(
|
|
peerConnection: PeerConnection,
|
|
data: string
|
|
) {
|
|
const dataJSON = JSON.parse(data);
|
|
|
|
if (dataJSON.type === 'set_video_quality') {
|
|
const maxVideoQualityMultiplier = dataJSON.payload.value;
|
|
const minVideoQualityMultiplier =
|
|
maxVideoQualityMultiplier === 1 ? 0.5 : maxVideoQualityMultiplier;
|
|
|
|
if (
|
|
!peerConnection.desktopCapturerSourceID.includes(
|
|
DesktopCapturerSourceType.SCREEN
|
|
)
|
|
)
|
|
return;
|
|
|
|
const newStream = await getDesktopSourceStreamBySourceID(
|
|
peerConnection.desktopCapturerSourceID,
|
|
peerConnection.sourceDisplaySize?.width,
|
|
peerConnection.sourceDisplaySize?.height,
|
|
minVideoQualityMultiplier,
|
|
maxVideoQualityMultiplier
|
|
);
|
|
const newVideoTrack = newStream.getVideoTracks()[0];
|
|
const oldTrack = peerConnection.localStream?.getVideoTracks()[0];
|
|
|
|
if (oldTrack && peerConnection.localStream) {
|
|
peerConnection.peer.replaceTrack(
|
|
oldTrack,
|
|
newVideoTrack,
|
|
peerConnection.localStream
|
|
);
|
|
oldTrack.stop();
|
|
}
|
|
}
|
|
|
|
if (dataJSON.type === 'get_sharing_source_type') {
|
|
const sourceType = peerConnection.desktopCapturerSourceID.includes(
|
|
DesktopCapturerSourceType.SCREEN
|
|
)
|
|
? DesktopCapturerSourceType.SCREEN
|
|
: DesktopCapturerSourceType.WINDOW;
|
|
|
|
peerConnection.peer.send(
|
|
prepareDataMessageToSendScreenSourceType(sourceType)
|
|
);
|
|
}
|
|
}
|