// Globals. Initialized during beginTest(). var c; // Canvas element captured by streams. var gl; // WebGLContext of |c|. var h; // CaptureStreamTestHelper holding utility test functions. var vauto; // Video element with captureStream stream in automatic mode. var vmanual; // Video element with captureStream stream in manual (fps 0) mode. var vrate; // Video element with captureStream stream with fixed frame rate.
/* Fails the test if there was a GL error */
function checkGLError(info) { var error = gl.getError();
// Comparing strings for sake of log output in hex format.
is("0x" + error.toString(16), "0x0", "WebGL error [" + info + "]");
}
function checkClearColorInitialRed() {
info("Checking that clearing to red works for first frame.");
ok(h.isPixel(h.getPixel(vauto), h.blackTransparent), "vauto should not be drawn to before stable state");
ok(h.isPixel(h.getPixel(vrate), h.blackTransparent), "vrate should not be drawn to before stable state");
ok(h.isPixel(h.getPixel(vmanual), h.blackTransparent), "vmanual should not be drawn to before stable state");
return Promise.resolve()
.then(() => h.pixelMustBecome(vauto, h.red, {
infoString: "should become red automatically",
}))
.then(() => h.pixelMustBecome(vrate, h.red, {
infoString: "should become red automatically",
}))
.then(() => h.pixelMustBecome(vmanual, h.red, {
infoString: "should become red when we get to stable "
+ "state (first frame)",
}))
}
function checkDrawColorGreen() {
info("Checking that drawing green results in green video frames."); var drawing = h.startDrawing(h.drawColor.bind(h, c, h.green));
checkGLError('after DrawColor');
return Promise.resolve()
.then(() => h.pixelMustBecome(vauto, h.green, {
infoString: "should become green automatically",
}))
.then(() => h.pixelMustBecome(vrate, h.green, {
infoString: "should become green automatically",
}))
.then(() => h.pixelMustBecome(vmanual, h.red, {
infoString: "should still be red",
}))
.then(() => h.requestFrame(vmanual))
.then(() => h.pixelMustBecome(vmanual, h.green, {
infoString: "should become green after requstFrame()",
}))
.then(() => drawing.stop());
}
function checkClearColorRed() {
info("Checking that clearing to red works."); var drawing = h.startDrawing(h.clearColor.bind(h, c, h.red));
return Promise.resolve()
.then(() => h.pixelMustBecome(vauto, h.red, {
infoString: "should become red automatically",
}))
.then(() => h.pixelMustBecome(vrate, h.red, {
infoString: "should become red automatically",
}))
.then(() => h.pixelMustBecome(vmanual, h.green, {
infoString: "should still be green",
}))
.then(() => h.requestFrame(vmanual))
.then(() => h.pixelMustBecome(vmanual, h.red, {
infoString: "should become red after requestFrame()",
}))
.then(() => drawing.stop());
}
function checkRequestFrameOrderGuarantee() {
info("Checking that requestFrame() immediately after a draw " + "call results in the expected frame seen in the stream.");
return Promise.resolve()
.then(() => h.pixelMustBecome(vmanual, h.red, 0, "should still be red"))
.then(() => h.drawColor(c, h.green)) // 1. Draw canvas green
.then(() => h.requestFrame(vmanual)) // 2. Immediately request a frame
.then(() => h.pixelMustBecome(vmanual, h.green, {
infoString: "should become green after call order test",
}))
}
function checkEndedOnStop() {
let promises = [vauto, vmanual, vrate].map(elem => {
elem.srcObject.getTracks()[0].stop();
return new Promise(resolve =>
elem.addEventListener("ended", function endedListener(event) {
ok(true, "Element " + elem.id + " ended.");
resolve();
elem.removeEventListener("ended", endedListener);
}));
});
return Promise.all(promises);
}
function finish() {
ok(true, 'Test complete.');
SimpleTest.finish();
}
function beginTest() {
h = new CaptureStreamTestHelperWebGL();
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.1Bemerkung:
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.