Skip to content

Commit 040e9f0

Browse files
palak8669chromium-wpt-export-bot
authored andcommitted
Add wpt that checks sending incoming audio frames
Bug: 1464860 Change-Id: I61cc07c4c894248f489382c794346d1a23b3e977 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4790142 Reviewed-by: Tony Herre <[email protected]> Commit-Queue: Palak Agarwal <[email protected]> Cr-Commit-Position: refs/heads/main@{#1192445}
1 parent 4302899 commit 040e9f0

File tree

1 file changed

+63
-0
lines changed

1 file changed

+63
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
<!DOCTYPE html>
2+
<meta charset="utf-8">
3+
<title>RTCEncodedAudioFrame can be cloned and distributed</title>
4+
<script src="/resources/testharness.js"></script>
5+
<script src="/resources/testharnessreport.js"></script>
6+
<script src=/resources/testdriver.js></script>
7+
<script src=/resources/testdriver-vendor.js></script>
8+
<script src='../mediacapture-streams/permission-helper.js'></script>
9+
<script src="../webrtc/RTCPeerConnection-helper.js"></script>
10+
<script src="../service-workers/service-worker/resources/test-helpers.sub.js"></script>
11+
12+
<script>
13+
"use strict";
14+
promise_test(async t => {
15+
const caller1 = new RTCPeerConnection();
16+
t.add_cleanup(() => caller1.close());
17+
const callee1 = new RTCPeerConnection({encodedInsertableStreams:true});
18+
t.add_cleanup(() => callee1.close());
19+
await setMediaPermission("granted", ["microphone"]);
20+
const inputStream = await navigator.mediaDevices.getUserMedia({audio:true});
21+
const inputTrack = inputStream.getAudioTracks()[0];
22+
t.add_cleanup(() => inputTrack.stop());
23+
caller1.addTrack(inputTrack)
24+
exchangeIceCandidates(caller1, callee1);
25+
26+
const caller2 = new RTCPeerConnection({encodedInsertableStreams:true});
27+
t.add_cleanup(() => caller2.close());
28+
const callee2 = new RTCPeerConnection({encodedInsertableStreams:true});
29+
t.add_cleanup(() => callee2.close());
30+
const sender2 = caller2.addTransceiver("audio").sender;
31+
const writer2 = sender2.createEncodedStreams().writable.getWriter();
32+
sender2.replaceTrack(new MediaStreamTrackGenerator({ kind: 'audio' }));
33+
exchangeIceCandidates(caller2, callee2);
34+
35+
const IncomingframesSentAndReceivedCorrectly = new Promise((resolve, reject) => {
36+
// Write the received incoming frames on callee1 to caller2.
37+
callee1.ontrack = async e => {
38+
const receiverStreams = e.receiver.createEncodedStreams();
39+
const receiverReader = receiverStreams.readable.getReader();
40+
const result = await receiverReader.read();
41+
const original = result.value;
42+
await writer2.write(original);
43+
resolve();
44+
}
45+
46+
// callee2 receives frames over the PC from caller2.
47+
callee2.ontrack = async e => {
48+
const receiverStreams = e.receiver.createEncodedStreams();
49+
const receiverReader = receiverStreams.readable.getReader();
50+
const receiverWriter = receiverStreams.writable.getWriter();
51+
const result = await receiverReader.read();
52+
receiverWriter.write(result.value);
53+
resolve();
54+
}
55+
56+
});
57+
58+
await exchangeOfferAnswer(caller1, callee1);
59+
await exchangeOfferAnswer(caller2, callee2);
60+
61+
return IncomingframesSentAndReceivedCorrectly;
62+
}, "Send endoded incoming frame");
63+
</script>

0 commit comments

Comments
 (0)