diff --git a/src/ext/lib/Settings.js b/src/ext/lib/Settings.js index 8daaed9..1d22138 100644 --- a/src/ext/lib/Settings.js +++ b/src/ext/lib/Settings.js @@ -197,15 +197,6 @@ class Settings { // * default — allow if default is to allow, block if default is to block // * disabled — never allow - getSiteSettings(site) { - if (!site) { - site = window.location.hostname; - } - if (!site || !this.active.sites[site]) { - return {}; - } - return this.active.sites[site]; - } getActionsForSite(site) { if (!site) { @@ -369,29 +360,27 @@ class Settings { } getDefaultAr(site) { - site = this.getSiteSettings(site); + // site = this.getSiteSettings(site); - if (site.defaultAr) { - return site.defaultAr; - } + // if (site.defaultAr) { + // return site.defaultAr; + // } return this.active.miscSettings.defaultAr; } getDefaultStretchMode(site) { - site = this.getSiteSettings(site); - - if (site.stretch) { - return site.stretch; + if (site && this.active.sites[site] && this.active.sites[site].stretch !== StretchMode.Default) { + return this.active.sites[site].stretch; } + return this.active.sites['@global'].stretch; } getDefaultVideoAlignment(site) { - site = this.getSiteSettings(site); - - if (site.videoAlignment) { - return site.videoAlignment; + if (site && this.active.sites[site] && this.active.sites[site].videoAlignment !== VideoAlignment.Default) { + return this.active.sites[site].videoAlignment; } + return this.active.sites['@global'].videoAlignment; } } diff --git a/src/ext/lib/ar-detect/ArDetector.js b/src/ext/lib/ar-detect/ArDetector.js index 407c831..5f79bc8 100644 --- a/src/ext/lib/ar-detect/ArDetector.js +++ b/src/ext/lib/ar-detect/ArDetector.js @@ -240,7 +240,7 @@ class ArDetector { return; } - const exitedRetries = 10; + let exitedRetries = 10; while (!this._exited && exitedRetries --> 0) { if (Debug.debug) { @@ -457,21 +457,23 @@ class ArDetector { // ali je sprememba v mejah dovoljenega? Če da -> fertik // is ar variance within acceptable levels? If yes -> we done if(Debug.debug && Debug.debugArDetect) - console.log("%c[ArDetect::_ard_processAr] new aspect ratio varies from the old one by this much:\n","color: #aaf","old Ar", lastAr.ar, "current ar", trueAr, "arDiff (absolute):",arDiff,"ar diff (relative to new ar)", arDiff_percent); + console.log("%c[ArDetect::processAr] new aspect ratio varies from the old one by this much:\n","color: #aaf","old Ar", lastAr.ar, "current ar", trueAr, "arDiff (absolute):",arDiff,"ar diff (relative to new ar)", arDiff_percent); if (arDiff < trueAr * this.settings.active.arDetect.allowedArVariance){ if(Debug.debug && Debug.debugArDetect) - console.log("%c[ArDetect::_ard_processAr] aspect ratio change denied — diff %:", "background: #740; color: #fa2", arDiff_percent) + console.log("%c[ArDetect::processAr] aspect ratio change denied — diff %:", "background: #740; color: #fa2", arDiff_percent) return; } else if(Debug.debug && Debug.debugArDetect){ - console.log("%c[ArDetect::_ard_processAr] aspect ratio change accepted — diff %:", "background: #153; color: #4f9", arDiff_percent) + console.log("%c[ArDetect::processAr] aspect ratio change accepted — diff %:", "background: #153; color: #4f9", arDiff_percent) } } - if(Debug.debug) - console.log("[ArDetect::_ard_processAr] attempting to fix aspect ratio. New aspect ratio: ", trueAr); + if(Debug.debug) { + + console.log("%c[ArDetect::processAr] Triggering aspect ratio change. New aspect ratio: ", _ard_console_change, trueAr); + } this.conf.resizer.setAr(trueAr, {type: "auto", ar: trueAr}); } @@ -479,7 +481,7 @@ class ArDetector { frameCheck(){ if(! this.video){ if(Debug.debug || Debug.warnings_critical) - console.log("[ArDetect::_ard_vdraw] Video went missing. Destroying current instance of videoData.") + console.log("[ArDetect::frameCheck] Video went missing. Destroying current instance of videoData.") this.conf.destroy(); return; } @@ -495,7 +497,7 @@ class ArDetector { this.fallbackMode = false; } catch (e) { if(Debug.debug && Debug.debugArDetect) { - console.log(`%c[ArDetect::_ard_vdraw] can't draw image on canvas. ${this.canDoFallbackMode ? 'Trying canvas.drawWindow instead' : 'Doing nothing as browser doesn\'t support fallback mode.'}`, "color:#000; backgroud:#f51;", e); + console.log(`%c[ArDetect::frameCheck] can't draw image on canvas. ${this.canDoFallbackMode ? 'Trying canvas.drawWindow instead' : 'Doing nothing as browser doesn\'t support fallback mode.'}`, "color:#000; backgroud:#f51;", e); } // nothing to see here, really, if fallback mode isn't supported by browser if (! this.canDoFallbackMode) { @@ -527,14 +529,14 @@ class ArDetector { try { this.context.drawWindow(window, this.canvasDrawWindowHOffset, 0, this.canvas.width, this.canvas.height, "rgba(0,0,128,1)"); } catch (e) { - console.log(`%c[ArDetect::_ard_vdraw] can't draw image on canvas with fallback mode either. This error is prolly only temporary.`, "color:#000; backgroud:#f51;", e); + console.log(`%c[ArDetect::frameCheck] can't draw image on canvas with fallback mode either. This error is prolly only temporary.`, "color:#000; backgroud:#f51;", e); return; // it's prolly just a fluke, so we do nothing special here } // draw blackframe sample from our main sample: this.blackframeContext.drawImage(this.canvas, this.blackframeCanvas.width, this.blackframeCanvas.height) if (Debug.debug) { - console.log("%c[ArDetect::_ard_vdraw] canvas.drawImage seems to have worked", "color:#000; backgroud:#2f5;"); + console.log("%c[ArDetect::frameCheck] canvas.drawImage seems to have worked", "color:#000; backgroud:#2f5;"); } } @@ -579,7 +581,7 @@ class ArDetector { // if both succeed, then aspect ratio hasn't changed. if (!guardLineOut.imageFail && !guardLineOut.blackbarFail) { if(Debug.debug && Debug.debugArDetect){ - console.log(`%c[ArDetect::_ard_vdraw] guardLine tests were successful. (no imagefail and no blackbarfail)\n`, "color: #afa", guardLineOut); + console.log(`%c[ArDetect::frameCheck] guardLine tests were successful. (no imagefail and no blackbarfail)\n`, "color: #afa", guardLineOut); } return; @@ -619,7 +621,7 @@ class ArDetector { if(this.edgeDetector.findBars(imageData, null, EdgeDetectPrimaryDirection.HORIZONTAL).status === 'ar_known'){ if(Debug.debug && guardLineOut.blackbarFail){ - console.log("[ArDetect::_ard_vdraw] Detected blackbar violation and pillarbox. Resetting to default aspect ratio."); + console.log("[ArDetect::frameCheck] Detected blackbar violation and pillarbox. Resetting to default aspect ratio."); } if(guardLineOut.blackbarFail){ @@ -648,7 +650,7 @@ class ArDetector { var edgePost = this.edgeDetector.findBars(imageData, sampleCols, EdgeDetectPrimaryDirection.VERTICAL, EdgeDetectQuality.IMPROVED, guardLineOut, bfanalysis); if(Debug.debug && Debug.debugArDetect){ - console.log(`%c[ArDetect::_ard_vdraw] edgeDetector returned this\n`, "color: #aaf", edgePost); + console.log(`%c[ArDetect::frameCheck] edgeDetector returned this\n`, "color: #aaf", edgePost); } // console.log("SAMPLES:", blackbarSamples, "candidates:", edgeCandidates, "post:", edgePost,"\n\nblack level:", this.blackLevel, "tresh:", this.blackLevel + this.settings.active.arDetect.blackbar.treshold); @@ -676,7 +678,7 @@ class ArDetector { // } if(Debug.debug && Debug.debugArDetect){ - console.log(`%c[ArDetect::_ard_vdraw] Triggering aspect ration change! new ar: ${newAr}`, "color: #aaf"); + console.log(`%c[ArDetect::frameCheck] Triggering aspect ration change! new ar: ${newAr}`, "color: #aaf"); } this.processAr(newAr); @@ -714,7 +716,7 @@ class ArDetector { blackframeTest() { if (! this.blackLevel) { if (Debug.debug && Debug.debugArDetect) { - console.log("[ArDetect::_ard_vdraw] black level undefined, resetting"); + console.log("[ArDetect::frameCheck] black level undefined, resetting"); } this.resetBlackLevel(); @@ -813,5 +815,6 @@ class ArDetector { var _ard_console_stop = "background: #000; color: #f41"; var _ard_console_start = "background: #000; color: #00c399"; +var _ard_console_change = "background: #000; color: #ff8"; export default ArDetector; diff --git a/src/ext/lib/video-transform/Resizer.js b/src/ext/lib/video-transform/Resizer.js index 24f2af5..96441b7 100644 --- a/src/ext/lib/video-transform/Resizer.js +++ b/src/ext/lib/video-transform/Resizer.js @@ -5,6 +5,7 @@ import Zoom from './Zoom'; import PlayerData from '../video-data/PlayerData'; import ExtensionMode from '../../../common/enums/extension-mode.enum'; import StretchMode from '../../../common/enums/stretch.enum'; +import VideoAlignment from '../../../common/enums/video-alignment.enum'; if(Debug.debug) console.log("Loading: Resizer.js"); @@ -88,7 +89,7 @@ class Resizer { } } - if (this.extensionMode !== ExtensionMode.Enabled && !PlayerData.isFullScreen() && ar !== 'reset') { + if (this.extensionMode === ExtensionMode.Basic && !PlayerData.isFullScreen() && ar !== 'reset') { // don't actually apply or calculate css when using basic mode if not in fullscreen // ... unless we're resetting the aspect ratio to original return; @@ -99,18 +100,20 @@ class Resizer { this.videoData.destroy(); } - if (this.extensionMode !== ExtensionMode.Enabled || PlayerData.isFullScreen()) { + if (this.extensionMode === ExtensionMode.Enabled || PlayerData.isFullScreen()) { this.startCssWatcher(); } this.cssWatcherIncreasedFrequencyCounter = 20; // // pause AR on basic stretch, unpause when using other mdoes // fir sine reason unpause doesn't unpause. investigate that later - // if (this.stretcher.mode === StretchMode.Basic) { - // this.conf.arDetector.pause(); - // } else { - // this.conf.arDetector.unpause(); - // } + if (this.stretcher.mode === StretchMode.Basic) { + this.conf.arDetector.pause(); + } else { + if (this.lastAr.type === 'auto') { + this.conf.arDetector.unpause(); + } + } // do stretch thingy if (this.stretcher.mode === StretchMode.NoStretch || this.stretcher.mode === StretchMode.Conditional){ @@ -128,10 +131,26 @@ class Resizer { if(this.stretcher.mode === StretchMode.Conditional){ this.stretcher.applyConditionalStretch(stretchFactors, ar); } + + if (Debug.debug) { + console.log("[Resizer::setAr] Processed stretch factors for ", this.stretcher.mode === StretchMode.NoStretch ? 'stretch-free crop.' : 'crop with conditional stretch.', 'Stretch factors are:', stretchFactors); + } + } else if (this.stretcher.mode === StretchMode.Hybrid) { var stretchFactors = this.stretcher.calculateStretch(ar); + if (Debug.debug) { + console.log('[Resizer::setAr] Processed stretch factors for hybrid stretch/crop. Stretch factors are:', stretchFactors); + } } else if (this.stretcher.mode === StretchMode.Basic) { var stretchFactors = this.stretcher.calculateBasicStretch(); + if (Debug.debug) { + console.log('[Resizer::setAr] Processed stretch factors for basic stretch. Stretch factors are:', stretchFactors); + } + } else { + var stretchFactors = {xFactor: 1, yFactor: 1} + if (Debug.debug) { + console.log('[Resizer::setAr] Okay wtf happened? If you see this, something has gone wrong', stretchFactors,"\n------[ i n f o d u m p ]------\nstretcher:", this.stretcher); + } } this.zoom.applyZoom(stretchFactors); @@ -323,7 +342,7 @@ class Resizer { computeOffsets(stretchFactors){ if (Debug.debug) { - console.log("[Resizer::_res_computeOffsets] video will be aligned to ", this.settings.active.sites['@global'].videoAlignment); + console.log("[Resizer::computeOffsets] video will be aligned to ", this.settings.active.sites['@global'].videoAlignment); } const wdiff = this.conf.player.dimensions.width - this.conf.video.offsetWidth; @@ -345,10 +364,10 @@ class Resizer { translate.x += wdiffAfterZoom * this.pan.relativeOffsetX * this.zoom.scale; translate.y += hdiffAfterZoom * this.pan.relativeOffsetY * this.zoom.scale; } else { - if (this.videoAlignment == "left") { + if (this.videoAlignment == VideoAlignment.Left) { translate.x += wdiffAfterZoom * 0.5; } - else if (this.videoAlignment == "right") { + else if (this.videoAlignment == VideoAlignment.Right) { translate.x -= wdiffAfterZoom * 0.5; } } @@ -364,7 +383,8 @@ class Resizer { if (! this.video) { if(Debug.debug) { - console.log("[Resizer::_res_applyCss] Video went missing, doing nothing."); + console.log("[Resizer::applyCss] Video went missing, doing nothing."); + } this.conf.destroy(); diff --git a/src/ext/lib/video-transform/Scaler.js b/src/ext/lib/video-transform/Scaler.js index abc11fb..fd85128 100644 --- a/src/ext/lib/video-transform/Scaler.js +++ b/src/ext/lib/video-transform/Scaler.js @@ -74,7 +74,7 @@ class Scaler { // če je 'ar' string, potem bomo z njim opravili v legacy wrapperju. Seveda obstaja izjema // if 'ar' is string, we'll handle that in legacy wrapper, with one exception - if(mode === 'reset'){ + if (mode === 'reset'){ return {xFactor: 1, yFactor: 1} }