From bc9deb12006fce66e07bcd0c5b8fb99b0a906233 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?H=C3=A5var=20Aamb=C3=B8=20Fosstveit?= Date: Mon, 3 Jun 2019 12:24:07 +0200 Subject: [PATCH] Updated handling of audio device change --- app/src/RoomClient.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/app/src/RoomClient.js b/app/src/RoomClient.js index 8ce133a..26107d0 100644 --- a/app/src/RoomClient.js +++ b/app/src/RoomClient.js @@ -809,6 +809,8 @@ export default class RoomClient logger.debug( 'changeAudioDevice() | new selected webcam [device:%o]', device); + + this._micProducer.track.stop(); logger.debug('changeAudioDevice() | calling getUserMedia()'); @@ -822,14 +824,18 @@ export default class RoomClient const track = stream.getAudioTracks()[0]; - const newTrack = await this._micProducer.replaceTrack(track); + await this._micProducer.replaceTrack({ track }); const harkStream = new MediaStream(); - harkStream.addTrack(newTrack); + harkStream.addTrack(track); + if (!harkStream.getAudioTracks()[0]) throw new Error('changeAudioDevice(): given stream has no audio track'); - if (this._micProducer.hark != null) this._micProducer.hark.stop(); + + if (this._micProducer.hark != null) + this._micProducer.hark.stop(); + this._micProducer.hark = hark(harkStream, { play: false }); // eslint-disable-next-line no-unused-vars @@ -855,7 +861,7 @@ export default class RoomClient track.stop(); store.dispatch( - stateActions.setProducerTrack(this._micProducer.id, newTrack)); + stateActions.setProducerTrack(this._micProducer.id, track)); store.dispatch(stateActions.setSelectedAudioDevice(deviceId)); @@ -1885,8 +1891,10 @@ export default class RoomClient const harkStream = new MediaStream(); harkStream.addTrack(track); + if (!harkStream.getAudioTracks()[0]) throw new Error('enableMic(): given stream has no audio track'); + this._micProducer.hark = hark(harkStream, { play: false }); // eslint-disable-next-line no-unused-vars