shaka-player: DASH processManifest performance regression in 3.x
Have you read the FAQ and checked for duplicate open issues? Yes
What version of Shaka Player are you using? 2.5.x, 3.x
Can you reproduce the issue with our latest release version? Yes
Can you reproduce the issue with the latest code from main?
Didn’t try
Are you using the demo app or your own custom app? Custom
If custom app, can you reproduce the issue using our demo app? N/A
What browser and OS are you using? webOS, Tizen
For embedded devices (smart TVs, etc.), what model and firmware version are you using? webOS 5.00.35 Tizen firmware 2200.9
What are the manifest and license server URIs?
What configuration are you using? What is the output of player.getConfiguration()?
Default configuration
What did you do?
Play a live stream with large DVR (several hours) using different versions of Shaka Player on webOS and Tizen TV (low performance devices)
What did you expect to happen? Playback should be smooth
What actually happened?
Using Shaka Player 2.5.x, Shaka is able to load and process the growing live manifest every few seconds.
Using Shaka Player 3.x, the processManifest step takes several seconds.
With a 4+h DVR, every time the manifest is reloaded:
- On Tizen, it takes close to 2s
- On webOS, it takes over 10s
There is visibly a considerable performance degradation of the manifest parsing logic, making it barely tolerable on Tizen (UI is frozen during the parsing), and completely unusable on webOS.
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Comments: 65 (17 by maintainers)
Commits related to this issue
- fix(dash): Fix performance regression (#4064) See: https://github.com/shaka-project/shaka-player/issues/4062#issuecomment-1077826210 — committed to shaka-project/shaka-player by deleted user 2 years ago
- fix(performance): Eliminate use of ES6 generators (#4092) See: https://github.com/shaka-project/shaka-player/issues/4062#issuecomment-1077826210 Co-authored-by: @joeyparrish Issue #4062 — committed to shaka-project/shaka-player by deleted user 2 years ago
- fix(dash): Fix performance regression (#4064) See: https://github.com/shaka-project/shaka-player/issues/4062#issuecomment-1077826210 — committed to shaka-project/shaka-player by deleted user 2 years ago
- fix(performance): Eliminate use of ES6 generators (#4092) See: https://github.com/shaka-project/shaka-player/issues/4062#issuecomment-1077826210 Co-authored-by: @joeyparrish Issue #4062 — committed to shaka-project/shaka-player by deleted user 2 years ago
- fix(dash): Fix performance regression (#4064) See: https://github.com/shaka-project/shaka-player/issues/4062#issuecomment-1077826210 — committed to shaka-project/shaka-player by deleted user 2 years ago
- fix(performance): Eliminate use of ES6 generators (#4092) See: https://github.com/shaka-project/shaka-player/issues/4062#issuecomment-1077826210 Co-authored-by: @joeyparrish Issue #4062 — committed to shaka-project/shaka-player by deleted user 2 years ago
- fix(dash): Fix performance regression (#4064) See: https://github.com/shaka-project/shaka-player/issues/4062#issuecomment-1077826210 — committed to shaka-project/shaka-player by deleted user 2 years ago
- fix(performance): Eliminate use of ES6 generators (#4092) See: https://github.com/shaka-project/shaka-player/issues/4062#issuecomment-1077826210 Co-authored-by: @joeyparrish Issue #4062 — committed to shaka-project/shaka-player by deleted user 2 years ago
I think the problem has been mitigated in the main branch (see https://github.com/shaka-project/shaka-player/commit/f1c5a1c19126832184f43b0d08e9503a34b0dac0), can you check it? Thanks!
I have created https://github.com/shaka-project/shaka-player/pull/4064 to fix these issues.
I did some profiling and code reading and I strongly suspect a refactoring which happened between 2.5 and 3:
forloops have been converted to enumeration loopsExample in
MpdUtils.js:This looks like an absolutely catastrophic refactoring idea.
The PR surely had a good reason to be - you should first find that out.
Unfortunately Shaka 2.5.9 is still MUCH faster. Our LGs stutter with a live stream with 4h DVR with Shaka 3 (even optimised) while Shaka 2 handles it without a sweat.