From 944b809c15763c358b1274245f45b2198f67180b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?M=C3=A9sz=C3=A1ros=20Mih=C3=A1ly?= Date: Sun, 19 Apr 2020 13:52:15 +0200 Subject: [PATCH] AudioPeers and Fixes --- app/src/RoomClient.js | 4 ++-- app/src/components/PeerAudio/AudioPeers.js | 8 ++++++-- app/src/components/PeerAudio/PeerAudio.js | 18 +++++++++++++++++- 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/app/src/RoomClient.js b/app/src/RoomClient.js index 219cb10..7d1d20d 100644 --- a/app/src/RoomClient.js +++ b/app/src/RoomClient.js @@ -1129,8 +1129,8 @@ export default class RoomClient - const audioElements = document.getElementById("audio"); - for( let i=0; i { const { - micConsumers + micConsumers, + audioOutputDevice } = props; return ( @@ -19,6 +21,7 @@ const AudioPeers = (props) => ); }) @@ -34,7 +37,8 @@ AudioPeers.propTypes = const mapStateToProps = (state) => ({ - micConsumers : micConsumerSelector(state) + micConsumers : micConsumerSelector(state), + audioOutputDevice : settings.selectedAudioOutputDevice }); const AudioPeersContainer = connect( diff --git a/app/src/components/PeerAudio/PeerAudio.js b/app/src/components/PeerAudio/PeerAudio.js index 38d7faf..accf1fe 100644 --- a/app/src/components/PeerAudio/PeerAudio.js +++ b/app/src/components/PeerAudio/PeerAudio.js @@ -10,6 +10,7 @@ export default class PeerAudio extends React.PureComponent // Latest received audio track. // @type {MediaStreamTrack} this._audioTrack = null; + this._audioOutputDevice = null; } render() @@ -24,9 +25,10 @@ export default class PeerAudio extends React.PureComponent componentDidMount() { - const { audioTrack } = this.props; + const { audioTrack, audioOutputDevice } = this.props; this._setTrack(audioTrack); + this._setOutputDevice(audioOutputDevice); } // eslint-disable-next-line camelcase @@ -60,6 +62,20 @@ export default class PeerAudio extends React.PureComponent audio.srcObject = null; } } + + _setOutputDevice(audioOutputDevice){ + if(this._audioOutputDevice === audioOutputDevice) + return; + + this._audioOutputDevice = audioOutputDevice; + + const { audio } = this.refs; + + if (audioOutputDevice && typeof audio.setSinkId === 'function') + { + audio.setSinkId(audioOutputDevice); + } + } } PeerAudio.propTypes =