Bug 276475
| Summary: | FairPlay content with multiple keys freezes on key change | ||
|---|---|---|---|
| Product: | WebKit | Reporter: | Thasso Griebel <thasso.griebel> |
| Component: | Media | Assignee: | Nobody <webkit-unassigned> |
| Status: | NEW | ||
| Severity: | Normal | CC: | eric.carlson, jameson.steiner, jean-yves.avenard, jer.noble, radoslaw.wlodkowski, thasso.griebel, webkit-bug-importer |
| Priority: | P2 | Keywords: | InRadar |
| Version: | Safari Technology Preview | ||
| Hardware: | Mac (Apple Silicon) | ||
| OS: | macOS 14 | ||
| URL: | https://castlabs.github.io/debug_fps_multikey/ | ||
Thasso Griebel
FairPlay content with MSE and EME freezes when multiple keys are used. No error is raised and the `timeupdate` events are still triggered.
A demo is available at https://castlabs.github.io/debug_fps_multikey/ and the corresponding code can be found at https://github.com/castlabs/debug_fps_multikey.
To reproduce the problem, we are creating a media source and listen to `encrypted` events with `sinf` init data. The demo content consists of an HD rendition with Key A and an SD rendition with Key B.
Segments are pushed in the following order:
1. HD Init segment. This triggers an `encrypted` event and we load the HD key.
2. HD Segment 1 (0s - 4s)
3. SD Init segment. This triggers an `encrypted` event and we load the SD key.
4. SD Segment 2 (4s - 8s)
5. SD Segment 3 (8s - 12s)
Keys are loaded successfully for both SD and HD renditions and playback starts and plays until the segment transition from HD to SD at 4 seconds. We do receive a `resize` event but the **video freezes**. There is no indication of any error and even the `timeupdate` events keep on coming in.
Note further that the license are fetched successfully, pushed to the respective sessions and keys status are updated to "usable".
The problem can be reproduced on:
* macOS 14.5 + Safari/18.0 -- fails
* macOS 14.5 + Safari/17.5 -- fails
* macOS 14.5 (Intel) + Safari/17.5 --fails
* iPadOS 15.8 + Safari/15.6.6 -- fails
The problem can **not** be reproduced on:
* iOS 17.5.1 + Safari/604.1 -- works
* iOS 17.5 + Safari/604.1 -- works
* iPadOS 17.5.1 + Safari/605.1.15 -- works
| Attachments | ||
|---|---|---|
| Add attachment proposed patch, testcase, etc. |
Radar WebKit Bug Importer
<rdar://problem/131991246>
Jer Noble
Hello, and thanks for filing this bug. It looks like the reason this bug is not encountered on iOS is because the `SampleBufferContentKeySessionSupportEnabled` feature flag is enabled there. It looks like enabling that flag on macOS will fix this issue as well.
Jer Noble
Keep an eye on this PR: https://github.com/WebKit/WebKit/pull/25990