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

Side by Side 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, 6 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 unified diff | Download patch
OLDNEW
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
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
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698