Move parseFontFaceDescriptor to CSSPropertyParser.cpp
[chromium-blink-merge.git] / third_party / WebKit / PerformanceTests / Canvas / upload-video-to-sub-texture.html
blobeb79c7dc4d850016439981a4644ed1c793fa2cf6
1 <!DOCTYPE html>
2 <html>
3 <body>
4 <video id="video" loop></video>
5 <script src="../resources/runner.js"></script>
6 <script src="resources/canvas_runner.js"></script>
7 <script>
8 var videoElement = document.getElementById("video");
9 var canvas3D = document.createElement('canvas');
10 var gl = canvas3D.getContext('webgl');
11 if(!gl)
12 CanvasRunner.logFatalError("\nWebGL is not supported or enabled on this platform!\n");
14 function setSize(width, height) {
15 canvas3D.width = width;
16 canvas3D.height = height;
19 function addPlayCallback(videoElement) {
20 // This logic makes sure this perf test starts after playing the video.
21 videoElement.addEventListener("canplaythrough", startVideo, true);
22 videoElement.addEventListener("play", startPerfTest, true);
23 videoElement.addEventListener('error', function(ev) {
24 CanvasRunner.logFatalError("\nmp4 codec is not supported on this platform. Received error event:" + ev.target.error.code + "\n");
25 }, false);
26 videoElement.src = "../resources/bear-1280x720.mp4";
29 function startVideo() {
30 // loop can emit this event again.
31 videoElement.removeEventListener("canplaythrough", startVideo, true);
32 videoElement.play();
36 function startPerfTest() {
37 CanvasRunner.start({
38 description: "This bench test checks the speed on texSubImage2D(Video) on Webgl.",
39 preRun: preRun,
40 doRun: doRun,
41 ensureComplete: ensureComplete,
42 postRun: postRun});
45 var flipYAndPremultipyAlphas =
46 [[ false, false ],
47 [ false, true ],
48 [ true, false ],
49 [ true, true ]];
50 var optionIndex = 0;
51 var tex = null;
53 function preRun() {
54 tex = gl.createTexture();
55 gl.bindTexture(gl.TEXTURE_2D, tex);
56 gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, videoElement.videoWidth, videoElement.videoHeight, 0, gl.RGBA, gl.UNSIGNED_BYTE, null);
57 optionIndex = 0;
60 function doRun() {
61 var i = optionIndex++ % flipYAndPremultipyAlphas.length;
62 gl.pixelStorei(gl.UNPACK_FLIP_Y_WEBGL, flipYAndPremultipyAlphas[i][0]);
63 gl.pixelStorei(gl.UNPACK_PREMULTIPLY_ALPHA_WEBGL, flipYAndPremultipyAlphas[i][1]);
64 gl.texSubImage2D(gl.TEXTURE_2D, 0, 0, 0, gl.RGBA, gl.UNSIGNED_BYTE, videoElement);
67 function ensureComplete() {
68 gl.readPixels(0, 0, 1, 1, gl.RGBA, gl.UNSIGNED_BYTE, new Uint8Array(4));
71 function postRun() {
72 gl.deleteTexture(tex);
75 window.onload = function () {
76 setSize(1, 1);
77 addPlayCallback(videoElement);
80 </script>
81 </body>
82 </html>