Skip to content

Commit

Permalink
Add web test verifying modifying video CSRCs on loopback PC
Browse files Browse the repository at this point in the history
Adding as an internal web-test for now, as the spec details are yet to
crystallise.

Bug: webrtc:14709, chromium:1411614
Change-Id: I5923fcc7a9fda004fa84186faf610f49397eb6b5
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/4208841
Commit-Queue: Tony Herre <toprice@chromium.org>
Auto-Submit: Tony Herre <toprice@chromium.org>
Reviewed-by: Guido Urdaneta <guidou@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1100936}
  • Loading branch information
Tony Herre authored and Chromium LUCI CQ committed Feb 3, 2023
1 parent df4c24f commit ced08d4
Showing 1 changed file with 64 additions and 0 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
<!DOCTYPE html>
<title>Test RTCEncodedVideoFrame.setMetadata in a loopback RTCPeerConnection</title>
<script src="../../resources/testharness.js"></script>
<script src="../../resources/testharnessreport.js"></script>
<script src="resources/RTCPeerConnection-helper.js"></script>
<script>
"use strict";

promise_test(async t => {
const csrcs = [123, 321, 456, 654];

const caller = new RTCPeerConnection({encodedInsertableStreams:true});
t.add_cleanup(() => caller.close());
const callee = new RTCPeerConnection({encodedInsertableStreams:true});
t.add_cleanup(() => callee.close());
exchangeIceCandidates(caller, callee);

const stream = await getNoiseStream({video: true});
const videoTrack = stream.getVideoTracks()[0];
t.add_cleanup(() => videoTrack.stop());

const senderTransceiver = caller.addTransceiver(videoTrack);
const senderStreams = senderTransceiver.sender.createEncodedStreams();
const senderReader = senderStreams.readable.getReader();
const senderWriter = senderStreams.writable.getWriter();

const ontrackPromise = addEventListenerPromise(t, callee, 'track');

await exchangeOfferAnswer(caller, callee);

const trackEvent = await ontrackPromise;
const receiverTransceiver = trackEvent.transceiver;
const receiverStreams = receiverTransceiver.receiver.createEncodedStreams();
const receiverReader = receiverStreams.readable.getReader();
const receiverWriter = receiverStreams.writable.getWriter();
const receiverFramePromise = receiverReader.read();

// Modify the CSRCS for the first frame sent.
const senderFrame = (await senderReader.read()).value;
const senderMetadata = senderFrame.getMetadata();
senderMetadata.contributingSources = csrcs;
senderFrame.setMetadata(senderMetadata);
senderWriter.write(senderFrame);
const receiverFrame = (await receiverFramePromise).value;

assert_array_equals(receiverFrame.getMetadata().contributingSources, csrcs,
"First frame has modified CSRCS");

// Set different CSRCS for the second frame.
const csrcs2 = [987654321];

const receiverFrame2Promise = receiverReader.read();
const senderFrame2 = (await senderReader.read()).value;
const senderMetadata2 = senderFrame2.getMetadata();
senderMetadata2.contributingSources = csrcs2;
senderFrame2.setMetadata(senderMetadata2);
senderWriter.write(senderFrame2);
const receiverFrame2 = (await receiverFrame2Promise).value;

assert_array_equals(receiverFrame2.getMetadata().contributingSources, csrcs2,
"Second frame has modified CSRCS");

}, "modified csrcs are propagated over a PeerConnection");
</script>

0 comments on commit ced08d4

Please sign in to comment.