Compare commits
1 Commits
94b27f5b6a
...
autogain
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cd2aca55c7 |
@@ -1,12 +1,14 @@
|
||||
navigator.mediaDevices.chromiumGetDisplayMedia =
|
||||
navigator.mediaDevices.getDisplayMedia;
|
||||
navigator.mediaDevices.chromiumGetUserMedia =
|
||||
navigator.mediaDevices.getUserMedia;
|
||||
|
||||
function sleep(ms) {
|
||||
return new Promise((resolve) => setTimeout(resolve, ms));
|
||||
}
|
||||
|
||||
const getAudioDevice = async (nameOfAudioDevice) => {
|
||||
await navigator.mediaDevices.getUserMedia({
|
||||
await navigator.mediaDevices.chromiumGetUserMedia({
|
||||
audio: true,
|
||||
});
|
||||
let audioDevice;
|
||||
@@ -23,6 +25,16 @@ const getAudioDevice = async (nameOfAudioDevice) => {
|
||||
return audioDevice;
|
||||
};
|
||||
|
||||
function setGetUserMedia() {
|
||||
const getUserMedia = async (constraints) => {
|
||||
return await navigator.mediaDevices.chromiumGetUserMedia({
|
||||
video: constraints?.video || false,
|
||||
audio: { ...constraints?.audio, autoGainControl },
|
||||
});
|
||||
};
|
||||
navigator.mediaDevices.getUserMedia = getUserMedia;
|
||||
}
|
||||
|
||||
function setGetDisplayMedia(video = true, overrideArgs = undefined) {
|
||||
const getDisplayMedia = async (...args) => {
|
||||
var id;
|
||||
@@ -34,7 +46,8 @@ function setGetDisplayMedia(video = true, overrideArgs = undefined) {
|
||||
} catch (error) {
|
||||
id = "default";
|
||||
}
|
||||
let captureSystemAudioStream = await navigator.mediaDevices.getUserMedia({
|
||||
let captureSystemAudioStream =
|
||||
await navigator.mediaDevices.chromiumGetUserMedia({
|
||||
audio: {
|
||||
// We add our audio constraints here, to get a list of supported constraints use navigator.mediaDevices.getSupportedConstraints();
|
||||
// We must capture a microphone, we use default since its the only deviceId that is the same for every Chromium user
|
||||
@@ -68,6 +81,7 @@ function setGetDisplayMedia(video = true, overrideArgs = undefined) {
|
||||
}
|
||||
|
||||
setGetDisplayMedia();
|
||||
setGetUserMedia();
|
||||
|
||||
let userscript;
|
||||
let muteBtn;
|
||||
@@ -76,6 +90,7 @@ let streamStartBtn;
|
||||
let streamStartBtnInitialDisplay;
|
||||
let streamStartBtnClone;
|
||||
let resolutionString;
|
||||
let autoGainControl = true;
|
||||
const clonedElements = [];
|
||||
const hiddenElements = [];
|
||||
let wasStreamActive = false;
|
||||
@@ -159,6 +174,10 @@ function main() {
|
||||
streamStartBtnClone.remove();
|
||||
});
|
||||
|
||||
userscript.getPref("disableAutomaticGain", false).then((disabled) => {
|
||||
autoGainControl = !disabled;
|
||||
});
|
||||
|
||||
function updateUserstyles() {
|
||||
userscript.log("Loading userstyles...");
|
||||
userscript.loadingMessage = "Loading userstyles...";
|
||||
@@ -368,5 +387,29 @@ function main() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (const el of document.getElementsByClassName("sensitivity-3A7Gs9")) {
|
||||
if (
|
||||
el.getElementsByTagName("div").length > 0 &&
|
||||
!document.getElementById("discord-screenaudio-gaintoggle")
|
||||
) {
|
||||
const toggle = createSwitch(
|
||||
"Disable automatic gain",
|
||||
await userscript.getPref("disableAutomaticGain", false),
|
||||
async (disabled) => {
|
||||
await userscript.setPref("disableAutomaticGain", disabled);
|
||||
autoGainControl = !disabled;
|
||||
setGetUserMedia();
|
||||
if (disabled)
|
||||
userscript.showInformation(
|
||||
"discord-screenaudio",
|
||||
"If you are currently in a call, this setting may only take effect after you rejoin the call or restart discord-screenaudio."
|
||||
);
|
||||
}
|
||||
);
|
||||
toggle.id = "discord-screenaudio-gaintoggle";
|
||||
el.getElementsByTagName("div")[0].appendChild(toggle);
|
||||
}
|
||||
}
|
||||
}, 500);
|
||||
}
|
||||
|
||||
@@ -12,7 +12,6 @@
|
||||
#include <QGridLayout>
|
||||
#include <QLabel>
|
||||
#include <QPushButton>
|
||||
#include <QShortcut>
|
||||
#include <QSpacerItem>
|
||||
#include <QThread>
|
||||
#include <QTimer>
|
||||
@@ -32,8 +31,6 @@ MainWindow::MainWindow(bool useNotifySend, QWidget *parent)
|
||||
setCentralWidget(m_centralWidget);
|
||||
setupTrayIcon();
|
||||
setMinimumSize(800, 300);
|
||||
connect(new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q), this),
|
||||
&QShortcut::activated, this, &MainWindow::toggleOrCloseWindow);
|
||||
if (m_settings->contains("geometry")) {
|
||||
restoreGeometry(m_settings->value("geometry").toByteArray());
|
||||
} else {
|
||||
@@ -82,7 +79,12 @@ void MainWindow::setupTrayIcon() {
|
||||
|
||||
connect(m_trayIcon, &QSystemTrayIcon::activated, [this](auto reason) {
|
||||
if (reason == QSystemTrayIcon::Trigger) {
|
||||
toggleOrCloseWindow();
|
||||
if (isVisible()) {
|
||||
hide();
|
||||
} else {
|
||||
show();
|
||||
activateWindow();
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
@@ -129,15 +131,3 @@ MainWindow *MainWindow::instance() { return m_instance; }
|
||||
CentralWidget *MainWindow::centralWidget() {
|
||||
return instance()->m_centralWidget;
|
||||
};
|
||||
|
||||
void MainWindow::toggleOrCloseWindow() {
|
||||
if (isVisible()) {
|
||||
if (m_trayIcon == nullptr)
|
||||
QApplication::quit();
|
||||
else
|
||||
hide();
|
||||
} else {
|
||||
show();
|
||||
activateWindow();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,5 +36,4 @@ private:
|
||||
public Q_SLOTS:
|
||||
void setTrayIcon(bool enabled);
|
||||
void fullScreenRequested(QWebEngineFullScreenRequest fullScreenRequest);
|
||||
void toggleOrCloseWindow();
|
||||
};
|
||||
|
||||
@@ -182,3 +182,7 @@ void UserScript::showThemeDialog() {
|
||||
void UserScript::installUserStyles(QString url) {
|
||||
emit shouldInstallUserStyles(url);
|
||||
}
|
||||
|
||||
void UserScript::showInformation(QString title, QString message) {
|
||||
QMessageBox::information(MainWindow::instance(), title, message);
|
||||
}
|
||||
|
||||
@@ -72,6 +72,7 @@ public Q_SLOTS:
|
||||
void showShortcutsDialog();
|
||||
void showHelpMenu();
|
||||
void showStreamDialog();
|
||||
void showInformation(QString title, QString message);
|
||||
void stopVirtmic();
|
||||
void startVirtmic(QString target);
|
||||
void showThemeDialog();
|
||||
|
||||
Reference in New Issue
Block a user