Intent to Implement and Ship MediaStreamTrack.getCapabilities()

136 views
Skip to first unread message

Guido Urdaneta

unread,
Feb 7, 2018, 11:59:08 AM2/7/18
to blink-dev

Contact emails

gui...@chromium.org, c.p...@samsung.com


Explainer

https://developer.mozilla.org/en-US/docs/Web/API/Media_Streams_API/Constraints


Spec

https://w3c.github.io/mediacapture-main/#dom-mediastreamtrack-getcapabilities()

https://w3c.github.io/mediacapture-main/#dom-inputdeviceinfo

TAG review: https://github.com/w3ctag/design-reviews/issues/57


Summary

getCapabilities() provides a list of the capabilities supported by sources used for MediaStreamTrack objects. This gives applications the ability to, for example, enable or disable features based on the capabilities of installed devices.

There are two versions of getCapabilities(), one for MediaStreamTrack and one for InputDeviceInfo.

InputDeviceInfo is an extension of MediaDeviceInfo that adds the getCapabilities() method. InputDeviceInfo objects are returned as the result of the enumerateDevices() method. If a MediaStreamTrack is backed by a device reported by enumerateDevices(), both versions of getCapabilities() return the same value.


Motivation

Interoperability with other engines and spec compliance.


Risks

Interoperability and Compatibility

The compatibility risk is low. This API has already shipped in Blink as part of the Image Capture API, which exposes capabilities for constrainable properties that apply only to image capture. This intent covers support for the constrainable properties described in the main spec for MediaStreams. The new implementation will not interfere with the existing Image Capture feature.


The interoperability risk is low. The MediaStreamTrack version of the API is already shipped by Edge and Safari, so interoperability with those browsers is expected to improve. This feature is under development in Firefox.


Edge: Shipped (MediaStreamTrack version)

Firefox: In development

Safari: Shipped (MediaStreamTrack version)

Web developers: Positive. The general Constraints API launch bug has 45 stars, and the specific bug for getCapabilities() has 10 stars.


Ergonomics

Are there any other platform APIs this feature will frequently be used in tandem with?

getCapabilities() is expected to be used frequently together with getUserMedia() and other MediaStreamTrack operations.


Could the default usage of this API make it hard for Chrome to maintain good performance (i.e. synchronous return, must run on a certain thread, guaranteed return timing)?

No.


Activation

Will it be challenging for developers to take advantage of this feature immediately, as-is?

No.


Would this feature benefit from having polyfills, significant documentation and outreach, and/or libraries built on top of it to make it easier to use?

Since this API is already supported by other browsers and is from a relatively mature spec, there is a reasonable amount of documentation on how to use this API. No polyfills or libraries are expected to be needed.


Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?

Yes.


Is this feature fully tested by web-platform-tests?

Currently, there is limited testing for getCapabilities in WPT (mostly to verify that the API exists). We will expand WPT coverage as part of the development effort.


Link to entry on the feature dashboard

https://www.chromestatus.com/feature/5145556682801152


Requesting approval to ship?

Yes.


Tracking bug

https://crbug.com/293292


Philip Jägenstedt

unread,
Feb 8, 2018, 10:07:55 AM2/8/18
to Guido Urdaneta, blink-dev
LGTM1, looks like we're on a good track to interop on this one! :) 

--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CA%2BBuZxa9v3NeLLUnV-APp7BrJA6dBbEB2icNjKAmVd7b0oGPgg%40mail.gmail.com.

Rick Byers

unread,
Feb 8, 2018, 11:06:54 AM2/8/18
to Philip Jägenstedt, Guido Urdaneta, blink-dev

Daniel Bratell

unread,
Feb 8, 2018, 12:33:03 PM2/8/18
to Philip Jägenstedt, Rick Byers, Guido Urdaneta, blink-dev
LGTM3

/Daniel
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAFUtAY_ECu4ubrd%2BSRiJf1kTtLYXrg52ptyfO-86CCgk%2B8RydQ%40mail.gmail.com.



--
/* Opera Software, Linköping, Sweden: CET (UTC+1) */
Reply all
Reply to author
Forward
0 new messages