| <!doctype html> |
| <meta charset=utf-8> |
| <title>RTCPeerConnection Simulcast Tests</title> |
| <meta name="timeout" content="long"> |
| <script src="../third_party/sdp/sdp.js"></script> |
| <script src="simulcast.js"></script> |
| <script src="../RTCPeerConnection-helper.js"></script> |
| <script src="/resources/testharness.js"></script> |
| <script src="/resources/testharnessreport.js"></script> |
| <script src="/resources/testdriver.js"></script> |
| <script src="/resources/testdriver-vendor.js"></script> |
| <script src="../../mediacapture-streams/permission-helper.js"></script> |
| <script> |
| promise_test(async t => { |
| assert_implements('getCapabilities' in RTCRtpSender, 'RTCRtpSender.getCapabilities not supported'); |
| assert_implements_optional(RTCRtpSender.getCapabilities('video').codecs.find(c => c.mimeType.toLowerCase() === 'video/vp9'), 'VP9 not supported'); |
| |
| const rids = [0, 1]; |
| const pc1 = new RTCPeerConnection(); |
| t.add_cleanup(() => pc1.close()); |
| const pc2 = new RTCPeerConnection(); |
| t.add_cleanup(() => pc2.close()); |
| |
| // This is not a scalability mode test (see wpt/webrtc-svc/ for those) but a |
| // VP9 simulcast test. Setting `scalabilityMode` should not be needed, however |
| // some browsers interpret multiple VP9 encodings to mean multiple spatial |
| // layers by default. During a transition period, Chromium-based browsers |
| // requires explicitly specifying the scalability mode as a way to opt-in to |
| // spec-compliant simulcast. See also wpt/webrtc/simulcast/vp9.https.html for |
| // a version of this test that does not set the scalability mode. |
| const scalabilityMode = 'L1T2'; |
| return negotiateSimulcastAndWaitForVideo( |
| t, await getCameraStream(t), rids, pc1, pc2, {mimeType: 'video/VP9'}, |
| scalabilityMode); |
| }, 'VP9 simulcast setup with two streams and L1T2 set'); |
| </script> |