- From: Harald Alvestrand <harald@alvestrand.no>
- Date: Sun, 13 May 2012 18:53:46 +0200
- To: Anant Narayanan <anant@mozilla.com>
- CC: public-media-capture@w3.org
On 05/13/2012 05:59 PM, Anant Narayanan wrote: > On 5/12/2012 11:30 PM, Harald Alvestrand wrote: >> On 05/11/2012 09:46 PM, Anant Narayanan wrote: >>> navigator.getUserMedia({ >>> video: { >>> mandatory: {}, >>> optional: [ >>> { >>> minWidth: 640, >>> minHeight: 480, >>> minFramerate: 30 >>> }, >>> { >>> minWidth: 320, >>> minHeight: 240, >>> minFramerate: 15 >>> } >>> ] >>> } >>> }); >> >> Note my reaction to grouping is the same as Dan's: It's not clear what >> the semantics are. >> >> If you intend to comment on Dan's algorithm proposal, I think your >> example is wrong; if you're proposing an alternative evaluation >> algorithm for optional constraints, I don't understand what it is. >> >> Can you clarify? > > Sorry, my first message wasn't very clear; I was proposing an > alternative evaluation algorithm because I think the more common case > would be for an app to work with a set of given constraints. The > algorithm would be as follows: > > - UA evaluates all constraints in the mandatory block, if any one of > them could not be satisfied, onerror is called. > > - UA evaluates each set in the optional block in order, starting from > offset 0, as if it were a mandatory block. Except, if any one > constraint in a set could not be satisfied, the next set is evaluated > instead of calling onerror. > > - If the UA was able to meet all constraints in the very first set in > the optional block, for example, none of the others will be evaluated; > and onsuccess is called immediately. > > - If none of the optional constraints could be satisfied, onsuccess is > called as normal. > > In Dan's original proposal, I haven't seen any examples where many of > the individual constraints could not be grouped together because they > conflict with each other. > > In other words, I don't see why a web developer would prioritize > "aspectRatio" over "minFramerate"; they are two different things, why > would one take priority over the other? On the other hand, I can see > why a developer would prioritize 30fps over 15fps, and they belong in > different sets. Shouldn't that choice be left to the developer? If I want to fit the frame in a vertical row of thumbnails, and expect users to all have SW that crops sensibly, I may consider the aspect ratio very important, and the framerate not very important (it's just a thumbnail); if I want to show a sports event with rapid movement, I may consider framerate more important, but leave the aspect ratio at whatever the transmission sees fit to offer. > > It might be that I'm missing some key element, Tim also mentioned the > possibility that JS doesn't know what is going to conflict in advance. > A concrete example of when two constraints with different keys can't > be in the same set will really help me in understanding this better. For instance, if you have a hardware VP8 encoder capable of 60 FPS, but only able to operate in VGA mode, and a software encoder capable of max 20 FPS, but capable of both QVGA and VGA sizes, the following set would be a conflict: { min-framerate: 60 max-x-resolution: 320 } I don't know how realistic this is, but it's clear that it can happen.
Received on Sunday, 13 May 2012 16:54:17 UTC