Skip to content

Commit

Permalink
Fix bug where video would not unmute if it started muted (#3213)
Browse files Browse the repository at this point in the history
  • Loading branch information
dbkr authored Mar 14, 2023
1 parent 1d9250b commit ca1eae1
Show file tree
Hide file tree
Showing 2 changed files with 26 additions and 0 deletions.
25 changes: 25 additions & 0 deletions spec/unit/webrtc/call.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -431,6 +431,31 @@ describe("Call", function () {
expect(transceivers.get("m.usermedia:video")!.sender.track!.id).toBe("usermedia_video_track");
});

it("should unmute video after upgrading to video call", async () => {
// Regression test for https://github.com/vector-im/element-call/issues/925
await startVoiceCall(client, call);
// start off with video muted
await call.setLocalVideoMuted(true);

await call.onAnswerReceived(
makeMockEvent("@test:foo", {
version: 1,
call_id: call.callId,
party_id: "party_id",
answer: {
sdp: DUMMY_SDP,
},
[SDPStreamMetadataKey]: {},
}),
);

// then unmute which should cause an upgrade
await call.setLocalVideoMuted(false);

// video should now be unmuted
expect(call.isLocalVideoMuted()).toBe(false);
});

it("should handle SDPStreamMetadata changes", async () => {
await startVoiceCall(client, call);

Expand Down
1 change: 1 addition & 0 deletions src/webrtc/call.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1400,6 +1400,7 @@ export class MatrixCall extends TypedEventEmitter<CallEvent, CallEventHandlerMap
}

if (!this.hasUserMediaVideoSender && !muted) {
this.localUsermediaFeed?.setAudioVideoMuted(null, muted);
await this.upgradeCall(false, true);
return this.isLocalVideoMuted();
}
Expand Down

0 comments on commit ca1eae1

Please sign in to comment.