You've already forked matrix-js-sdk
mirror of
https://github.com/matrix-org/matrix-js-sdk.git
synced 2025-11-25 05:23:13 +03:00
Fix bug with ine-way audio after a transfer (#2193)
Seems chrome at least will give you a disabled audio track if you already had another user media audio track and disabled it, so make sure our tracks are enabled when we add them. We already did this on one code path but it didn't get moved over when a new code path was added. On the plus side, we now know the reason for the ancient code that had the comment asking what it was for, so update that.
This commit is contained in:
@@ -585,9 +585,11 @@ export class MatrixCall extends TypedEventEmitter<CallEvent, CallEventHandlerMap
|
|||||||
private pushNewLocalFeed(stream: MediaStream, purpose: SDPStreamMetadataPurpose, addToPeerConnection = true): void {
|
private pushNewLocalFeed(stream: MediaStream, purpose: SDPStreamMetadataPurpose, addToPeerConnection = true): void {
|
||||||
const userId = this.client.getUserId();
|
const userId = this.client.getUserId();
|
||||||
|
|
||||||
// TODO: Find out what is going on here
|
// Tracks don't always start off enabled, eg. chrome will give a disabled
|
||||||
// why do we enable audio (and only audio) tracks here? -- matthew
|
// audio track if you ask for user media audio and already had one that
|
||||||
|
// you'd set to disabled (presumably because it clones them internally).
|
||||||
setTracksEnabled(stream.getAudioTracks(), true);
|
setTracksEnabled(stream.getAudioTracks(), true);
|
||||||
|
setTracksEnabled(stream.getVideoTracks(), true);
|
||||||
|
|
||||||
// We try to replace an existing feed if there already is one with the same purpose
|
// We try to replace an existing feed if there already is one with the same purpose
|
||||||
const existingFeed = this.getLocalFeeds().find((feed) => feed.purpose === purpose);
|
const existingFeed = this.getLocalFeeds().find((feed) => feed.purpose === purpose);
|
||||||
@@ -630,7 +632,8 @@ export class MatrixCall extends TypedEventEmitter<CallEvent, CallEventHandlerMap
|
|||||||
`id="${track.id}", ` +
|
`id="${track.id}", ` +
|
||||||
`kind="${track.kind}", ` +
|
`kind="${track.kind}", ` +
|
||||||
`streamId="${callFeed.stream.id}", ` +
|
`streamId="${callFeed.stream.id}", ` +
|
||||||
`streamPurpose="${callFeed.purpose}"` +
|
`streamPurpose="${callFeed.purpose}", ` +
|
||||||
|
`enabled=${track.enabled}` +
|
||||||
`) to peer connection`,
|
`) to peer connection`,
|
||||||
);
|
);
|
||||||
senderArray.push(this.peerConn.addTrack(track, callFeed.stream));
|
senderArray.push(this.peerConn.addTrack(track, callFeed.stream));
|
||||||
@@ -2078,6 +2081,12 @@ export class MatrixCall extends TypedEventEmitter<CallEvent, CallEventHandlerMap
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
const stream = await this.client.getMediaHandler().getUserMediaStream(audio, video);
|
const stream = await this.client.getMediaHandler().getUserMediaStream(audio, video);
|
||||||
|
|
||||||
|
// make sure all the tracks are enabled (same as pushNewLocalFeed -
|
||||||
|
// we probably ought to just have one code path for adding streams)
|
||||||
|
setTracksEnabled(stream.getAudioTracks(), true);
|
||||||
|
setTracksEnabled(stream.getVideoTracks(), true);
|
||||||
|
|
||||||
const callFeed = new CallFeed({
|
const callFeed = new CallFeed({
|
||||||
client: this.client,
|
client: this.client,
|
||||||
roomId: this.roomId,
|
roomId: this.roomId,
|
||||||
|
|||||||
Reference in New Issue
Block a user