-
miu@chromium.org authored
There are three main changes being made with the overall goal of improving the smoothness of the video coming out of the tab capture pipeline: 1. A new AnimatedContentSampler has been added that identifies which frames were rendered due to animated content (e.g., a video or Flash widget). VideoCaptureOracle is then informed of exactly which subset of frames should be captured from the compositor and provided near-perfect frame timestamps for downstream consumers. 2. Additional plumbing in the FrameSubscriber interface to provide the damage region of each frame. This is used by AnimatedContentSampler. Also, impls now provide true vsync-based presentation timestamps. 3. Raised the VideoCaptureController buffer pool count from 3 to 5. This value is based on the logical capacity of the capture pipeline, and not on hardware performance. Testing revealed that more buffers are needed to account for both multiple pipelined GPU readbacks as well as those frames undergoing video encoding dowstream. Testing: Tested mirroring using the usual self_mirroring.zip test extension as well as the Google Cast extension to a Chromecast device. Tested lock-in/out scenarios with a number of well- and ill- behaving video playbacks. Observed dramatic improvement in end-to-end smoothness scores in the lab. New unit tests to cover new code, and made sure all relevant existing unit tests still pass. BUG=258630 Review URL: https://codereview.chromium.org/418283003 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@287447 0039d316-1c4b-4281-b951-d872f2087c98
5b5f2cf9