- From: Rob Manson <robman@mob-labs.com>
- Date: Wed, 05 Nov 2014 10:46:03 +1100
- To: public-canvas-api@w3.org
Doh...I moved around the references and didn't update some of the [n]
links 8(
The second [1] and [2] should be [3] and [4].
Apologies.
roBman
On 5/11/14 10:04 AM, Rob Manson wrote:
> Hi Rick,
>
> First, I'd say it's definitely worth checkout out the presentation[1]
> and video of the demos[2] that were presented at TPAC.
>
>
>> It's also not clear to me how these API's will be used.
>> Can you write some very high pseudo-code that shows how a typical author
>> would get/set the data and present it to the user?
>
> Here's some pseudo code examples[1] in our initial Use Cases document.
>
> Here's the one for a 2d canvas context (although it should probably
> use rAF() instead of setInterval()).
> NOTE: This obviously assumes the 2d drawing context is already setup.
>
> setInterval(function() {
> context.drawImage(video, 0, 0, w, h);
>
> var depthData = context.getDepthData(0, 0, w, h);
> // depthData.data is an Uint16Array for depth stream.
> console.log(depthData.data instanceof Uint16Array); // prints "true"
> var depthMap = imageData.data;
>
> // the depthMap is an array of 16-bit unsigned integers
> for (var i = 0; i < depthMap.length; i++) {
> var depth = depthMap[i];
> // process the 16-bit unsigned depth value
> }
> }, 1000 / fps);
>
> So you can see this is designed based on the existing
> canvas2dcontext.drawImage(video, ...)/getImageData(...) model that is
> already widely used (see discussion below).
>
>
>> Can you explain why you would like to see this integrated with
>> canvas?
>
> Well canvas objects deliver the only pipeline available to Computer
> Vision related media stream processing on the Web Platform today.
>
> <video> -> <canvas(2d/3d)> -> Typed Array -> js -> *
> (using .drawImage) (using .getImageData)
>
> So this pattern seemed like an obvious starting point for us.
>
> BTW: On a related note, I'm just about to circulate the results of a
> test framework we've been running across all the main browser/OS
> combinations that looks at the overall performance of these types of
> media stream processing pipelines - especially contrasting the
> 2dcanvas and the webgl canvas pipelines. I'll post info to this list
> soon and would appreciate any feedback.
>
>
>> It seems that the extension to Canvas 2D could be implemented as a
>> new standalone object that works in conjunction with a media element
>> (that is possibly drawn to a canvas)
>
> I'm not quite clear exactly how you see this might work. Could you
> please sketch this idea out a little bit more?
>
> BTW: Initially, I used to think we needed a way to decode the video
> frames without touching other DOM elements like canvas at all. But
> after running our test framework it seems that some of the
> interactions between <video> and <canvas> have already been really
> well optimised.
>
> Of course, I and the other authors of this depth extension are very
> open to suggestions for better solutions though.
>
>
>> The model states that this should taint the canvas [1].
>> Is it possible today to draw a local video stream from your camera
>> to a 2d context and read the pixels?
>
> Yes. The model we have applied so far is that we pack the Uint16Array
> data into as few channels as possible (in WebGL we're using 3 in a
> 5_6_5 structure) so they can be extracted and recombined in as few
> steps as possible.
>
> There is also some existing work on how to pack these uint16's into
> existing codecs - see reference 8[2] on our Use Cases page.
>
> Our thoughts are that the getDepthData() method would take the data
> from the RGBA channels from the Uint8Array in the depth video and
> recombine them in an agreed way to pack them into a Uint16Array and
> return that.
>
> I think the behaviour would be exactly parallel to how writing <video>
> frames to a 2d canvas drawing context works today.
>
> roBman
>
> [1]
> https://docs.google.com/presentation/d/1mwlD8H_RzlB2JheyjqXxa7sMSMTN8x96VgSzjy5B4pc/edit?usp=sharing
> [2] https://www.youtube.com/watch?v=cZiSPsaZ_Dc
> https://www.youtube.com/watch?v=mjU_uF6bS5E
> https://www.youtube.com/watch?v=LSaI2TaAxYc
> [3] https://www.w3.org/wiki/Media_Capture_Depth_Stream_Extension#Examples
> [4]
> https://www.w3.org/wiki/Media_Capture_Depth_Stream_Extension#References
>
>
>
>
>
Received on Tuesday, 4 November 2014 23:39:23 UTC