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

Side by Side Diff: media/base/key_systems.h

Issue 1023863002: Create an interface for KeySystems, migrate WebEncryptedMediaClientImpl. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@robustness
Patch Set: Rebase. Created 5 years, 9 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
« no previous file with comments | « media/base/eme_constants.h ('k') | media/base/key_systems.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #ifndef MEDIA_BASE_KEY_SYSTEMS_H_ 5 #ifndef MEDIA_BASE_KEY_SYSTEMS_H_
6 #define MEDIA_BASE_KEY_SYSTEMS_H_ 6 #define MEDIA_BASE_KEY_SYSTEMS_H_
7 7
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
11 #include "base/memory/scoped_ptr.h" 11 #include "base/memory/scoped_ptr.h"
12 #include "media/base/eme_constants.h" 12 #include "media/base/eme_constants.h"
13 #include "media/base/media_export.h" 13 #include "media/base/media_export.h"
14 14
15 namespace media { 15 namespace media {
16 16
17 // Provides an interface for querying registered key systems. The exposed API is
18 // only intended to support unprefixed EME.
19 //
20 // Many of the original static methods are still available, they should be
21 // migrated into this interface over time (or removed).
22 //
23 // TODO(sandersd): Provide GetKeySystem() so that it is not necessary to pass
24 // |key_system| to every method. http://crbug.com/457438
25 class MEDIA_EXPORT KeySystems {
26 public:
27 static KeySystems& GetInstance();
28
29 // Returns whether |key_system| is a supported key system.
30 virtual bool IsSupportedKeySystem(const std::string& key_system) const = 0;
31
32 // Returns whether the list of codecs are supported together by |key_system|.
33 // TODO(sandersd): Return a rule instead of a bool so that codec selection can
34 // affect other configuration options (namely robustness).
35 virtual bool IsSupportedCodecCombination(
36 const std::string& key_system,
37 EmeMediaType media_type,
38 const std::string& container_mime_type,
39 const std::vector<std::string>& codecs) const = 0;
40
41 // Returns the configuration rule for supporting a robustness requirement.
42 virtual EmeConfigRule GetRobustnessConfigRule(
43 const std::string& key_system,
44 EmeMediaType media_type,
45 const std::string& requested_robustness) const = 0;
46
47 // Returns the configuration rule for supporting persistent-license sessions.
48 virtual EmeConfigRule GetPersistentLicenseSessionConfigRule(
49 const std::string& key_system) const = 0;
50
51 // Returns the configuration rule for supporting persistent-release-message
52 // sessions.
53 virtual EmeConfigRule GetPersistentReleaseMessageSessionConfigRule(
54 const std::string& key_system) const = 0;
55
56 // Returns the configuration rule for supporting a persistent state
57 // requirement.
58 virtual EmeConfigRule GetPersistentStateConfigRule(
59 const std::string& key_system,
60 EmeFeatureRequirement requirement) const = 0;
61
62 // Returns the configuration rule for supporting a distinctive identifier
63 // requirement.
64 virtual EmeConfigRule GetDistinctiveIdentifierConfigRule(
65 const std::string& key_system,
66 EmeFeatureRequirement requirement) const = 0;
67 };
68
17 // Prefixed EME API only supports prefixed (webkit-) key system name for 69 // Prefixed EME API only supports prefixed (webkit-) key system name for
18 // certain key systems. But internally only unprefixed key systems are 70 // certain key systems. But internally only unprefixed key systems are
19 // supported. The following two functions help convert between prefixed and 71 // supported. The following two functions help convert between prefixed and
20 // unprefixed key system names. 72 // unprefixed key system names.
21 73
22 // Gets the unprefixed key system name for |key_system|. 74 // Gets the unprefixed key system name for |key_system|.
23 MEDIA_EXPORT std::string GetUnprefixedKeySystemName( 75 MEDIA_EXPORT std::string GetUnprefixedKeySystemName(
24 const std::string& key_system); 76 const std::string& key_system);
25 77
26 // Gets the prefixed key system name for |key_system|. 78 // Gets the prefixed key system name for |key_system|.
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 // Returns whether AesDecryptor can be used for the given |concrete_key_system|. 130 // Returns whether AesDecryptor can be used for the given |concrete_key_system|.
79 MEDIA_EXPORT bool CanUseAesDecryptor(const std::string& concrete_key_system); 131 MEDIA_EXPORT bool CanUseAesDecryptor(const std::string& concrete_key_system);
80 132
81 #if defined(ENABLE_PEPPER_CDMS) 133 #if defined(ENABLE_PEPPER_CDMS)
82 // Returns the Pepper MIME type for |concrete_key_system|. 134 // Returns the Pepper MIME type for |concrete_key_system|.
83 // Returns empty string if |concrete_key_system| is unknown or not Pepper-based. 135 // Returns empty string if |concrete_key_system| is unknown or not Pepper-based.
84 MEDIA_EXPORT std::string GetPepperType( 136 MEDIA_EXPORT std::string GetPepperType(
85 const std::string& concrete_key_system); 137 const std::string& concrete_key_system);
86 #endif 138 #endif
87 139
88 // Returns the configuration rule for supporting a robustness requirement.
89 // TODO(sandersd): Also take a list of codecs, as they may affect the result.
90 MEDIA_EXPORT EmeConfigRule GetRobustnessConfigRule(
91 const std::string& key_system,
92 EmeMediaType media_type,
93 const std::string& requested_robustness);
94
95 // Returns the configuration rule for supporting persistent-license sessions.
96 MEDIA_EXPORT EmeConfigRule GetPersistentLicenseSessionConfigRule(
97 const std::string& key_system);
98
99 // Returns the configuration rule for supporting persistent-release-message
100 // sessions.
101 MEDIA_EXPORT EmeConfigRule GetPersistentReleaseMessageSessionConfigRule(
102 const std::string& key_system);
103
104 // Returns the configuration rule for supporting a persistent state requirement.
105 MEDIA_EXPORT EmeConfigRule GetPersistentStateConfigRule(
106 const std::string& key_system,
107 EmeFeatureRequirement requirement);
108
109 // Returns the configuration rule for supporting a distinctive identifier
110 // requirement.
111 MEDIA_EXPORT EmeConfigRule GetDistinctiveIdentifierConfigRule(
112 const std::string& key_system,
113 EmeFeatureRequirement requirement);
114
115 #if defined(UNIT_TEST) 140 #if defined(UNIT_TEST)
116 // Helper functions to add container/codec types for testing purposes. 141 // Helper functions to add container/codec types for testing purposes.
117 MEDIA_EXPORT void AddContainerMask(const std::string& container, uint32 mask); 142 MEDIA_EXPORT void AddContainerMask(const std::string& container, uint32 mask);
118 MEDIA_EXPORT void AddCodecMask(const std::string& codec, uint32 mask); 143 MEDIA_EXPORT void AddCodecMask(const std::string& codec, uint32 mask);
119 #endif // defined(UNIT_TEST) 144 #endif // defined(UNIT_TEST)
120 145
121 } // namespace media 146 } // namespace media
122 147
123 #endif // MEDIA_BASE_KEY_SYSTEMS_H_ 148 #endif // MEDIA_BASE_KEY_SYSTEMS_H_
OLDNEW
« no previous file with comments | « media/base/eme_constants.h ('k') | media/base/key_systems.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698