aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcsett86 <csett86@web.de>2021-05-11 17:08:47 +0200
committerGitHub <noreply@github.com>2021-05-11 17:08:47 +0200
commit22b34066132f7dd39920e7f3a2f3d3eb26695374 (patch)
treea28e18a05517d828e250ed9ea97d8ff0d0e1ec34
parent4b4148388d95012db7a52db7f98398276308d2a2 (diff)
feat(agc): Add setting to disable automatic gain control (#582)
In some OS/Chromium combinations the automatic gain control goes slightly crazy, but normally its fine. Thus keep the default as is, but add an option for the users to disable it if required. Closes: #564
-rw-r--r--app/features/conference/components/Conference.js7
-rw-r--r--app/features/settings/actionTypes.js10
-rw-r--r--app/features/settings/actions.js16
-rw-r--r--app/features/settings/components/SettingsDrawer.js6
-rw-r--r--app/features/settings/reducer.js9
-rw-r--r--app/i18n/lang/de.json3
-rw-r--r--app/i18n/lang/en.json3
7 files changed, 51 insertions, 3 deletions
diff --git a/app/features/conference/components/Conference.js b/app/features/conference/components/Conference.js
index 9bd6a16..bd0fc22 100644
--- a/app/features/conference/components/Conference.js
+++ b/app/features/conference/components/Conference.js
@@ -35,6 +35,11 @@ type Props = {
_alwaysOnTopWindowEnabled: boolean;
/**
+ * Disable automatic gain control.
+ */
+ _disableAGC: boolean;
+
+ /**
* Email of user.
*/
_email: string;
@@ -211,6 +216,7 @@ class Conference extends Component<Props, State> {
};
const configOverwrite = {
+ disableAGC: this.props._disableAGC,
startWithAudioMuted: this.props._startWithAudioMuted,
startWithVideoMuted: this.props._startWithVideoMuted
};
@@ -403,6 +409,7 @@ class Conference extends Component<Props, State> {
function _mapStateToProps(state: Object) {
return {
_alwaysOnTopWindowEnabled: getSetting(state, 'alwaysOnTopWindowEnabled', true),
+ _disableAGC: state.settings.disableAGC,
_email: state.settings.email,
_name: state.settings.name,
_serverURL: state.settings.serverURL,
diff --git a/app/features/settings/actionTypes.js b/app/features/settings/actionTypes.js
index fd73c63..4fc7ac5 100644
--- a/app/features/settings/actionTypes.js
+++ b/app/features/settings/actionTypes.js
@@ -20,6 +20,16 @@ export const SET_ALWAYS_ON_TOP_WINDOW_ENABLED
export const SET_AUDIO_MUTED = Symbol('SET_AUDIO_MUTED');
/**
+ * The type of (redux) action that sets disable AGC.
+ *
+ * @type {
+ * type: SET_DISABLE_AGC,
+ * disableAGC: boolean
+ * }
+ */
+export const SET_DISABLE_AGC = Symbol('SET_DISABLE_AGC');
+
+/**
* The type of (redux) action that sets the email of the user.
*
* @type {
diff --git a/app/features/settings/actions.js b/app/features/settings/actions.js
index 054c890..8b94cf7 100644
--- a/app/features/settings/actions.js
+++ b/app/features/settings/actions.js
@@ -3,6 +3,7 @@
import {
SET_ALWAYS_ON_TOP_WINDOW_ENABLED,
SET_AUDIO_MUTED,
+ SET_DISABLE_AGC,
SET_EMAIL,
SET_NAME,
SET_SERVER_URL,
@@ -108,6 +109,21 @@ export function setStartWithVideoMuted(startWithVideoMuted: boolean) {
};
}
+/**
+ * Set disable AGC.
+ *
+ * @param {boolean} disableAGC - Whether to disable AGC.
+ * @returns {{
+ * type: SET_DISABLE_AGC,
+ * disableAGC: boolean
+ * }}
+ */
+export function setDisableAGC(disableAGC: boolean) {
+ return {
+ type: SET_DISABLE_AGC,
+ disableAGC
+ };
+}
/**
* Set window always on top.
diff --git a/app/features/settings/components/SettingsDrawer.js b/app/features/settings/components/SettingsDrawer.js
index 985123d..79ed1da 100644
--- a/app/features/settings/components/SettingsDrawer.js
+++ b/app/features/settings/components/SettingsDrawer.js
@@ -17,7 +17,7 @@ import { Onboarding, advenaceSettingsSteps, startOnboarding } from '../../onboar
import { Form, SettingsContainer, TogglesContainer } from '../styled';
import {
setEmail, setName, setWindowAlwaysOnTop,
- setStartWithAudioMuted, setStartWithVideoMuted
+ setStartWithAudioMuted, setStartWithVideoMuted, setDisableAGC
} from '../actions';
import SettingToggle from './SettingToggle';
@@ -163,6 +163,10 @@ class SettingsDrawer extends Component<Props, *> {
settingChangeEvent = { setWindowAlwaysOnTop }
settingName = 'alwaysOnTopWindowEnabled' />
</SpotlightTarget>
+ <SettingToggle
+ label = { t('settings.disableAGC') }
+ settingChangeEvent = { setDisableAGC }
+ settingName = 'disableAGC' />
</TogglesContainer>
</Panel>
<Onboarding section = 'settings-drawer' />
diff --git a/app/features/settings/reducer.js b/app/features/settings/reducer.js
index 5f09b7c..cb9afec 100644
--- a/app/features/settings/reducer.js
+++ b/app/features/settings/reducer.js
@@ -3,6 +3,7 @@
import {
SET_ALWAYS_ON_TOP_WINDOW_ENABLED,
SET_AUDIO_MUTED,
+ SET_DISABLE_AGC,
SET_EMAIL,
SET_NAME,
SET_SERVER_URL,
@@ -12,6 +13,7 @@ import {
type State = {
alwaysOnTopWindowEnabled: boolean,
+ disableAGC: boolean,
email: string,
name: string,
serverURL: ?string,
@@ -24,6 +26,7 @@ const username = window.jitsiNodeAPI.osUserInfo().username;
const DEFAULT_STATE = {
alwaysOnTopWindowEnabled: true,
+ disableAGC: false,
email: '',
name: username,
serverURL: undefined,
@@ -53,6 +56,12 @@ export default (state: State = DEFAULT_STATE, action: Object) => {
startWithAudioMuted: action.startWithAudioMuted
};
+ case SET_DISABLE_AGC:
+ return {
+ ...state,
+ disableAGC: action.disableAGC
+ };
+
case SET_EMAIL:
return {
...state,
diff --git a/app/i18n/lang/de.json b/app/i18n/lang/de.json
index 0a46e18..d53a02b 100644
--- a/app/i18n/lang/de.json
+++ b/app/i18n/lang/de.json
@@ -34,6 +34,7 @@
"invalidServer": "Falsche Server-Adresse",
"invalidServerTimeout": "Ungültiger Wert für die Server-Wartezeit",
"serverUrl": "Server-Adresse",
- "serverTimeout": "Server-Wartezeit (in Sekunden)"
+ "serverTimeout": "Server-Wartezeit (in Sekunden)",
+ "disableAGC": "Automatische Mikrofonlautstärkeregelung deaktivieren"
}
}
diff --git a/app/i18n/lang/en.json b/app/i18n/lang/en.json
index df26637..b667cf3 100644
--- a/app/i18n/lang/en.json
+++ b/app/i18n/lang/en.json
@@ -34,6 +34,7 @@
"invalidServer": "Invalid Server URL",
"invalidServerTimeout": "Invalid value for Server Timeout",
"serverUrl": "Server URL",
- "serverTimeout": "Server Timeout (in seconds)"
+ "serverTimeout": "Server Timeout (in seconds)",
+ "disableAGC": "Disable automatic gain control"
}
}