webrtc wpt: update RTCRtpParameters-codec.html to use receive-side setCodecPreferences
BUG=webrtc:15396
Change-Id: Ia188bd98ee1a274d1435be73198c0ba9b11b42da
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5279737
Reviewed-by: Florent Castelli <orphis@chromium.org>
Commit-Queue: Philipp Hancke <phancke@microsoft.com>
Cr-Commit-Position: refs/heads/main@{#1259088}
diff --git a/webrtc-extensions/RTCRtpParameters-codec.html b/webrtc-extensions/RTCRtpParameters-codec.html
index cce2c16..5fc1401 100644
--- a/webrtc-extensions/RTCRtpParameters-codec.html
+++ b/webrtc-extensions/RTCRtpParameters-codec.html
@@ -1,6 +1,7 @@
<!DOCTYPE html>
<meta charset="utf-8">
<title>RTCRtpEncodingParameters codec property</title>
+<meta name="timeout" content="long">
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../webrtc/RTCPeerConnection-helper.js"></script>
@@ -24,11 +25,11 @@
}
function findFirstCodec(name) {
- return RTCRtpSender.getCapabilities(name.split('/')[0]).codecs.filter(c => c.mimeType.localeCompare(name, undefined, { sensitivity: 'base' }) === 0)[0];
+ return RTCRtpReceiver.getCapabilities(name.split('/')[0]).codecs.filter(c => c.mimeType.localeCompare(name, undefined, { sensitivity: 'base' }) === 0)[0];
}
function codecsNotMatching(mimeType) {
- return RTCRtpSender.getCapabilities(mimeType.split('/')[0]).codecs.filter(c => c.mimeType.localeCompare(mimeType, undefined, {sensitivity: 'base'}) !== 0);
+ return RTCRtpReceiver.getCapabilities(mimeType.split('/')[0]).codecs.filter(c => c.mimeType.localeCompare(mimeType, undefined, {sensitivity: 'base'}) !== 0);
}
function assertCodecEquals(a, b) {
@@ -284,17 +285,22 @@
}, `Setting a non-existing codec on a video sender with setParameters should throw InvalidModificationError`);
promise_test(async t => {
- const pc = new RTCPeerConnection();
- t.add_cleanup(() => pc.close());
+ const pc1 = new RTCPeerConnection();
+ t.add_cleanup(() => pc1.close());
+ const pc2 = new RTCPeerConnection();
+ t.add_cleanup(() => pc2.close());
const opus = findFirstCodec('audio/opus');
const nonOpus = codecsNotMatching(opus.mimeType);
+ pc2.ontrack = e => {
+ e.transceiver.setCodecPreferences(nonOpus);
+ };
- const transceiver = pc.addTransceiver('audio');
+ const transceiver = pc1.addTransceiver('audio');
+ exchangeIceCandidates(pc1, pc2);
+ await exchangeOfferAnswer(pc1, pc2);
+
const sender = transceiver.sender;
-
- transceiver.setCodecPreferences(nonOpus);
-
let param = sender.getParameters();
let encoding = param.encodings[0];
@@ -303,17 +309,22 @@
}, `Setting a non-preferred codec on an audio sender with setParameters should throw InvalidModificationError`);
promise_test(async t => {
- const pc = new RTCPeerConnection();
- t.add_cleanup(() => pc.close());
+ const pc1 = new RTCPeerConnection();
+ t.add_cleanup(() => pc1.close());
+ const pc2 = new RTCPeerConnection();
+ t.add_cleanup(() => pc2.close());
const vp8 = findFirstCodec('video/VP8');
const nonVP8 = codecsNotMatching(vp8.mimeType);
+ pc2.ontrack = e => {
+ e.transceiver.setCodecPreferences(nonVP8);
+ };
- const transceiver = pc.addTransceiver('video');
+ const transceiver = pc1.addTransceiver('video');
+ exchangeIceCandidates(pc1, pc2);
+ await exchangeOfferAnswer(pc1, pc2);
+
const sender = transceiver.sender;
-
- transceiver.setCodecPreferences(nonVP8);
-
let param = sender.getParameters();
let encoding = param.encodings[0];
@@ -329,15 +340,16 @@
const opus = findFirstCodec('audio/opus');
const nonOpus = codecsNotMatching(opus.mimeType);
+ pc2.ontrack = e => {
+ e.transceiver.setCodecPreferences(nonOpus);
+ };
const transceiver = pc1.addTransceiver('audio');
- const sender = transceiver.sender;
-
- transceiver.setCodecPreferences(nonOpus);
exchangeIceCandidates(pc1, pc2);
await exchangeOfferAnswer(pc1, pc2);
+ const sender = transceiver.sender;
let param = sender.getParameters();
let encoding = param.encodings[0];
@@ -353,15 +365,15 @@
const vp8 = findFirstCodec('video/VP8');
const nonVP8 = codecsNotMatching(vp8.mimeType);
+ pc2.ontrack = e => {
+ e.transceiver.setCodecPreferences(nonVP8);
+ };
const transceiver = pc1.addTransceiver('video');
- const sender = transceiver.sender;
-
- transceiver.setCodecPreferences(nonVP8);
-
exchangeIceCandidates(pc1, pc2);
await exchangeOfferAnswer(pc1, pc2);
+ const sender = transceiver.sender;
let param = sender.getParameters();
let encoding = param.encodings[0];
@@ -391,7 +403,7 @@
assertCodecEquals(opus, encoding.codec);
- transceiver.setCodecPreferences(nonOpus);
+ pc2.getTransceivers()[0].setCodecPreferences(nonOpus);
await exchangeOfferAnswer(pc1, pc2);
param = sender.getParameters();
@@ -399,7 +411,6 @@
assert_equals(encoding.codec, undefined);
}, `Codec should be undefined after negotiating away the currently set codec on an audio sender`);
-
promise_test(async (t) => {
const pc1 = new RTCPeerConnection();
const pc2 = new RTCPeerConnection();
@@ -422,7 +433,7 @@
assertCodecEquals(vp8, encoding.codec);
- transceiver.setCodecPreferences(nonVP8);
+ pc2.getTransceivers()[0].setCodecPreferences(nonVP8);
await exchangeOfferAnswer(pc1, pc2);
param = sender.getParameters();
@@ -441,12 +452,13 @@
const opus = findFirstCodec('audio/opus');
const nonOpus = codecsNotMatching(opus.mimeType);
+ pc2.ontrack = e => {
+ e.transceiver.setCodecPreferences(nonOpus.concat([opus]));
+ };
const transceiver = pc1.addTransceiver(stream.getTracks()[0]);
const sender = transceiver.sender;
- transceiver.setCodecPreferences(nonOpus.concat([opus]));
-
exchangeIceCandidates(pc1, pc2);
await exchangeOfferAnswer(pc1, pc2);
@@ -478,12 +490,13 @@
const vp8 = findFirstCodec('video/VP8');
const nonVP8 = codecsNotMatching(vp8.mimeType);
+ pc2.ontrack = e => {
+ e.transceiver.setCodecPreferences(nonVP8.concat([vp8]));
+ };
const transceiver = pc1.addTransceiver(stream.getTracks()[0]);
const sender = transceiver.sender;
- transceiver.setCodecPreferences(nonVP8.concat([vp8]));
-
exchangeIceCandidates(pc1, pc2);
await exchangeOfferAnswer(pc1, pc2);
@@ -514,15 +527,15 @@
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const vp8 = findFirstCodec('video/VP8');
- const nonVP8 = codecsNotMatching(vp8.mimeType);
-
+ const h264 = findFirstCodec('video/H264');
+ pc2.ontrack = e => {
+ e.transceiver.setCodecPreferences([h264, vp8]);
+ };
const transceiver = pc1.addTransceiver(stream.getTracks()[0], {
sendEncodings: [{rid: '0'}, {rid: '1'}, {rid: '2'}],
});
const sender = transceiver.sender;
- transceiver.setCodecPreferences(nonVP8.concat([vp8]));
-
exchangeIceCandidates(pc1, pc2);
await doOfferToSendSimulcastAndAnswer(pc1, pc2, ['0', '1', '2']);
@@ -559,15 +572,16 @@
t.add_cleanup(() => stream.getTracks().forEach(track => track.stop()));
const vp8 = findFirstCodec('video/VP8');
- const nonVP8 = codecsNotMatching(vp8.mimeType);
+ const h264 = findFirstCodec('video/H264');
+ pc2.ontrack = e => {
+ e.transceiver.setCodecPreferences([h264, vp8]);
+ };
const transceiver = pc1.addTransceiver(stream.getTracks()[0], {
sendEncodings: [{rid: '0'}, {rid: '1'}, {rid: '2'}],
});
const sender = transceiver.sender;
- transceiver.setCodecPreferences(nonVP8.concat([vp8]));
-
exchangeIceCandidates(pc1, pc2);
await doOfferToSendSimulcastAndAnswer(pc1, pc2, ['0', '1', '2']);