function TimeObserver(video) {
return Generators.observe(notify => {
let time, frame;
if (video.requestVideoFrameCallback) {
function tick() {
if (time !== video.currentTime) notify(time = video.currentTime);
frame = video.requestVideoFrameCallback(tick);
}
if (video.paused) notify(video.currentTime);
frame = video.requestVideoFrameCallback(tick);
return () => video.cancelVideoFrameCallback(frame);
} else {
(function tick() {
if (time !== video.currentTime) notify(time = video.currentTime);
frame = requestAnimationFrame(tick);
})();
return () => cancelAnimationFrame(frame);
}
});
}