W3C home > Mailing lists > Public > public-media-capture@w3.org > May 2012

RE: Re: Re: Proposed resolution for open items

From: Travis Leithead <travis.leithead@microsoft.com>
Date: Tue, 15 May 2012 17:31:50 +0000
To: Randell Jesup <randell-ietf@jesup.org>, "public-media-capture@w3.org" <public-media-capture@w3.org>
Message-ID: <9768D477C67135458BF978A45BCF9B383834BC90@TK5EX14MBXW604.wingroup.windeploy.ntdev.microsoft.com>
I certainly like the idea of an API that engages the devices "camera/photo" mode, versus, just capturing a snapshot of the video stream.

The JavaScript WinRT MediaCapture object in Windows 8 has a similar API: http://msdn.microsoft.com/en-us/library/windows/apps/hh700836.aspx, exposed just for this use case.


>-----Original Message-----
>From: Randell Jesup [mailto:randell-ietf@jesup.org]
>Sent: Tuesday, May 15, 2012 12:12 AM
>To: public-media-capture@w3.org
>Subject: Fwd: Re: Re: Proposed resolution for open items
>
>Regarding the "simple capture API":
>
>Robert O'Callahan had indicated he'd propose an alternative.  Here's a
>possibility he came up with.  Note as he mentions we've already landed
>in Mozilla nightlies media_element.src = stream.   Note that this would
>NOT work well with createObjectURL, especially if the "avoids leaks
>better" option for a single use is in play.  (It's retrieving the
>mediastream from media_element.src.)  To work at all with
>URL.createObjectURL there would need to be a URL.objectFromURL or some
>equivalent.  (Another example of why .src = stream is a good idea, and
>createObjectURL is clumsy.)
>
>   Randell
>
>This is about an app grabbing a preview stream and then, when the user
>presses a "take photo" button, firing the flash and grabbing a high-res
>snapshot, right? Here's a thought experiment:
>
><video id="preview" onclick="takePhoto(event)"></video>
><script>
>function onsuccess(stream) {
>   document.getElementById("preview").src = stream;
>}
>function blobCallback(blob) {
>   // This blob contains the image data; do whatever needs to be done
>with it
>}
>function takePhoto(event) {
>   var stream = event.target.src;
>   var videoTrack = stream.videoTracks[0];
>   videoTrack.takeSnapshot({}, blobCallback);
>}
>navigator.getUserMedia({video:true}, onsuccess);
></script>
>
>Apart from allowing HTMLMediaElement.src to be a MediaStream (already on
>mozilla-central!), the only new API here a VideoMediaStreamTrack
>subclass of MediaStreamTrack, with a takeSnapshot method on it. I've
>given that method a blob callback to asynchronously return the snapshot
>image, and an options object. By default I think the snapshot should
>autofocus, autoflash, etc, but you could provide options to override all
>of those things. I'm not enough of a domain expert to say what all those
>options should be. By default, takeSnapshot should obtain the best
>quality and highest-resolution image the hardware can provide.
>
>Rob
>

Received on Tuesday, 15 May 2012 17:32:40 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 16:14:59 GMT