Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chromecast/renderer/key_systems_cast.h" | 5 #include "chromecast/renderer/key_systems_cast.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| 11 #include "build/build_config.h" | 11 #include "build/build_config.h" |
| 12 #include "chromecast/chromecast_features.h" | |
| 12 #include "chromecast/media/base/key_systems_common.h" | 13 #include "chromecast/media/base/key_systems_common.h" |
| 13 #include "components/cdm/renderer/widevine_key_system_properties.h" | 14 #include "components/cdm/renderer/widevine_key_system_properties.h" |
| 14 #include "media/base/eme_constants.h" | 15 #include "media/base/eme_constants.h" |
| 15 #include "media/base/key_system_properties.h" | 16 #include "media/base/key_system_properties.h" |
| 16 | 17 |
| 17 #include "widevine_cdm_version.h" // In SHARED_INTERMEDIATE_DIR. | 18 #include "widevine_cdm_version.h" // In SHARED_INTERMEDIATE_DIR. |
| 18 | 19 |
| 19 using ::media::EmeConfigRule; | 20 using ::media::EmeConfigRule; |
| 20 using ::media::EmeFeatureSupport; | 21 using ::media::EmeFeatureSupport; |
| 21 using ::media::EmeInitDataType; | 22 using ::media::EmeInitDataType; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 65 | 66 |
| 66 EmeFeatureSupport GetPersistentStateSupport() const override { | 67 EmeFeatureSupport GetPersistentStateSupport() const override { |
| 67 return EmeFeatureSupport::ALWAYS_ENABLED; | 68 return EmeFeatureSupport::ALWAYS_ENABLED; |
| 68 } | 69 } |
| 69 EmeFeatureSupport GetDistinctiveIdentifierSupport() const override { | 70 EmeFeatureSupport GetDistinctiveIdentifierSupport() const override { |
| 70 return EmeFeatureSupport::ALWAYS_ENABLED; | 71 return EmeFeatureSupport::ALWAYS_ENABLED; |
| 71 } | 72 } |
| 72 }; | 73 }; |
| 73 #endif // PLAYREADY_CDM_AVAILABLE | 74 #endif // PLAYREADY_CDM_AVAILABLE |
| 74 | 75 |
| 76 #if defined(WIDEVINE_CDM_AVAILABLE) | |
| 77 class CastWidevineKeySystemProperties | |
| 78 : public cdm::WidevineKeySystemProperties { | |
| 79 public: | |
| 80 CastWidevineKeySystemProperties(SupportedCodecs regular_codecs, | |
| 81 SupportedCodecs secure_codecs, | |
| 82 EmeRobustness max_audio_robustness, | |
| 83 EmeRobustness max_video_robustness) | |
| 84 : cdm::WidevineKeySystemProperties( | |
| 85 regular_codecs, | |
| 86 secure_codecs, | |
| 87 max_audio_robustness, | |
| 88 max_video_robustness, | |
| 89 EmeSessionTypeSupport::NOT_SUPPORTED, // persistent-license. | |
| 90 EmeSessionTypeSupport:: | |
| 91 NOT_SUPPORTED, // persistent-release-message. | |
| 92 // Note: On Chromecast, all CDMs may have persistent state. | |
|
ddorwin
2016/05/27 21:33:00
Even the audio devices?
| |
| 93 EmeFeatureSupport::ALWAYS_ENABLED, // Persistent state. | |
| 94 EmeFeatureSupport::ALWAYS_ENABLED) {} // Distinctive identifier. | |
| 95 | |
| 96 EmeConfigRule GetRobustnessConfigRule( | |
| 97 EmeMediaType media_type, | |
| 98 const std::string& requested_robustness) const override { | |
| 99 EmeConfigRule rule = | |
| 100 cdm::WidevineKeySystemProperties::GetRobustnessConfigRule( | |
| 101 media_type, requested_robustness); | |
| 102 | |
| 103 if (rule != EmeConfigRule::SUPPORTED) | |
| 104 return rule; | |
| 105 | |
| 106 EmeRobustness robustness = ConvertRobustness(requested_robustness); | |
| 107 | |
| 108 if (robustness >= EmeRobustness::SW_SECURE_DECODE) | |
|
ddorwin
2016/05/27 21:33:00
It seems that this object and method only exist to
| |
| 109 return EmeConfigRule::HW_SECURE_CODECS_REQUIRED; | |
| 110 | |
| 111 return EmeConfigRule::SUPPORTED; | |
| 112 } | |
| 113 }; | |
| 114 #endif // WIDEVINE_CDM_AVAILABLE | |
| 115 | |
| 75 } // namespace | 116 } // namespace |
| 76 | 117 |
| 77 void AddChromecastKeySystems( | 118 void AddChromecastKeySystems( |
| 78 std::vector<std::unique_ptr<::media::KeySystemProperties>>* | 119 std::vector<std::unique_ptr<::media::KeySystemProperties>>* |
| 79 key_systems_properties) { | 120 key_systems_properties) { |
| 80 #if defined(PLAYREADY_CDM_AVAILABLE) | 121 #if defined(PLAYREADY_CDM_AVAILABLE) |
| 81 key_systems_properties->emplace_back(new PlayReadyKeySystemProperties()); | 122 key_systems_properties->emplace_back(new PlayReadyKeySystemProperties()); |
| 82 #endif // defined(PLAYREADY_CDM_AVAILABLE) | 123 #endif // defined(PLAYREADY_CDM_AVAILABLE) |
| 83 | 124 |
| 84 #if defined(WIDEVINE_CDM_AVAILABLE) | 125 #if defined(WIDEVINE_CDM_AVAILABLE) |
| 85 ::media::SupportedCodecs codecs = | 126 SupportedCodecs regular_codecs = |
| 86 ::media::EME_CODEC_MP4_AAC | ::media::EME_CODEC_MP4_AVC1 | | 127 ::media::EME_CODEC_MP4_AAC | ::media::EME_CODEC_MP4_AVC1 | |
| 87 ::media::EME_CODEC_WEBM_VP8 | ::media::EME_CODEC_WEBM_VP9; | 128 ::media::EME_CODEC_WEBM_VP8 | ::media::EME_CODEC_WEBM_VP9; |
| 88 key_systems_properties->emplace_back(new cdm::WidevineKeySystemProperties( | 129 |
| 89 codecs, // Regular codecs. | 130 #if BUILDFLAG(DISABLE_DISPLAY) |
| 90 #if defined(OS_ANDROID) | 131 SupportedCodecs secure_codecs = ::media::EME_CODEC_NONE; |
| 91 codecs, // Hardware-secure codecs. | 132 EmeRobustness max_audio_robustness = EmeRobustness::SW_SECURE_CRYPTO; |
| 92 #endif | 133 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
| |
| 93 EmeRobustness::HW_SECURE_ALL, // Max audio robustness. | 134 #else |
| 94 EmeRobustness::HW_SECURE_ALL, // Max video robustness. | 135 SupportedCodecs secure_codecs = regular_codecs; |
| 95 EmeSessionTypeSupport::NOT_SUPPORTED, // persistent-license. | 136 EmeRobustness max_audio_robustness = EmeRobustness::HW_SECURE_ALL; |
| 96 EmeSessionTypeSupport::NOT_SUPPORTED, // persistent-release-message. | 137 EmeRobustness max_video_robustness = EmeRobustness::HW_SECURE_ALL; |
| 97 // Note: On Chromecast, all CDMs may have persistent state. | 138 #endif // BUILDFLAG(DISABLE_DISPLAY) |
| 98 EmeFeatureSupport::ALWAYS_ENABLED, // Persistent state. | 139 |
| 99 EmeFeatureSupport::ALWAYS_ENABLED)); // Distinctive identifier. | 140 key_systems_properties->emplace_back(new CastWidevineKeySystemProperties( |
| 141 regular_codecs, secure_codecs, max_audio_robustness, | |
| 142 max_video_robustness)); | |
| 100 #endif // defined(WIDEVINE_CDM_AVAILABLE) | 143 #endif // defined(WIDEVINE_CDM_AVAILABLE) |
| 101 } | 144 } |
| 102 | 145 |
| 103 } // namespace shell | 146 } // namespace shell |
| 104 } // namespace chromecast | 147 } // namespace chromecast |
| OLD | NEW |