| <!DOCTYPE html> |
| <html> |
| <head> |
| <meta charset="utf-8"> |
| <title>Adapt camera track framerate</title> |
| <script src="../../resources/testharness.js"></script> |
| <script src="../../resources/testharnessreport.js"></script> |
| <script src ="../../webrtc/routines.js"></script> |
| </head> |
| <body> |
| <video autoplay id="video"></video> |
| <script> |
| promise_test(async (t) => { |
| const stream1 = await navigator.mediaDevices.getUserMedia({ video: { width: 720, frameRate : 30 } }); |
| const stream2 = stream1.clone(); |
| |
| await stream2.getVideoTracks()[0].applyConstraints({ width : 160, frameRate : 5 }); |
| |
| // We adapt frame rate after 1 second of samples. |
| await new Promise(resolve => setTimeout(resolve, 1000)); |
| |
| let frameRate = await computeFrameRate(stream1, video); |
| |
| // On heavily loaded bots, our mock capture source might not be able to deliver 30 fps. Our test only makes sense if we have sufficient fps. |
| if (frameRate <= 10) |
| return; |
| |
| assert_greater_than(frameRate, 10, "stream1 frame rate above 10"); |
| assert_less_than(frameRate, 60, "stream1 frame rate below 60"); |
| |
| frameRate = await computeFrameRate(stream2, video); |
| assert_greater_than(frameRate, 1, "stream2 frame rate above 1"); |
| assert_less_than(frameRate, 10, "stream2 frame rate below 10"); |
| }, "clone and applyConstraints to decrease frame rate"); |
| </script> |
| </body> |
| </html> |