Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

<!DOCTYPE HTML>
<html>
<head>
<script type="application/javascript" src="pc.js"></script>
</head>
<body>
<pre id="test">
<script type="application/javascript">
createHTML({
bug: "1611957",
title: "Live-updating maxFramerate"
});
let sender, receiver;
async function checkMaxFrameRate(rate) {
const parameters = sender.getParameters();
parameters.encodings[0].maxFramerate = rate;
await sender.setParameters(parameters);
await wait(2000);
const stats = Array.from((await receiver.getStats()).values());
const inboundRtp = stats.find(stat => stat.type == "inbound-rtp");
info(`inbound-rtp stats: ${JSON.stringify(inboundRtp)}`);
const fps = inboundRtp.framesPerSecond;
ok(fps <= (rate * 1.1) + 1,
`fps is an appropriate value (${fps}) for rate (${rate})`);
}
runNetworkTest(async function (options) {
let test = new PeerConnectionTest(options);
test.setMediaConstraints([{video: true}], []);
test.chain.append([
function CHECK_PRECONDITIONS() {
is(test.pcLocal._pc.getSenders().length, 1,
"Should have 1 local sender");
is(test.pcRemote._pc.getReceivers().length, 1,
"Should have 1 remote receiver");
sender = test.pcLocal._pc.getSenders()[0];
receiver = test.pcRemote._pc.getReceivers()[0];
},
function PC_LOCAL_SET_MAX_FRAMERATE_2() {
return checkMaxFrameRate(2);
},
function PC_LOCAL_SET_MAX_FRAMERATE_4() {
return checkMaxFrameRate(4);
},
function PC_LOCAL_SET_MAX_FRAMERATE_15() {
return checkMaxFrameRate(15);
},
function PC_LOCAL_SET_MAX_FRAMERATE_8() {
return checkMaxFrameRate(8);
},
function PC_LOCAL_SET_MAX_FRAMERATE_1() {
return checkMaxFrameRate(1);
},
]);
await test.run();
});
</script>
</pre>
</body>
</html>