- From: Jan-Ivar Bruaroey <jib@mozilla.com>
- Date: Wed, 26 Mar 2014 10:24:05 -0400
- To: Harald Alvestrand <harald@alvestrand.no>, public-media-capture@w3.org
- Message-ID: <5332E305.9010401@mozilla.com>
On 3/26/14 4:31 AM, Harald Alvestrand wrote: > On 03/26/2014 02:18 AM, Jan-Ivar Bruaroey wrote: >> Sure, that is certainly doable, if people prefer, or we could perhaps >> do videoSourceId and audioSourceId? Things don't seem to overlap much >> otherwise. > > If they don't overlap, to me that's an argument for keeping each in > its own bag. > If they overlap, to me that's an argument for keeping each in its own > bag; separation of concerns. First of all, I'm delighted we're discussing what I consider mostly naming, e.g. video::sourceId vs. videoSourceId, frameRate vs. maybe video::rate - I don't hold a strong opinion, but I'm curious. > It seems hard to find an argument that would convince me that mixing > audio and video constraints into one bag is a good idea :-) > > (this is about how we pass the bag/bags to gUM. That's separate from > the question of whether having different type definitions for the two > is a great idea or not.) Let me play devil's advocate then: A camera and a mic - light and sound - are so similar - rather than complements - that their properties don't deserve separation by TYPE, and we must use bags to keep their otherwise ambiguous settings apart? If we had, say, transport properties - like bandwidth - then I would see why. Bits are bits. But we don't. That's over in PeerConnection. I actually had things broken down in an earlier draft (below), but typed. .: Jan-Ivar :. (EARLIER DRAFT USING AUDIO & VIDEO GROUPS) dictionary MediaStreamOptions { (boolean or VideoTrackConstraints) video = false; (boolean or AudioTrackConstraints) audio = false; DOMString peerIdentity; }; dictionary Constraints { sequence<DOMString> require; // names of required constraints, if any sequence<DOMString> prefer; // names of preferred constraints, if any }; dictionary VideoTrackConstraints : Constraints { ConstrainLong width; ConstrainLong height; ConstrainDouble aspectRatio; ConstrainDouble frameRate; ConstrainVideoFacingMode facingMode; // Dictionary may be extended through gUM-specific IANA registry. }; dictionary AudioTrackConstraints : Constraints { ConstrainDouble volume; ConstrainLong sampleRate; ConstrainLong sampleSize; boolean echoCancelation; // Dictionary may be extended through gUM-specific IANA registry. }; interface VideoStreamTrack : MediaStreamTrack { VideoTrackConstraints getInherentCapabilities(); VideoTrackConstraints snapshotCurrentSettings(); void applyConstraints(VideoTrackConstraints settings, VoidFunction successCallback, ConstraintErrorCallback errorCallback); }; interface AudioStreamTrack : MediaStreamTrack { AudioTrackConstraints getInherentCapabilities(); AudioTrackConstraints snapshotCurrentSettings(); void applyConstraints(AudioTrackConstraints settings, VoidFunction successCallback, ConstraintErrorCallback errorCallback); };
Received on Wednesday, 26 March 2014 14:24:33 UTC