Report analog output capabilities
[ Merge of http://go/wvgerrit/41840 ] Bug: 69867619 Test: WV unit/integration tests Playback using netflix and play movies on Taimen Change-Id: I49d0dd9ae12322eecc80efb8cb744419c85e8ae5
This commit is contained in:
@@ -207,6 +207,9 @@ class CryptoSession {
|
||||
const std::string& provider_session_token);
|
||||
virtual CdmResponseType CopyOldUsageEntry(
|
||||
const std::string& provider_session_token);
|
||||
virtual bool GetAnalogOutputCapabilities(bool* can_support_output,
|
||||
bool* can_disable_output,
|
||||
bool* can_support_cgms_a);
|
||||
virtual metrics::CryptoMetrics* GetCryptoMetrics() { return metrics_; }
|
||||
|
||||
virtual CdmResponseType AddSubSession(const std::string& sub_session_key_id,
|
||||
|
||||
@@ -232,6 +232,27 @@ CdmResponseType ClientIdentification::Prepare(
|
||||
if (crypto_session_->GetSrmVersion(&srm_version))
|
||||
client_capabilities->set_srm_version(srm_version);
|
||||
}
|
||||
bool can_support_output;
|
||||
bool can_disable_output;
|
||||
bool can_support_cgms_a;
|
||||
if (crypto_session_->GetAnalogOutputCapabilities(&can_support_output,
|
||||
&can_disable_output,
|
||||
&can_support_cgms_a)) {
|
||||
video_widevine::ClientIdentification_ClientCapabilities_AnalogOutputCapabilities
|
||||
capabilities = video_widevine::ClientIdentification_ClientCapabilities_AnalogOutputCapabilities_ANALOG_OUTPUT_NONE;
|
||||
|
||||
if (can_support_output) {
|
||||
if (can_support_cgms_a) {
|
||||
capabilities = video_widevine::ClientIdentification_ClientCapabilities_AnalogOutputCapabilities_ANALOG_OUTPUT_SUPPORTS_CGMS_A;
|
||||
} else {
|
||||
capabilities = video_widevine::ClientIdentification_ClientCapabilities_AnalogOutputCapabilities_ANALOG_OUTPUT_SUPPORTED;
|
||||
}
|
||||
}
|
||||
client_capabilities->set_analog_output_capabilities(capabilities);
|
||||
client_capabilities->set_can_disable_analog_output(can_disable_output);
|
||||
} else {
|
||||
client_capabilities->set_analog_output_capabilities(video_widevine::ClientIdentification_ClientCapabilities_AnalogOutputCapabilities_ANALOG_OUTPUT_UNKNOWN);
|
||||
}
|
||||
|
||||
return NO_ERROR;
|
||||
}
|
||||
|
||||
@@ -2764,6 +2764,19 @@ CdmResponseType CryptoSession::CopyOldUsageEntry(
|
||||
return NO_ERROR;
|
||||
}
|
||||
|
||||
bool CryptoSession::GetAnalogOutputCapabilities(bool* can_support_output,
|
||||
bool* can_disable_output,
|
||||
bool* can_support_cgms_a) {
|
||||
LOGV("GetAnalogOutputCapabilities: id=%ld", (uint32_t)oec_session_id_);
|
||||
uint32_t flags = OEMCrypto_GetAnalogOutputFlags(requested_security_level_);
|
||||
|
||||
if ((flags & OEMCrypto_Unknown_Analog_Output) != 0) return false;
|
||||
*can_support_cgms_a = flags & OEMCrypto_Supports_CGMS_A;
|
||||
*can_support_output = flags & OEMCrypto_Supports_Analog_Output;
|
||||
*can_disable_output = flags & OEMCrypto_Can_Disable_Analog_Ouptput;
|
||||
return true;
|
||||
}
|
||||
|
||||
CdmResponseType CryptoSession::AddSubSession(
|
||||
const std::string& sub_session_key_id,
|
||||
const std::string& group_master_key_id) {
|
||||
|
||||
@@ -536,6 +536,13 @@ message ClientIdentification {
|
||||
RSA_3072 = 1;
|
||||
}
|
||||
|
||||
enum AnalogOutputCapabilities {
|
||||
ANALOG_OUTPUT_UNKNOWN = 0;
|
||||
ANALOG_OUTPUT_NONE = 1;
|
||||
ANALOG_OUTPUT_SUPPORTED = 2;
|
||||
ANALOG_OUTPUT_SUPPORTS_CGMS_A = 3;
|
||||
}
|
||||
|
||||
optional bool client_token = 1 [default = false];
|
||||
optional bool session_token = 2 [default = false];
|
||||
optional bool video_resolution_constraints = 3 [default = false];
|
||||
@@ -551,6 +558,9 @@ message ClientIdentification {
|
||||
// of updating SRM data.
|
||||
optional bool can_update_srm = 8 [default = false];
|
||||
repeated CertificateKeyType supported_certificate_key_type = 9;
|
||||
optional AnalogOutputCapabilities analog_output_capabilities = 10
|
||||
[default = ANALOG_OUTPUT_UNKNOWN];
|
||||
optional bool can_disable_analog_output = 11 [default = false];
|
||||
}
|
||||
|
||||
// Type of factory-provisioned device root of trust. Optional.
|
||||
|
||||
Reference in New Issue
Block a user