-
Notifications
You must be signed in to change notification settings - Fork 468
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
alloy: Add component updater support for Widevine #3149
Comments
This work is currently scheduled for M93 which will reach stable at the end of August 2021. |
Note that Google currently bundles Widevine binaries with the Chrome installer. It is expected that Widevine will load from disk if you create the correct directory structure before initializing CEF (e.g. you might still choose to download Widevine using client code, and have it available after the next client restart). However, going forward, update of the CDM during runtime will only be supported via the Component Updater. |
The quick test for Widevine support is to visit https://shaka-player-demo.appspot.com/support.html and notice that The longer test is to play a video with the Widevine DRM (WV) symbol at https://shaka-player-demo.appspot.com/demo/. Note that proprietary codecs like MP4 are not supported by default CEF builds. This video is a good test example. You can also try executing a JavaScript snippet from the DevTools console, like:
The component updater can be disabled by passing the Faster execution of the component updater after application start can be triggered by passing the Windows and MacOS support loading of the Widevine CDM after component updater download without first requiring a client restart. A restart is required on Linux because the CDM must be loaded into the zygote at startup (see description here). |
Important breakpoints (in order) for debugging Widevine component updater behavior:
Breakpoints for debugging CDM behavior from the renderer:
|
widevine: Use component updater with the Alloy runtime (fixes issue #3149) Widevine CDM binaries will be downloaded on supported platforms shortly after Pass the See the related issue for additional usage details. → <<cset 240b869db5cc (bb)>> |
|
widevine: Use component updater with the Alloy runtime (fixes issue #3149) Widevine CDM binaries will be downloaded on supported platforms shortly after Pass the See the related issue for additional usage details. → <<cset 5a0b3ea93778 (bb)>> |
widevine: Fix ARM compile error due to unused variable (see issue #3149) alloy_browser_main.cc:223:17: error: unused variable 'cus' [-Werror,-Wunused-variable] → <<cset 17d2d13030cb (bb)>> |
widevine: Fix ARM compile error due to unused variable (see issue #3149) alloy_browser_main.cc:223:17: error: unused variable 'cus' [-Werror,-Wunused-variable] → <<cset 6a52098b6251 (bb)>> |
Linux: Update user data path docs (see issue #3149) → <<cset f435c3af9efe (bb)>> |
Linux: Update user data path docs (see issue #3149) → <<cset b4cf6e54ded0 (bb)>> |
alloy: Fix ComponentUpdateService shutdown crash with multi-threaded message loop (see issue #3149) → <<cset 0d1bea3a789e (bb)>> |
alloy: Fix ComponentUpdateService shutdown crash with multi-threaded message loop (see issue #3149) → <<cset c4d96f07faf1 (bb)>> |
alloy: Fix ComponentUpdateService shutdown crash with multi-threaded message loop (see issue #3149) → <<cset 4dd314dec308 (bb)>> |
…hromiumembedded#3149) Widevine CDM binaries will be downloaded on supported platforms shortly after application startup. Widevine support will then become available within a few seconds after successful installation on Windows or after the next application restart on other platforms. The CDM files will be downloaded to a "WidevineCdm" directory inside the `CefSettings.user_data_path` directory. Pass the `--disable-component-update` command-line flag to disable Widevine download and installation. Pass the `--component-updater=fast-update` command- line flag to force Widevine download immediately after application startup. See the related issue for additional usage details.
…omiumembedded#3149) alloy_browser_main.cc:223:17: error: unused variable 'cus' [-Werror,-Wunused-variable] auto* const cus = g_browser_process->component_updater();
…message loop (see issue chromiumembedded#3149)
…hromiumembedded#3149) Widevine CDM binaries will be downloaded on supported platforms shortly after application startup. Widevine support will then become available within a few seconds after successful installation on Windows or after the next application restart on other platforms. The CDM files will be downloaded to a "WidevineCdm" directory inside the `CefSettings.user_data_path` directory. Pass the `--disable-component-update` command-line flag to disable Widevine download and installation. Pass the `--component-updater=fast-update` command- line flag to force Widevine download immediately after application startup. See the related issue for additional usage details.
…omiumembedded#3149) alloy_browser_main.cc:223:17: error: unused variable 'cus' [-Werror,-Wunused-variable] auto* const cus = g_browser_process->component_updater();
…message loop (see issue chromiumembedded#3149)
…message loop (see issue chromiumembedded#3149)
Original report by me.
Applications using the Alloy runtime must currently download Widevine binaries from a Google CDN and register them using the CefRegisterWidevineCdm function as documented here. Chrome, on the other hand, uses the component updater to update the binaries at runtime when necessary.
Manual download and registration of Widevine with the Alloy runtime has proven problematic for the following reasons:
The original Widevine implementation in CEF used the component updater (see issue #1631). That implementation was subsequently replaced by the CefRegisterWidevineCdm approach currently in use (see issue #2009). The stated reasons for dropping component updater support at that time (mid-2016) were:
Recent communications with Google (mid-2021) provide the following responses:
[T0] Available on Chrome beta channel for upcoming Chrome release
[T1] Available on Chrome stable channel (and Component Updater) for current Chrome release (this means CDM is available on latest Chrome, not previous Chrome releases yet)
[T1 + 2 weeks] CDM is available via Component Updater for all compatible Chrome releases (right now, it's M68 or later)
[T1 + 2 weeks] Direct HTTP download links are updated and current.txt is updated with latest CDM version”
Based on the above, we have decided to restore component updater usage with the Alloy runtime. The existing CefRegisterWidevineCdm approach will be removed.
The text was updated successfully, but these errors were encountered: