Chromium Code Reviews| Index: chromecast/renderer/key_systems_cast.cc |
| diff --git a/chromecast/renderer/key_systems_cast.cc b/chromecast/renderer/key_systems_cast.cc |
| index 76646540e7c1c519ee8c10dfb305c8787feb0ab4..3d151c5dfe038c5395c52bf5c35f87415b26e428 100644 |
| --- a/chromecast/renderer/key_systems_cast.cc |
| +++ b/chromecast/renderer/key_systems_cast.cc |
| @@ -9,6 +9,7 @@ |
| #include "base/command_line.h" |
| #include "base/logging.h" |
| #include "build/build_config.h" |
| +#include "chromecast/chromecast_features.h" |
| #include "chromecast/media/base/key_systems_common.h" |
| #include "components/cdm/renderer/widevine_key_system_properties.h" |
| #include "media/base/eme_constants.h" |
| @@ -72,6 +73,46 @@ class PlayReadyKeySystemProperties : public ::media::KeySystemProperties { |
| }; |
| #endif // PLAYREADY_CDM_AVAILABLE |
| +#if defined(WIDEVINE_CDM_AVAILABLE) |
| +class CastWidevineKeySystemProperties |
| + : public cdm::WidevineKeySystemProperties { |
| + public: |
| + CastWidevineKeySystemProperties(SupportedCodecs regular_codecs, |
| + SupportedCodecs secure_codecs, |
| + EmeRobustness max_audio_robustness, |
| + EmeRobustness max_video_robustness) |
| + : cdm::WidevineKeySystemProperties( |
| + regular_codecs, |
| + secure_codecs, |
| + max_audio_robustness, |
| + max_video_robustness, |
| + EmeSessionTypeSupport::NOT_SUPPORTED, // persistent-license. |
| + EmeSessionTypeSupport:: |
| + NOT_SUPPORTED, // persistent-release-message. |
| + // Note: On Chromecast, all CDMs may have persistent state. |
|
ddorwin
2016/05/27 21:33:00
Even the audio devices?
|
| + EmeFeatureSupport::ALWAYS_ENABLED, // Persistent state. |
| + EmeFeatureSupport::ALWAYS_ENABLED) {} // Distinctive identifier. |
| + |
| + EmeConfigRule GetRobustnessConfigRule( |
| + EmeMediaType media_type, |
| + const std::string& requested_robustness) const override { |
| + EmeConfigRule rule = |
| + cdm::WidevineKeySystemProperties::GetRobustnessConfigRule( |
| + media_type, requested_robustness); |
| + |
| + if (rule != EmeConfigRule::SUPPORTED) |
| + return rule; |
| + |
| + EmeRobustness robustness = ConvertRobustness(requested_robustness); |
| + |
| + if (robustness >= EmeRobustness::SW_SECURE_DECODE) |
|
ddorwin
2016/05/27 21:33:00
It seems that this object and method only exist to
|
| + return EmeConfigRule::HW_SECURE_CODECS_REQUIRED; |
| + |
| + return EmeConfigRule::SUPPORTED; |
| + } |
| +}; |
| +#endif // WIDEVINE_CDM_AVAILABLE |
| + |
| } // namespace |
| void AddChromecastKeySystems( |
| @@ -82,21 +123,23 @@ void AddChromecastKeySystems( |
| #endif // defined(PLAYREADY_CDM_AVAILABLE) |
| #if defined(WIDEVINE_CDM_AVAILABLE) |
| - ::media::SupportedCodecs codecs = |
| + SupportedCodecs regular_codecs = |
| ::media::EME_CODEC_MP4_AAC | ::media::EME_CODEC_MP4_AVC1 | |
| ::media::EME_CODEC_WEBM_VP8 | ::media::EME_CODEC_WEBM_VP9; |
| - key_systems_properties->emplace_back(new cdm::WidevineKeySystemProperties( |
| - codecs, // Regular codecs. |
| -#if defined(OS_ANDROID) |
| - codecs, // Hardware-secure codecs. |
| -#endif |
| - EmeRobustness::HW_SECURE_ALL, // Max audio robustness. |
| - EmeRobustness::HW_SECURE_ALL, // Max video robustness. |
| - EmeSessionTypeSupport::NOT_SUPPORTED, // persistent-license. |
| - EmeSessionTypeSupport::NOT_SUPPORTED, // persistent-release-message. |
| - // Note: On Chromecast, all CDMs may have persistent state. |
| - EmeFeatureSupport::ALWAYS_ENABLED, // Persistent state. |
| - EmeFeatureSupport::ALWAYS_ENABLED)); // Distinctive identifier. |
| + |
| +#if BUILDFLAG(DISABLE_DISPLAY) |
| + SupportedCodecs secure_codecs = ::media::EME_CODEC_NONE; |
| + EmeRobustness max_audio_robustness = EmeRobustness::SW_SECURE_CRYPTO; |
| + EmeRobustness max_video_robustness = EmeRobustness::INVALID; |
|
ddorwin
2016/05/27 21:33:00
This will cause all configurations to fail because
yucliu1
2016/06/14 00:17:45
This is guarded under DISABLE_DISPLAY. All video r
|
| +#else |
| + SupportedCodecs secure_codecs = regular_codecs; |
| + EmeRobustness max_audio_robustness = EmeRobustness::HW_SECURE_ALL; |
| + EmeRobustness max_video_robustness = EmeRobustness::HW_SECURE_ALL; |
| +#endif // BUILDFLAG(DISABLE_DISPLAY) |
| + |
| + key_systems_properties->emplace_back(new CastWidevineKeySystemProperties( |
| + regular_codecs, secure_codecs, max_audio_robustness, |
| + max_video_robustness)); |
| #endif // defined(WIDEVINE_CDM_AVAILABLE) |
| } |