Loading drm/libmediadrm/include/mediadrm/IDrm.h +0 −1 Original line number Diff line number Diff line Loading @@ -162,7 +162,6 @@ struct IDrm : public virtual RefBase { DrmPlugin::SecurityLevel securityLevel) const = 0; virtual status_t setPlaybackId( Vector<uint8_t> const &sessionId, const char *playbackId) = 0; Loading drm/libmediadrm/interface/mediadrm/DrmUtils.h +52 −1 Original line number Diff line number Diff line Loading @@ -23,8 +23,11 @@ #include <android/hardware/drm/1.4/types.h> #include <media/stagefright/MediaErrors.h> #include <utils/Errors.h> // for status_t #include <utils/Vector.h> #include <utils/Log.h> #include <utils/String8.h> #include <utils/StrongPointer.h> #include <utils/Vector.h> #include <ctime> #include <vector> Loading Loading @@ -138,6 +141,54 @@ status_t GetLogMessages(const sp<U> &obj, Vector<::V1_4::LogMessage> &logs) { return toStatusT(err); } namespace { static inline char logPriorityToChar(::V1_4::LogPriority priority) { char p = 'U'; switch (priority) { case ::V1_4::LogPriority::VERBOSE: p = 'V'; break; case ::V1_4::LogPriority::DEBUG: p = 'D'; break; case ::V1_4::LogPriority::INFO: p = 'I'; break; case ::V1_4::LogPriority::WARN: p = 'W'; break; case ::V1_4::LogPriority::ERROR: p = 'E'; break; case ::V1_4::LogPriority::FATAL: p = 'F'; break; default: p = 'U'; break; } return p; } } template<typename T> std::string GetExceptionMessage(status_t err, const char *msg, const sp<T> &iface) { String8 msg8; if (msg) { msg8 += msg; msg8 += ": "; } auto errStr = StrCryptoError(err); msg8 += errStr.c_str(); Vector<::V1_4::LogMessage> logs; if (iface->getLogMessages(logs) != NO_ERROR) { return msg8.c_str(); } for (auto log: logs) { time_t seconds = log.timeMs / 1000; int ms = log.timeMs % 1000; char buf[64] = {0}; std::string timeStr = "00-00 00:00:00"; if (strftime(buf, sizeof buf, "%m-%d %H:%M:%S", std::localtime(&seconds))) { timeStr = buf; } char p = logPriorityToChar(log.priority); msg8 += String8::format("\n%s.%03d %c %s", timeStr.c_str(), ms, p, log.message.c_str()); } return msg8.c_str(); } } // namespace DrmUtils } // namespace android #endif // ANDROID_DRMUTILS_H media/libstagefright/include/media/stagefright/MediaErrors.h +50 −0 Original line number Diff line number Diff line Loading @@ -162,6 +162,56 @@ static inline bool isCryptoError(status_t err) { || (ERROR_DRM_VENDOR_MIN <= err && err <= ERROR_DRM_VENDOR_MAX); } static inline std::string StrCryptoError(status_t err) { #define STATUS_CASE(STATUS) \ case STATUS: \ return #STATUS switch (err) { STATUS_CASE(ERROR_DRM_UNKNOWN); STATUS_CASE(ERROR_DRM_NO_LICENSE); STATUS_CASE(ERROR_DRM_LICENSE_EXPIRED); STATUS_CASE(ERROR_DRM_SESSION_NOT_OPENED); STATUS_CASE(ERROR_DRM_DECRYPT_UNIT_NOT_INITIALIZED); STATUS_CASE(ERROR_DRM_DECRYPT); STATUS_CASE(ERROR_DRM_CANNOT_HANDLE); STATUS_CASE(ERROR_DRM_TAMPER_DETECTED); STATUS_CASE(ERROR_DRM_NOT_PROVISIONED); STATUS_CASE(ERROR_DRM_DEVICE_REVOKED); STATUS_CASE(ERROR_DRM_RESOURCE_BUSY); STATUS_CASE(ERROR_DRM_INSUFFICIENT_OUTPUT_PROTECTION); STATUS_CASE(ERROR_DRM_INSUFFICIENT_SECURITY); STATUS_CASE(ERROR_DRM_FRAME_TOO_LARGE); STATUS_CASE(ERROR_DRM_RESOURCE_CONTENTION); STATUS_CASE(ERROR_DRM_SESSION_LOST_STATE); STATUS_CASE(ERROR_DRM_INVALID_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_RETRY); 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 statusToString(err); } } // namespace android #endif // MEDIA_ERRORS_H_ Loading
drm/libmediadrm/include/mediadrm/IDrm.h +0 −1 Original line number Diff line number Diff line Loading @@ -162,7 +162,6 @@ struct IDrm : public virtual RefBase { DrmPlugin::SecurityLevel securityLevel) const = 0; virtual status_t setPlaybackId( Vector<uint8_t> const &sessionId, const char *playbackId) = 0; Loading
drm/libmediadrm/interface/mediadrm/DrmUtils.h +52 −1 Original line number Diff line number Diff line Loading @@ -23,8 +23,11 @@ #include <android/hardware/drm/1.4/types.h> #include <media/stagefright/MediaErrors.h> #include <utils/Errors.h> // for status_t #include <utils/Vector.h> #include <utils/Log.h> #include <utils/String8.h> #include <utils/StrongPointer.h> #include <utils/Vector.h> #include <ctime> #include <vector> Loading Loading @@ -138,6 +141,54 @@ status_t GetLogMessages(const sp<U> &obj, Vector<::V1_4::LogMessage> &logs) { return toStatusT(err); } namespace { static inline char logPriorityToChar(::V1_4::LogPriority priority) { char p = 'U'; switch (priority) { case ::V1_4::LogPriority::VERBOSE: p = 'V'; break; case ::V1_4::LogPriority::DEBUG: p = 'D'; break; case ::V1_4::LogPriority::INFO: p = 'I'; break; case ::V1_4::LogPriority::WARN: p = 'W'; break; case ::V1_4::LogPriority::ERROR: p = 'E'; break; case ::V1_4::LogPriority::FATAL: p = 'F'; break; default: p = 'U'; break; } return p; } } template<typename T> std::string GetExceptionMessage(status_t err, const char *msg, const sp<T> &iface) { String8 msg8; if (msg) { msg8 += msg; msg8 += ": "; } auto errStr = StrCryptoError(err); msg8 += errStr.c_str(); Vector<::V1_4::LogMessage> logs; if (iface->getLogMessages(logs) != NO_ERROR) { return msg8.c_str(); } for (auto log: logs) { time_t seconds = log.timeMs / 1000; int ms = log.timeMs % 1000; char buf[64] = {0}; std::string timeStr = "00-00 00:00:00"; if (strftime(buf, sizeof buf, "%m-%d %H:%M:%S", std::localtime(&seconds))) { timeStr = buf; } char p = logPriorityToChar(log.priority); msg8 += String8::format("\n%s.%03d %c %s", timeStr.c_str(), ms, p, log.message.c_str()); } return msg8.c_str(); } } // namespace DrmUtils } // namespace android #endif // ANDROID_DRMUTILS_H
media/libstagefright/include/media/stagefright/MediaErrors.h +50 −0 Original line number Diff line number Diff line Loading @@ -162,6 +162,56 @@ static inline bool isCryptoError(status_t err) { || (ERROR_DRM_VENDOR_MIN <= err && err <= ERROR_DRM_VENDOR_MAX); } static inline std::string StrCryptoError(status_t err) { #define STATUS_CASE(STATUS) \ case STATUS: \ return #STATUS switch (err) { STATUS_CASE(ERROR_DRM_UNKNOWN); STATUS_CASE(ERROR_DRM_NO_LICENSE); STATUS_CASE(ERROR_DRM_LICENSE_EXPIRED); STATUS_CASE(ERROR_DRM_SESSION_NOT_OPENED); STATUS_CASE(ERROR_DRM_DECRYPT_UNIT_NOT_INITIALIZED); STATUS_CASE(ERROR_DRM_DECRYPT); STATUS_CASE(ERROR_DRM_CANNOT_HANDLE); STATUS_CASE(ERROR_DRM_TAMPER_DETECTED); STATUS_CASE(ERROR_DRM_NOT_PROVISIONED); STATUS_CASE(ERROR_DRM_DEVICE_REVOKED); STATUS_CASE(ERROR_DRM_RESOURCE_BUSY); STATUS_CASE(ERROR_DRM_INSUFFICIENT_OUTPUT_PROTECTION); STATUS_CASE(ERROR_DRM_INSUFFICIENT_SECURITY); STATUS_CASE(ERROR_DRM_FRAME_TOO_LARGE); STATUS_CASE(ERROR_DRM_RESOURCE_CONTENTION); STATUS_CASE(ERROR_DRM_SESSION_LOST_STATE); STATUS_CASE(ERROR_DRM_INVALID_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_RETRY); 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 statusToString(err); } } // namespace android #endif // MEDIA_ERRORS_H_