Tab/Desktop capture will soon be completely moved into the VIZ service. In doing this, it became apparent that the design and control logic around passive vs. active refresh requests is now a bit misplaced: It seems that media::VideoCaptureOracle owns too much of this logic, and this prevents the new FrameSinkVideoCapturerImpl from guaranteeing that an initial video frame will always be captured and delivered to a consumer while the target frame sink's content is not changing.
OTOH solution: Once receiving a refresh frame request (or when starting capture), the FrameSinkVideoCapturerImpl should set a timer that forces capture after a reasonable delay. If other events cause a capture to happen in the meantime, the timer can be canceled. With this, perhaps a lot of the media::VideoCaptureOracle logic around refresh events can be removed?
Comment 1 by m...@chromium.org
, Nov 15 2017