Re: About the Mandatory constraints

On 2014-02-06 05:28, cowwoc wrote:
Hi Stefan,

Correct me if I'm wrong, but doesn't the Capabilities API enable developers to query a camera's capabilities, before invoking getUserMedia(), all without triggering a prompt?

No, I don't think so. getCapbilites is available on (Constrainable of) MediaStreamTrack; that track is in turn connected to the camera (as an example).

But to get that MediaStreamTrack you need to call getUserMedia - so without it there is no "getCapabilities".


If so, why do we need mandatory/optional constraints at all? The developer can filter the reads of getCapabilities() and judge for themselves if their desired constraints are met or not. The constraints API is always going to be less expressive than a developer querying and filtering through the Capabilities themselves.

I am expecting something along these lines:


  1.  var capabilities = Camera.getCapabilities();
  2.  var preference = pickBest(capabilities); //application-specific definition of "best"
  3.  If "preference" is undefined, the mandatory constraints were not met. Display a user-friendly error message and quit.
  4.  Otherwise, invoke: getUserMedia(preference); //Provide a specific mode to open the camera in
  5.  If the operation fails (the user disconnected the camera between steps 1 and 3) go back to step 1 and try again.

Gili

On 05/02/2014 1:34 PM, Stefan Håkansson LK wrote:

There has been some discussion about mandatory constraints again lately
in the context of constraints for the MediaStream Recorder.

I think the use of constraints for the Recorder is something we have not
really discussed yet, but I think (though I may be wrong) some mails
tended to question the need for mandatory constraints also for gUM.

Just to be clear: I think we have debated the mandatory constraints for
gUM several times, and we always come back to the same conclusion:
people want them. One use is when the app developer wants to avoid
disturbing the user, or even indicate e.g. that video communication is
possible, if the equipment does not fulfill the requirements the app
developer has.

Some people think it would be more natural to just get access to the
camera (and in the process launch a prompt), then check what it can
fulfill the needs, and if not tell the user that "sorry, your camera is
not good enough". But those developers can skip using mandatory constraints.

Let's not debate if we need mandatory constraints or not for gUM again.
I think it would be much more fruitful if we could have the details in
Constrainable reviewed for use with gUM and MediaStreamTracks. I would
be really happy we could nail a design that fulfills the needs we have
there.

Stefan

Received on Thursday, 6 February 2014 09:39:17 UTC