Confirmed users
452
edits
| 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 == | ||