Source code
Revision control
Copy as Markdown
Other Tools
Test Info: Warnings
- This test has a WPT meta file that expects 1 subtest issues.
 - This WPT test may be referenced by the following Test IDs:
            
- /webrtc/protocol/av1-profile-asymmetry.https.html - WPT Dashboard Interop Dashboard
 
 
<!doctype html>
<meta charset=utf-8>
<script src="/resources/testharness.js"></script>
<script src="/resources/testharnessreport.js"></script>
<script src="../third_party/sdp/sdp.js"></script>
<script>
'use strict';
promise_test(async t => {
  const av1SendCodec = RTCRtpSender.getCapabilities('video').codecs.find(
      codec => codec.mimeType == 'video/AV1');
  assert_not_equals(av1SendCodec, undefined);
  const pc1 = new RTCPeerConnection();
  t.add_cleanup(() => pc1.close());
  const pc2 = new RTCPeerConnection();
  t.add_cleanup(() => pc2.close());
  const transceiver = pc1.addTransceiver('video');
  transceiver.setCodecPreferences([av1SendCodec]);
  await pc1.setLocalDescription();
  await pc2.setRemoteDescription(pc1.localDescription);
  await pc2.setLocalDescription();
  await pc1.setRemoteDescription(pc2.localDescription);
  // Modify the profile ID of `av1SendCodec` to ensure a strict codec comparison
  // matcher would no longer consider them the same.
  const sdpFmtpMap = SDPUtils.parseFmtp(av1SendCodec.sdpFmtpLine);
  const profileId = Number(sdpFmtpMap['profile']);
  av1SendCodec.sdpFmtpLine =
      av1SendCodec.sdpFmtpLine.replace(`profile=${profileId}`,
                                       `profile=${profileId + 1}`);
  const sender = transceiver.sender;
  let params = sender.getParameters();
  params.encodings[0].codec = av1SendCodec;
  // Set parameters should not reject because the codec dictionary match
  // algorithm[1] is able to ignore asymmetrical parameters such as AV1's
  // `profile` parameter, see [2].
  //
  await sender.setParameters(params);
  // getParameters() returns `av1SendCodec` now.
  params = sender.getParameters();
  assert_equals(params.encodings[0].codec.mimeType, 'video/AV1');
  assert_equals(params.encodings[0].codec.sdpFmtpLine,
                av1SendCodec.sdpFmtpLine);
}, `setParameters() ignores the asymmetrical AV1 parameter 'profile'`);
</script>