| Index: chrome/renderer/media/chrome_key_systems.cc
|
| diff --git a/chrome/renderer/media/chrome_key_systems.cc b/chrome/renderer/media/chrome_key_systems.cc
|
| index 71937fd87c2f95bbd5622b15a47e60dcc7b3d57b..818d4010ac9c6a1494ceb80a87fdcb17ed26c3ce 100644
|
| --- a/chrome/renderer/media/chrome_key_systems.cc
|
| +++ b/chrome/renderer/media/chrome_key_systems.cc
|
| @@ -12,6 +12,7 @@
|
| #include "base/strings/string_split.h"
|
| #include "base/strings/utf_string_conversions.h"
|
| #include "chrome/common/render_messages.h"
|
| +#include "components/cdm/renderer/widevine_key_systems.h"
|
| #include "content/public/renderer/render_thread.h"
|
|
|
| #include "widevine_cdm_version.h" // In SHARED_INTERMEDIATE_DIR.
|
| @@ -23,10 +24,6 @@
|
| #include "base/version.h"
|
| #endif
|
|
|
| -#if defined(OS_ANDROID)
|
| -#include "chrome/common/encrypted_media_messages_android.h"
|
| -#endif
|
| -
|
| using content::KeySystemInfo;
|
| using content::SupportedCodecs;
|
|
|
| @@ -99,76 +96,12 @@ static void AddExternalClearKey(
|
| info.key_system = kExternalClearKeyCrashKeySystem;
|
| concrete_key_systems->push_back(info);
|
| }
|
| -#endif // defined(ENABLE_PEPPER_CDMS)
|
| -
|
|
|
| #if defined(WIDEVINE_CDM_AVAILABLE)
|
| -enum WidevineCdmType {
|
| - WIDEVINE,
|
| - WIDEVINE_HR,
|
| -#if defined(OS_ANDROID)
|
| - WIDEVINE_HR_NON_COMPOSITING,
|
| -#endif
|
| -};
|
| -
|
| -#if !defined(OS_ANDROID)
|
| -static bool IsWidevineHrSupported() {
|
| - // TODO(jrummell): Need to call CheckPlatformState() but it is
|
| - // asynchronous, and needs to be done in the browser.
|
| - return false;
|
| -}
|
| -#endif
|
| -
|
| -// Return |name|'s parent key system.
|
| -static std::string GetDirectParentName(std::string name) {
|
| - int last_period = name.find_last_of('.');
|
| - DCHECK_GT(last_period, 0);
|
| - return name.substr(0, last_period);
|
| -}
|
| -
|
| -static void AddWidevineWithCodecs(
|
| - WidevineCdmType widevine_cdm_type,
|
| - SupportedCodecs supported_codecs,
|
| - std::vector<KeySystemInfo>* concrete_key_systems) {
|
| - KeySystemInfo info(kWidevineKeySystem);
|
| -
|
| - switch (widevine_cdm_type) {
|
| - case WIDEVINE:
|
| - // For standard Widevine, add parent name.
|
| - info.parent_key_system = GetDirectParentName(kWidevineKeySystem);
|
| - break;
|
| - case WIDEVINE_HR:
|
| - info.key_system.append(".hr");
|
| - break;
|
| -#if defined(OS_ANDROID)
|
| - case WIDEVINE_HR_NON_COMPOSITING:
|
| - info.key_system.append(".hrnoncompositing");
|
| - break;
|
| -#endif
|
| - default:
|
| - NOTREACHED();
|
| - }
|
| -
|
| - // TODO(xhwang): A container or an initDataType may be supported even though
|
| - // there are no codecs supported in that container. Fix this when we support
|
| - // initDataType.
|
| - info.supported_codecs = supported_codecs;
|
| -
|
| -#if defined(ENABLE_PEPPER_CDMS)
|
| - info.pepper_type = kWidevineCdmPluginMimeType;
|
| -#endif // defined(ENABLE_PEPPER_CDMS)
|
| -
|
| - concrete_key_systems->push_back(info);
|
| -}
|
| -
|
| -#if defined(ENABLE_PEPPER_CDMS)
|
| -// When the adapter is registered, a name-value pair is inserted in
|
| -// additional_param_* that lists the supported codecs. The name is "codecs" and
|
| -// the value is a comma-delimited list of codecs.
|
| // This function finds "codecs" and parses the value into the vector |codecs|.
|
| // Converts the codec strings to UTF-8 since we only expect ASCII strings and
|
| // this simplifies the rest of the code in this file.
|
| -void GetSupportedCodecs(
|
| +void GetSupportedCodecsForPepperCdm(
|
| const std::vector<base::string16>& additional_param_names,
|
| const std::vector<base::string16>& additional_param_values,
|
| std::vector<std::string>* codecs) {
|
| @@ -212,7 +145,9 @@ static void AddPepperBasedWidevine(
|
| }
|
|
|
| std::vector<std::string> codecs;
|
| - GetSupportedCodecs(additional_param_names, additional_param_values, &codecs);
|
| + GetSupportedCodecsForPepperCdm(additional_param_names,
|
| + additional_param_values,
|
| + &codecs);
|
|
|
| SupportedCodecs supported_codecs = content::EME_CODEC_NONE;
|
| for (size_t i = 0; i < codecs.size(); ++i) {
|
| @@ -230,52 +165,23 @@ static void AddPepperBasedWidevine(
|
| #endif // defined(USE_PROPRIETARY_CODECS)
|
| }
|
|
|
| - AddWidevineWithCodecs(WIDEVINE, supported_codecs, concrete_key_systems);
|
| -
|
| - if (IsWidevineHrSupported())
|
| - AddWidevineWithCodecs(WIDEVINE_HR, supported_codecs, concrete_key_systems);
|
| -}
|
| -#elif defined(OS_ANDROID)
|
| -static void AddAndroidWidevine(
|
| - std::vector<KeySystemInfo>* concrete_key_systems) {
|
| - SupportedKeySystemRequest request;
|
| - SupportedKeySystemResponse response;
|
| -
|
| - request.key_system = kWidevineKeySystem;
|
| - request.codecs = content::EME_CODEC_WEBM_ALL | content::EME_CODEC_MP4_ALL;
|
| - content::RenderThread::Get()->Send(
|
| - new ChromeViewHostMsg_GetSupportedKeySystems(request, &response));
|
| - DCHECK(response.compositing_codecs & content::EME_CODEC_ALL)
|
| - << "unrecognized codec";
|
| - DCHECK(response.non_compositing_codecs & content::EME_CODEC_ALL)
|
| - << "unrecognized codec";
|
| - if (response.compositing_codecs != content::EME_CODEC_NONE) {
|
| - AddWidevineWithCodecs(
|
| - WIDEVINE,
|
| - static_cast<SupportedCodecs>(response.compositing_codecs),
|
| - concrete_key_systems);
|
| - }
|
| -
|
| - if (response.non_compositing_codecs != content::EME_CODEC_NONE) {
|
| - AddWidevineWithCodecs(
|
| - WIDEVINE_HR_NON_COMPOSITING,
|
| - static_cast<SupportedCodecs>(response.non_compositing_codecs),
|
| - concrete_key_systems);
|
| - }
|
| + cdm::AddWidevineWithCodecs(cdm::WIDEVINE,
|
| + supported_codecs,
|
| + concrete_key_systems);
|
| }
|
| -#endif // defined(ENABLE_PEPPER_CDMS)
|
| #endif // defined(WIDEVINE_CDM_AVAILABLE)
|
| +#endif // defined(ENABLE_PEPPER_CDMS)
|
|
|
| void AddChromeKeySystems(std::vector<KeySystemInfo>* key_systems_info) {
|
| #if defined(ENABLE_PEPPER_CDMS)
|
| AddExternalClearKey(key_systems_info);
|
| -#endif
|
|
|
| #if defined(WIDEVINE_CDM_AVAILABLE)
|
| -#if defined(ENABLE_PEPPER_CDMS)
|
| AddPepperBasedWidevine(key_systems_info);
|
| -#elif defined(OS_ANDROID)
|
| - AddAndroidWidevine(key_systems_info);
|
| -#endif
|
| -#endif
|
| +#endif // defined(WIDEVINE_CDM_AVAILABLE)
|
| +#endif // defined(ENABLE_PEPPER_CDMS)
|
| +
|
| +#if defined(OS_ANDROID)
|
| + cdm::AddAndroidWidevine(key_systems_info);
|
| +#endif // defined(OS_ANDROID)
|
| }
|
|
|