The camera is captured to a video element, which is mapped onto a canvas, and a red square is added.
The canvas is then captured to an ImageData object, and painted onto a second canvas.
A stream is captured from the second canvas element using its
captureStream() method and set as the srcObject of the video element.
The inputStream, source,
canvasIn, canvasOut,
result, and stream variables are in global
scope, so you can
inspect them from the browser console.