From ce5ef1e18e0a67ab2ec778289dea8159c99a98b2 Mon Sep 17 00:00:00 2001 From: Stefan Otto Date: Wed, 14 Nov 2018 12:03:01 +0100 Subject: [PATCH 1/4] fix: no hark after change audio device --- app/lib/RoomClient.js | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/app/lib/RoomClient.js b/app/lib/RoomClient.js index 086a35e..d0beadc 100644 --- a/app/lib/RoomClient.js +++ b/app/lib/RoomClient.js @@ -552,8 +552,38 @@ export default class RoomClient const track = stream.getAudioTracks()[0]; + const oldTrack = this._micProducer.track; + const newTrack = await this._micProducer.replaceTrack(track); + const harkStream = new MediaStream; + + harkStream.addTrack(newTrack); + if (!harkStream.getAudioTracks()[0]) + throw new Error('changeAudioDevice(): given stream has no audio track'); + if (this._micProducer.hark != null) this._micProducer.hark.stop(); + this._micProducer.hark = hark(harkStream, { play: false }); + + // eslint-disable-next-line no-unused-vars + this._micProducer.hark.on('volume_change', (dBs, threshold) => + { + // The exact formula to convert from dBs (-100..0) to linear (0..1) is: + // Math.pow(10, dBs / 20) + // However it does not produce a visually useful output, so let exagerate + // it a bit. Also, let convert it from 0..1 to 0..10 and avoid value 1 to + // minimize component renderings. + let volume = Math.round(Math.pow(10, dBs / 85) * 10); + + if (volume === 1) + volume = 0; + + if (volume !== this._micProducer.volume) + { + this._micProducer.volume = volume; + this._dispatch(stateActions.setProducerVolume(this._micProducer.id, volume)); + } + }); + track.stop(); this._dispatch( From c2ff420ea428895e705df8e537f4d521e477d54a Mon Sep 17 00:00:00 2001 From: Stefan Otto Date: Wed, 14 Nov 2018 12:04:37 +0100 Subject: [PATCH 2/4] Remove logging for audio level changes --- app/lib/store.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/app/lib/store.js b/app/lib/store.js index cdff97d..1208e8c 100644 --- a/app/lib/store.js +++ b/app/lib/store.js @@ -18,6 +18,7 @@ if (process.env.NODE_ENV === 'development') { const reduxLogger = createLogger( { + predicate : (getState, action) => action.type !== 'SET_PRODUCER_VOLUME', duration : true, timestamp : false, level : 'log', @@ -43,4 +44,4 @@ export const store = createStore( reducers, undefined, enhancer -); \ No newline at end of file +); From 5a8ba8afd4a130b2b53401104449e03135d76ed0 Mon Sep 17 00:00:00 2001 From: Stefan Otto Date: Wed, 14 Nov 2018 12:33:51 +0100 Subject: [PATCH 3/4] Fix:lint warning --- app/lib/RoomClient.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/app/lib/RoomClient.js b/app/lib/RoomClient.js index ba2a927..9bf973c 100644 --- a/app/lib/RoomClient.js +++ b/app/lib/RoomClient.js @@ -581,8 +581,6 @@ export default class RoomClient const track = stream.getAudioTracks()[0]; - const oldTrack = this._micProducer.track; - const newTrack = await this._micProducer.replaceTrack(track); const harkStream = new MediaStream; From 854d1e583b8d54e23c34164271af0fabe4814bae Mon Sep 17 00:00:00 2001 From: Stefan Otto Date: Wed, 14 Nov 2018 12:45:22 +0100 Subject: [PATCH 4/4] Fix tooltip ToolAreaButton --- app/lib/components/ToolArea/ToolAreaButton.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/app/lib/components/ToolArea/ToolAreaButton.jsx b/app/lib/components/ToolArea/ToolAreaButton.jsx index 43139a7..a0a3dd3 100644 --- a/app/lib/components/ToolArea/ToolAreaButton.jsx +++ b/app/lib/components/ToolArea/ToolAreaButton.jsx @@ -29,7 +29,6 @@ class ToolAreaButton extends React.Component })} data-tip='Toggle tool area' data-type='dark' - data-for='globaltip' onClick={() => toggleToolArea()} />