| <!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/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script> |
| |
| function isPixelGray(pixel) |
| { |
| return pixel[0] === 128 && pixel[1] === 128 && pixel[2] === 128 && pixel[3] === 255; |
| } |
| |
| 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); |
| |
| assert_true(isPixelGray(ctx.getImageData(5, 5, 1, 1).data), "Pixel at 5x5 is not black."); |
| assert_true(isPixelGray(ctx.getImageData(10, 200, 1, 1).data), "Pixel at 10x200 is not black."); |
| }, "Video frames are resized in letterbox-mode when captured at non-native size."); |
| |
| </script> |
| </head> |
| </html> |