MediaCapabilities: decodingInfo() method
The MediaCapabilities.decodingInfo() method, part of the Media Capabilities API, returns a promise with the tested media configuration's capabilities info.
This contains the three boolean properties supported, smooth, and powerefficient, which describe whether decoding the media described would be supported, smooth, and powerefficient.
Syntax
decodingInfo(configuration)
Parameters
configuration-
An object with a property
typeand either avideooraudioproperty containing a configuration of the appropriate type:type-
The type of media being tested. This takes one of three values:
file-
Represents a configuration that is meant to be used for a plain file playback.
media-source-
Represents a configuration that is meant to be used for playback of a
MediaSource. webrtc-
Represents a configuration that is meant to be received using
RTCPeerConnection.
video-
Configuration object for a video media source. This has the following properties:
contentType-
String containing a valid video MIME type, and (optionally) a
codecsparameter. width-
The width of the video.
height-
The height of the video.
bitrate-
The number of bits used to encode one second of the video file.
framerate-
The number of frames making up one second of video playback.
audio-
Configuration object for an audio media source. This has the following properties:
contentType-
String containing a valid audio MIME type, and (optionally) a
codecsparameter. channels-
The number of channels used by the audio track.
bitrate-
The number of bits used to encode one second of the audio file.
samplerate-
The number of audio samples making up one second of the audio file.
Return value
A Promise fulfilling with an object containing three Boolean attributes:
supported-
trueif the media content can be decoded at all. Otherwise, it isfalse. smooth-
trueif playback of the media will be smooth (of high quality). Otherwise it isfalse. powerEfficient-
trueif playback of the media will be power efficient. Otherwise, it isfalse.
Browsers will report a supported media configuration as smooth and powerEfficient until stats on this device have been recorded.
All supported audio codecs are reported to be power efficient.
Exceptions
TypeError-
Thrown if the
configurationpassed to thedecodingInfo()method is invalid, either because the type is not video or audio, thecontentTypeis not a valid codec MIME type, the media decoding configuration is not a valid value for thetype(file, media-source, or webrtc), or any other error in the media configuration passed to the method, including omitting any values.
Examples
This example shows how to create a media configuration for an audio file and then use it in MediaCapabilities.decodingInfo().
//Create media configuration to be tested
const mediaConfig = {
type: "file", // or 'media-source' or 'webrtc'
audio: {
contentType: "audio/ogg; codecs=vorbis", // valid content type
channels: 2, // audio channels used by the track
bitrate: 132700, // number of bits used to encode 1s of audio
samplerate: 5200, // number of audio samples making up that 1s.
},
};
// check support and performance
navigator.mediaCapabilities.decodingInfo(mediaConfig).then((result) => {
console.log(
`This configuration is ${result.supported ? "" : "not "}supported,`,
);
console.log(`${result.smooth ? "" : "not "}smooth, and`);
console.log(`${result.powerEfficient ? "" : "not "}power efficient.`);
});
Similarly, the code below shows the configuration for a video file.
const mediaConfig = {
type: "file",
video: {
contentType: "video/webm;codecs=vp8", // valid content type
width: 800, // width of the video
height: 600, // height of the video
bitrate: 10000, // number of bits used to encode 1s of video
framerate: 30, // number of frames making up that 1s.
},
};
Specifications
| Specification |
|---|
| Media Capabilities # ref-for-dom-mediacapabilities-decodinginfo |
Browser compatibility
BCD tables only load in the browser
See also
MediaCapabilities.encodingInfo()HTMLMediaElement.canPlayType()for fileMediaSource.isTypeSupported()for media-source