| <!DOCTYPE html> |
| <html> |
| <head> |
| <video id="video" autoplay width=480px height=480px controls ></video> |
| <canvas id="canvas" width=480px height=480px></canvas> |
| <script src="../../resources/platform-helper.js"></script> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script> |
| |
| promise_test(async () => { |
| let stream = await navigator.mediaDevices.getUserMedia({ video: true }); |
| stream = null; |
| |
| const devices = await navigator.mediaDevices.enumerateDevices(); |
| let cameraID = undefined; |
| devices.forEach(device => { if (device.label == "Mock video device 2") cameraID = device.deviceId; }); |
| assert_true(cameraID !== undefined, "Found camera2"); |
| |
| stream = await navigator.mediaDevices.getUserMedia({ video: { deviceId: { exact: cameraID }, width: 480, height: 480 } }); |
| video.srcObject = stream; |
| await video.play(); |
| |
| const ctx = canvas.getContext("2d"); |
| ctx.drawImage(video, 0 ,0); |
| |
| let pixel = ctx.getImageData(5, 5, 1, 1).data; |
| assert_true(isPixelGray(pixel), `Pixel at 5x5 is not black, found {${pixel[0]}, ${pixel[1]}, ${pixel[2]}, ${pixel[3]}}`); |
| |
| pixel = ctx.getImageData(10, 200, 1, 1).data; |
| assert_true(isPixelGray(pixel), `Pixel at 10x200 is not black, found {${pixel[0]}, ${pixel[1]}, ${pixel[2]}, ${pixel[3]}}`); |
| |
| }, "Video frames are resized in letterbox-mode when captured at non-native size."); |
| |
| </script> |
| </head> |
| </html> |