Typo fixes
This commit is contained in:
parent
fbd7aad9b9
commit
d4cd1fd92e
@ -44,33 +44,33 @@ var ExtensionConf = {
|
||||
|
||||
// samplingInterval: 10, // we sample at columns at (width/this) * [ 1 .. this - 1]
|
||||
blackframe: {
|
||||
cumulativeTreshold: 2560, // if we add values of all pixels together and get more than this, the frame is bright enough.
|
||||
// (note: blackframe is 16x9 px -> 144px total. cumulative treshold can be reached fast)
|
||||
cumulativeThreshold: 2560, // if we add values of all pixels together and get more than this, the frame is bright enough.
|
||||
// (note: blackframe is 16x9 px -> 144px total. cumulative threshold can be reached fast)
|
||||
blackPixelsCondition: 0.6, // How much pixels must be black (1 all, 0 none) before we consider frame as black. Takes
|
||||
// precedence over cumulative treshold: if blackPixelsCondition is met, the frame is dark
|
||||
// regardless of whether cumulative treshold has been reached.
|
||||
// precedence over cumulative threshold: if blackPixelsCondition is met, the frame is dark
|
||||
// regardless of whether cumulative threshold has been reached.
|
||||
},
|
||||
blackbar: {
|
||||
blackLevel: 10, // everything darker than 10/255 across all RGB components is considered black by
|
||||
// default. blackLevel can decrease if we detect darker black.
|
||||
treshold: 16, // if pixel is darker than the sum of black level and this value, we count it as black
|
||||
threshold: 16, // if pixel is darker than the sum of black level and this value, we count it as black
|
||||
// on 0-255. Needs to be fairly high (8 might not cut it) due to compression
|
||||
// artifacts in the video itself
|
||||
imageTreshold: 4, // in order to detect pixel as "not black", the pixel must be brighter than
|
||||
// the sum of black level, treshold and this value.
|
||||
gradientTreshold: 2, // When trying to determine thickness of the black bars, we take 2 values: position of
|
||||
// the last pixel that's darker than our treshold, and position of the first pixel that's
|
||||
// brighter than our image treshold. If positions are more than this many pixels apart,
|
||||
imageThreshold: 4, // in order to detect pixel as "not black", the pixel must be brighter than
|
||||
// the sum of black level, threshold and this value.
|
||||
gradientThreshold: 2, // When trying to determine thickness of the black bars, we take 2 values: position of
|
||||
// the last pixel that's darker than our threshold, and position of the first pixel that's
|
||||
// brighter than our image threshold. If positions are more than this many pixels apart,
|
||||
// we assume we aren't looking at letterbox and thus don't correct the aspect ratio.
|
||||
gradientSampleSize: 8, // How far do we look to find the gradient
|
||||
antiGradientMode: AntiGradientMode.Strict,
|
||||
},
|
||||
variableBlackbarTresholdOptions: { // In case of poor bitrate videos, jpeg artifacts may cause us issues
|
||||
variableBlackbarThresholdOptions: { // In case of poor bitrate videos, jpeg artifacts may cause us issues
|
||||
// FOR FUTURE USE
|
||||
enabled: true, // allow increasing blackbar threshold
|
||||
disableArDetectOnMax: true, // disable autodetection when treshold goes over max blackbar treshold
|
||||
maxBlackbarTreshold: 48, // max threshold (don't increase past this)
|
||||
thresholdStep: 8, // when failing to set aspect ratio, increase treshold by this much
|
||||
disableArDetectOnMax: true, // disable autodetection when threshold goes over max blackbar threshold
|
||||
maxBlackbarThreshold: 48, // max threshold (don't increase past this)
|
||||
thresholdStep: 8, // when failing to set aspect ratio, increase threshold by this much
|
||||
increaseAfterConsecutiveResets: 2 // increase if AR resets this many times in a row
|
||||
},
|
||||
sampling: {
|
||||
@ -83,7 +83,7 @@ var ExtensionConf = {
|
||||
enabled: true,
|
||||
ignoreEdgeMargin: 0.20, // we ignore anything that pokes over the black line this close to the edge
|
||||
// (relative to width of the sample)
|
||||
imageTestTreshold: 0.1, // when testing for image, this much pixels must be over blackbarTreshold
|
||||
imageTestThreshold: 0.1, // when testing for image, this much pixels must be over blackbarThreshold
|
||||
edgeTolerancePx: 2, // black edge violation is performed this far from reported 'last black pixel'
|
||||
edgeTolerancePercent: null // unused. same as above, except use % of canvas height instead of pixels
|
||||
},
|
||||
@ -98,12 +98,12 @@ var ExtensionConf = {
|
||||
},
|
||||
edgeDetection: {
|
||||
sampleWidth: 8, // we take a sample this wide for edge detection
|
||||
detectionTreshold: 4, // sample needs to have this many non-black pixels to be a valid edge
|
||||
confirmationTreshold: 0, //
|
||||
singleSideConfirmationTreshold: 0.3, // we need this much edges (out of all samples, not just edges) in order
|
||||
detectionThreshold: 4, // sample needs to have this many non-black pixels to be a valid edge
|
||||
confirmationThreshold: 0, //
|
||||
singleSideConfirmationThreshold: 0.3, // we need this much edges (out of all samples, not just edges) in order
|
||||
// to confirm an edge in case there's no edges on top or bottom (other
|
||||
// than logo, of course)
|
||||
logoTreshold: 0.15, // if edge candidate sits with count greater than this*all_samples, it can't be logo
|
||||
logoThreshold: 0.15, // if edge candidate sits with count greater than this*all_samples, it can't be logo
|
||||
// or watermark.
|
||||
edgeTolerancePx: 1, // we check for black edge violation this far from detection point
|
||||
edgeTolerancePercent: null, // we check for black edge detection this % of height from detection point. unused
|
||||
@ -119,8 +119,8 @@ var ExtensionConf = {
|
||||
textLineTest: {
|
||||
nonTextPulse: 0.10, // if a single continuous pulse has this many non-black pixels, we aren't dealing
|
||||
// with text. This value is relative to canvas width (%)
|
||||
pulsesToConfirm: 10, // this is a treshold to confirm we're seeing text.
|
||||
pulsesToConfirmIfHalfBlack: 5, // this is the treshold to confirm we're seeing text if longest black pulse
|
||||
pulsesToConfirm: 10, // this is a threshold to confirm we're seeing text.
|
||||
pulsesToConfirmIfHalfBlack: 5, // this is the threshold to confirm we're seeing text if longest black pulse
|
||||
// is over 50% of the canvas width
|
||||
testRowOffset: 0.02 // we test this % of height from detected edge
|
||||
}
|
||||
|
@ -691,7 +691,7 @@ class ArDetector {
|
||||
if(Debug.debug && Debug.debugArDetect){
|
||||
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);
|
||||
// console.log("SAMPLES:", blackbarSamples, "candidates:", edgeCandidates, "post:", edgePost,"\n\nblack level:", this.blackLevel, "tresh:", this.blackLevel + this.settings.active.arDetect.blackbar.threshold);
|
||||
|
||||
if (edgePost.status !== EdgeStatus.AR_KNOWN){
|
||||
// rob ni bil zaznan, zato ne naredimo ničesar.
|
||||
@ -798,7 +798,7 @@ class ArDetector {
|
||||
}
|
||||
|
||||
return {
|
||||
isBlack: (blackPixelCount/(cols * rows) > this.settings.active.arDetect.blackframe.blackPixelsCondition) ? true : cumulativeValue < this.settings.active.arDetect.blackframe.cumulativeTreshold,
|
||||
isBlack: (blackPixelCount/(cols * rows) > this.settings.active.arDetect.blackframe.blackPixelsCondition) ? true : cumulativeValue < this.settings.active.arDetect.blackframe.cumulativeThreshold,
|
||||
rowMax: rowMax,
|
||||
colMax: colMax,
|
||||
};
|
||||
@ -811,9 +811,9 @@ class ArDetector {
|
||||
|
||||
// If we detect anything darker than blackLevel, we modify blackLevel to the new lowest value
|
||||
const rowOffset = this.canvas.width * (this.canvas.height - 1);
|
||||
let currentMin = 255, currentMax = 0, colOffset_r, colOffset_g, colOffset_b, colOffset_rb, colOffset_gb, colOffset_bb, bltreshold = this.settings.active.arDetect.blackbar.treshold;
|
||||
let currentMin = 255, currentMax = 0, colOffset_r, colOffset_g, colOffset_b, colOffset_rb, colOffset_gb, colOffset_bb, blthreshold = this.settings.active.arDetect.blackbar.threshold;
|
||||
|
||||
// detect black level. if currentMax comes above blackbar + blackbar treshold, we know we aren't letterboxed
|
||||
// detect black level. if currentMax comes above blackbar + blackbar threshold, we know we aren't letterboxed
|
||||
|
||||
for (var i = 0; i < sampleCols.length; ++i){
|
||||
colOffset_r = sampleCols[i] << 2;
|
||||
@ -829,8 +829,8 @@ class ArDetector {
|
||||
currentMax
|
||||
);
|
||||
|
||||
if (currentMax > this.blackLevel + bltreshold) {
|
||||
console.log("CURRENT MAX:", currentMax, "BLACK LEVEL, treshold, bl+t", this.blackLevel, bltreshold, this.blackLevel+bltreshold)
|
||||
if (currentMax > this.blackLevel + blthreshold) {
|
||||
console.log("CURRENT MAX:", currentMax, "BLACK LEVEL, threshold, bl+t", this.blackLevel, blthreshold, this.blackLevel+blthreshold)
|
||||
// we search no further
|
||||
if (currentMin < this.blackLevel) {
|
||||
this.blackLevel = currentMin;
|
||||
|
@ -53,8 +53,8 @@ class GuardLine {
|
||||
check(image, fallbackMode){
|
||||
// izračunaj enkrat in shrani na objekt
|
||||
// calculate once and save object-instance-wide
|
||||
this.blackbarTreshold = this.conf.blackLevel + this.settings.active.arDetect.blackbar.treshold;
|
||||
this.imageTreshold = this.blackbarTreshold + this.settings.active.arDetect.blackbar.imageTreshold;
|
||||
this.blackbarThreshold = this.conf.blackLevel + this.settings.active.arDetect.blackbar.threshold;
|
||||
this.imageThreshold = this.blackbarThreshold + this.settings.active.arDetect.blackbar.imageThreshold;
|
||||
|
||||
// dejansko testiranje
|
||||
// actual checks
|
||||
@ -184,7 +184,7 @@ class GuardLine {
|
||||
// robu (eden izmed robov je lahko v celoti črn)
|
||||
// how many non-black pixels we need to consider this check a success. We only need to detect enough pixels
|
||||
// on one edge (one of the edges can be black as long as both aren't)
|
||||
var successTreshold = (this.conf.canvas.width * this.settings.active.arDetect.guardLine.imageTestTreshold);
|
||||
var successThreshold = (this.conf.canvas.width * this.settings.active.arDetect.guardLine.imageTestThreshold);
|
||||
var rowStart, rowEnd;
|
||||
|
||||
|
||||
@ -196,9 +196,9 @@ class GuardLine {
|
||||
var res = false;
|
||||
|
||||
if(Debug.debugCanvas.enabled && Debug.debugCanvas.guardLine){
|
||||
res = this._ti_debugCheckRow(image, rowStart, rowEnd, successTreshold);
|
||||
res = this._ti_debugCheckRow(image, rowStart, rowEnd, successThreshold);
|
||||
} else {
|
||||
res = this._ti_checkRow(image, rowStart, rowEnd,successTreshold);
|
||||
res = this._ti_checkRow(image, rowStart, rowEnd,successThreshold);
|
||||
}
|
||||
|
||||
if(res)
|
||||
@ -212,9 +212,9 @@ class GuardLine {
|
||||
|
||||
|
||||
if(Debug.debugCanvas.enabled && Debug.debugCanvas.guardLine){
|
||||
res = this._ti_debugCheckRow(image, rowStart, rowEnd, successTreshold);
|
||||
res = this._ti_debugCheckRow(image, rowStart, rowEnd, successThreshold);
|
||||
} else {
|
||||
res = this._ti_checkRow(image, rowStart, rowEnd,successTreshold);
|
||||
res = this._ti_checkRow(image, rowStart, rowEnd,successThreshold);
|
||||
}
|
||||
|
||||
return {success: res};
|
||||
@ -230,7 +230,7 @@ class GuardLine {
|
||||
|
||||
// we track sections that go over what's supposed to be a black line, so we can suggest more
|
||||
// columns to sample
|
||||
if(image[i] > this.blackbarTreshold || image[i+1] > this.blackbarTreshold || image[i+2] > this.blackbarTreshold){
|
||||
if(image[i] > this.blackbarThreshold || image[i+1] > this.blackbarThreshold || image[i+2] > this.blackbarThreshold){
|
||||
if(firstOffender < 0){
|
||||
firstOffender = (i - rowStart) >> 2;
|
||||
offenderCount++;
|
||||
@ -255,7 +255,7 @@ class GuardLine {
|
||||
|
||||
// we track sections that go over what's supposed to be a black line, so we can suggest more
|
||||
// columns to sample
|
||||
if(image[i] > this.blackbarTreshold || image[i+1] > this.blackbarTreshold || image[i+2] > this.blackbarTreshold){
|
||||
if(image[i] > this.blackbarThreshold || image[i+1] > this.blackbarThreshold || image[i+2] > this.blackbarThreshold){
|
||||
this.conf.debugCanvas.trace(i, DebugCanvasClasses.VIOLATION);
|
||||
if(firstOffender < 0){
|
||||
firstOffender = (i - rowStart) >> 2;
|
||||
@ -277,10 +277,10 @@ class GuardLine {
|
||||
return offenderCount;
|
||||
}
|
||||
|
||||
_ti_checkRow(image, rowStart, rowEnd, successTreshold) {
|
||||
_ti_checkRow(image, rowStart, rowEnd, successThreshold) {
|
||||
for(var i = rowStart; i < rowEnd; i+=4){
|
||||
if(image[i] > this.imageTreshold || image[i+1] > this.imageTreshold || image[i+2] > this.imageTreshold){
|
||||
if(successTreshold --<= 0){
|
||||
if(image[i] > this.imageThreshold || image[i+1] > this.imageThreshold || image[i+2] > this.imageThreshold){
|
||||
if(successThreshold --<= 0){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -289,11 +289,11 @@ class GuardLine {
|
||||
return false;
|
||||
}
|
||||
|
||||
_ti_debugCheckRow(image, rowStart, rowEnd, successTreshold) {
|
||||
_ti_debugCheckRow(image, rowStart, rowEnd, successThreshold) {
|
||||
for(var i = rowStart; i < rowEnd; i+=4){
|
||||
if(image[i] > this.imageTreshold || image[i+1] > this.imageTreshold || image[i+2] > this.imageTreshold){
|
||||
if(image[i] > this.imageThreshold || image[i+1] > this.imageThreshold || image[i+2] > this.imageThreshold){
|
||||
this.conf.debugCanvas.trace(i, DebugCanvasClasses.GUARDLINE_IMAGE);
|
||||
if(successTreshold --<= 0){
|
||||
if(successThreshold --<= 0){
|
||||
return true;
|
||||
}
|
||||
} else {
|
||||
|
@ -16,7 +16,7 @@ class EdgeDetect{
|
||||
this.sampleWidthBase = this.settings.active.arDetect.edgeDetection.sampleWidth << 2; // corrected so we can work on imageData
|
||||
this.halfSample = this.sampleWidthBase >> 1;
|
||||
|
||||
this.detectionTreshold = this.settings.active.arDetect.edgeDetection.detectionTreshold;
|
||||
this.detectionThreshold = this.settings.active.arDetect.edgeDetection.detectionThreshold;
|
||||
|
||||
this.init(); // initiate things that can change
|
||||
}
|
||||
@ -69,12 +69,12 @@ class EdgeDetect{
|
||||
console.log("[EdgeDetect::findCandidates] cols a, b:", cols_a, cols_b);
|
||||
|
||||
|
||||
this.colsTreshold = sampleCols.length * this.settings.active.arDetect.edgeDetection.minColsForSearch;
|
||||
if (this.colsTreshold == 0)
|
||||
this.colsTreshold = 1;
|
||||
this.colsThreshold = sampleCols.length * this.settings.active.arDetect.edgeDetection.minColsForSearch;
|
||||
if (this.colsThreshold == 0)
|
||||
this.colsThreshold = 1;
|
||||
|
||||
this.blackbarTreshold = this.conf.blackLevel + this.settings.active.arDetect.blackbar.treshold;
|
||||
this.imageTreshold = this.blackbarTreshold + this.settings.active.arDetect.blackbar.imageTreshold;
|
||||
this.blackbarThreshold = this.conf.blackLevel + this.settings.active.arDetect.blackbar.threshold;
|
||||
this.imageThreshold = this.blackbarThreshold + this.settings.active.arDetect.blackbar.imageThreshold;
|
||||
|
||||
// if guardline didn't fail and imageDetect did, we don't have to check the upper few pixels
|
||||
// but only if upper and lower edge are defined. If they're not, we need to check full height
|
||||
@ -131,10 +131,10 @@ class EdgeDetect{
|
||||
}
|
||||
|
||||
// preglejmo, kateri kandidati so neprimerni. (Neprimerni so tisti, pri katerih se
|
||||
// 'black' in 'image' razlikujeta za več kot settings.arDetect.blackbar.gradientTreshold)
|
||||
// 'black' in 'image' razlikujeta za več kot settings.arDetect.blackbar.gradientThreshold)
|
||||
//
|
||||
// let's check which candidates are suitable. Suitable candidates have 'black' and 'image'
|
||||
// components differ by less than settings.arDetect.blackbar.gradientTreshold
|
||||
// components differ by less than settings.arDetect.blackbar.gradientThreshold
|
||||
|
||||
const res_top = [];
|
||||
const res_bottom = [];
|
||||
@ -143,11 +143,11 @@ class EdgeDetect{
|
||||
if (this.settings.active.arDetect.blackbar.antiGradientMode === AntiGradientMode.Disabled) {
|
||||
res_top.push({top: item.image, col: item.col});
|
||||
} else if (this.settings.active.arDetect.blackbar.antiGradientMode === AntiGradientMode.Lax) {
|
||||
if (item.image === undefined || item.image <= item.black + this.settings.active.arDetect.blackbar.gradientTreshold) {
|
||||
if (item.image === undefined || item.image <= item.black + this.settings.active.arDetect.blackbar.gradientThreshold) {
|
||||
res_top.push({top: item.image, col: item.col});
|
||||
}
|
||||
} else {
|
||||
if ( item.image !== undefined && item.image <= item.black + this.settings.active.arDetect.blackbar.gradientTreshold) {
|
||||
if ( item.image !== undefined && item.image <= item.black + this.settings.active.arDetect.blackbar.gradientThreshold) {
|
||||
res_top.push({top: item.image, col: item.col});
|
||||
}
|
||||
}
|
||||
@ -160,7 +160,7 @@ class EdgeDetect{
|
||||
res_bottom.push({bottom: item.image, col: item.col});
|
||||
} else {
|
||||
if ( (item.image !== undefined || this.settings.active.arDetect.blackbar.antiGradientMode === AntiGradientMode.Lax)
|
||||
&& item.image >= item.black - this.settings.active.arDetect.blackbar.gradientTreshold) {
|
||||
&& item.image >= item.black - this.settings.active.arDetect.blackbar.gradientThreshold) {
|
||||
res_bottom.push({bottom: item.image, col: item.col});
|
||||
}
|
||||
}
|
||||
@ -365,7 +365,7 @@ class EdgeDetect{
|
||||
// it could be watermark. It could be a dark frame. Let's check for watermark first.
|
||||
if( edgesTop[0].distance < edgesBottom[0].distance &&
|
||||
edgesTop[0].count < edgesBottom[0].count &&
|
||||
edgesTop[0].count < this.conf.sampleCols.length * this.settings.active.arDetect.edgeDetection.logoTreshold){
|
||||
edgesTop[0].count < this.conf.sampleCols.length * this.settings.active.arDetect.edgeDetection.logoThreshold){
|
||||
// možno, da je watermark zgoraj. Preverimo, če se kateri od drugih potencialnih robov na zgornjem robu
|
||||
// ujema s prvim spodnjim (+/- variance). Če je temu tako, potem bo verjetno watermark. Logo mora imeti
|
||||
// manj vzorcev kot navaden rob.
|
||||
@ -396,7 +396,7 @@ class EdgeDetect{
|
||||
}
|
||||
if( edgesBottom[0].distance < edgesTop[0].distance &&
|
||||
edgesBottom[0].count < edgesTop[0].count &&
|
||||
edgesBottom[0].count <this.conf.sampleCols.length * this.settings.active.arDetect.edgeDetection.logoTreshold){
|
||||
edgesBottom[0].count <this.conf.sampleCols.length * this.settings.active.arDetect.edgeDetection.logoThreshold){
|
||||
|
||||
if(edgesBottom[0].length > 1){
|
||||
var lowMargin = edgesTop[0].distance - alignMargin;
|
||||
@ -429,11 +429,11 @@ class EdgeDetect{
|
||||
// either the top or the bottom edge remains undetected, but we have one more trick that we
|
||||
// can try. It also tries to work around logos.
|
||||
|
||||
var edgeDetectionTreshold = this.conf.sampleCols.length * this.settings.active.arDetect.edgeDetection.singleSideConfirmationTreshold;
|
||||
var edgeDetectionThreshold = this.conf.sampleCols.length * this.settings.active.arDetect.edgeDetection.singleSideConfirmationThreshold;
|
||||
|
||||
if(edges.edgeCandidatesTopCount == 0 && edges.edgeCandidatesBottomCount != 0){
|
||||
for(var edge of edgesBottom){
|
||||
if(edge.count >= edgeDetectionTreshold)
|
||||
if(edge.count >= edgeDetectionThreshold)
|
||||
return {
|
||||
status: EdgeStatus.AR_KNOWN,
|
||||
blackbarWidth: edge.distance,
|
||||
@ -447,7 +447,7 @@ class EdgeDetect{
|
||||
}
|
||||
if(edges.edgeCandidatesTopCount != 0 && edges.edgeCandidatesBottomCount == 0){
|
||||
for(var edge of edgesTop){
|
||||
if(edge.count >= edgeDetectionTreshold)
|
||||
if(edge.count >= edgeDetectionThreshold)
|
||||
return {
|
||||
status: EdgeStatus.AR_KNOWN,
|
||||
blackbarWidth: edge.distance,
|
||||
@ -473,8 +473,8 @@ class EdgeDetect{
|
||||
// roughly centered, we return true. Otherwise we return false.
|
||||
// we also return true if we detect too much black
|
||||
|
||||
var blackbarTreshold, upper, lower;
|
||||
blackbarTreshold = this.conf.blackLevel + this.settings.active.arDetect.blackbar.treshold;
|
||||
var blackbarThreshold, upper, lower;
|
||||
blackbarThreshold = this.conf.blackLevel + this.settings.active.arDetect.blackbar.threshold;
|
||||
|
||||
|
||||
var middleRowStart = (this.conf.canvas.height >> 1) * this.conf.canvas.width;
|
||||
@ -489,7 +489,7 @@ class EdgeDetect{
|
||||
// preverimo na levi strani
|
||||
// let's check for edge on the left side
|
||||
for(var i = rowStart; i < midpoint; i+=4){
|
||||
if(image[i] > blackbarTreshold || image[i+1] > blackbarTreshold || image[i+2] > blackbarTreshold){
|
||||
if(image[i] > blackbarThreshold || image[i+1] > blackbarThreshold || image[i+2] > blackbarThreshold){
|
||||
edge_left = (i - rowStart) >> 2;
|
||||
break;
|
||||
}
|
||||
@ -498,7 +498,7 @@ class EdgeDetect{
|
||||
// preverimo na desni strani
|
||||
// check on the right
|
||||
for(var i = rowEnd; i > midpoint; i-= 4){
|
||||
if(image[i] > blackbarTreshold || image[i+1] > blackbarTreshold || image[i+2] > blackbarTreshold){
|
||||
if(image[i] > blackbarThreshold || image[i+1] > blackbarThreshold || image[i+2] > blackbarThreshold){
|
||||
edge_right = this.conf.canvas.width - ((i - rowStart) >> 2);
|
||||
break;
|
||||
}
|
||||
@ -552,21 +552,21 @@ class EdgeDetect{
|
||||
tmpI = i + (colsIn[c].value << 2);
|
||||
|
||||
// najprej preverimo, če je piksel presegel mejo črnega robu
|
||||
// first we check whether blackbarTreshold was exceeded
|
||||
// first we check whether blackbarThreshold was exceeded
|
||||
if(! colsIn[c].blackFound) {
|
||||
if( image[tmpI] > this.blackbarTreshold ||
|
||||
image[tmpI + 1] > this.blackbarTreshold ||
|
||||
image[tmpI + 2] > this.blackbarTreshold ){
|
||||
if( image[tmpI] > this.blackbarThreshold ||
|
||||
image[tmpI + 1] > this.blackbarThreshold ||
|
||||
image[tmpI + 2] > this.blackbarThreshold ){
|
||||
|
||||
colsOut[c].black = (i / this.conf.canvasImageDataRowLength) - 1;
|
||||
colsOut[c].col = colsIn[c].value;
|
||||
colsIn[c].blackFound = 1;
|
||||
|
||||
// prisili, da se zanka izvede še enkrat ter preveri,
|
||||
// ali trenuten piksel preseže tudi imageTreshold
|
||||
// ali trenuten piksel preseže tudi imageThreshold
|
||||
//
|
||||
// force the loop to repeat this step and check whether
|
||||
// current pixel exceeds imageTreshold as well
|
||||
// current pixel exceeds imageThreshold as well
|
||||
c--;
|
||||
continue;
|
||||
}
|
||||
@ -577,12 +577,12 @@ class EdgeDetect{
|
||||
}
|
||||
// zatem preverimo, če je piksel presegel mejo, po kateri sklepamo, da
|
||||
// predstavlja sliko. Preverimo samo, če smo v stolpcu že presegli
|
||||
// blackTreshold
|
||||
// blackThreshold
|
||||
//
|
||||
// then we check whether pixel exceeded imageTreshold
|
||||
if (image[tmpI] > this.imageTreshold ||
|
||||
image[tmpI + 1] > this.imageTreshold ||
|
||||
image[tmpI + 2] > this.imageTreshold ){
|
||||
// then we check whether pixel exceeded imageThreshold
|
||||
if (image[tmpI] > this.imageThreshold ||
|
||||
image[tmpI + 1] > this.imageThreshold ||
|
||||
image[tmpI + 2] > this.imageThreshold ){
|
||||
|
||||
colsOut[c].image = (i / this.conf.canvasImageDataRowLength)
|
||||
colsIn[c].imageFound = true;
|
||||
@ -590,7 +590,7 @@ class EdgeDetect{
|
||||
}
|
||||
}
|
||||
}
|
||||
if(edgeDetectCount >= this.colsTreshold) {
|
||||
if(edgeDetectCount >= this.colsThreshold) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -605,21 +605,21 @@ class EdgeDetect{
|
||||
tmpI = i + (colsIn[c].value << 2);
|
||||
|
||||
// najprej preverimo, če je piksel presegel mejo črnega robu
|
||||
// first we check whether blackbarTreshold was exceeded
|
||||
// first we check whether blackbarThreshold was exceeded
|
||||
if(! colsIn[c].blackFound) {
|
||||
if( image[tmpI] > this.blackbarTreshold ||
|
||||
image[tmpI + 1] > this.blackbarTreshold ||
|
||||
image[tmpI + 2] > this.blackbarTreshold ){
|
||||
if( image[tmpI] > this.blackbarThreshold ||
|
||||
image[tmpI + 1] > this.blackbarThreshold ||
|
||||
image[tmpI + 2] > this.blackbarThreshold ){
|
||||
|
||||
colsOut[c].black = (i / this.conf.canvasImageDataRowLength);
|
||||
colsOut[c].col = colsIn[c].value;
|
||||
colsIn[c].blackFound = true;
|
||||
|
||||
// prisili, da se zanka izvede še enkrat ter preveri,
|
||||
// ali trenuten piksel preseže tudi imageTreshold
|
||||
// ali trenuten piksel preseže tudi imageThreshold
|
||||
//
|
||||
// force the loop to repeat this step and check whether
|
||||
// current pixel exceeds imageTreshold as well
|
||||
// current pixel exceeds imageThreshold as well
|
||||
c--;
|
||||
continue;
|
||||
}
|
||||
@ -630,12 +630,12 @@ class EdgeDetect{
|
||||
}
|
||||
// zatem preverimo, če je piksel presegel mejo, po kateri sklepamo, da
|
||||
// predstavlja sliko. Preverimo samo, če smo v stolpcu že presegli
|
||||
// blackTreshold
|
||||
// blackThreshold
|
||||
//
|
||||
// then we check whether pixel exceeded imageTreshold
|
||||
if (image[tmpI] > this.imageTreshold ||
|
||||
image[tmpI + 1] > this.imageTreshold ||
|
||||
image[tmpI + 2] > this.imageTreshold ){
|
||||
// then we check whether pixel exceeded imageThreshold
|
||||
if (image[tmpI] > this.imageThreshold ||
|
||||
image[tmpI + 1] > this.imageThreshold ||
|
||||
image[tmpI + 2] > this.imageThreshold ){
|
||||
|
||||
colsOut[c].image = (i / this.conf.canvasImageDataRowLength)
|
||||
colsIn[c].imageFound = true;
|
||||
@ -643,7 +643,7 @@ class EdgeDetect{
|
||||
}
|
||||
}
|
||||
}
|
||||
if(edgeDetectCount >= this.colsTreshold) {
|
||||
if(edgeDetectCount >= this.colsThreshold) {
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -658,9 +658,9 @@ class EdgeDetect{
|
||||
for(var col of colsIn){
|
||||
tmpI = i + (col << 2);
|
||||
|
||||
if( image[tmpI] > this.blackbarTreshold ||
|
||||
image[tmpI + 1] > this.blackbarTreshold ||
|
||||
image[tmpI + 2] > this.blackbarTreshold ){
|
||||
if( image[tmpI] > this.blackbarThreshold ||
|
||||
image[tmpI + 1] > this.blackbarThreshold ||
|
||||
image[tmpI + 2] > this.blackbarThreshold ){
|
||||
|
||||
var bottom = (i / this.conf.canvasImageDataRowLength) + 1;
|
||||
colsOut.push({
|
||||
@ -670,7 +670,7 @@ class EdgeDetect{
|
||||
colsIn.splice(colsIn.indexOf(col), 1);
|
||||
}
|
||||
}
|
||||
if(colsIn.length < this.colsTreshold)
|
||||
if(colsIn.length < this.colsThreshold)
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
@ -678,9 +678,9 @@ class EdgeDetect{
|
||||
for(var col of colsIn){
|
||||
tmpI = i + (col << 2);
|
||||
|
||||
if( image[tmpI] > this.blackbarTreshold ||
|
||||
image[tmpI + 1] > this.blackbarTreshold ||
|
||||
image[tmpI + 2] > this.blackbarTreshold ){
|
||||
if( image[tmpI] > this.blackbarThreshold ||
|
||||
image[tmpI + 1] > this.blackbarThreshold ||
|
||||
image[tmpI + 2] > this.blackbarThreshold ){
|
||||
|
||||
colsOut.push({
|
||||
col: col,
|
||||
@ -689,7 +689,7 @@ class EdgeDetect{
|
||||
colsIn.splice(colsIn.indexOf(col), 1);
|
||||
}
|
||||
}
|
||||
if(colsIn.length < this.colsTreshold)
|
||||
if(colsIn.length < this.colsThreshold)
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -702,9 +702,9 @@ class EdgeDetect{
|
||||
for(var col of colsIn){
|
||||
tmpI = i + (col << 2);
|
||||
|
||||
if( image[tmpI] > this.blackbarTreshold ||
|
||||
image[tmpI + 1] > this.blackbarTreshold ||
|
||||
image[tmpI + 2] > this.blackbarTreshold ){
|
||||
if( image[tmpI] > this.blackbarThreshold ||
|
||||
image[tmpI + 1] > this.blackbarThreshold ||
|
||||
image[tmpI + 2] > this.blackbarThreshold ){
|
||||
|
||||
var bottom = (i / this.conf.canvasImageDataRowLength) + 1;
|
||||
colsOut.push({
|
||||
@ -718,7 +718,7 @@ class EdgeDetect{
|
||||
this.conf.debugCanvas.trace(tmpI, DebugCanvasClasses.EDGEDETECT_ONBLACK);
|
||||
}
|
||||
}
|
||||
if(colsIn.length < this.colsTreshold)
|
||||
if(colsIn.length < this.colsThreshold)
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
@ -726,9 +726,9 @@ class EdgeDetect{
|
||||
for(var col of colsIn){
|
||||
tmpI = i + (col << 2);
|
||||
|
||||
if( image[tmpI] > this.blackbarTreshold ||
|
||||
image[tmpI + 1] > this.blackbarTreshold ||
|
||||
image[tmpI + 2] > this.blackbarTreshold ){
|
||||
if( image[tmpI] > this.blackbarThreshold ||
|
||||
image[tmpI + 1] > this.blackbarThreshold ||
|
||||
image[tmpI + 2] > this.blackbarThreshold ){
|
||||
|
||||
colsOut.push({
|
||||
col: col,
|
||||
@ -746,7 +746,7 @@ class EdgeDetect{
|
||||
this.conf.debugCanvas.trace(tmpI, DebugCanvasClasses.EDGEDETECT_ONBLACK);
|
||||
}
|
||||
}
|
||||
if(colsIn.length < this.colsTreshold)
|
||||
if(colsIn.length < this.colsThreshold)
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -754,9 +754,9 @@ class EdgeDetect{
|
||||
|
||||
_blackbarTest(image, start, end){
|
||||
for(var i = start; i < end; i += 4){
|
||||
if( image[i ] > this.blackbarTreshold ||
|
||||
image[i+1] > this.blackbarTreshold ||
|
||||
image[i+2] > this.blackbarTreshold ){
|
||||
if( image[i ] > this.blackbarThreshold ||
|
||||
image[i+1] > this.blackbarThreshold ||
|
||||
image[i+2] > this.blackbarThreshold ){
|
||||
return true;
|
||||
}
|
||||
}
|
||||
@ -765,9 +765,9 @@ class EdgeDetect{
|
||||
|
||||
_blackbarTest_dbg(image, start, end){
|
||||
for(var i = start; i < end; i += 4){
|
||||
if( image[i ] > this.blackbarTreshold ||
|
||||
image[i+1] > this.blackbarTreshold ||
|
||||
image[i+2] > this.blackbarTreshold ){
|
||||
if( image[i ] > this.blackbarThreshold ||
|
||||
image[i+1] > this.blackbarThreshold ||
|
||||
image[i+2] > this.blackbarThreshold ){
|
||||
|
||||
this.conf.debugCanvas.trace(i, DebugCanvasClasses.VIOLATION)
|
||||
return true;
|
||||
@ -782,13 +782,13 @@ class EdgeDetect{
|
||||
var detections = 0;
|
||||
|
||||
for(var i = start; i < end; i += 4){
|
||||
if( image[i ] > this.blackbarTreshold ||
|
||||
image[i+1] > this.blackbarTreshold ||
|
||||
image[i+2] > this.blackbarTreshold ){
|
||||
if( image[i ] > this.blackbarThreshold ||
|
||||
image[i+1] > this.blackbarThreshold ||
|
||||
image[i+2] > this.blackbarThreshold ){
|
||||
++detections;
|
||||
}
|
||||
}
|
||||
if(detections >= this.detectionTreshold){
|
||||
if(detections >= this.detectionThreshold){
|
||||
if(edgeCandidates[sampleOffset] != undefined)
|
||||
edgeCandidates[sampleOffset].count++;
|
||||
else{
|
||||
@ -802,16 +802,16 @@ class EdgeDetect{
|
||||
var detections = 0;
|
||||
|
||||
for(var i = start; i < end; i += 4){
|
||||
if( image[i ] > this.blackbarTreshold ||
|
||||
image[i+1] > this.blackbarTreshold ||
|
||||
image[i+2] > this.blackbarTreshold ){
|
||||
if( image[i ] > this.blackbarThreshold ||
|
||||
image[i+1] > this.blackbarThreshold ||
|
||||
image[i+2] > this.blackbarThreshold ){
|
||||
++detections;
|
||||
this.conf.debugCanvas.trace(i, DebugCanvasClasses.EDGEDETECT_IMAGE);
|
||||
} else {
|
||||
this.conf.debugCanvas.trace(i, DebugCanvasClasses.WARN);
|
||||
}
|
||||
}
|
||||
if(detections >= this.detectionTreshold){
|
||||
if(detections >= this.detectionThreshold){
|
||||
if(edgeCandidates[sampleOffset] != undefined)
|
||||
edgeCandidates[sampleOffset].count++;
|
||||
else{
|
||||
|
@ -118,14 +118,14 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="label">Letterbox misallignment treshold</div>
|
||||
<div class="label">Letterbox misallignment threshold</div>
|
||||
<div class="description">
|
||||
If top and bottom bar differ by more than this (0 — 0%, 1 — 100%), we do not correct aspect ratio.
|
||||
</div>
|
||||
<div class="indent">
|
||||
<div class="flex flex-row row-padding">
|
||||
<div class="flex label-secondary">
|
||||
Letterbox misalignment treshold
|
||||
Letterbox misalignment threshold
|
||||
</div>
|
||||
<div class="flex flex-input">
|
||||
<input type=""
|
||||
@ -203,15 +203,15 @@
|
||||
<b>Black level:</b> 0-255, where 0 is black. Anything below this number across all RGB components is considered black.
|
||||
Black level can decrease if we detect darker blacks in the video. Lower values —> more accurate edge detection;
|
||||
higher values —> detection is more forgiving to videos with less-than-ideal contrast ratios.<br/>
|
||||
<b>Treshold:</b> If pixel is darker than the sum of black level and this value, it's considered black. In theory, lower -> better.
|
||||
<b>Threshold:</b> If pixel is darker than the sum of black level and this value, it's considered black. In theory, lower -> better.
|
||||
In practice, this value needs to be kept surprisingly high (8 might not be high enough), otherwise compression artifacts in videos
|
||||
start having an adverse effect on quality of automatic detection.
|
||||
<b>Gradient detection:</b> Attempt to discriminate between hard edges and gradients. 'Strict' and 'Lax' prevent aspect ratio
|
||||
changes if we detected gradients instead of a legit edge. This results in fewer false positives, but may cause aspect ratio
|
||||
detection to not work on darker frames.<br/>
|
||||
<b>Image treshold:</b> When gradient detection is enabled, everything that's brighter than the sum of black level, treshold and
|
||||
<b>Image threshold:</b> When gradient detection is enabled, everything that's brighter than the sum of black level, threshold and
|
||||
ths is considered to be non-black.<br/>
|
||||
<b>Gradient treshold:</b> If the distance between last black pixel and the first non-black pixel in a given column is more than this value,
|
||||
<b>Gradient threshold:</b> If the distance between last black pixel and the first non-black pixel in a given column is more than this value,
|
||||
we're looking at a gradient. If this happens while gradient detection is on, we don't change aspect ratio.<br/>
|
||||
<b>Gradient sample size:</b> This option is really only relevant when using 'lax' gradient detection. If we don't find a non-black pixel
|
||||
within this distance after last known black pixel when scanning a column, we presume we're not on a gradient.
|
||||
@ -229,11 +229,11 @@
|
||||
</div>
|
||||
<div class="flex flex-row row-padding">
|
||||
<div class="flex label-secondary">
|
||||
Treshold:
|
||||
Threshold:
|
||||
</div>
|
||||
<div class="flex flex-input">
|
||||
<input type="number"
|
||||
v-model="settings.active.arDetect.blackbar.treshold"
|
||||
v-model="settings.active.arDetect.blackbar.threshold"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -247,21 +247,21 @@
|
||||
</div>
|
||||
<div v-if="showAdvancedOptions" class="flex flex-row row-padding">
|
||||
<div class="flex label-secondary">
|
||||
Image treshold
|
||||
Image threshold
|
||||
</div>
|
||||
<div class="flex flex-input">
|
||||
<input type="number"
|
||||
v-model="settings.active.arDetect.blackbar.imageTreshold"
|
||||
v-model="settings.active.arDetect.blackbar.imageThreshold"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="showAdvancedOptions" class="flex flex-row row-padding">
|
||||
<div class="flex label-secondary">
|
||||
Gradient treshold:
|
||||
Gradient threshold:
|
||||
</div>
|
||||
<div class="flex flex-input">
|
||||
<input type="number"
|
||||
v-model="settings.active.arDetect.blackbar.gradientTreshold"
|
||||
v-model="settings.active.arDetect.blackbar.gradientThreshold"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -283,8 +283,8 @@
|
||||
Black frame detection is a quick test that tries to determine whether we're looking at a black frame. This test prevents
|
||||
us from wasting precious time trying to detect aspect ratio on frames that are too dark for reliable aspect ratio detection.<br/>
|
||||
<b>Sample width, height:</b> Sample size. Since we're checking <i>every</i> pixel in this sample, dimensions should be kept small.<br/>
|
||||
<b>Cumulative treshold:</b> If we add the maximum of red, green, blue values of every pixel in the sample and they total more than this, the frame is bright enough.<br/>
|
||||
<b>Black pixel treshold:</b> If more than this fraction of pixels from the sample are "black", we consider the frame black. This overrules cumulative treshold.
|
||||
<b>Cumulative threshold:</b> If we add the maximum of red, green, blue values of every pixel in the sample and they total more than this, the frame is bright enough.<br/>
|
||||
<b>Black pixel threshold:</b> If more than this fraction of pixels from the sample are "black", we consider the frame black. This overrules cumulative threshold.
|
||||
</div>
|
||||
<div class="indent">
|
||||
<div class="flex flex-row row-padding">
|
||||
@ -309,17 +309,17 @@
|
||||
</div>
|
||||
<div class="flex flex-row row-padding">
|
||||
<div class="flex label-secondary">
|
||||
Cumulative treshold:
|
||||
Cumulative threshold:
|
||||
</div>
|
||||
<div class="flex flex-input">
|
||||
<input type="number"
|
||||
v-model="settings.active.arDetect.blackframe.cumulativeTreshold"
|
||||
v-model="settings.active.arDetect.blackframe.cumulativeThreshold"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-row row-padding">
|
||||
<div class="flex label-secondary">
|
||||
Black pixel treshold:
|
||||
Black pixel threshold:
|
||||
</div>
|
||||
<div class="flex flex-input">
|
||||
<input type=""
|
||||
@ -335,8 +335,8 @@
|
||||
Options in this section govern edge detection.<br/>
|
||||
<b>Sample width</b> — In a bid to detect "false" edges, we take two samples this many pixels wide near the point of our potential edge. One sample must be completely black, the other must contain a set
|
||||
amount of non-black pixels.<br/>
|
||||
<b>Detection treshold</b> — non-black sample mentioned above needs to contain at least this many non-black pixels.<br/>
|
||||
<b>Single side confirmation treshold</b> — quorum needed to establish aspect ratio in case we manage to detect an edge only on one side of the video. (0-0.5)<br/>
|
||||
<b>Detection threshold</b> — non-black sample mentioned above needs to contain at least this many non-black pixels.<br/>
|
||||
<b>Single side confirmation threshold</b> — quorum needed to establish aspect ratio in case we manage to detect an edge only on one side of the video. (0-0.5)<br/>
|
||||
<b>Logo threshold</b> — if edge candidate sits with count greater than this*all_samples, it can't be a logo or a watermark.<br/>
|
||||
<b>Ignore middle area</b> — When trying to detect area, ignore area between middle and canvasHeight * {this value} pixels towards the edge.<br/>
|
||||
<b>Detect limit</b> — stop search after finding a potential candidate in this many sample columns (%, 0-1)<br/>
|
||||
@ -354,31 +354,31 @@
|
||||
</div>
|
||||
<div class="flex flex-row row-padding">
|
||||
<div class="flex label-secondary">
|
||||
Detection treshold (px):
|
||||
Detection threshold (px):
|
||||
</div>
|
||||
<div class="flex flex-input">
|
||||
<input type="number"
|
||||
v-model="settings.active.arDetect.edgeDetection.detectionTreshold"
|
||||
v-model="settings.active.arDetect.edgeDetection.detectionThreshold"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-row row-padding">
|
||||
<div class="flex label-secondary">
|
||||
Single side confirmation treshold:
|
||||
Single side confirmation threshold:
|
||||
</div>
|
||||
<div class="flex flex-input">
|
||||
<input
|
||||
v-model="settings.active.arDetect.edgeDetection.singleSideConfirmationTreshold"
|
||||
v-model="settings.active.arDetect.edgeDetection.singleSideConfirmationThreshold"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="flex flex-row row-padding" v-if="showAdvancedOptions">
|
||||
<div class="flex label-secondary">
|
||||
Logo treshold:
|
||||
Logo threshold:
|
||||
</div>
|
||||
<div class="flex flex-input">
|
||||
<input
|
||||
v-model="settings.active.arDetect.edgeDetection.logoTreshold"
|
||||
v-model="settings.active.arDetect.edgeDetection.logoThreshold"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -409,7 +409,7 @@
|
||||
Quick test to determine whether aspect ratio hasn't changed. Test is performed by taking two samples on each edge of the image —
|
||||
one in the last row of the letterbox (blackbar), and one in the first row of the video (image).<br/>
|
||||
<b>Ignore edge margin:</b> We don't take blackbar and image samples {width * this} many pixels from left and right edge.<br/>
|
||||
<b>Image treshold:</b> If all pixels in blackbar are black and this fraction (0-1) of pixels in image are non-black, we presume that aspect ratio hasn't changed.<br/>
|
||||
<b>Image threshold:</b> If all pixels in blackbar are black and this fraction (0-1) of pixels in image are non-black, we presume that aspect ratio hasn't changed.<br/>
|
||||
<b>Edge tolerance (px):<b> I lied. Blackbar test happens this many pixels away from the last row of the letterbox.
|
||||
</div>
|
||||
<div class="indent">
|
||||
@ -439,7 +439,7 @@
|
||||
</div>
|
||||
<div class="flex flex-input">
|
||||
<input type="number"
|
||||
v-model="settings.active.arDetect.canvasDimensions.guardLine.imageTestTreshold"
|
||||
v-model="settings.active.arDetect.canvasDimensions.guardLine.imageTestThreshold"
|
||||
/>
|
||||
</div>
|
||||
</div>
|
||||
@ -456,14 +456,14 @@
|
||||
</div>
|
||||
|
||||
<div v-if="showAdvancedOptions">
|
||||
<div class="label">Aspect ratio change treshold</div>
|
||||
<div class="label">Aspect ratio change threshold</div>
|
||||
<div class="description">
|
||||
New and old aspect ratio must differ by at least this much (%, 1=100%) before we trigger aspect ratio correction.
|
||||
</div>
|
||||
<div class="indent">
|
||||
<div class="flex flex-row row-padding">
|
||||
<div class="flex label-secondary">
|
||||
Aspect ratio change treshold.
|
||||
Aspect ratio change threshold.
|
||||
</div>
|
||||
<div class="flex flex-input">
|
||||
<input type=""
|
||||
|
@ -98,18 +98,18 @@
|
||||
<b>Hybrid:</b> stretches the video to fit the player, but only if cropping didn't completely remove the black bars.<br/>
|
||||
<b>Thin borders:</b> stretches only if the width of black borders after cropping is thin.
|
||||
<br/>
|
||||
Treshold for thin borders can be defined below.
|
||||
Threshold for thin borders can be defined below.
|
||||
</div>
|
||||
<div class="indent">
|
||||
<div class="flex flex-row row-padding">
|
||||
<div class="flex label-secondary">
|
||||
Thin border treshold:
|
||||
Thin border threshold:
|
||||
</div>
|
||||
<div class="flex flex-input">
|
||||
<input type="number"
|
||||
step="any"
|
||||
:value="settings.active.stretch.conditionalDifferencePercent"
|
||||
@input="updateStretchTreshold($event.target.value)"
|
||||
@input="updateStretchThreshold($event.target.value)"
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
@ -168,11 +168,11 @@ export default {
|
||||
this.settings.active.sites['@global'].stretch = mode;
|
||||
this.settings.save();
|
||||
},
|
||||
updateStretchTreshold(newTreshold) {
|
||||
if (!newTreshold || isNaN(newTreshold)) {
|
||||
updateStretchThreshold(newThreshold) {
|
||||
if (!newThreshold || isNaN(newThreshold)) {
|
||||
return;
|
||||
}
|
||||
this.settings.active.stretch.conditionalDifferencePercent = newTreshold;
|
||||
this.settings.active.stretch.conditionalDifferencePercent = newThreshold;
|
||||
this.settings.save();
|
||||
},
|
||||
resetSettings() {
|
||||
|
@ -17,7 +17,7 @@ var ui = {
|
||||
stretchSettings: {
|
||||
buttonContainer: BaseElement.fromExisting(document.getElementById('_general_extension_global_stretch')),
|
||||
buttons: [],
|
||||
thinBordersTresholdInput: document.getElementById('_general_extension_global_stretch_thin_borders_treshold_input')
|
||||
thinBordersThresholdInput: document.getElementById('_general_extension_global_stretch_thin_borders_threshold_input')
|
||||
}
|
||||
},
|
||||
|
||||
|
@ -89,11 +89,11 @@
|
||||
<b>Hybrid:</b> stretches the video to fit the player, but only if cropping didn't completely remove the black bars.<br/>
|
||||
<b>Thin borders:</b> stretches only if the width of black borders after cropping is thin.
|
||||
<br/>
|
||||
Treshold for thin borders can be defined below.
|
||||
Threshold for thin borders can be defined below.
|
||||
</span>
|
||||
<div class="flex flex-row">
|
||||
<div class="flex flex-input-label">
|
||||
Thin border treshold (%):
|
||||
Thin border threshold (%):
|
||||
</div>
|
||||
<div class="flex flex-input">
|
||||
<input id="_general_extension_global_stretch_thin_borders_input" type="number">
|
||||
|
Loading…
Reference in New Issue
Block a user