blob: 34518e85768eba065c7800f576d92627c9d2e0f8 [file] [log] [blame]
<!DOCTYPE html>
<title>Decode Capabilities Test</title>
<div id="console"></div>
<script type='text/javascript'>
function log(message) {
let consoleElement = document.getElementById('console');
let entry = document.createElement('div');
entry.appendChild(document.createTextNode(message));
consoleElement.appendChild(entry);
console.log(message);
}
function runTest(configuration) {
try {
navigator.mediaCapabilities.decodingInfo(configuration)
.then((result) => {
log('Decoding is '
+ (result.supported ? '' : 'un') + 'supported');
document.title = result.supported ? 'SUPPORTED' : 'UNSUPPORTED';
})
.catch((e) => {
log('Promise rejected: ' + e);
document.title = "ERROR";
});
} catch (e) {
log('Exception:' + e);
document.title = "ERROR";
}
}
function testVideoConfig(queryType, contentType) {
// Clear previous test result from title.
document.title = '';
log("Testing video content type: " + contentType);
const configuration = {
type : queryType,
video : {
contentType : contentType,
// Any reasonable value will do.
width : 640,
height : 480,
bitrate : 10000,
framerate : 30
}
};
runTest(configuration);
}
function testAudioConfig(queryType, contentType) {
// Clear previous test result from title.
document.title = '';
log("Testing audio content type: " + contentType);
const configuration = {
type : queryType,
audio : {
contentType : contentType
}
};
runTest(configuration);
}
function testAudioConfigWithSpatialRendering(spatialRendering, queryType, contentType) {
// Clear previous test result from title.
document.title = '';
log("Testing audio content type: " + contentType + ", spatialRendering: " + spatialRendering);
const configuration = {
type : queryType,
audio : {
contentType : contentType,
spatialRendering : spatialRendering
}
};
runTest(configuration);
}
function testVideoConfigWithHdrMetadata(hdrMetadataType,
colorGamut,
transferFunction,
queryType,
contentType) {
// Clear previous test result from title.
document.title = '';
log("Testing video content type: " + contentType +
", HDR metadata type: " + hdrMetadataType +
", color gamut: " + colorGamut +
", transfer function: " + transferFunction);
const configuration = {
type : queryType,
video : {
contentType : contentType,
hdrMetadataType : hdrMetadataType,
colorGamut : colorGamut,
transferFunction : transferFunction,
// Any reasonable value will do.
width : 640,
height : 480,
bitrate : 10000,
framerate : 30
}
};
runTest(configuration);
}
function testVideoConfigWithoutHdrMetadata(colorGamut,
transferFunction,
queryType,
contentType) {
// Clear previous test result from title.
document.title = '';
log("Testing video content type: " + contentType +
", color gamut: " + colorGamut +
", transfer function: " + transferFunction);
const configuration = {
type : queryType,
video : {
contentType : contentType,
colorGamut : colorGamut,
transferFunction : transferFunction,
// Any reasonable value will do.
width : 640,
height : 480,
bitrate : 10000,
framerate : 30
}
};
runTest(configuration);
}
</script>