-
Notifications
You must be signed in to change notification settings - Fork 3.1k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
webrtc wpt: add test for codecs in subsequent offers
Asserting the "and also MUST include all currently available formats" https://www.rfc-editor.org/rfc/rfc8829.html#name-subsequent-offers See w3c/webrtc-pc#2938 BUG=None Change-Id: I7748ea94e58ba93cdf1043ee0235a7e560e260e2
- Loading branch information
1 parent
616d362
commit b89da50
Showing
1 changed file
with
50 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
<!doctype html> | ||
<meta charset=utf-8> | ||
<meta name="timeout" content="long"> | ||
<title>RTCPeerConnection Codecs in subsequent offer</title> | ||
<script src="/resources/testharness.js"></script> | ||
<script src="/resources/testharnessreport.js"></script> | ||
<script src="../third_party/sdp/sdp.js"></script> | ||
<script> | ||
'use strict'; | ||
|
||
// A test for https://www.rfc-editor.org/rfc/rfc8829.html#name-subsequent-offers | ||
// The "m=" line and corresponding "a=rtpmap" and "a=fmtp" lines MUST only include | ||
// media formats that have not been excluded by the codec preferences of the | ||
// associated transceiver and also MUST include all currently available formats. | ||
|
||
// A VP8-only offer. | ||
const sdp = `v=0 | ||
o=- 0 3 IN IP4 127.0.0.1 | ||
s=- | ||
t=0 0 | ||
a=fingerprint:sha-256 A7:24:72:CA:6E:02:55:39:BA:66:DF:6E:CC:4C:D8:B0:1A:BF:1A:56:65:7D:F4:03:AD:7E:77:43:2A:29:EC:93 | ||
m=video 9 RTP/SAVPF 100 | ||
c=IN IP4 0.0.0.0 | ||
a=rtcp-mux | ||
a=sendrecv | ||
a=mid:video | ||
a=rtpmap:100 VP8/90000 | ||
a=setup:actpass | ||
a=ice-ufrag:ETEn | ||
a=ice-pwd:OtSK0WpNtpUjkY4+86js7Z/l | ||
`; | ||
|
||
promise_test(async t => { | ||
const pc = new RTCPeerConnection(); | ||
t.add_cleanup(() => pc.close()); | ||
|
||
await pc.setRemoteDescription({type: 'offer', sdp}); | ||
await pc.setLocalDescription(); | ||
const transceiver = pc.getTransceivers()[0]; | ||
assert_not_equals(transceiver.stopped, true); | ||
const offer = await pc.createOffer(); | ||
const mediaSection = SDPUtils.getMediaSections(offer.sdp)[0]; | ||
const rtpParameters = SDPUtils.parseRtpParameters(mediaSection); | ||
const vp8 = rtpParameters.codecs.filter(codec => codec.name === 'VP8'); | ||
const h264 = rtpParameters.codecs.filter(codec => codec.name === 'H264'); | ||
assert_greater_than(vp8.length, 0); | ||
assert_greater_than(h264.length, 0); | ||
}, 'A subsequent offer after a VP8-only negotiation includes at least all mandatory to implement codecs'); | ||
|
||
</script> |