Closed Bug 1944386 Opened 1 year ago Closed 1 year ago

Use CDM v11 interface if supported by plugin

Categories

(Core :: Audio/Video: GMP, enhancement)

Desktop
All
enhancement

Tracking

()

VERIFIED FIXED
136 Branch
Tracking Status
firefox-esr115 --- verified
firefox-esr128 --- verified
firefox-esr140 --- verified
firefox136 --- fixed

People

(Reporter: aosmond, Assigned: aosmond)

References

(Blocks 1 open bug)

Details

Attachments

(3 files)

We have the header in place already with the relevant structs:
https://searchfox.org/mozilla-central/rev/a965e3c683ecc035dee1de72bd33a8d91b1203ed/dom/media/gmp/widevine-adapter/content_decryption_module.h#1212

But we should probably pull in the latest header since there are a few changes (11 wasn't declared as stable when we last pulled):
https://source.chromium.org/chromium/chromium/src/+/main:media/cdm/api/content_decryption_module.h;drc=27d34700b83f381c62e3a348de2e6dfdc08364b8;bpv=1;bpt=1;l=1

Here we should bump it to version 11, and the backwards compat to version 10:
https://searchfox.org/mozilla-central/rev/a965e3c683ecc035dee1de72bd33a8d91b1203ed/dom/media/gmp/GMPUtils.h#19-20

And here we should switch to accepting either:
https://searchfox.org/mozilla-central/rev/a965e3c683ecc035dee1de72bd33a8d91b1203ed/dom/media/gmp/ChromiumCDMAdapter.cpp#119

And when we create the host, we need to support creating the correct version requested, either 10 or 11:
https://searchfox.org/mozilla-central/rev/a965e3c683ecc035dee1de72bd33a8d91b1203ed/dom/media/gmp/ChromiumCDMAdapter.cpp#140

If only version 10 is supported, we should use a compatibility wrapper like we did in bug 1487811:
https://phabricator.services.mozilla.com/D5631

So that we are able to convert usage of the interfaces to the 11 variants:
https://searchfox.org/mozilla-central/rev/a965e3c683ecc035dee1de72bd33a8d91b1203ed/dom/media/gmp/widevine-adapter/content_decryption_module.h#868
https://searchfox.org/mozilla-central/rev/a965e3c683ecc035dee1de72bd33a8d91b1203ed/dom/media/gmp/widevine-adapter/content_decryption_module.h#1212

We should also update Clearkey to use the 11 variant as part of this work, so that when we want to drop 10, we are ready.

It may be possible to avoid supporting 10 if the plugins we are shipping with (4.10.2830.0) already support 11.

Depends on: 1944402
Summary: Use CDM Host_11 if plugin supports updated interface → Use CDM v11 interface if supported by plugin

It appears the current Widevine CDM does not support version 11, so we need to support both at the same time.

This patch adds support for v11 to ensure forwards compatibility with
new CDM plugin versions. It uses a compatibility layer for v10 plugins.

Assignee: nobody → aosmond
Status: NEW → ASSIGNED
Pushed by aosmond@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/d459910a82f3 Add support for Chromium CDM interface v11. r=media-playback-reviewers,padenot https://hg.mozilla.org/integration/autoland/rev/11d73209a2e0 1944402, 1944456: apply code formatting via Lando
Status: ASSIGNED → RESOLVED
Closed: 1 year ago
Resolution: --- → FIXED
Target Milestone: --- → 136 Branch
Depends on: 1944456

This patch adds support for v11 to ensure forwards compatibility with
new CDM plugin versions. It uses a compatibility layer for v10 plugins.

Original Revision: https://phabricator.services.mozilla.com/D235909

Attachment #9501010 - Flags: approval-mozilla-esr115?

This patch adds support for v11 to ensure forwards compatibility with
new CDM plugin versions. It uses a compatibility layer for v10 plugins.

Original Revision: https://phabricator.services.mozilla.com/D235909

Attachment #9501012 - Flags: approval-mozilla-esr128?

firefox-esr115 Uplift Approval Request

  • User impact if declined: We will be unable to push future Widevine updates when Google deprecates the v10 interface (in the next year)
  • Code covered by automated testing: yes
  • Fix verified in Nightly: yes
  • Needs manual QE test: yes
  • Steps to reproduce for manual QE testing: Do the Widevine test plan.
  • Risk associated with taking this patch: Low but must verify
  • Explanation of risk level: I was able to cherry-pick the patch and it merged fine, but I have been unable to push to try to verify the build myself due to the git migration. We have been otherwise been shipping these patches for quite some time in release.
  • String changes made/needed: N/A
  • Is Android affected?: no
Flags: qe-verify+

firefox-esr128 Uplift Approval Request

  • User impact if declined: We will be unable to push future Widevine updates when Google deprecates the v10 interface (in the next year)
  • Code covered by automated testing: yes
  • Fix verified in Nightly: yes
  • Needs manual QE test: yes
  • Steps to reproduce for manual QE testing: Do the Widevine test plan.
  • Risk associated with taking this patch: Low but must verify
  • Explanation of risk level: I was able to cherry-pick the patch and it merged fine, but I have been unable to push to try to verify the build myself due to the git migration. We have been otherwise been shipping these patches for quite some time in release.
  • String changes made/needed: N/A
  • Is Android affected?: no

firefox-esr128 Uplift Approval Request

  • User impact if declined: We will be unable to push future Widevine updates when Google deprecates the v10 interface (in the next year)
  • Code covered by automated testing: yes
  • Fix verified in Nightly: yes
  • Needs manual QE test: yes
  • Steps to reproduce for manual QE testing: Do the Widevine test plan.
  • Risk associated with taking this patch: Low
  • Explanation of risk level: We have been shipping these patches for quite some time in release, patch was auto merged by git.
  • String changes made/needed: N/A
  • Is Android affected?: no

firefox-esr115 Uplift Approval Request

  • User impact if declined: We will be unable to push future Widevine updates when Google deprecates the v10 interface (in the next year)
  • Code covered by automated testing: yes
  • Fix verified in Nightly: yes
  • Needs manual QE test: yes
  • Steps to reproduce for manual QE testing: Do the Widevine test plan.
  • Risk associated with taking this patch: Low
  • Explanation of risk level: We have been shipping these patches for quite some time in release, patch was auto merged by git.
  • String changes made/needed: N/A
  • Is Android affected?: no
QA Whiteboard: [uplift] [qa-ver-needed-c142/b141]

Smoke testing done on Firefox 140.1.0esr build, playback works on sites (Netflix, Hulu, HBO, Amazon Prime, Spotify, Shaka Player, Therokuchannel) tested on Windows 11, Ubuntu 22 and macOS 10.15.

QA Contact: tzsoldos
Attachment #9501012 - Flags: approval-mozilla-esr128? → approval-mozilla-esr128+
Attachment #9501010 - Flags: approval-mozilla-esr115? → approval-mozilla-esr115+

Smoke testing done on Firefox 115.26.0esr and 128.13.0esr builds, playback works on sites (Netflix, Hulu, HBO, Amazon Prime, Spotify, Shaka Player, Therokuchannel) tested on Windows 11, Ubuntu 22 and macOS 10.15.

Status: RESOLVED → VERIFIED
QA Whiteboard: [uplift] [qa-ver-needed-c142/b141] → [uplift] [qa-ver-done-c142/b141]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: