- From: Charles Pritchard <chuck@jumis.com>
- Date: Mon, 30 Apr 2012 12:04:00 -0700
- To: Anant Narayanan <anant@mozilla.com>
- CC: "public-media-capture@w3.org" <public-media-capture@w3.org>
On 4/30/12 10:57 AM, Anant Narayanan wrote: > Hi all, > > As we try to resolve the <video> assignment issue, I'd like begin the > <canvas> discussion in parallel. > > I propose that we allow direct assignment of a MediaStream to a > <canvas> object, like so: > > let stream = [MediaStream obtained by some means] > let ctx = document.getElementById('canvas').getContext('2d'); > ctx.stream = stream; > > If we decide to go with the URL approach for <video> we can change > this API to match. The key point though, is to allow a <canvas> to be > a *direct* recipient of video data from a MediaStream. > > It is possible to do this without explicit support from the > getUserMedia spec: > > let canvas, video; [DOM objects preset] > canvas.getContext('2d').drawImage(video, x, y, w, h, offsets...); > > However, the developer will have to call drawImage on a DOM timer. It > is much more efficient and cleaner for the MediaStream to manipulate > the <canvas> directly. > > It is a little weird to have a canvas in the DOM changing constantly > (at the frame rate of the MediaStream), but I think the benefits > outweigh the drawbacks. We've got requestAnimationFrame to keep in reasonable loop and to synchronize the rest of our [canvas] drawing calls. RoC has proposed that a "stream" object exist with Canvas, but the concept is for output, not input -- as part of his media stream processing proposal. I'm all for efficiency, but I do not see what the benefit of using Canvas is, if there are no other drawing calls attached. -Charles
Received on Monday, 30 April 2012 19:04:26 UTC