How to configure a camera under constraints (Re: [Bug 23820] New: Add special values)

Sorry about forking the subject upstream of current discussion head, but 
it really needed forking...

On 11/20/2013 06:41 PM, Stefan Håkansson LK wrote:
> On 20/11/13 18:27, Martin Thomson wrote:
>> On 20 November 2013 08:17, Jan-Ivar Bruaroey <jib@mozilla.com> wrote:
>>> Shouldn't we first nail down what min and max mean? e.g.
>> This I agree with.  But the answer might not be as deterministic as
>> you might like.
>>
>>> - Does { mandatory: { width: { min: 1024 } } } conservatively give me
>>> 1024x768
>>>     or the highest available because I didn't constrain upward?
>>>
>>> - Does { mandatory: { width: { max: 2880 } } } aggressively give me
>>> 2880x1800
>>>     or the lowest available because I didn't constrain downward?
>>>
>>> - Given choices, what does { mandatory: { width: { min: 1024, max: 2880 } }
>>> } give me?
> I'm going to throw in one more thing here (relevant only to
> width/height/aspect): how do we relate this to the width and height of
> the consumer?
>
> Say a video MediaStreamTrack with mandatory setting of width min 1024 is
> only attached to a video element with a width of 200. Should the camera
> really produce a stream with width 1024, only to have it scaled at
> display time?
>

In my opinion: If the user asks for it, using mandatory constraints, the 
browser should assume that the user knows what he's doing.

One example found recently here:

It turns out that in some cases, for some hardware, OS and software, if 
you attach two HD cameras to the same USB bus, the first one to be 
initialized in HD will get its bits through. The second one will fail in 
HD mode, but work in lower resolution mode (still room on the bus). 
(Names and details omitted, since I'm not sure I have them completely 
right.)

If an app opens 2 cameras, in the sequence "HD" / "SD", there is no problem.
If the app opens the 2 cameras as  "default", "default", the first gets 
HD, the second gets SD. Again, no problem.

But if the 2 cameras are opened as "HD", "default", and the browser 
second-guesses the application and opens the first one in "SD", the 
result may be that the second one will be opened in "HD", and now an 
attempt to reconfigure the first one into HD will fail. User 
astonishment will result.

Conclusion:

The camera should, in my opinion, be opened in the mode that satisfies 
the constraints, and then the browser should do what it needs to do in 
order to produce the video asked for.

Received on Thursday, 21 November 2013 12:41:44 UTC