Reimplement blackframe. Start timing blackframe execution. Add some placeholder UI for autodetection settings
This commit is contained in:
parent
a09ea26b0e
commit
36aa226e9c
@ -33,7 +33,7 @@
|
|||||||
<div class="stats">
|
<div class="stats">
|
||||||
<b>Average: </b>
|
<b>Average: </b>
|
||||||
<span class="draw">draw (main) {{(performanceData?.imageDraw?.averageTime ?? 0).toFixed(1)}} ms</span> |
|
<span class="draw">draw (main) {{(performanceData?.imageDraw?.averageTime ?? 0).toFixed(1)}} ms</span> |
|
||||||
<span class="draw-blackframe">draw (blackframe) {{(performanceData?.blackFrameDraw?.averageTime ?? 0).toFixed(1)}} ms</span> |
|
<span class="draw-blackframe">blackframe {{(performanceData?.blackFrame?.averageTime ?? 0).toFixed(1)}} ms</span> |
|
||||||
<span class="processing">
|
<span class="processing">
|
||||||
processing {{
|
processing {{
|
||||||
Math.max(
|
Math.max(
|
||||||
@ -53,7 +53,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="draw-blackframe"
|
class="draw-blackframe"
|
||||||
:style="{'width': (performanceData?.blackFrameDraw?.averageTime ?? 0) + '%'}"
|
:style="{'width': (performanceData?.blackFrame?.averageTime ?? 0) + '%'}"
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
@ -74,7 +74,7 @@
|
|||||||
<div class="stats">
|
<div class="stats">
|
||||||
<b>Worst: </b>
|
<b>Worst: </b>
|
||||||
<span class="draw">draw (main) {{(performanceData?.imageDraw?.worstTime ?? 0).toFixed(1)}} ms</span> |
|
<span class="draw">draw (main) {{(performanceData?.imageDraw?.worstTime ?? 0).toFixed(1)}} ms</span> |
|
||||||
<span class="draw-blackframe">draw (blackframe) {{(performanceData?.blackFrameDraw?.worstTime ?? 0).toFixed(1)}} ms</span> |
|
<span class="draw-blackframe">blackframe {{(performanceData?.blackFrame?.worstTime ?? 0).toFixed(1)}} ms</span> |
|
||||||
<span class="processing">
|
<span class="processing">
|
||||||
processing {{
|
processing {{
|
||||||
Math.max(
|
Math.max(
|
||||||
@ -116,11 +116,10 @@
|
|||||||
<div class="stats">
|
<div class="stats">
|
||||||
<b>AR change (average): </b>
|
<b>AR change (average): </b>
|
||||||
<span class="draw">draw (main) {{(performanceData?.imageDraw?.averageTime ?? 0).toFixed(1)}} ms</span> |
|
<span class="draw">draw (main) {{(performanceData?.imageDraw?.averageTime ?? 0).toFixed(1)}} ms</span> |
|
||||||
<span class="draw-blackframe">draw (blackframe) {{(performanceData?.blackFrameDraw?.averageTime ?? 0).toFixed(1)}} ms</span> |
|
<span class="draw-blackframe">blackframe {{(performanceData?.blackFrame?.averageTime ?? 0).toFixed(1)}} ms</span> |
|
||||||
<span class="processing">processing {{
|
<span class="processing">processing {{
|
||||||
(
|
(
|
||||||
(performanceData?.blackFrame?.averageTime ?? 0)
|
(performanceData?.fastLetterbox?.averageTime ?? 0)
|
||||||
+ (performanceData?.fastLetterbox?.averageTime ?? 0)
|
|
||||||
+ (performanceData?.edgeDetect?.averageTime ?? 0)
|
+ (performanceData?.edgeDetect?.averageTime ?? 0)
|
||||||
).toFixed(1)
|
).toFixed(1)
|
||||||
}} ms</span>
|
}} ms</span>
|
||||||
@ -133,15 +132,14 @@
|
|||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="draw-blackframe"
|
class="draw-blackframe"
|
||||||
:style="{'width': (performanceData?.blackFrameDraw?.averageTime ?? 0) + '%'}"
|
:style="{'width': (performanceData?.blackFrame?.averageTime ?? 0) + '%'}"
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="processing"
|
class="processing"
|
||||||
:style="{
|
:style="{
|
||||||
'width': (
|
'width': (
|
||||||
(performanceData?.blackFrame?.averageTime ?? 0)
|
(performanceData?.fastLetterbox?.averageTime ?? 0)
|
||||||
+ (performanceData?.fastLetterbox?.averageTime ?? 0)
|
|
||||||
+ (performanceData?.edgeDetect?.averageTime ?? 0)
|
+ (performanceData?.edgeDetect?.averageTime ?? 0)
|
||||||
) + '%'
|
) + '%'
|
||||||
}"
|
}"
|
||||||
@ -153,11 +151,10 @@
|
|||||||
<div class="stats">
|
<div class="stats">
|
||||||
<b>AR change (worst): </b>
|
<b>AR change (worst): </b>
|
||||||
<span class="draw">draw (main) {{(performanceData?.imageDraw?.worstTime ?? 0).toFixed(1)}} ms</span> |
|
<span class="draw">draw (main) {{(performanceData?.imageDraw?.worstTime ?? 0).toFixed(1)}} ms</span> |
|
||||||
<span class="draw-blackframe">draw (blackframe) {{(performanceData?.blackFrameDraw?.worstTime ?? 0).toFixed(1)}} ms</span> |
|
<span class="draw-blackframe">blackframe {{(performanceData?.blackFrame?.worstTime ?? 0).toFixed(1)}} ms</span> |
|
||||||
<span class="processing">processing {{
|
<span class="processing">processing {{
|
||||||
(
|
(
|
||||||
(performanceData?.blackFrame?.worstTime ?? 0)
|
(performanceData?.fastLetterbox?.worstTime ?? 0)
|
||||||
+ (performanceData?.fastLetterbox?.worstTime ?? 0)
|
|
||||||
+ (performanceData?.edgeDetect?.worstTime ?? 0)
|
+ (performanceData?.edgeDetect?.worstTime ?? 0)
|
||||||
).toFixed(1)
|
).toFixed(1)
|
||||||
}} ms</span>
|
}} ms</span>
|
||||||
@ -170,15 +167,14 @@
|
|||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="draw-blackframe"
|
class="draw-blackframe"
|
||||||
:style="{'width': (performanceData?.blackFrameDraw?.worstTime ?? 0) + '%'}"
|
:style="{'width': (performanceData?.blackFrame?.worstTime ?? 0) + '%'}"
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="processing"
|
class="processing"
|
||||||
:style="{
|
:style="{
|
||||||
'width': (
|
'width': (
|
||||||
(performanceData?.blackFrame?.worstTime ?? 0)
|
(performanceData?.fastLetterbox?.worstTime ?? 0)
|
||||||
+ (performanceData?.fastLetterbox?.worstTime ?? 0)
|
|
||||||
+ (performanceData?.edgeDetect?.worstTime ?? 0)
|
+ (performanceData?.edgeDetect?.worstTime ?? 0)
|
||||||
) + '%'
|
) + '%'
|
||||||
}"
|
}"
|
||||||
@ -190,6 +186,71 @@
|
|||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="settings-segment">
|
||||||
|
<h2>Basic settings</h2>
|
||||||
|
|
||||||
|
<div class="option">
|
||||||
|
<div class="name">
|
||||||
|
Autodetection frequency
|
||||||
|
</div>
|
||||||
|
<div class="description">
|
||||||
|
Shorter intervals (left side of the slider) are more responsive to changes in aspect ratio detections,
|
||||||
|
but requires more system resources.
|
||||||
|
</div>
|
||||||
|
<div class="indent">
|
||||||
|
<div class="flex flex-row row-padding">
|
||||||
|
<div class="flex flex-input">
|
||||||
|
More often <small>(~60/s)</small>
|
||||||
|
<input type="range"
|
||||||
|
:value="Math.log(settings.active.arDetect.timers.playing)"
|
||||||
|
@change="setArCheckFrequency($event.target.value)"
|
||||||
|
min="2.3"
|
||||||
|
max="9.3"
|
||||||
|
step="any"
|
||||||
|
/>
|
||||||
|
Less often <small>(~1/10s)</small>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="option">
|
||||||
|
<div class="name">
|
||||||
|
Autodetection sensitivity
|
||||||
|
</div>
|
||||||
|
<div class="description">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="field">
|
||||||
|
<div class="label">Maximum allowed vertical video misalignment:</div>
|
||||||
|
<div class="input">
|
||||||
|
<input v-model="settings.active.arDetect.allowedMisaligned" />
|
||||||
|
</div>
|
||||||
|
<div class="description">
|
||||||
|
Ultrawidify detects letterbox only if video is vertically centered. Some people are bad at vertically
|
||||||
|
centering the content, though. This is how off-center the video can be before autodetection will
|
||||||
|
refuse to crop it.
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="option">
|
||||||
|
<div class="name">Video sample size</div>
|
||||||
|
<div class="input">
|
||||||
|
<input v-model="settings.active.arDetect.canvasDimensions.sampleCanvas.width" /> x <input v-model="settings.active.arDetect.canvasDimensions.sampleCanvas.height" />
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="field">
|
||||||
|
<div class="label">Sample columns:</div>
|
||||||
|
<div class="input"><input v-model="settings.active.arDetect.sampling.staticCols" /></div>
|
||||||
|
</div>
|
||||||
|
<div class="field">
|
||||||
|
<div class="label">Sample rows:</div>
|
||||||
|
<div class="input"><input v-model="settings.active.arDetect.sampling.staticRows" /></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -848,17 +848,19 @@ class ArDetector {
|
|||||||
const imageData = this.context.getImageData(0, 0, this.canvas.width, this.canvas.height).data;
|
const imageData = this.context.getImageData(0, 0, this.canvas.width, this.canvas.height).data;
|
||||||
timerResults.imageDrawTime = performance.now() - startTime;
|
timerResults.imageDrawTime = performance.now() - startTime;
|
||||||
|
|
||||||
|
startTime = performance.now();
|
||||||
|
|
||||||
const bfAnalysis = await this.blackframeTest(imageData);
|
const bfAnalysis = await this.blackframeTest(imageData);
|
||||||
|
|
||||||
|
timerResults.blackFrameProcessTime = performance.now() - startTime;
|
||||||
|
|
||||||
if (bfAnalysis.isBlack) {
|
if (bfAnalysis.isBlack) {
|
||||||
// we don't do any corrections on frames confirmed black
|
// we don't do any corrections on frames confirmed black
|
||||||
this.logger.log('info', 'arDetect_verbose', `%c[ArDetect::frameCheck] Black frame analysis suggests this frame is black or too dark. Doing nothing.`, "color: #fa3", bfAnalysis);
|
this.logger.log('info', 'arDetect_verbose', `%c[ArDetect::frameCheck] Black frame analysis suggests this frame is black or too dark. Doing nothing.`, "color: #fa3", bfAnalysis);
|
||||||
timerResults.blackFrameDrawTime = bfAnalysis.processingTime.blackFrameDrawTime;
|
|
||||||
timerResults.blackFrameProcessTime = bfAnalysis.processingTime.blackFrameProcessTime;
|
|
||||||
this.addPerformanceMeasurement(timerResults);
|
this.addPerformanceMeasurement(timerResults);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
startTime = performance.now();
|
|
||||||
const fastLetterboxTestRes = this.fastLetterboxPresenceTest(imageData, sampleCols);
|
const fastLetterboxTestRes = this.fastLetterboxPresenceTest(imageData, sampleCols);
|
||||||
timerResults.fastLetterboxTime = performance.now() - startTime;
|
timerResults.fastLetterboxTime = performance.now() - startTime;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user