Closed Bug 1657239 Opened 4 years ago Closed 4 years ago

Increased frame drops for 60 fps videos on Windows

Categories

(Core :: Audio/Video: Playback, defect)

All
Windows 10
defect

Tracking

()

RESOLVED FIXED
81 Branch
Tracking Status
thunderbird_esr68 --- unaffected
thunderbird_esr78 --- unaffected
firefox-esr68 --- unaffected
firefox-esr78 --- unaffected
firefox79 --- unaffected
firefox80 --- unaffected
firefox81 --- fixed

People

(Reporter: mstange, Assigned: mstange)

References

(Regression)

Details

(Keywords: regression)

This was reported in bug 1655221 comment 5.

On Windows, for hardware-decoded video, we only buffer 3 frames in the compositor. This means that we don't have a lot of leeway when we choose which video frame to present in the current composite; the buffering window should be centered around the timestamp that we use for picking the video frame.

Bug 1653355 changed the timestamp we use when picking video frames in the compositor: Rather than picking the video frame for "the current time" at the time of the composite, we now use "the next vsync time" to pick the video frame. In theory, this should lead to improved AV sync; the compositing pipeline takes at least one vsync interval to put the composited pixels onto the physical screen.

However, picking video frames "in the future" makes us more likely to hit the end of the range of buffered video frames. This is what was observed in the profile: https://share.firefox.dev/2XoT83K (see the "0 remaining images" markers)
This leads to dropped frames.

We either need to revert the "one frame in the future" behavior, or we need to make sure the window of buffered frames is shifted into the future as well. Or maybe we want to wait for bug 1539735, which is expected to completely change the buffering mechanism anyway.

I think for now, backing out bug 1653355 is the right way forward.

Status: ASSIGNED → RESOLVED
Closed: 4 years ago
Resolution: --- → FIXED
Target Milestone: --- → 81 Branch
Has Regression Range: --- → yes
You need to log in before you can comment on or make changes to this bug.