/**
* @fileoverview
* Utils used by {@class Html5Qrcode} & {@class Html5QrcodeScanner}
*
* @author mebjas
*
* The word "QR Code" is registered trademark of DENSO WAVE INCORPORATED
* http://www.denso-wave.com/qrcode/faqpatent-e.html
*/
import { Logger } from "./core";
/**
* Utils around {@interface MediaTrackConstraints} for video.
*/
export class VideoConstraintsUtil {
public static isMediaStreamConstraintsValid(
videoConstraints: MediaTrackConstraints,
logger: Logger): boolean {
if (typeof videoConstraints !== "object") {
const typeofVideoConstraints = typeof videoConstraints;
logger.logError(
"videoConstraints should be of type object, the "
+ `object passed is of type ${typeofVideoConstraints}.`,
/* experimental= */ true);
return false;
}
// TODO(mebjas): Make this validity check more sophisticuated
// Following keys are audio controls, audio controls are not supported.
const bannedKeys = [
"autoGainControl",
"channelCount",
"echoCancellation",
"latency",
"noiseSuppression",
"sampleRate",
"sampleSize",
"volume"
];
const bannedkeysSet = new Set(bannedKeys);
const keysInVideoConstraints = Object.keys(videoConstraints);
for (const key of keysInVideoConstraints) {
if (bannedkeysSet.has(key)) {
logger.logError(
`${key} is not supported videoConstaints.`,
/* experimental= */ true);
return false;
}
}
return true;
}
}