diff --git a/package.json b/package.json index 95d82372..0a8a9889 100755 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "frankerfacez", "author": "Dan Salvato LLC", - "version": "4.33.2", + "version": "4.33.3", "description": "FrankerFaceZ is a Twitch enhancement suite.", "private": true, "license": "Apache-2.0", diff --git a/src/sites/shared/player.jsx b/src/sites/shared/player.jsx index 4ad2db2b..341d510e 100644 --- a/src/sites/shared/player.jsx +++ b/src/sites/shared/player.jsx @@ -1533,15 +1533,33 @@ export default class PlayerBase extends Module { return true; } - createCompressor(inst, video) { + createCompressor(inst, video, _cmp) { if ( ! this.canCompress(inst) ) return; let comp = video._ffz_compressor; if ( ! comp ) { - const ctx = new AudioContext(); + const ctx = _cmp || new AudioContext(); if ( ! IS_FIREFOX && ctx.state === 'suspended' ) { - this.log.info('Aborting due to browser auto-play policy.'); + let timer; + const evt = () => { + clearTimeout(timer); + ctx.removeEventListener('statechange', evt); + if (ctx.state === 'suspended') { + this.log.info('Aborting due to browser auto-play policy.'); + return; + } + + this.createCompressor(inst, video, comp); + } + + this.log.info('Attempting to resume suspended AudioContext.'); + timer = setTimeout(evt, 100); + try { + ctx.addEventListener('statechange', evt); + ctx.resume(); + } catch(err) { } + return; }