Loading drm/libmediadrm/DrmMetricsLogger.cpp +71 −4 Original line number Diff line number Diff line Loading @@ -41,6 +41,70 @@ DrmMetricsLogger::DrmMetricsLogger(IDrmFrontend frontend) DrmMetricsLogger::~DrmMetricsLogger() {} int MediaErrorToJavaError(status_t err) { #define STATUS_CASE(status) \ case status: \ return J##status switch (err) { STATUS_CASE(ERROR_DRM_UNKNOWN); STATUS_CASE(ERROR_DRM_NO_LICENSE); STATUS_CASE(ERROR_DRM_LICENSE_EXPIRED); STATUS_CASE(ERROR_DRM_RESOURCE_BUSY); STATUS_CASE(ERROR_DRM_INSUFFICIENT_OUTPUT_PROTECTION); STATUS_CASE(ERROR_DRM_SESSION_NOT_OPENED); STATUS_CASE(ERROR_DRM_CANNOT_HANDLE); STATUS_CASE(ERROR_DRM_INSUFFICIENT_SECURITY); STATUS_CASE(ERROR_DRM_FRAME_TOO_LARGE); STATUS_CASE(ERROR_DRM_SESSION_LOST_STATE); STATUS_CASE(ERROR_DRM_CERTIFICATE_MALFORMED); STATUS_CASE(ERROR_DRM_CERTIFICATE_MISSING); STATUS_CASE(ERROR_DRM_CRYPTO_LIBRARY); STATUS_CASE(ERROR_DRM_GENERIC_OEM); STATUS_CASE(ERROR_DRM_GENERIC_PLUGIN); STATUS_CASE(ERROR_DRM_INIT_DATA); STATUS_CASE(ERROR_DRM_KEY_NOT_LOADED); STATUS_CASE(ERROR_DRM_LICENSE_PARSE); STATUS_CASE(ERROR_DRM_LICENSE_POLICY); STATUS_CASE(ERROR_DRM_LICENSE_RELEASE); STATUS_CASE(ERROR_DRM_LICENSE_REQUEST_REJECTED); STATUS_CASE(ERROR_DRM_LICENSE_RESTORE); STATUS_CASE(ERROR_DRM_LICENSE_STATE); STATUS_CASE(ERROR_DRM_MEDIA_FRAMEWORK); STATUS_CASE(ERROR_DRM_PROVISIONING_CERTIFICATE); STATUS_CASE(ERROR_DRM_PROVISIONING_CONFIG); STATUS_CASE(ERROR_DRM_PROVISIONING_PARSE); STATUS_CASE(ERROR_DRM_PROVISIONING_REQUEST_REJECTED); STATUS_CASE(ERROR_DRM_PROVISIONING_RETRY); STATUS_CASE(ERROR_DRM_RESOURCE_CONTENTION); STATUS_CASE(ERROR_DRM_SECURE_STOP_RELEASE); STATUS_CASE(ERROR_DRM_STORAGE_READ); STATUS_CASE(ERROR_DRM_STORAGE_WRITE); STATUS_CASE(ERROR_DRM_ZERO_SUBSAMPLES); #undef STATUS_CASE } return static_cast<int>(err); } int DrmPluginSecurityLevelToJavaSecurityLevel(DrmPlugin::SecurityLevel securityLevel) { #define STATUS_CASE(status) \ case DrmPlugin::k##status: \ return J##status switch (securityLevel) { STATUS_CASE(SecurityLevelUnknown); STATUS_CASE(SecurityLevelSwSecureCrypto); STATUS_CASE(SecurityLevelSwSecureDecode); STATUS_CASE(SecurityLevelHwSecureCrypto); STATUS_CASE(SecurityLevelHwSecureDecode); STATUS_CASE(SecurityLevelHwSecureAll); STATUS_CASE(SecurityLevelMax); #undef STATUS_CASE } return static_cast<int>(securityLevel); } DrmStatus DrmMetricsLogger::initCheck() const { DrmStatus status = mImpl->initCheck(); if (status != OK) { Loading Loading @@ -490,8 +554,10 @@ void DrmMetricsLogger::reportMediaDrmSessionOpened(const std::vector<uint8_t>& s auto it = mSessionMap.find(sessionId); if (it != mSessionMap.end()) { mediametrics_setCString(handle, "session_nonce", it->second.mNonce.c_str()); mediametrics_setInt64(handle, "requested_seucrity_level", it->second.mTargetSecurityLevel); mediametrics_setInt64(handle, "opened_seucrity_level", it->second.mActualSecurityLevel); mediametrics_setInt32(handle, "requested_security_level", DrmPluginSecurityLevelToJavaSecurityLevel(it->second.mTargetSecurityLevel)); mediametrics_setInt32(handle, "opened_security_level", DrmPluginSecurityLevelToJavaSecurityLevel(it->second.mActualSecurityLevel)); } mediametrics_selfRecord(handle); mediametrics_delete(handle); Loading @@ -511,11 +577,12 @@ void DrmMetricsLogger::reportMediaDrmErrored(const DrmStatus& error_code, const auto it = mSessionMap.find(sessionId); if (it != mSessionMap.end()) { mediametrics_setCString(handle, "session_nonce", it->second.mNonce.c_str()); mediametrics_setInt64(handle, "seucrity_level", it->second.mActualSecurityLevel); mediametrics_setInt32(handle, "security_level", DrmPluginSecurityLevelToJavaSecurityLevel(it->second.mActualSecurityLevel)); } } mediametrics_setCString(handle, "api", api); mediametrics_setInt32(handle, "error_code", error_code); mediametrics_setInt32(handle, "error_code", MediaErrorToJavaError(error_code)); mediametrics_setInt32(handle, "cdm_err", error_code.getCdmErr()); mediametrics_setInt32(handle, "oem_err", error_code.getOemErr()); mediametrics_setInt32(handle, "error_context", error_code.getContext()); Loading drm/libmediadrm/include/mediadrm/DrmMetricsLogger.h +48 −1 Original line number Diff line number Diff line Loading @@ -25,9 +25,56 @@ namespace android { enum { JERROR_DRM_UNKNOWN = 0, JERROR_DRM_NO_LICENSE = 1, JERROR_DRM_LICENSE_EXPIRED = 2, JERROR_DRM_RESOURCE_BUSY = 3, JERROR_DRM_INSUFFICIENT_OUTPUT_PROTECTION = 4, JERROR_DRM_SESSION_NOT_OPENED = 5, JERROR_DRM_CANNOT_HANDLE = 6, JERROR_DRM_INSUFFICIENT_SECURITY = 7, JERROR_DRM_FRAME_TOO_LARGE = 8, JERROR_DRM_SESSION_LOST_STATE = 9, JERROR_DRM_CERTIFICATE_MALFORMED = 10, JERROR_DRM_CERTIFICATE_MISSING = 11, JERROR_DRM_CRYPTO_LIBRARY = 12, JERROR_DRM_GENERIC_OEM = 13, JERROR_DRM_GENERIC_PLUGIN = 14, JERROR_DRM_INIT_DATA = 15, JERROR_DRM_KEY_NOT_LOADED = 16, JERROR_DRM_LICENSE_PARSE = 17, JERROR_DRM_LICENSE_POLICY = 18, JERROR_DRM_LICENSE_RELEASE = 19, JERROR_DRM_LICENSE_REQUEST_REJECTED = 20, JERROR_DRM_LICENSE_RESTORE = 21, JERROR_DRM_LICENSE_STATE = 22, JERROR_DRM_MEDIA_FRAMEWORK = 23, JERROR_DRM_PROVISIONING_CERTIFICATE = 24, JERROR_DRM_PROVISIONING_CONFIG = 25, JERROR_DRM_PROVISIONING_PARSE = 26, JERROR_DRM_PROVISIONING_REQUEST_REJECTED = 27, JERROR_DRM_PROVISIONING_RETRY = 28, JERROR_DRM_RESOURCE_CONTENTION = 29, JERROR_DRM_SECURE_STOP_RELEASE = 30, JERROR_DRM_STORAGE_READ = 31, JERROR_DRM_STORAGE_WRITE = 32, JERROR_DRM_ZERO_SUBSAMPLES = 33, }; enum { JSecurityLevelUnknown = 0, JSecurityLevelSwSecureCrypto = 1, JSecurityLevelSwSecureDecode = 2, JSecurityLevelHwSecureCrypto = 3, JSecurityLevelHwSecureDecode = 4, JSecurityLevelHwSecureAll = 5, JSecurityLevelMax = 6, }; struct SessionContext { std::string mNonce; int64_t mTargetSecurityLevel; DrmPlugin::SecurityLevel mTargetSecurityLevel; DrmPlugin::SecurityLevel mActualSecurityLevel; std::string mVersion; }; Loading Loading
drm/libmediadrm/DrmMetricsLogger.cpp +71 −4 Original line number Diff line number Diff line Loading @@ -41,6 +41,70 @@ DrmMetricsLogger::DrmMetricsLogger(IDrmFrontend frontend) DrmMetricsLogger::~DrmMetricsLogger() {} int MediaErrorToJavaError(status_t err) { #define STATUS_CASE(status) \ case status: \ return J##status switch (err) { STATUS_CASE(ERROR_DRM_UNKNOWN); STATUS_CASE(ERROR_DRM_NO_LICENSE); STATUS_CASE(ERROR_DRM_LICENSE_EXPIRED); STATUS_CASE(ERROR_DRM_RESOURCE_BUSY); STATUS_CASE(ERROR_DRM_INSUFFICIENT_OUTPUT_PROTECTION); STATUS_CASE(ERROR_DRM_SESSION_NOT_OPENED); STATUS_CASE(ERROR_DRM_CANNOT_HANDLE); STATUS_CASE(ERROR_DRM_INSUFFICIENT_SECURITY); STATUS_CASE(ERROR_DRM_FRAME_TOO_LARGE); STATUS_CASE(ERROR_DRM_SESSION_LOST_STATE); STATUS_CASE(ERROR_DRM_CERTIFICATE_MALFORMED); STATUS_CASE(ERROR_DRM_CERTIFICATE_MISSING); STATUS_CASE(ERROR_DRM_CRYPTO_LIBRARY); STATUS_CASE(ERROR_DRM_GENERIC_OEM); STATUS_CASE(ERROR_DRM_GENERIC_PLUGIN); STATUS_CASE(ERROR_DRM_INIT_DATA); STATUS_CASE(ERROR_DRM_KEY_NOT_LOADED); STATUS_CASE(ERROR_DRM_LICENSE_PARSE); STATUS_CASE(ERROR_DRM_LICENSE_POLICY); STATUS_CASE(ERROR_DRM_LICENSE_RELEASE); STATUS_CASE(ERROR_DRM_LICENSE_REQUEST_REJECTED); STATUS_CASE(ERROR_DRM_LICENSE_RESTORE); STATUS_CASE(ERROR_DRM_LICENSE_STATE); STATUS_CASE(ERROR_DRM_MEDIA_FRAMEWORK); STATUS_CASE(ERROR_DRM_PROVISIONING_CERTIFICATE); STATUS_CASE(ERROR_DRM_PROVISIONING_CONFIG); STATUS_CASE(ERROR_DRM_PROVISIONING_PARSE); STATUS_CASE(ERROR_DRM_PROVISIONING_REQUEST_REJECTED); STATUS_CASE(ERROR_DRM_PROVISIONING_RETRY); STATUS_CASE(ERROR_DRM_RESOURCE_CONTENTION); STATUS_CASE(ERROR_DRM_SECURE_STOP_RELEASE); STATUS_CASE(ERROR_DRM_STORAGE_READ); STATUS_CASE(ERROR_DRM_STORAGE_WRITE); STATUS_CASE(ERROR_DRM_ZERO_SUBSAMPLES); #undef STATUS_CASE } return static_cast<int>(err); } int DrmPluginSecurityLevelToJavaSecurityLevel(DrmPlugin::SecurityLevel securityLevel) { #define STATUS_CASE(status) \ case DrmPlugin::k##status: \ return J##status switch (securityLevel) { STATUS_CASE(SecurityLevelUnknown); STATUS_CASE(SecurityLevelSwSecureCrypto); STATUS_CASE(SecurityLevelSwSecureDecode); STATUS_CASE(SecurityLevelHwSecureCrypto); STATUS_CASE(SecurityLevelHwSecureDecode); STATUS_CASE(SecurityLevelHwSecureAll); STATUS_CASE(SecurityLevelMax); #undef STATUS_CASE } return static_cast<int>(securityLevel); } DrmStatus DrmMetricsLogger::initCheck() const { DrmStatus status = mImpl->initCheck(); if (status != OK) { Loading Loading @@ -490,8 +554,10 @@ void DrmMetricsLogger::reportMediaDrmSessionOpened(const std::vector<uint8_t>& s auto it = mSessionMap.find(sessionId); if (it != mSessionMap.end()) { mediametrics_setCString(handle, "session_nonce", it->second.mNonce.c_str()); mediametrics_setInt64(handle, "requested_seucrity_level", it->second.mTargetSecurityLevel); mediametrics_setInt64(handle, "opened_seucrity_level", it->second.mActualSecurityLevel); mediametrics_setInt32(handle, "requested_security_level", DrmPluginSecurityLevelToJavaSecurityLevel(it->second.mTargetSecurityLevel)); mediametrics_setInt32(handle, "opened_security_level", DrmPluginSecurityLevelToJavaSecurityLevel(it->second.mActualSecurityLevel)); } mediametrics_selfRecord(handle); mediametrics_delete(handle); Loading @@ -511,11 +577,12 @@ void DrmMetricsLogger::reportMediaDrmErrored(const DrmStatus& error_code, const auto it = mSessionMap.find(sessionId); if (it != mSessionMap.end()) { mediametrics_setCString(handle, "session_nonce", it->second.mNonce.c_str()); mediametrics_setInt64(handle, "seucrity_level", it->second.mActualSecurityLevel); mediametrics_setInt32(handle, "security_level", DrmPluginSecurityLevelToJavaSecurityLevel(it->second.mActualSecurityLevel)); } } mediametrics_setCString(handle, "api", api); mediametrics_setInt32(handle, "error_code", error_code); mediametrics_setInt32(handle, "error_code", MediaErrorToJavaError(error_code)); mediametrics_setInt32(handle, "cdm_err", error_code.getCdmErr()); mediametrics_setInt32(handle, "oem_err", error_code.getOemErr()); mediametrics_setInt32(handle, "error_context", error_code.getContext()); Loading
drm/libmediadrm/include/mediadrm/DrmMetricsLogger.h +48 −1 Original line number Diff line number Diff line Loading @@ -25,9 +25,56 @@ namespace android { enum { JERROR_DRM_UNKNOWN = 0, JERROR_DRM_NO_LICENSE = 1, JERROR_DRM_LICENSE_EXPIRED = 2, JERROR_DRM_RESOURCE_BUSY = 3, JERROR_DRM_INSUFFICIENT_OUTPUT_PROTECTION = 4, JERROR_DRM_SESSION_NOT_OPENED = 5, JERROR_DRM_CANNOT_HANDLE = 6, JERROR_DRM_INSUFFICIENT_SECURITY = 7, JERROR_DRM_FRAME_TOO_LARGE = 8, JERROR_DRM_SESSION_LOST_STATE = 9, JERROR_DRM_CERTIFICATE_MALFORMED = 10, JERROR_DRM_CERTIFICATE_MISSING = 11, JERROR_DRM_CRYPTO_LIBRARY = 12, JERROR_DRM_GENERIC_OEM = 13, JERROR_DRM_GENERIC_PLUGIN = 14, JERROR_DRM_INIT_DATA = 15, JERROR_DRM_KEY_NOT_LOADED = 16, JERROR_DRM_LICENSE_PARSE = 17, JERROR_DRM_LICENSE_POLICY = 18, JERROR_DRM_LICENSE_RELEASE = 19, JERROR_DRM_LICENSE_REQUEST_REJECTED = 20, JERROR_DRM_LICENSE_RESTORE = 21, JERROR_DRM_LICENSE_STATE = 22, JERROR_DRM_MEDIA_FRAMEWORK = 23, JERROR_DRM_PROVISIONING_CERTIFICATE = 24, JERROR_DRM_PROVISIONING_CONFIG = 25, JERROR_DRM_PROVISIONING_PARSE = 26, JERROR_DRM_PROVISIONING_REQUEST_REJECTED = 27, JERROR_DRM_PROVISIONING_RETRY = 28, JERROR_DRM_RESOURCE_CONTENTION = 29, JERROR_DRM_SECURE_STOP_RELEASE = 30, JERROR_DRM_STORAGE_READ = 31, JERROR_DRM_STORAGE_WRITE = 32, JERROR_DRM_ZERO_SUBSAMPLES = 33, }; enum { JSecurityLevelUnknown = 0, JSecurityLevelSwSecureCrypto = 1, JSecurityLevelSwSecureDecode = 2, JSecurityLevelHwSecureCrypto = 3, JSecurityLevelHwSecureDecode = 4, JSecurityLevelHwSecureAll = 5, JSecurityLevelMax = 6, }; struct SessionContext { std::string mNonce; int64_t mTargetSecurityLevel; DrmPlugin::SecurityLevel mTargetSecurityLevel; DrmPlugin::SecurityLevel mActualSecurityLevel; std::string mVersion; }; Loading