Merge ba6b11177d into d008f90399
				
					
				
			This commit is contained in:
		
						commit
						d5e5fca082
					
				
					 1 changed files with 83 additions and 0 deletions
				
			
		|  | @ -60,6 +60,89 @@ VesktopNative.arrpc.onActivity(async data => { | ||||||
|     arRPC.handleEvent(new MessageEvent("message", { data })); |     arRPC.handleEvent(new MessageEvent("message", { data })); | ||||||
| }); | }); | ||||||
| 
 | 
 | ||||||
|  | // Force disable automatic gain control
 | ||||||
|  | (function () { | ||||||
|  |     function setLegacyChromeConstraint(constraint, name, value) { | ||||||
|  |         if (constraint.mandatory && name in constraint.mandatory) { | ||||||
|  |             constraint.mandatory[name] = value; | ||||||
|  |             return; | ||||||
|  |         } | ||||||
|  |         if (constraint.optional) { | ||||||
|  |             const element = constraint.optional.find(opt => name in opt); | ||||||
|  |             if (element) { | ||||||
|  |                 element[name] = value; | ||||||
|  |                 return; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         // `mandatory` options throw errors for unknown keys, so avoid that by
 | ||||||
|  |         // setting it under optional.
 | ||||||
|  |         if (!constraint.optional) { | ||||||
|  |             constraint.optional = []; | ||||||
|  |         } | ||||||
|  |         constraint.optional.push({ [name]: value }); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     function setConstraint(constraint, name, value) { | ||||||
|  |         if (constraint.advanced) { | ||||||
|  |             const element = constraint.advanced.find(opt => name in opt); | ||||||
|  |             if (element) { | ||||||
|  |                 element[name] = value; | ||||||
|  |                 return; | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |         constraint[name] = value; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     function disableAutogain(constraints) { | ||||||
|  |         console.log("Automatically unsetting gain!", constraints); | ||||||
|  |         if (constraints && constraints.audio) { | ||||||
|  |             if (typeof constraints.audio !== "object") { | ||||||
|  |                 constraints.audio = {}; | ||||||
|  |             } | ||||||
|  |             if (constraints.audio.optional || constraints.audio.mandatory) { | ||||||
|  |                 setLegacyChromeConstraint(constraints.audio, "googAutoGainControl", false); | ||||||
|  |                 setLegacyChromeConstraint(constraints.audio, "googAutoGainControl2", false); | ||||||
|  |             } else { | ||||||
|  |                 setConstraint(constraints.audio, "autoGainControl", false); | ||||||
|  |             } | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     function patchFunction(object, name, createNewFunction) { | ||||||
|  |         if (name in object) { | ||||||
|  |             var original = object[name]; | ||||||
|  |             object[name] = createNewFunction(original); | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     patchFunction(navigator.mediaDevices, "getUserMedia", function (original) { | ||||||
|  |         return function getUserMedia(constraints) { | ||||||
|  |             disableAutogain(constraints); | ||||||
|  |             return original.call(this, constraints); | ||||||
|  |         }; | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     function patchDeprecatedGetUserMedia(original) { | ||||||
|  |         return function getUserMedia(constraints, success, error) { | ||||||
|  |             disableAutogain(constraints); | ||||||
|  |             return original.call(this, constraints, success, error); | ||||||
|  |         }; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     patchFunction(navigator, "getUserMedia", patchDeprecatedGetUserMedia); | ||||||
|  |     patchFunction(navigator, "mozGetUserMedia", patchDeprecatedGetUserMedia); | ||||||
|  |     patchFunction(navigator, "webkitGetUserMedia", patchDeprecatedGetUserMedia); | ||||||
|  | 
 | ||||||
|  |     patchFunction(MediaStreamTrack.prototype, "applyConstraints", function (original) { | ||||||
|  |         return function applyConstraints(constraints) { | ||||||
|  |             disableAutogain(constraints); | ||||||
|  |             return original.call(this, constraints); | ||||||
|  |         }; | ||||||
|  |     }); | ||||||
|  | 
 | ||||||
|  |     console.log("Disable Autogain by Joey Watts!", navigator.mediaDevices.getUserMedia); | ||||||
|  | })(); | ||||||
|  | 
 | ||||||
| // TODO: remove soon
 | // TODO: remove soon
 | ||||||
| const vencordDir = "vencordDir" as keyof typeof Settings.store; | const vencordDir = "vencordDir" as keyof typeof Settings.store; | ||||||
| if (Settings.store[vencordDir]) { | if (Settings.store[vencordDir]) { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in a new issue
	
	 Justus0405
						Justus0405