Added support for additional HDCP levels.
[ Merge of http://go/wvgerrit/169450 ] OEMCrypto v17 introduced several new HDCP levels that OEMCrypto may report; however, the CDM never updated to support them. The enum values of the additional levels are no longer sequential with their level of support (v1.1 is 7, and v2.1 is 3), this requires more considerations when comparing the required HDCP levels (as specified by the license) and current HDCP level supported by OEMCrypto. The following rules were used: 1) HDCP_NONE is the absolute lowest level 2) HDCP_NO_DIGITAL_OUTPUT is the absolute highest level 3) HDCP_V1 is treated as equal to all V1.x levels 4) All other versions are based on their major-minor pairs Bug: 269671291 Test: license_unittest Test: policy_engine_constraints_unittest Test: policy_engine_unittest Test: GtsMediaTestCases Change-Id: Ibecfcb981d7e019c68cb8e0c7286222253d18369
This commit is contained in:
@@ -33,6 +33,37 @@ namespace wvcdm {
|
||||
namespace {
|
||||
const uint64_t kReleaseSessionTimeToLive = 60; // seconds
|
||||
const uint32_t kUpdateUsageInformationPeriod = 60; // seconds
|
||||
|
||||
std::string MapHdcpVersion(CryptoSession::HdcpCapability version) {
|
||||
switch (version) {
|
||||
case HDCP_NONE:
|
||||
return QUERY_VALUE_HDCP_NONE;
|
||||
case HDCP_V1:
|
||||
return QUERY_VALUE_HDCP_V1;
|
||||
case HDCP_V2:
|
||||
return QUERY_VALUE_HDCP_V2_0;
|
||||
case HDCP_V2_1:
|
||||
return QUERY_VALUE_HDCP_V2_1;
|
||||
case HDCP_V2_2:
|
||||
return QUERY_VALUE_HDCP_V2_2;
|
||||
case HDCP_V2_3:
|
||||
return QUERY_VALUE_HDCP_V2_3;
|
||||
// V17 and forward.
|
||||
case HDCP_V1_0:
|
||||
return QUERY_VALUE_HDCP_V1_0;
|
||||
case HDCP_V1_1:
|
||||
return QUERY_VALUE_HDCP_V1_1;
|
||||
case HDCP_V1_2:
|
||||
return QUERY_VALUE_HDCP_V1_2;
|
||||
case HDCP_V1_3:
|
||||
return QUERY_VALUE_HDCP_V1_3;
|
||||
case HDCP_V1_4:
|
||||
return QUERY_VALUE_HDCP_V1_4;
|
||||
case HDCP_NO_DIGITAL_OUTPUT:
|
||||
return QUERY_VALUE_HDCP_NO_DIGITAL_OUTPUT;
|
||||
}
|
||||
return QUERY_VALUE_HDCP_LEVEL_UNKNOWN;
|
||||
}
|
||||
} // namespace
|
||||
|
||||
class UsagePropertySet : public CdmClientPropertySet {
|
||||
@@ -2190,27 +2221,6 @@ CdmResponseType CdmEngine::SetPlaybackId(const CdmSessionId& session_id,
|
||||
return CdmResponseType(NO_ERROR);
|
||||
}
|
||||
|
||||
std::string CdmEngine::MapHdcpVersion(CryptoSession::HdcpCapability version) {
|
||||
switch (version) {
|
||||
case HDCP_NONE:
|
||||
return QUERY_VALUE_HDCP_NONE;
|
||||
case HDCP_V1:
|
||||
return QUERY_VALUE_HDCP_V1;
|
||||
case HDCP_V2:
|
||||
return QUERY_VALUE_HDCP_V2_0;
|
||||
case HDCP_V2_1:
|
||||
return QUERY_VALUE_HDCP_V2_1;
|
||||
case HDCP_V2_2:
|
||||
return QUERY_VALUE_HDCP_V2_2;
|
||||
case HDCP_V2_3:
|
||||
return QUERY_VALUE_HDCP_V2_3;
|
||||
case HDCP_NO_DIGITAL_OUTPUT:
|
||||
return QUERY_VALUE_HDCP_NO_DIGITAL_OUTPUT;
|
||||
default:
|
||||
return QUERY_VALUE_HDCP_LEVEL_UNKNOWN;
|
||||
}
|
||||
}
|
||||
|
||||
void CdmEngine::CloseExpiredReleaseSessions() {
|
||||
const int64_t current_time = clock_.GetCurrentTime();
|
||||
std::set<CdmSessionId> close_session_set;
|
||||
|
||||
Reference in New Issue
Block a user