Closed Bug 1487811 Opened Last year Closed Last year

Remove Widevine CDM8 interface and update CDM headers

Categories

(Core :: Audio/Video: Playback, enhancement, P2)

enhancement

Tracking

()

RESOLVED FIXED
mozilla64
Tracking Status
firefox-esr60 65+ fixed
firefox64 --- fixed

People

(Reporter: bryce, Assigned: bryce)

References

Details

Attachments

(4 files)

Bug 1486482 requires that we update the CDM headers in central. This will remove the Widevince CDM8 interface from the headers, and as such we should remove other CDM8 references from the code. The new headers will keep the CDM9 interface and add the CDM10 interface (as well as 11, which we are not implementing yet).

This bug tracks removal of the CDM8 interface while retaining compatibility with CDM9. As the new headers contain a new interface that we eventually wish to target (CDM10), we should follow our standing pattern of having a compatibility interface from the new CDM10 interface to the CDM9 interface.

This bug does not track fully implementing CDM10, but will involve implementing parts of the interface for the new CDM. These limitations in scope should not cause issue in compatibility with CDM9, and will help keep issues isolated should the occur.
Update content_decryption_module.h and other Widevine headers. This removes the
CDM8 interface and adds in the CDM10 and CDM11 interfaces. As such this patch
removes references to CDM8 from the code and adds some of the foundations for
supporting CDM10. Most of the CDM10 code will be implemented in another bug, but
there are a number of cases where it was straight forward to shuffle CDM8+9 code
-> CDM9+10, rather than deleting it and replacing it later.
Remove members only used by CDM8 from the IPDL and remove code that depended on
the removed IPDL. Rename various instances of 'error' to 'exception' as from
CDM9 'exception' is used exclusively to refer to promise failure states.

Depends on D5628
The CDM10 interface makes 2 notable changes here:
1) Instead of the binary choice between unencrypted and encrypted (which assumed
cenc encryption), the interface now allows for specification of encryption used.
Practically this means we will eventually need to support choosing between not
encrypted, cenc, or cbcs.
2) The interface adds a bool for hardware secure codecs for use when
initializing the CDM.

This changeset adjusts the IPDL for the CDM to accommodate these changes. The
changes are also supported in surrounding code, but are not fully plumbed to
either the web, or the CDM.

Fully supporting new encryption schemes and hardware secure codecs will require
further work which is beyond the scope of this bug.

Some formatting drive bys so new formatting and old formatting both match
expected formatting by clang-format.

Depends on D5629
Implement a compatibility layer so that we can expose a CDM10 interface while
still using CDM9. Notably, this layer checks to make sure the new encryption
scheme introduced with CDM10 is not used with CDM9.

Depends on D5630
Comment on attachment 9008271 [details]
Bug 1487811 - P1: Update Widevine headers and C++ code to prepare for CDM interface 10 support. r=cpearce

Chris Pearce (:cpearce) has approved the revision.
Attachment #9008271 - Flags: review+
Comment on attachment 9008272 [details]
Bug 1487811 - P2 Remove CDM8 interface specific IPDL. r=cpearce

Chris Pearce (:cpearce) has approved the revision.
Attachment #9008272 - Flags: review+
Comment on attachment 9008275 [details]
Bug 1487811 - P4: Implement CDM10 -> CDM9 compat layer. r=cpearce

Chris Pearce (:cpearce) has approved the revision.
Attachment #9008275 - Flags: review+
Comment on attachment 9008274 [details]
Bug 1487811 - P3: Add CDM10 functions to IPDL. r=cpearce

Chris Pearce (:cpearce) has approved the revision.
Attachment #9008274 - Flags: review+
Pushed by bvandyk@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/e9b9cb4d4328
P1: Update Widevine headers and C++ code to prepare for CDM interface 10 support. r=cpearce
https://hg.mozilla.org/integration/autoland/rev/3d154d157bc7
P2 Remove CDM8 interface specific IPDL. r=cpearce
https://hg.mozilla.org/integration/autoland/rev/8f814dfe27bd
P3: Add CDM10 functions to IPDL. r=cpearce
https://hg.mozilla.org/integration/autoland/rev/639181de70e6
P4: Implement CDM10 -> CDM9 compat layer. r=cpearce
See Also: → cbcs
Blocks: 1516669
Blocks: 1518525

Comment on attachment 9008271 [details]
Bug 1487811 - P1: Update Widevine headers and C++ code to prepare for CDM interface 10 support. r=cpearce

[ESR Uplift Approval Request]

If this is not a sec:{high,crit} bug, please state case for ESR consideration: Please see Bug 1518525 for details and motivation.

Further notes: this is the first bug a a series tracked by bug 1518525. Could we please uplift all patches on this bug? Please see https://treeherder.mozilla.org/#/jobs?repo=try&revision=b9976fb4de94bf0933f1faa8118154961fac20fb&selectedJob=220243631 for a try push where these patches have been grafted onto esr60.

User impact if declined: Failure to playback premium media.

Fix Landed on Version: 64

Risk to taking this patch: Low

Why is the change risky/not risky? (and alternatives if risky): Code has landed and baked since 64. I have verified that the code works when grafted onto esr60.

String or UUID changes made by this patch: None

Attachment #9008271 - Flags: approval-mozilla-esr60?

Comment on attachment 9008271 [details]
Bug 1487811 - P1: Update Widevine headers and C++ code to prepare for CDM interface 10 support. r=cpearce

Needed for ESR60 to continue to support Widevine video playback in the very near future. Approved for 60.5.0esr.

Attachment #9008271 - Flags: approval-mozilla-esr60? → approval-mozilla-esr60+
You need to log in before you can comment on or make changes to this bug.