Relax target values to improve test performance on slower machines.

Differential Revision: https://phabricator.services.mozilla.com/D178698

bugzilla-url: https://bugzilla.mozilla.org/show_bug.cgi?id=1834369
gecko-commit: b15de32be05d9c1ef2e783b468e6e0c3601217ff
gecko-reviewers: jib
diff --git a/webrtc-extensions/RTCRtpReceiver-jitterBufferTarget-stats.html b/webrtc-extensions/RTCRtpReceiver-jitterBufferTarget-stats.html
index 504de6d..98ebea2 100644
--- a/webrtc-extensions/RTCRtpReceiver-jitterBufferTarget-stats.html
+++ b/webrtc-extensions/RTCRtpReceiver-jitterBufferTarget-stats.html
@@ -25,14 +25,14 @@
                     "measure raising video jitterBufferTarget to 500");
 async_promise_test(t => applyJitterBufferTarget(t, "audio", 500),
                     "measure raising audio jitterBufferTarget to 500");
-async_promise_test(t => applyJitterBufferTarget(t, "video", 250, 50),
-                    "measure lowering video jitterBufferTarget to 50");
-async_promise_test(t => applyJitterBufferTarget(t, "audio", 250, 50),
-                    "measure lowering audio jitterBufferTarget to 50");
-async_promise_test(t => applyJitterBufferTarget(t, "video", 500, 150),
+async_promise_test(t => applyJitterBufferTarget(t, "video", 250, 150),
                     "measure lowering video jitterBufferTarget to 150");
-async_promise_test(t => applyJitterBufferTarget(t, "audio", 500, 150),
+async_promise_test(t => applyJitterBufferTarget(t, "audio", 250, 150),
                     "measure lowering audio jitterBufferTarget to 150");
+async_promise_test(t => applyJitterBufferTarget(t, "video", 400, 250),
+                    "measure lowering video jitterBufferTarget to 300");
+async_promise_test(t => applyJitterBufferTarget(t, "audio", 400, 250),
+                    "measure lowering audio jitterBufferTarget to 300");
 
 async function applyJitterBufferTarget(t, kind, target, targetToLower) {
   const caller = new RTCPeerConnection();
@@ -67,7 +67,8 @@
 async function measureDelayFromStats(t, receiver, callee, target, kind) {
   const lowerBound = target * 0.7;
   const upperBound = target * 1.3;
-  let delay, oldInboundStats;
+  let delay, oldInboundStats, prevDelay, rateOfChange;
+  let numDelayMeasurements = 1;
 
   for (let statChecks = 0; statChecks < 40; statChecks++) {
     await new Promise(r => t.step_timeout(r, 1000));
@@ -77,6 +78,11 @@
     if (oldInboundStats) {
       delay = ((inboundStats.jitterBufferDelay - oldInboundStats.jitterBufferDelay) /
                (inboundStats.jitterBufferEmittedCount - oldInboundStats.jitterBufferEmittedCount) * 1000);
+      if (prevDelay) {
+        rateOfChange = (delay - prevDelay) / numDelayMeasurements;
+        numDelayMeasurements++;
+      }
+      prevDelay = delay;
       if (delay > lowerBound && delay < upperBound) {
         break;
       }
@@ -84,7 +90,7 @@
     oldInboundStats = inboundStats;
   }
   t.step(() => assert_between_inclusive(delay , lowerBound, upperBound,
-   `${kind} delay is within bounds`));
+   `${kind} delay is within bounds rateOfChange ${rateOfChange} over ${numDelayMeasurements} measurements`));
   return delay;
 }
 </script>