title: What determines which capabilities are enumerated by the MediaStreamTrack.getCapabilities() method?
body: <p>I have been working on an application of getUserMedia and WebRTC that requires me to make use of information returned by the <strong>getConstraints()</strong>, <strong>getCapabilities()</strong>, and <strong>getSettings()</strong> methods of a MediaStreamTrack.</p>
  
  <p>In testing, using <strong>getCapabilities()</strong> on the track corresponding to an external webcam might return something like...</p>
  
  <pre><code>aspectRatio: {max: 1920, min: 0.000925925925925926}
  deviceId: ""
  exposureCompensation: MediaSettingsRange {max: 2047, min: 3, step: 1}
  exposureMode: (2) ["manual", "continuous"]
  facingMode: []
  focusMode: (2) ["manual", "continuous"]
  frameRate: {max: 30, min: 1}
  groupId: ""
  height: {max: 1080, min: 1}
  whiteBalanceMode: ["manual"]
  width: {max: 1920, min: 1}
  zoom: MediaSettingsRange {max: 5, min: 1, step: 1}
  </code></pre>
  
  <p>...but if <code>focusDistance</code> or <code>colorTemperature</code> (or other potential members listed <a href="https://w3c.github.io/mediacapture-image/#mediatracksupportedconstraints-members" rel="nofollow noreferrer">here</a>) are not in the capabilities list, then what determines the controllable settings for a camera or other media device?</p>
  
  <p>Would the answer to this also apply to mobile devices, such as Android or iOS tablets or phones, that have integrated cameras and microphones?</p>