- From: Stefan Håkansson LK <stefan.lk.hakansson@ericsson.com>
- Date: Wed, 21 May 2014 12:16:48 +0000
- To: Peter Thatcher <pthatcher@google.com>, "public-media-capture@w3.org" <public-media-capture@w3.org>
I'm in favor of this change! Stefan On 2014-05-20 23:59, Peter Thatcher wrote: > Here at the interim meeting in DC, I've noticed a lot of disagreement > about the constraint syntax, which has led to hours of heated discussion > and a halting of progress. After talking to a bunch of people here > about it, it seems like the biggest issue is over how we specify > "required". If we can figure out how to clean that up, I think we can > progress and come to agreement on other things like "ideal" and > "advanced". I shared an idea here locally for how we could clean up > "required" that would service as a baseline of consensus, from which we > could then progress with more discussion about advanced topics, and have > some consensus to fall back to. > > So here's my proposal for how to cleanup the "required" part, which > seems to make everyone happy (out of the 5 or so people I have spoken to > about it). > > Feel free to send comments here. The chairs have already scheduled time > tomorrow morning to discuss this topic. > > FYI, Cullen took an action item from the meeting yesterday to propose > something like this, and he has said he's happy with this proposal, so > consider it part of that action item. > > > === > > Changes from whats in the editor’s draft today > > === > > 1. Remove "required: ["height", "width"]" and replace it with {..., > "required": true} inside of each given constraint. > > 2. Add "static MediaStreamTrack.getSupportedContstraints()" which > returns an object with details about what contraints are supported. To > start, it will be {"height": true, "width": true, ...}. In the future, > we may have something more than true/false. But this should give us > future flexibility. And it makes it easy for the JS to check if a given > constraint is supported (it's easier to check the existense of a key in > a map than an array). > > 3. If the JS wants a non-supported constraint to be required, then it > will first need to check if it's supported and then do the right error > handling if it isn't. It can't expect a browser to blow up if it > requires an unsupported constraint. > > 4. > > "ideal"/"advanced" > > is orthogonal to this change and is thus not shown in order to make > the changes more obvious. > > > === > > Examples > > === > > Before > > changes > > : > > getUserMedia({ > // If "depth" not supported, you get an error > “required”: ["width", "depth", “facingMode”], > “width”: {"min": 320, "max":1920}, > “height”: {"min":240, "max":1080}, > “depth”: ..., > “facingMode”: “environment” > }, ...); > > > After > > changes > : > > > if (!MediaStreamTrack.getSupportedConstraints()["depth"]) { > // Act just like if getUserMedia returned an error. > } > > getUserMedia({ > “width”: {"min": 320, "max":1920, "required": true}, > “height”: {"max":240, "max":1080}, > “depth”: {..., "required": true}, > “facingMode”: {“value”: “environment”, "required": true} > }, ...); > > > === > > Pros > > === > > - > > The "required: ["foo", "bar"]" hack is gone (prettier!). > > > === > > Cons > > === > > - > > The JS ha > s > to check for what is supported before trying to use it.
Received on Wednesday, 21 May 2014 12:17:12 UTC