reportPlayback method
The video's counters at at: two reports give the frames per second between them.
Implementation
void reportPlayback({
required int totalFrames,
required int droppedFrames,
required int width,
required int height,
required DateTime at,
}) {
final previous = _lastPlayback;
_lastPlayback = (totalFrames, at);
final elapsed = previous == null
? 0
: at.difference(previous.$2).inMilliseconds;
// A new session restarts the counters; a negative difference is that, not a rate.
if (previous == null || elapsed <= 0 || totalFrames < previous.$1) return;
playback.value = PlaybackStats(
fps: (totalFrames - previous.$1) * 1000 / elapsed,
dropped: droppedFrames,
width: width,
height: height,
);
}