InputDeviceInfo: getCapabilities() method
=========================================

**Secure context:** This feature is available only in secure contexts (HTTPS), in some or all supporting browsers.

The **`getCapabilities()`** method of the `InputDeviceInfo` interface returns a `MediaTrackCapabilities` object describing the primary audio or video track of the device's `MediaStream`.

Syntax
------


```js
getCapabilities()
```

### Parameters

None.

### Return value

A `MediaTrackCapabilities` object which specifies the value or range of values which are supported for each of the user agent's supported constrainable properties, containing the following members:

`deviceId`

A `ConstrainDOMString` object containing the device ID.

`groupId`

A `ConstrainDOMString` object containing a group ID.

`autoGainControl`

 A `ConstrainBoolean` object reporting if the source can do auto gain control.
 If the feature can be controlled by a script the source will report both true and false as possible values.


`channelCount`

A `ConstrainULong` containing the channel count or range of channel counts.

`echoCancellation`

 A `ConstrainBoolean` object reporting if the source can do echo cancellation.
 If the feature can be controlled by a script the source will report both true and false as possible values.


`latency`

A `ConstrainDouble` containing the latency or range of latencies.

`noiseSuppression`

 A `ConstrainBoolean` object reporting if the source can do noise suppression.
 If the feature can be controlled by a script the source will report both true and false as possible values.


`sampleRate`

A `ConstrainULong` containing the sample rate or range of sample rates.

`sampleSize`

A `ConstrainULong` containing the sample size or range of sample sizes.

`aspectRatio`

A `ConstrainDouble` containing the video aspect ratio (width in pixels divided by height in pixels) or range of aspect ratios.

`facingMode`

A `ConstrainDOMString` object containing the camera facing mode. A camera may report multiple facings, for example "left" and "user".

`frameRate`

A `ConstrainDouble` containing the frame rate or range of frame rates which are acceptable.

`height`

A `ConstrainULong` containing the video height or range of heights in pixels.

`width`

A `ConstrainULong` containing the video width or range of widths in pixels.

`resizeMode`

A `ConstrainDOMString` object containing the mode or an array of modes the UA can use to derive the resolution of the video track.


**Note:** If the user has not granted permission to access the input device an empty object will be returned.

Examples
--------

In the following example we ask for permission to access audio and video devices with `mediaDevices.getUserMedia()`, as to use `getCapabilities()` we need permission to access the devices.

If `device` is an `InputDeviceInfo` object, then `getCapabilities()` will return an object with members representing its capabilities. A video stream will not include auto properties such as `noiseSuppression`, for example.


```js
// Get permission to access audio or video devices
navigator.mediaDevices.getUserMedia({ audio: true, video: true });

navigator.mediaDevices.enumerateDevices().then((devices) => {
  devices.forEach((device) => {
    console.log(device.getCapabilities()); // a MediaTrackCapabilities object.
  });
});
```

Specifications
--------------

| Specification |
| --- |
| Media Capture and Streams # dom-inputdeviceinfo-getcapabilities |

Browser compatibility
---------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

See also
--------

* `MediaStreamTrack.getCapabilities()`, which also return a `MediaTrackCapabilities` object.