Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(187)

Unified Diff: chromecast/renderer/key_systems_cast.cc

Issue 2006113002: Allow hw secured codecs on chromecast (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: New flag, new key system property Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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)
}

Powered by Google App Engine
This is Rietveld 408576698