Merge branch 'robertlong/change-media-device' into robertlong/group-call

This commit is contained in:
Robert Long
2021-10-12 15:15:21 -07:00
+40 -1
View File
@@ -1094,7 +1094,46 @@ export class MatrixCall extends EventEmitter {
true,
);
this.pushLocalFeed(stream, SDPStreamMetadataPurpose.Usermedia, true);
const callFeed = this.localUsermediaFeed;
callFeed.setNewStream(stream);
const newSenders = [];
for (const track of stream.getTracks()) {
const oldSender = this.usermediaSenders.find((sender) => {
return sender.track?.kind === track.kind;
});
let newSender: RTCRtpSender;
try {
logger.info(
`Replacing track (` +
`id="${track.id}", ` +
`kind="${track.kind}", ` +
`streamId="${stream}", ` +
`streamPurpose="${callFeed.purpose}"` +
`) to peer connection`,
);
await oldSender.replaceTrack(track);
newSender = oldSender;
} catch (error) {
logger.info(
`Adding track (` +
`id="${track.id}", ` +
`kind="${track.kind}", ` +
`streamId="${stream}", ` +
`streamPurpose="${callFeed.purpose}"` +
`) to peer connection`,
);
newSender = this.peerConn.addTrack(track, stream);
}
newSenders.push(newSender);
}
this.usermediaSenders = newSenders;
this.client.getMediaHandler().stopUserMediaStream(oldStream);
}