Source release 14.0.0

This commit is contained in:
John W. Bruce
2018-05-16 17:35:40 -07:00
parent 31381a1311
commit 3ab70cec4e
2053 changed files with 1585838 additions and 4614 deletions

View File

@@ -1,3 +1,96 @@
# Widevine CE CDM Changelog
## 14.0.0 (2018-05-16)
Features:
- Support for OEMCrypto 14, including new unit tests that exercise its
functionality. For a full list of new features in OEMCrypto 14, please see
the Widevine Modular DRM Version 14 Delta document.
- Widevine CE CDM 14.0.0 is not compatible with any previous version of
OEMCrypto. It is only compatible with OEMCrypto v14.
- Added a new overload of the `load()` function for loading keys embedded
inside a PSSH header. This allows for key rotation without multiple server
roundtrips, using entitlement licenses. See the Integration Guide for more
information.
- The version number of the Widevine CE CDM has been bumped to bring the
version numbers of OEMCrypto, the Widevine CE CDM, and the Widevine Android
CDM closer to each other. The major version number of the CE CDM will now
always be the highest version of OEMCrypto supported by that version of the
CE CDM. This is always the version of OEMCrypto that we recommend using with
the CE CDM.
- For this release, the version number is 14.0.0 to reflect that this is the
first release to support OEMCrypto 14.
- Vendors no longer need to supply a copy of either OpenSSL or BoringSSL in
order to compile the CDM. The Widevine CE CDM will now always use the copy
of BoringSSL in the `third_party/` directory, which is provided with the
CDM source code.
- When compiled as a dynamic library, the Widevine CE CDM links statically
with this copy of BoringSSL using hidden visibility. This requires no
changes on the part of partners, so long as they are using the Widevine
CE CDM as a dynamic library. The Widevine CE CDM does not export any
BoringSSL functions and no longer interacts with the platform's copy of
OpenSSL or BoringSSL.
- When using the Widevine CE CDM as a static library, partners are
responsible for providing a compatible copy of BoringSSL. The file
`third_party/boringssl/kit/BORINGSSL_REVISION` contains the hash of the
version of BoringSSL included with the CE CDM, which can be used to guide
decisions about compatible versions of BoringSSL.
- The Widevine CE CDM no longer supports OpenSSL. Those wishing to use the
CE CDM as a static libary with OpenSSL will have to make small
modifications to the code where it uses BoringSSL-only APIs in order to
compile with OpenSSL.
- New build configuration setting: `asm_target_arch`
- When building assembly language files, this setting is used to determine
which CPU architecture's instructions to include.
- If this flag is not set by the configuration, it defaults to `none`, which
turns off use of assembly language completely. We strongly recommend
overriding this default so that you receive the speed benefits of
assembly language.
- Valid values are:
- `x86`
- `x86-64`
- `arm`
- `arm64`
- `ppc64`
- `none`
- Protobuf is now compiled by default to not use RTTI support. This reduces
the size of the final binary and allows for easier support of platforms
without RTTI.
- Several additional flags have been added to the example settings.gypi in
the `x86-64` build to reduce the size of the final binary. Partners may want
to consider setting similar flags on their own builds.
- `no-rtti` (Widevine CE CDM does not and has never used RTTI.)
- `no-exceptions` (Widevine CE CDM does not and has never used exceptions.)
- `lto`
- It is no longer permissible to pass a null `IStorage` pointer to
`Cdm::create()`. Previously, passing `NULL` would select the global/default
`IStorage` as the storage for the new CDM instance. However, starting in CE
CDM 3.5.0, the default `IStorage` began to be the storage for global data
such as the usage table header. To clarify its purpose, we are removing its
ability to do double duty as global storage and as a default for new CDM
instances.
- It is still permitted to use the same `IStorage` instance for the global
storage and as the storage for a specific CDM instance. If this is what
you intend, just pass the same pointer to both `Cdm::initialize()` and
`Cdm::create()`.
- Due to nonce flood protections in OEMCrypto, provisioning and licensing
request generation can fail due to too many requests being generated
quickly. Such failures can be retried successfully after a delay. This has
always been the case. To help in discerning when a failure is due to a nonce
flood and can be retried, these failures will now be reported as
`kQuotaExceeded` errors.
- There is a new parameter on `onKeyStatusesChange()`, `has_new_usable_key`.
This will be set to true when the status change has resulted in any new keys
becoming available. This can be used to more efficiently implement certain
EME behavior.
- A new function, `getStatusForHdcpVersion()` has been added to the CDM
interface. This function can be used to implement `getStatusForPolicy()`
from the [EME Extension: HDCP Policy Check][eme-hdcp] proposal.
- The default service certificate used for Provisioning 3.0 has been updated
to reflect changes to the Widevine Provisioning Server.
[eme-hdcp]: https://github.com/WICG/media-capabilities/blob/master/eme-extension-policy-check.md
## 3.5.0 (2017-11-22)
Features:
@@ -15,7 +108,7 @@ Features:
- Support for SRM enforcement and update (OEMCrypto v13 feature).
- Support for embedded licenses.
- Added support for OpenSSL 1.1 (OpenSSL API changes). Earlier versions of
OpenSSL 1.0 are still supported. The actual OpenSSL version being used is
OpenSSL are still supported. The actual OpenSSL version being used is
checked at compile time.
- Begin migration to exclusively supporting BoringSSL.
- Add adapter and stubs for running CDM against OEMCrypto v12. Remove