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

Side by Side Diff: chrome/renderer/media/chrome_key_systems.cc

Issue 1927953004: Reland of "Convert Widevine and Android platform key systems to KeySystemProperties" with fix (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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 "chrome/renderer/media/chrome_key_systems.h" 5 #include "chrome/renderer/media/chrome_key_systems.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "base/strings/string16.h" 13 #include "base/strings/string16.h"
14 #include "base/strings/string_split.h" 14 #include "base/strings/string_split.h"
15 #include "base/strings/utf_string_conversions.h" 15 #include "base/strings/utf_string_conversions.h"
16 #include "build/build_config.h" 16 #include "build/build_config.h"
17 #include "chrome/common/render_messages.h" 17 #include "chrome/common/render_messages.h"
18 #include "components/cdm/renderer/widevine_key_systems.h" 18 #include "components/cdm/renderer/widevine_key_system_properties.h"
19 #include "content/public/renderer/render_thread.h" 19 #include "content/public/renderer/render_thread.h"
20 #include "media/base/eme_constants.h" 20 #include "media/base/eme_constants.h"
21 #include "media/base/key_system_info.h"
22 #include "media/base/key_system_properties.h"
23
21 #include "media/media_features.h" 24 #include "media/media_features.h"
22 25
23 #if defined(OS_ANDROID) 26 #if defined(OS_ANDROID)
24 #include "components/cdm/renderer/android_key_systems.h" 27 #include "components/cdm/renderer/android_key_systems.h"
25 #endif 28 #endif
26 29
27 #include "widevine_cdm_version.h" // In SHARED_INTERMEDIATE_DIR. 30 #include "widevine_cdm_version.h" // In SHARED_INTERMEDIATE_DIR.
28 31
29 // The following must be after widevine_cdm_version.h. 32 // The following must be after widevine_cdm_version.h.
30 33
31 #if defined(WIDEVINE_CDM_AVAILABLE) && defined(WIDEVINE_CDM_MIN_GLIBC_VERSION) 34 #if defined(WIDEVINE_CDM_AVAILABLE) && defined(WIDEVINE_CDM_MIN_GLIBC_VERSION)
32 #include <gnu/libc-version.h> 35 #include <gnu/libc-version.h>
33 #include "base/version.h" 36 #include "base/version.h"
34 #endif 37 #endif
35 38
36 using media::KeySystemInfo; 39 using media::KeySystemInfo;
40 using media::KeySystemProperties;
37 using media::SupportedCodecs; 41 using media::SupportedCodecs;
38 42
39 #if defined(ENABLE_PEPPER_CDMS) 43 #if defined(ENABLE_PEPPER_CDMS)
40 static bool IsPepperCdmAvailable( 44 static bool IsPepperCdmAvailable(
41 const std::string& pepper_type, 45 const std::string& pepper_type,
42 std::vector<base::string16>* additional_param_names, 46 std::vector<base::string16>* additional_param_names,
43 std::vector<base::string16>* additional_param_values) { 47 std::vector<base::string16>* additional_param_values) {
44 bool is_available = false; 48 bool is_available = false;
45 content::RenderThread::Get()->Send( 49 content::RenderThread::Get()->Send(
46 new ChromeViewHostMsg_IsInternalPluginAvailableForMimeType( 50 new ChromeViewHostMsg_IsInternalPluginAvailableForMimeType(
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 } 147 }
144 *codecs = base::SplitString( 148 *codecs = base::SplitString(
145 codecs_string, std::string(1, kCdmSupportedCodecsValueDelimiter), 149 codecs_string, std::string(1, kCdmSupportedCodecsValueDelimiter),
146 base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL); 150 base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL);
147 break; 151 break;
148 } 152 }
149 } 153 }
150 } 154 }
151 155
152 static void AddPepperBasedWidevine( 156 static void AddPepperBasedWidevine(
153 std::vector<KeySystemInfo>* concrete_key_systems) { 157 std::vector<std::unique_ptr<KeySystemProperties>>* concrete_key_systems) {
154 #if defined(WIDEVINE_CDM_MIN_GLIBC_VERSION) 158 #if defined(WIDEVINE_CDM_MIN_GLIBC_VERSION)
155 Version glibc_version(gnu_get_libc_version()); 159 Version glibc_version(gnu_get_libc_version());
156 DCHECK(glibc_version.IsValid()); 160 DCHECK(glibc_version.IsValid());
157 if (glibc_version < base::Version(WIDEVINE_CDM_MIN_GLIBC_VERSION)) 161 if (glibc_version < base::Version(WIDEVINE_CDM_MIN_GLIBC_VERSION))
158 return; 162 return;
159 #endif // defined(WIDEVINE_CDM_MIN_GLIBC_VERSION) 163 #endif // defined(WIDEVINE_CDM_MIN_GLIBC_VERSION)
160 164
161 std::vector<base::string16> additional_param_names; 165 std::vector<base::string16> additional_param_names;
162 std::vector<base::string16> additional_param_values; 166 std::vector<base::string16> additional_param_values;
163 if (!IsPepperCdmAvailable(kWidevineCdmPluginMimeType, 167 if (!IsPepperCdmAvailable(kWidevineCdmPluginMimeType,
(...skipping 27 matching lines...) Expand all
191 #if defined(USE_PROPRIETARY_CODECS) 195 #if defined(USE_PROPRIETARY_CODECS)
192 if (codecs[i] == kCdmSupportedCodecAvc1) 196 if (codecs[i] == kCdmSupportedCodecAvc1)
193 supported_codecs |= media::EME_CODEC_MP4_AVC1; 197 supported_codecs |= media::EME_CODEC_MP4_AVC1;
194 #if BUILDFLAG(ENABLE_MP4_VP9_DEMUXING) 198 #if BUILDFLAG(ENABLE_MP4_VP9_DEMUXING)
195 if (codecs[i] == kCdmSupportedCodecVp9) 199 if (codecs[i] == kCdmSupportedCodecVp9)
196 supported_codecs |= media::EME_CODEC_MP4_VP9; 200 supported_codecs |= media::EME_CODEC_MP4_VP9;
197 #endif 201 #endif
198 #endif // defined(USE_PROPRIETARY_CODECS) 202 #endif // defined(USE_PROPRIETARY_CODECS)
199 } 203 }
200 204
201 cdm::AddWidevineWithCodecs( 205 concrete_key_systems->emplace_back(new cdm::WidevineKeySystemProperties(
202 supported_codecs, 206 supported_codecs,
203 #if defined(OS_CHROMEOS) 207 #if defined(OS_CHROMEOS)
204 media::EmeRobustness::HW_SECURE_ALL, // Maximum audio robustness. 208 media::EmeRobustness::HW_SECURE_ALL, // Maximum audio robustness.
205 media::EmeRobustness::HW_SECURE_ALL, // Maximim video robustness. 209 media::EmeRobustness::HW_SECURE_ALL, // Maximim video robustness.
206 media::EmeSessionTypeSupport:: 210 media::EmeSessionTypeSupport::
207 SUPPORTED_WITH_IDENTIFIER, // Persistent-license. 211 SUPPORTED_WITH_IDENTIFIER, // Persistent-license.
208 media::EmeSessionTypeSupport:: 212 media::EmeSessionTypeSupport::
209 NOT_SUPPORTED, // Persistent-release-message. 213 NOT_SUPPORTED, // Persistent-release-message.
210 media::EmeFeatureSupport::REQUESTABLE, // Persistent state. 214 media::EmeFeatureSupport::REQUESTABLE, // Persistent state.
211 media::EmeFeatureSupport::REQUESTABLE, // Distinctive identifier. 215 media::EmeFeatureSupport::REQUESTABLE)); // Distinctive identifier.
212 #else // (Desktop) 216 #else // (Desktop)
213 media::EmeRobustness::SW_SECURE_CRYPTO, // Maximum audio robustness. 217 media::EmeRobustness::SW_SECURE_CRYPTO, // Maximum audio robustness.
214 media::EmeRobustness::SW_SECURE_DECODE, // Maximum video robustness. 218 media::EmeRobustness::SW_SECURE_DECODE, // Maximum video robustness.
215 media::EmeSessionTypeSupport::NOT_SUPPORTED, // persistent-license. 219 media::EmeSessionTypeSupport::NOT_SUPPORTED, // persistent-license.
216 media::EmeSessionTypeSupport:: 220 media::EmeSessionTypeSupport::
217 NOT_SUPPORTED, // persistent-release-message. 221 NOT_SUPPORTED, // persistent-release-message.
218 media::EmeFeatureSupport::REQUESTABLE, // Persistent state. 222 media::EmeFeatureSupport::REQUESTABLE, // Persistent state.
219 media::EmeFeatureSupport::NOT_SUPPORTED, // Distinctive identifier. 223 media::EmeFeatureSupport::NOT_SUPPORTED)); // Distinctive identifier.
220 #endif // defined(OS_CHROMEOS) 224 #endif // defined(OS_CHROMEOS)
221 concrete_key_systems);
222 } 225 }
223 #endif // defined(WIDEVINE_CDM_AVAILABLE) 226 #endif // defined(WIDEVINE_CDM_AVAILABLE)
224 #endif // defined(ENABLE_PEPPER_CDMS) 227 #endif // defined(ENABLE_PEPPER_CDMS)
225 228
226 void AddChromeKeySystems(std::vector<KeySystemInfo>* key_systems_info) { 229 void AddChromeKeySystemsInfo(std::vector<KeySystemInfo>* key_systems_info) {
227 #if defined(ENABLE_PEPPER_CDMS) 230 #if defined(ENABLE_PEPPER_CDMS)
228 AddExternalClearKey(key_systems_info); 231 AddExternalClearKey(key_systems_info);
232 #endif
233 }
229 234
235 void AddChromeKeySystems(
236 std::vector<std::unique_ptr<KeySystemProperties>>* key_systems_properties) {
237 #if defined(ENABLE_PEPPER_CDMS)
230 #if defined(WIDEVINE_CDM_AVAILABLE) 238 #if defined(WIDEVINE_CDM_AVAILABLE)
231 AddPepperBasedWidevine(key_systems_info); 239 AddPepperBasedWidevine(key_systems_properties);
232 #endif // defined(WIDEVINE_CDM_AVAILABLE) 240 #endif // defined(WIDEVINE_CDM_AVAILABLE)
233 #endif // defined(ENABLE_PEPPER_CDMS) 241 #endif // defined(ENABLE_PEPPER_CDMS)
234 242
235 #if defined(OS_ANDROID) 243 #if defined(OS_ANDROID)
236 cdm::AddAndroidWidevine(key_systems_info); 244 cdm::AddAndroidWidevine(key_systems_properties);
237 #endif // defined(OS_ANDROID) 245 #endif // defined(OS_ANDROID)
238 } 246 }
OLDNEW
« no previous file with comments | « chrome/renderer/media/chrome_key_systems.h ('k') | chromecast/renderer/cast_content_renderer_client.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698