chromium/chrome/test/data/webrtc/video_frame_detector.js

/**
 * Copyright 2022 The Chromium Authors
 * Use of this source code is governed by a BSD-style license that can be
 * found in the LICENSE file.
 */

// This file requires the functions defined in test_functions.js.

var gNumFrames = 0;

// Public interface.

/**
 * Enables video frame callbacks for a video tag. The algorithm relies on
 * requestVideoFrameCallback.
 * After callbacks have been enabled, retrieve the current frame counter with
 * getNumVideoFrameCallbacks.
 */
function enableVideoFrameCallbacks(videoElementId) {
  const video = document.getElementById(videoElementId);
  if (!video)
    throw new Error('Could not find video element with id ' + videoElementId);
  const callback = (now, metadata) => {
    ++gNumFrames;
    video.requestVideoFrameCallback(callback);
  };
  video.requestVideoFrameCallback(callback);
  return logAndReturn('ok-started');
}

/**
 * Returns the number of frame callback invocations so far.
 */
function getNumVideoFrameCallbacks() {
  return logAndReturn(`${gNumFrames}`);
}