Firefox/Shutdown Decoders: Difference between revisions

Jump to navigation Jump to search
Line 64: Line 64:


== Milestones ==
== Milestones ==
=== Blank Previous Frame ===
* https://bugzil.la/1272919 - Dan
* Reviewed and needs rebasing before landing.
=== Optimizations ===
* For video elements off screen (using layout notification) - Kaku, http://bugzil.la/1282710
** Not just for videos in background tabs but when the video element scrolls off the screen
** mattwoodrow says it's possible to subscribe to visibility events via layout and to ask seth or tnikkel for details.
*** tnikkel suggests to start form here: http://searchfox.org/mozilla-central/source/layout/generic/nsIFrame.h#1177
*** nsVideoFrame has already implemented it: http://searchfox.org/mozilla-central/source/layout/generic/nsVideoFrame.cpp#664
** Need to start video before it scrolls back into viewport
*** k17e: in async pan zoom the viewport is 3.5 times the height of the screen weighted in the direction of movement so we shouldn't need to do anything special here
** k17e: Probably only want to do this for silent video where we can recover really quickly
* Resume video when mouse pointer starts hovering tab - https://bugzil.la/1274919 - Dan
** In review. Needs response to mconley.
* Resume video when keyboard is used to change tags - Needs Bug
** For example, if it's possible to detect the direction of cycling and videos are within, say, 5 tabs of the current tab, then start decoding again.
** Need to hook into the tab navigation/change code and alert media elements, like bug 1274919
* Seek to nearest keyframe when video has no audio - http://bugzil.la/1282012 - Kaku
** If there's no audio then no A/V sync to key, so just jump to the nearest keyframe.
** This is a win for large background videos such as at:
*** http://www.gyg.com.au
*** https://www.paypal.com/nz/webapps/mpp/home
*** Many more examples - http://www.hongkiat.com/blog/fullsize-video-background-websites/
** Tricky to detect no audio:
*** element is muted
*** video file has no audio track
*** video file has audio track of silence (alwu did work on this for tab audio indicator)
** Don't suspend video decode if piping output through MSG.
=== Telemetry ===
* What telemetry should we collect about suspending video decode?
** k17e: Amount of time hidden - measure of user value (Bucket results by resolution; i.e. are 720p videos hidden less often?)
*** http://bugzil.la/1285419 "Telemetry to support background video decoder suspend: Hidden play time" -> VIDEO_HIDDEN_PLAY_TIME_MS
**** Just something quick, based on existing VIDEO_PLAY_TIME_MS, to get some data soon, no bucketing on this one.
**** https://telemetry.mozilla.org/new-pipeline/dist.html#max_channel_version=nightly%252F50&measure=VIDEO_HIDDEN_PLAY_TIME_MS
*** http://bugzil.la/1287987 "Percentage hidden/total play time, keyed by audio presence and height ranges" -> VIDEO_HIDDEN_PLAY_TIME_PERCENTAGE
**** https://telemetry.mozilla.org/new-pipeline/dist.html#max_channel_version=nightly%252F50&measure=VIDEO_HIDDEN_PLAY_TIME_PERCENTAGE
** k17e: Recovery time - measure of user cost (separate for noisy vs silent videos)  (Bucket results by resolution; i.e. do 720p videos take longer to recover?)
** k17e: Key frame spacing - distribution allows better tuning
*** http://bugzil.la/1289668 "Telemetry to support background video decoder suspend: Inter-keyframe timings" -> measure=VIDEO_INTER_KEYFRAME_AVERAGE_MS
**** https://telemetry.mozilla.org/new-pipeline/dist.html#max_channel_version=nightly%252F50&measure=VIDEO_INTER_KEYFRAME_AVERAGE_MS
**** https://telemetry.mozilla.org/new-pipeline/dist.html#max_channel_version=nightly%252F50&measure=VIDEO_INTER_KEYFRAME_MAX_MS
=== Mochitests ===
Currently no tests, need some to ensure that behaviour doesn't break
http://bugzil.la/1284177
Add tests for suspending offscreen videos.
Test no visible JS events because of suspending decode.


== Cross Team Projects ==
== Cross Team Projects ==
Confirmed users
452

edits

Navigation menu