- From: Paul Neave <paul.neave@gmail.com>
- Date: Mon, 30 Apr 2012 21:57:51 +0100
- To: Anant Narayanan <anant@mozilla.com>
- Cc: "public-media-capture@w3.org" <public-media-capture@w3.org>
Hi Anant,
In principle this sounds great. Do you have any idea what performance increase you would expect to gain? Perhaps the browser could interpret a drawImage(video…) call and make it more efficient by inferring that a video element is being drawn, and instead access the video's stream rather than drawing the element the standard way.
Also, would is be possible to stream a video into a WebGL context as well as a 2d context?
I already have a WebGL web app that uses getUserMedia and updates the context via a requestAnimationFrame loop: http://neave.com/webcam/html5/
Paul.
On Monday, 30 April 2012 at 18:57, 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.
>
> Look forward to your feedback!
>
> Regards,
> -Anant
Received on Monday, 30 April 2012 20:58:24 UTC