[bugfix]: use chrome-specific implementation for web audio sink

This commit is contained in:
Kendall Garner 2024-08-19 22:38:51 -07:00
parent ebebdc1e03
commit af69a58418
No known key found for this signature in database
GPG key ID: 18D2767419676C87

View file

@ -262,16 +262,19 @@ export const AudioPlayer = forwardRef(
); );
useEffect(() => { useEffect(() => {
if (isElectron()) { // Not standard, just used in chromium-based browsers. See
if (audioDeviceId) { // https://developer.chrome.com/blog/audiocontext-setsinkid/.
player1Ref.current?.getInternalPlayer()?.setSinkId(audioDeviceId); // If the isElectron() check is every removed, fix this.
player2Ref.current?.getInternalPlayer()?.setSinkId(audioDeviceId); if (isElectron() && webAudio && 'setSinkId' in webAudio.context) {
if (audioDeviceId !== 'default') {
// @ts-ignore
webAudio.context.setSinkId(audioDeviceId);
} else { } else {
player1Ref.current?.getInternalPlayer()?.setSinkId(''); // @ts-ignore
player2Ref.current?.getInternalPlayer()?.setSinkId(''); webAudio.context.setSinkId('');
} }
} }
}, [audioDeviceId]); }, [audioDeviceId, webAudio]);
useEffect(() => { useEffect(() => {
if (webAudio && player1Source && player1 && currentPlayer === 1) { if (webAudio && player1Source && player1 && currentPlayer === 1) {