Autodetection gets detected and applied, but css is still off

This commit is contained in:
Tamius Han 2018-05-16 20:26:55 +02:00
parent 17f330f242
commit d38dee1a8a
4 changed files with 50 additions and 28 deletions

View File

@ -100,7 +100,7 @@ class GuardLine {
else{ else{
// fallback mode is a bit different // fallback mode is a bit different
edge_upper = 0; edge_upper = 0;
edge_lower = this.canvas.height - 1; edge_lower = this.conf.canvas.height - 1;
} }
var rowStart, rowEnd; var rowStart, rowEnd;
@ -109,8 +109,8 @@ class GuardLine {
// <<<=======| checking upper row |========>>> // <<<=======| checking upper row |========>>>
rowStart = ((edge_upper * this.canvas.width) << 2) + offset; rowStart = ((edge_upper * this.conf.canvas.width) << 2) + offset;
rowEnd = rowStart + ( this.canvas.width << 2 ) - (offset * 2); rowEnd = rowStart + ( this.conf.canvas.width << 2 ) - (offset * 2);
if (Debug.debugCanvas.enabled && Debug.debugCanvas.guardLine) { if (Debug.debugCanvas.enabled && Debug.debugCanvas.guardLine) {
offenderCount = this._gl_debugRowCheck(image, rowStart, rowEnd, offenders, offenderCount); offenderCount = this._gl_debugRowCheck(image, rowStart, rowEnd, offenders, offenderCount);
@ -119,8 +119,8 @@ class GuardLine {
} }
// <<<=======| checking lower row |========>>> // <<<=======| checking lower row |========>>>
rowStart = ((edge_lower * this.canvas.width) << 2) + offset; rowStart = ((edge_lower * this.conf.canvas.width) << 2) + offset;
rowEnd = rowStart + ( this.canvas.width << 2 ) - (offset * 2); rowEnd = rowStart + ( this.conf.canvas.width << 2 ) - (offset * 2);
if (Debug.debugCanvas.enabled && Debug.debugCanvas.guardLine) { if (Debug.debugCanvas.enabled && Debug.debugCanvas.guardLine) {
offenderCount = this._gl_debugRowCheck(image, rowStart, rowEnd, offenders, offenderCount); offenderCount = this._gl_debugRowCheck(image, rowStart, rowEnd, offenders, offenderCount);
@ -163,7 +163,7 @@ class GuardLine {
// if(fallbackMode){ // if(fallbackMode){
// var edge_upper = ExtensionConf.arDetect.fallbackMode.noTriggerZonePx; // var edge_upper = ExtensionConf.arDetect.fallbackMode.noTriggerZonePx;
// var edge_lower = this.canvas.height - ExtensionConf.arDetect.fallbackMode.noTriggerZonePx - 1; // var edge_lower = this.conf.canvas.height - ExtensionConf.arDetect.fallbackMode.noTriggerZonePx - 1;
// } // }
// else{ // else{
var edge_upper = this.imageBar.top; var edge_upper = this.imageBar.top;
@ -200,7 +200,7 @@ class GuardLine {
// <<<=======| checking lower row |========>>> // <<<=======| checking lower row |========>>>
rowStart = ((edge_lower * this.conf.canvas.width) << 2) + offset; rowStart = ((edge_lower * this.conf.canvas.width) << 2) + offset;
// rowEnd = rowStart + ( this.canvas.width << 2 ) - (offset * 2); // rowEnd = rowStart + ( this.conf.canvas.width << 2 ) - (offset * 2);
if(Debug.debugCanvas.enabled && Debug.debugCanvas.guardLine){ if(Debug.debugCanvas.enabled && Debug.debugCanvas.guardLine){
@ -248,7 +248,7 @@ class GuardLine {
// we track sections that go over what's supposed to be a black line, so we can suggest more // we track sections that go over what's supposed to be a black line, so we can suggest more
// columns to sample // columns to sample
if(image[i] > this.blackbarTreshold || image[i+1] > this.blackbarTreshold || image[i+2] > this.blackbarTreshold){ if(image[i] > this.blackbarTreshold || image[i+1] > this.blackbarTreshold || image[i+2] > this.blackbarTreshold){
this.conf.this.conf.debugCanvas.trace(i, DebugCanvasClasses.VIOLATION); this.conf.debugCanvas.trace(i, DebugCanvasClasses.VIOLATION);
if(firstOffender < 0){ if(firstOffender < 0){
firstOffender = (i - rowStart) >> 2; firstOffender = (i - rowStart) >> 2;
offenderCount++; offenderCount++;
@ -259,7 +259,7 @@ class GuardLine {
} }
} }
else{ else{
this.conf.this.conf.debugCanvas.trace(i, DebugCanvasClasses.GUARDLINE_BLACKBAR); this.conf.debugCanvas.trace(i, DebugCanvasClasses.GUARDLINE_BLACKBAR);
// is that a black pixel again? Let's reset the 'first offender' // is that a black pixel again? Let's reset the 'first offender'
firstOffender = -1; firstOffender = -1;
} }

View File

@ -36,6 +36,7 @@ class PlayerData {
this.dimensions = undefined; this.dimensions = undefined;
this.getPlayerDimensions(); this.getPlayerDimensions();
this.startChangeDetection();
} }
static isFullScreen(){ static isFullScreen(){
@ -43,25 +44,30 @@ class PlayerData {
} }
startChangeDetection(){ startChangeDetection(){
this.watchTimeout = setInterval(this.ghettoWatcher, 100); console.log("STARTING CHANGE DETECTION!")
// // var gw = this.ghettoWatcher;
this.watchTimeout = setInterval(this.ghettoWatcher, 100, this);
} }
stopChangeDetection(){ stopChangeDetection(){
clearInterval(this.watchTimeout); clearInterval(this.watchTimeout);
} }
ghettoWatcher(){ ghettoWatcher(ths){
if(this.checkPlayerSizeChange()){ console.log("playerdata — dimensions", ths.dimensions)
try{
if(ths.checkPlayerSizeChange()){
if(Debug.debug){ if(Debug.debug){
console.log("[uw::ghettoOnChange] change detected"); console.log("[uw::ghettoOnChange] change detected");
} }
this.getPlayerDimensions(); ths.getPlayerDimensions();
if(! this.element ){ if(! ths.element ){
return; return;
} }
this.videoData.resizer.restore(); // note: this returns true if change goes through, false otherwise. ths.videoData.resizer.restore(); // note: this returns true if change goes through, false otherwise.
return; return;
} }
@ -70,25 +76,29 @@ class PlayerData {
// sometimes, checkPlayerSizeChange might not detect a change to fullscreen. This means we need to // sometimes, checkPlayerSizeChange might not detect a change to fullscreen. This means we need to
// trick it into doing that // trick it into doing that
if(this.dimensions.fullscreen != PlayerData.isFullScreen()) { if(ths.dimensions.fullscreen != PlayerData.isFullScreen()) {
if(Debug.debug){ if(Debug.debug){
console.log("[PlayerData::ghettoWatcher] fullscreen switch detected (basic change detection failed)"); console.log("[PlayerData::ghettoWatcher] fullscreen switch detected (basic change detection failed)");
} }
this.getPlayerDimensions(); ths.getPlayerDimensions();
if(! this.element ){ if(! ths.element ){
return; return;
} }
this.videoData.resizer.restore(); ths.videoData.resizer.restore();
} }
} }
catch(e){
console.log("e",e)
}
}
getPlayerDimensions(elementNames){ getPlayerDimensions(elementNames){
// element names — reserved for future use. If element names are provided, this function should return first element that // element names — reserved for future use. If element names are provided, this function should return first element that
// has classname or id that matches at least one in the elementNames array. // has classname or id that matches at least one in the elementNames array.
var element = this.video; var element = this.video.parentNode;
if(! element ){ if(! element ){
if(Debug.debug) if(Debug.debug)

View File

@ -49,12 +49,20 @@ class Resizer {
} }
if (! this.video) { if (! this.video) {
console.log("No video detected.") // console.log("No video detected.")
// this.videoData.destroy(); // this.videoData.destroy();
} }
var dimensions = Scaler.calculateCrop(ar, this.video, this.conf.player.dimensions); var dimensions = Scaler.calculateCrop(ar, this.video, this.conf.player.dimensions);
if(dimensions.error){
if(Debug.debug){
console.log("[Resizer::setAr] failed to set AR due to problem with calculating crop. Error:", dimensions.error)
}
return;
}
var stretchFactors = undefined; var stretchFactors = undefined;
// if we set stretching, we apply stretching // if we set stretching, we apply stretching
@ -63,9 +71,11 @@ class Resizer {
} else if (this.stretch.mode == StretchMode.CONDITIONAL) { } else if (this.stretch.mode == StretchMode.CONDITIONAL) {
stretchFactors = Stretcher.conditionalStretch(dimensions, ExtensionConf.stretch.conditionalDifferencePercent); stretchFactors = Stretcher.conditionalStretch(dimensions, ExtensionConf.stretch.conditionalDifferencePercent);
} }
console.log("PRE_ZOOM DIMENSIONS:",dimensions);
this.zoom.applyZoom(dimensions); this.zoom.applyZoom(dimensions);
console.log("POST_ZOOM DIMENSIONS:",dimensions);
var cssOffsets = this.computeOffsets(dimensions); var cssOffsets = this.computeOffsets(dimensions);
this.applyCss(cssOffsets, stretchFactors); this.applyCss(cssOffsets, stretchFactors);
} }
@ -183,6 +193,8 @@ class Resizer {
applyCss(dimensions, stretchFactors){ applyCss(dimensions, stretchFactors){
console.log("CSS DIMENSIOPNS", dimensions)
if(this.video == undefined || this.video == null){ if(this.video == undefined || this.video == null){
if(Debug.debug) if(Debug.debug)
console.log("[Resizer::_res_applyCss] Video went missing, doing nothing."); console.log("[Resizer::_res_applyCss] Video went missing, doing nothing.");

View File

@ -71,7 +71,7 @@ class Scaler {
} }
if(Debug.debug) if(Debug.debug)
console.log("[Scaler::calculateCrop] trying to set ar. args are: ar->",ar,"; playerDimensions->",playerDimensions.width, "×", playerDimensions.height, "| obj:", GlobalVars.playerDimensions); console.log("[Scaler::calculateCrop] trying to set ar. args are: ar->",ar,"; playerDimensions->",playerDimensions.width, "×", playerDimensions.height, "| obj:", playerDimensions);
if(!video || video.videoWidth == 0 || video.videoHeight == 0){ if(!video || video.videoWidth == 0 || video.videoHeight == 0){
if(Debug.debug) if(Debug.debug)
@ -79,7 +79,7 @@ class Scaler {
return {error: "no_video"}; return {error: "no_video"};
} }
if(! playerDimensions || playerDimensions.width === 0 || playerDimensions.height){ if( (! playerDimensions) || playerDimensions.width === 0 || playerDimensions.height === 0 ){
if(Debug.debug) if(Debug.debug)
console.log("[Scaler::calculateCrop] ERROR — no (or invalid) playerDimensions:",playerDimensions); console.log("[Scaler::calculateCrop] ERROR — no (or invalid) playerDimensions:",playerDimensions);
return {error: "playerDimensions_error"}; return {error: "playerDimensions_error"};
@ -99,7 +99,7 @@ class Scaler {
if(Debug.debug) if(Debug.debug)
console.log("[Scaler::calculateCrop] ar is " ,ar, ", file ar is", fileAr, ", playerDimensions are ", GlobalVars.playerDimensions.width, "×", GlobalVars.playerDimensions.height, "| obj:", GlobalVars.playerDimensions); console.log("[Scaler::calculateCrop] ar is " ,ar, ", file ar is", fileAr, ", playerDimensions are ", playerDimensions.width, "×", playerDimensions.height, "| obj:", playerDimensions);
var videoDimensions = { var videoDimensions = {
width: 0, width: 0,
@ -109,18 +109,18 @@ class Scaler {
} }
if(Debug.debug){ if(Debug.debug){
console.log("[Scaler::calculateCrop] Player dimensions?", GlobalVars.playerDimensions.width, "×", GlobalVars.playerDimensions.height, "| obj:", GlobalVars.playerDimensions); console.log("[Scaler::calculateCrop] Player dimensions?", playerDimensions.width, "×", playerDimensions.height, "| obj:", playerDimensions);
} }
if( fileAr < ar ){ if( fileAr < ar ){
// imamo letterbox zgoraj in spodaj -> spremenimo velikost videa (a nikoli širše od ekrana) // imamo letterbox zgoraj in spodaj -> spremenimo velikost videa (a nikoli širše od ekrana)
// letterbox -> change video size (but never to wider than monitor width) // letterbox -> change video size (but never to wider than monitor width)
videoDimensions.width = Math.min(GlobalVars.playerDimensions.height * ar, GlobalVars.playerDimensions.width); videoDimensions.width = Math.min(playerDimensions.height * ar, playerDimensions.width);
videoDimensions.height = videoDimensions.width * (1/fileAr); videoDimensions.height = videoDimensions.width * (1/fileAr);
} }
else{ else{
videoDimensions.height = Math.min(GlobalVars.playerDimensions.width / ar, GlobalVars.playerDimensions.height); videoDimensions.height = Math.min(playerDimensions.width / ar, playerDimensions.height);
videoDimensions.width = videoDimensions.height * fileAr; videoDimensions.width = videoDimensions.height * fileAr;
} }
@ -140,7 +140,7 @@ class Scaler {
} }
if(Debug.debug){ if(Debug.debug){
console.log("[Scaler::calculateCrop] Video dimensions: ", videoDimensions.width, "×", videoDimensions.height, "(obj:", videoDimensions, "); playerDimensions:",GlobalVars.playerDimensions.width, "×", GlobalVars.playerDimensions.height, "(obj:", GlobalVars.playerDimensions, ")"); console.log("[Scaler::calculateCrop] Video dimensions: ", videoDimensions.width, "×", videoDimensions.height, "(obj:", videoDimensions, "); playerDimensions:",playerDimensions.width, "×", playerDimensions.height, "(obj:", playerDimensions, ")");
} }
return videoDimensions; return videoDimensions;