Load background detection network only when required

This commit is contained in:
Pierre HUBERT 2021-01-30 20:08:27 +01:00
parent 08091425f1
commit 9bee589dc4

View File

@ -962,41 +962,46 @@ class CallWindow extends CustomEvents {
canvasTarget.height = videoTarget.height; canvasTarget.height = videoTarget.height;
bodyPix.load({ // Process images
multiplier: 0.75, (async () => {
stride: 32, try {
quantBytes: 4
}).then( net => {
(async () => {
try {
while(videoTrack.readyState == "live")
{
if (this.blurBackground) {
// Load network if required
if (!this.backgroundDetectionNetwork)
{
this.backgroundDetectionNetwork = await bodyPix.load({
multiplier: 0.75,
stride: 32,
quantBytes: 4
});
}
const segmentation = await this.backgroundDetectionNetwork.segmentPerson(videoTarget);
const backgroundBlurAmount = 6;
const edgeBlurAmount = 2;
const flipHorizontal = true;
bodyPix.drawBokehEffect(
canvasTarget, videoTarget, segmentation, backgroundBlurAmount,
edgeBlurAmount, flipHorizontal);
}
while(videoTrack.readyState == "live") else {
{ canvas.drawImage(videoTarget, 0, 0, videoTarget.width, videoTarget.height);
if (this.blurBackground) { await new Promise((res, rej) => setTimeout(() => res(), 40));
const segmentation = await net.segmentPerson(videoTarget);
const backgroundBlurAmount = 6;
const edgeBlurAmount = 2;
const flipHorizontal = true;
bodyPix.drawBokehEffect(
canvasTarget, videoTarget, segmentation, backgroundBlurAmount,
edgeBlurAmount, flipHorizontal);
}
else {
canvas.drawImage(videoTarget, 0, 0, videoTarget.width, videoTarget.height);
await new Promise((res, rej) => setTimeout(() => res(), 40));
}
} }
} }
catch(e) }
{ catch(e)
console.error("Failure", e); {
} console.error("Failure", e);
})(); }
}); })();
stream = canvasTarget.captureStream(); stream = canvasTarget.captureStream();