- From: Stefan Hakansson LK <stefan.lk.hakansson@ericsson.com>
- Date: Thu, 6 Dec 2012 09:36:13 +0100
- To: public-media-capture@w3.org
On 12/05/2012 04:43 PM, Harald Alvestrand wrote: > On 12/04/2012 11:20 PM, Martin Thomson wrote: >> I agree with most of Stefan's comments. I particularly like the >> simplifications for settings. Fewer features === better. >> >> bitRate is something that the sink (RTCPeerConnection) can communicate >> back to its source, or it can resize at the encoder as it sees fit >> >> On 4 December 2012 10:55, Travis Leithead >> <travis.leithead@microsoft.com> wrote: >>>> e) We would need to specify if/how the change of one setting alters the >>>> preference order. IIUC the constraints structure, if used only with >>>> optional constraints, establishes an order of preference. If the first >>>> constraint is framerate it says that maintaining framerate within the >>>> bounds is more important than the following constraints. What >>>> happens if >>>> you later on change one that has lower priority? Does it pop to the top >>>> of the list? >>> Yes this needs to be defined. To avoid having to re-apply all the >>> prior constraints just to maintain relative priority, there should be >>> some more elegant way to in-line adjust a setting that was previously >>> specified using the same relative priority, or to specify that a >>> setting change trumps prior priority. Any suggestions for such a >>> mechanism or different approaches are welcome... >> Given that settings/constraints are an ordered set, maybe 'set' is the >> wrong paradigm. >> >> whatever.insertSetting(settings [, position = 1]) >> >> With this, settings are inserted ahead of any existing setting at the >> given position. Mandatory settings are at position 0, so by default, >> a non-mandatory setting is inserted. (sanity note: position = >> Math.max(0, Math.min(position, existingSettings.length))) >> >> Unless we can agree to drop non-mandatory settings, which would make >> this even easier to describe. >> > I think I've mentioned this before.... > > if an item is able to return the last successfully applied constraint > set, and we set the complete constraint set rather than doing piecemeal > application, a JS app can apply its own desired manipulations on the > setting. > > ie if you want to just insert a more important framerate. > > whatever.applyConstraints(whatever.getCurrentConstraints().optional.append({framerate: > 120})) "append" sounds like you're adding a new constraint at the end of the list; what happens if there is already a "framerate" constraint (but with another value) in the set? (That was a detail) Even if you have no code to prove it, I agree that we could solve all settings by using a constraint structure in the way you indicate. However, regarding API design, I think the "get" and "set" way is more in line with what web authors would expect (and my preference). This is mostly a matter of taste. I brought the "order of preference" thing up; but perhaps it is not that big a thing. I think the only potential conflict would be between resolution and framerate; the others are orthogonal to each other (referring to the list at http://dvcs.w3.org/hg/dap/raw-file/tip/media-stream-capture/proposals/SettingsAPI_proposal_v5.html#idl-def-VideoConstraints). Stefan
Received on Thursday, 6 December 2012 08:36:41 UTC