diff --git a/src/renderer/patches/screenShareAudio.ts b/src/renderer/patches/screenShareAudio.ts index eadc49a..9dfddde 100644 --- a/src/renderer/patches/screenShareAudio.ts +++ b/src/renderer/patches/screenShareAudio.ts @@ -1,41 +1,42 @@ +/* + * SPDX-License-Identifier: GPL-3.0 + * Vesktop, a desktop app aiming to give you a snappier Discord Experience + * Copyright (c) 2023 Vendicated and Vencord contributors + */ + import { isLinux } from "../utils"; + if (isLinux) { const original = navigator.mediaDevices.getDisplayMedia; - async function getVirtmic() { - const getAudioDevice = async (deviceName: string|undefined) => {; - let devices = await navigator.mediaDevices.enumerateDevices(); - let audioDevice = devices.find(({ - label - }) => label === deviceName); - return audioDevice; - } - var id: string|undefined; + async function getVirtmic() { try { - let vesktopAudioSink = await getAudioDevice('vesktop-virtmic'); - id = vesktopAudioSink?.deviceId; + const devices = await navigator.mediaDevices.enumerateDevices(); + const audioDevice = devices.find(({ label }) => label === "vencord-virtmic"); + return audioDevice?.deviceId; + } catch (error) { + return null; } - catch (error) { - id = 'error'; - } - return id; - }; - navigator.mediaDevices.getDisplayMedia = async function() { - const id = await getVirtmic(); + } + + navigator.mediaDevices.getDisplayMedia = async function () { const stream = await original.apply(this); - if (id !== 'error'){ - const audio = await navigator.mediaDevices.getUserMedia({ - audio: { + const id = await getVirtmic(); + + if (id) { + const audio = await navigator.mediaDevices.getUserMedia({ + audio: { deviceId: { exact: id }, autoGainControl: false, echoCancellation: false, noiseSuppression: false - } + } }); audio.getAudioTracks().forEach(t => stream.addTrack(t)); - }; + } + return stream; }; -}; \ No newline at end of file +}