You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Proposal: bandwidth-aware "Auto" quality (today Auto is simply the highest level) and a rate-scaled MSE forward buffer #214
Where:chrome/player/players/LevelManager.mjs (getDesiredVideoHeight: if (defaultQuality === 'Auto') return Infinity;, documented as deliberate: "Always max out rather than scaling to the screen"), chrome/player/players/hls/HLSPlayer.mjs (abandon rules disabled, preserveManualLevelOnError: true, maxBufferLength: 10), chrome/player/players/dash/DashPlayer.mjs (autoSwitchBitrate: {audio: false, video: false}), chrome/player/players/mp4/MP4Player.mjs (maxBufferLength)
Today
Both libraries' ABR is switched off and the level is pinned as manual, and Auto picks the top rendition. A connection slower than the top rendition rebuffers every few seconds forever (the 300 s pre-buffer only helps when average throughput exceeds the bitrate); a 4K rendition is fetched for a 1080p window (hls.js's capLevelToPlayerSize is inert for manual levels). DownloadManager already measures throughput (getSpeed(), the speed test with up to 6 downloaders).
Proposal
Keep the pinned-level design and only automate the pick: when defaultQuality === 'Auto', choose the highest level whose bitrate <= about 0.8 x measured throughput once the speed test has settled, re-evaluated in mainloop with hysteresis (step up only after N seconds above the next level's bitrate; step down when buffered-ahead falls under a threshold), optionally capped by screen.height x devicePixelRatio; explicit user choices stay manual.
Second, the hls.js forward buffer is fixed at 10 s regardless of rate: at 4-8x that is 1.25-2.5 s of wall time, so any hiccup in the transmux worker or in reading a fragment back from OPFS shows as a stall although 300 s are on disk. Scale hls.config.maxBufferLength/maxMaxBufferLength (and MP4Player's maxBufferLength) with the playback rate in the playbackRate setter, e.g. 10 x rate capped at 60 s; the back buffer can stay at 10 s.
Confidence: high that ABR is absent; medium on the policy and on the buffer claim (not measured).
From a line-by-line code review of the tree at 41363fd (2026-10-02). Each claim above was checked against the source before filing; the reproduction steps and line references are as of that commit.
Activity
Merge pull request #329 from Nawid3333/claude/group-5-playback-save