1 // Copyright 2016 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef COMPONENTS_CDM_RENDERER_WIDEVINE_KEY_SYSTEM_PROPERTIES_H_ 6 #define COMPONENTS_CDM_RENDERER_WIDEVINE_KEY_SYSTEM_PROPERTIES_H_ 7 8 #include <string> 9 #include <vector> 10 11 #include "base/containers/flat_set.h" 12 #include "media/base/key_system_properties.h" 13 14 namespace cdm { 15 16 // Implementation of KeySystemProperties for Widevine key system. 17 class WidevineKeySystemProperties : public media::KeySystemProperties { 18 public: 19 // Robustness values understood by the Widevine key system. 20 // Note: GetRobustnessConfigRule is dependent on the order of these. 21 enum class Robustness { 22 INVALID, 23 EMPTY, 24 SW_SECURE_CRYPTO, 25 SW_SECURE_DECODE, 26 HW_SECURE_CRYPTO, 27 HW_SECURE_DECODE, 28 HW_SECURE_ALL, 29 }; 30 31 WidevineKeySystemProperties( 32 media::SupportedCodecs codecs, 33 base::flat_set<media::EncryptionScheme> encryption_schemes, 34 media::SupportedCodecs hw_secure_codecs, 35 base::flat_set<media::EncryptionScheme> hw_secure_encryption_schemes, 36 Robustness max_audio_robustness, 37 Robustness max_video_robustness, 38 media::EmeSessionTypeSupport persistent_license_support, 39 media::EmeSessionTypeSupport persistent_release_message_support, 40 media::EmeFeatureSupport persistent_state_support, 41 media::EmeFeatureSupport distinctive_identifier_support); 42 ~WidevineKeySystemProperties() override; 43 44 std::string GetKeySystemName() const override; 45 bool IsSupportedInitDataType( 46 media::EmeInitDataType init_data_type) const override; 47 media::EmeConfigRule GetEncryptionSchemeConfigRule( 48 media::EncryptionScheme encryption_scheme) const override; 49 media::SupportedCodecs GetSupportedCodecs() const override; 50 media::SupportedCodecs GetSupportedHwSecureCodecs() const override; 51 media::EmeConfigRule GetRobustnessConfigRule( 52 media::EmeMediaType media_type, 53 const std::string& requested_robustness) const override; 54 media::EmeSessionTypeSupport GetPersistentLicenseSessionSupport() 55 const override; 56 media::EmeSessionTypeSupport GetPersistentUsageRecordSessionSupport() 57 const override; 58 media::EmeFeatureSupport GetPersistentStateSupport() const override; 59 media::EmeFeatureSupport GetDistinctiveIdentifierSupport() const override; 60 61 private: 62 const media::SupportedCodecs codecs_; 63 const base::flat_set<media::EncryptionScheme> encryption_schemes_; 64 const media::SupportedCodecs hw_secure_codecs_; 65 const base::flat_set<media::EncryptionScheme> hw_secure_encryption_schemes_; 66 const Robustness max_audio_robustness_; 67 const Robustness max_video_robustness_; 68 const media::EmeSessionTypeSupport persistent_license_support_; 69 const media::EmeSessionTypeSupport persistent_release_message_support_; 70 const media::EmeFeatureSupport persistent_state_support_; 71 const media::EmeFeatureSupport distinctive_identifier_support_; 72 }; 73 74 } // namespace cdm 75 76 #endif // COMPONENTS_CDM_RENDERER_WIDEVINE_KEY_SYSTEM_PROPERTIES_H_ 77