blob: 8d0ab7e2b2c269bd9389a06bf1c2d81c38049c94 [file] [log] [blame]
Soares Chen172fe9d2017-07-18 09:30:181<!doctype html>
2<meta charset=utf-8>
Soares Chen5c1f1432017-07-27 03:19:293<title>RTCRtpParameters degradationPreference</title>
Soares Chen172fe9d2017-07-18 09:30:184<script src="/resources/testharness.js"></script>
5<script src="/resources/testharnessreport.js"></script>
6<script src="dictionary-helper.js"></script>
7<script src="RTCRtpParameters-helper.js"></script>
8<script>
9 'use strict';
10
11 // Test is based on the following editor draft:
12 // https://w3c.github.io/webrtc-pc/archives/20170605/webrtc.html
13
14 // The following helper functions are called from RTCRtpParameters-helper.js:
15 // validateSenderRtpParameters
16
17 /*
18 5.2. RTCRtpSender Interface
19 interface RTCRtpSender {
20 Promise<void> setParameters(optional RTCRtpParameters parameters);
21 RTCRtpParameters getParameters();
22 };
23
24 dictionary RTCRtpParameters {
25 DOMString transactionId;
26 sequence<RTCRtpEncodingParameters> encodings;
27 sequence<RTCRtpHeaderExtensionParameters> headerExtensions;
28 RTCRtcpParameters rtcp;
29 sequence<RTCRtpCodecParameters> codecs;
30 RTCDegradationPreference degradationPreference;
31 };
32
33 enum RTCDegradationPreference {
34 "maintain-framerate",
35 "maintain-resolution",
36 "balanced"
37 };
38
39 - degradationPreference is set to the last value passed into setParameters,
40 or the default value of "balanced" if setParameters hasn't been called.
41 */
42
43 promise_test(t => {
44 const pc = new RTCPeerConnection();
45 const { sender } = pc.addTransceiver('audio');
46
47 const param = sender.getParameters();
48 validateSenderRtpParameters(param);
49
Soares Chen5c1f1432017-07-27 03:19:2950 assert_equals(param.degradationPreference, 'balanced',
51 'Expect initial param.degradationPreference to be balanced');
Soares Chen172fe9d2017-07-18 09:30:1852
Soares Chen5c1f1432017-07-27 03:19:2953 param.degradationPreference = 'maintain-framerate';
Soares Chen172fe9d2017-07-18 09:30:1854
55 return pc.setParameters(param)
56 .then(() => {
57 const param = sender.getParameters();
58 validateSenderRtpParameters(param);
59
Soares Chen5c1f1432017-07-27 03:19:2960 assert_equals(param.degradationPreference, 'maintain-framerate');
Soares Chen172fe9d2017-07-18 09:30:1861 });
Soares Chen5c1f1432017-07-27 03:19:2962 }, 'setParameters with degradationPreference set should succeed');
Soares Chen172fe9d2017-07-18 09:30:1863
64 promise_test(t => {
65 const pc = new RTCPeerConnection();
66 const { sender } = pc.addTransceiver('audio');
67
68 const param = sender.getParameters();
69 validateSenderRtpParameters(param);
70
Soares Chen5c1f1432017-07-27 03:19:2971 assert_equals(param.degradationPreference, 'balanced',
72 'Expect initial param.degradationPreference to be balanced');
Soares Chen172fe9d2017-07-18 09:30:1873
Soares Chen5c1f1432017-07-27 03:19:2974 param.degradationPreference = undefined;
Soares Chen172fe9d2017-07-18 09:30:1875
76 return pc.setParameters(param)
77 .then(() => {
78 const param = sender.getParameters();
79 validateSenderRtpParameters(param);
80
Soares Chen5c1f1432017-07-27 03:19:2981 assert_equals(param.degradationPreference, undefined);
Soares Chen172fe9d2017-07-18 09:30:1882 });
Soares Chen5c1f1432017-07-27 03:19:2983 }, 'setParameters with degradationPreference unset should succeed');
Soares Chen172fe9d2017-07-18 09:30:1884
85</script>