1# Drm 2 3 4## 概述 5 6提供数字版权保护能力的C接口API。 7 8开发者可根据实际的开发需求,参考对应的开发指南及样例: 9 10- [DRM系统管理](../../media/drm/native-drm-mediakeysystem-management.md) 11- [DRM会话管理](../../media/drm/native-drm-mediakeysession-management.md) 12 13 14**起始版本:** 11 15 16 17## 汇总 18 19 20### 文件 21 22| 名称 | 描述 | 23| -------- | -------- | 24| [native_drm_common.h](native__drm__common_8h.md) | 定义DRM数据类型。 | 25| [native_drm_err.h](native__drm__err_8h.md) | 定义DRM错误码。 | 26| [native_mediakeysession.h](native__mediakeysession_8h.md) | 定义Drm MediaKeySession API。 | 27| [native_mediakeysystem.h](native__mediakeysystem_8h.md) | 定义Drm MediaKeySystem API。 | 28 29 30### 结构体 31 32| 名称 | 描述 | 33| -------- | -------- | 34| struct [DRM_MediaKeyRequestInfo](_d_r_m___media_key_request_info.md) | 媒体密钥请求信息。 | 35| struct [DRM_MediaKeyRequest](_d_r_m___media_key_request.md) | 媒体密钥请求。 | 36| struct [DRM_Statistics](_d_r_m___statistics.md) | MediaKeySystem的度量记录。 | 37| struct [DRM_OfflineMediakeyIdArray](_d_r_m___offline_mediakey_id_array.md) | 离线媒体密钥标识列表。 | 38| struct [DRM_KeysInfo](_d_r_m___keys_info.md) | 媒体密钥信息。 | 39| struct [DRM_MediaKeyStatus](_d_r_m___media_key_status.md) | 媒体密钥状态。 | 40| struct [DRM_PsshInfo](_d_r_m___pssh_info.md) | DRM内容保护系统专用头(Protection System Specific Header)信息。 | 41| struct [DRM_MediaKeySystemInfo](_d_r_m___media_key_system_info.md) | 加密媒体内容的DRM信息。 | 42| struct [MediaKeySession_Callback](_media_key_session___callback.md) | MediaKeySession_Callback结构体,用于监听密钥变换等事件,适用于单个媒体解密的场景。 | 43| struct [OH_MediaKeySession_Callback](_o_h___media_key_session___callback.md) | OH_MediaKeySession_Callback结构体,用于监听密钥变换等事件,适用多个媒体解密的场景。 | 44| struct [DRM_MediaKeySystemDescription](_d_r_m___media_key_system_description.md) | DRM解决方案名称及其UUID的列表。 | 45 46 47### 宏定义 48 49| 名称 | 描述 | 50| -------- | -------- | 51| [MAX_MEDIA_KEY_REQUEST_OPTION_COUNT](#max_media_key_request_option_count) 16 | 媒体密钥请求可选数据的最大数量。 | 52| [MAX_MEDIA_KEY_REQUEST_OPTION_NAME_LEN](#max_media_key_request_option_name_len) 64 | 媒体密钥请求可选数据名称的最大长度。 | 53| [MAX_MEDIA_KEY_REQUEST_OPTION_DATA_LEN](#max_media_key_request_option_data_len) 128 | 媒体密钥请求可选数据的最大长度。 | 54| [MAX_INIT_DATA_LEN](#max_init_data_len) 2048 | 媒体密钥请求初始化数据的最大长度。 | 55| [MAX_MIMETYPE_LEN](#max_mimetype_len) 64 | 媒体mimetype的最大长度。 | 56| [MAX_MEDIA_KEY_REQUEST_DATA_LEN](#max_media_key_request_data_len) 8192 | 媒体密钥请求数据的最大长度。 | 57| [MAX_DEFAULT_URL_LEN](#max_default_url_len) 2048 | URL最大长度。 | 58| [MAX_STATISTICS_COUNT](#max_statistics_count) 10 | 度量记录的最大数量。 | 59| [MAX_STATISTICS_NAME_LEN](#max_statistics_name_len) 64 | 度量记录名称的最大长度。 | 60| [MAX_STATISTICS_BUFFER_LEN](#max_statistics_buffer_len) 256 | 度量记录缓冲区的最大长度。 | 61| [MAX_OFFLINE_MEDIA_KEY_ID_COUNT](#max_offline_media_key_id_count) 512 | 离线媒体密钥标识的最大数量。 | 62| [MAX_OFFLINE_MEDIA_KEY_ID_LEN](#max_offline_media_key_id_len) 64 | 离线媒体密钥标识的最大长度。 | 63| [MAX_KEY_INFO_COUNT](#max_key_info_count) 64 | 密钥信息的最大数量。 | 64| [MAX_KEY_ID_LEN](#max_key_id_len) 16 | 密钥标识的最大长度。 | 65| [MAX_KEY_STATUS_VALUE_LEN](#max_key_status_value_len) 128 | 密钥状态值的最大长度。 | 66| [MAX_MEDIA_KEY_STATUS_COUNT](#max_media_key_status_count) 64 | 媒体密钥状态的最大数量。 | 67| [MAX_MEDIA_KEY_STATUS_NAME_LEN](#max_media_key_status_name_len) 64 | 媒体密钥状态名称的最大长度。 | 68| [MAX_MEDIA_KEY_STATUS_VALUE_LEN](#max_media_key_status_value_len) 256 | 媒体密钥状态值的最大长度。 | 69| [DRM_UUID_LEN](#drm_uuid_len) 16 | DRM解决方案的UUID长度。 | 70| [MAX_PSSH_DATA_LEN](#max_pssh_data_len) 2048 | PSSH(Protected System Specific Header)信息的最大长度。 | 71| [MAX_PSSH_INFO_COUNT](#max_pssh_info_count) 8 | PSSH(Protected System Specific Header)信息的最大数量。 | 72| [MAX_MEDIA_KEY_SYSTEM_NAME_LEN](#max_media_key_system_name_len) 128 | MediaKeySystem名称的最大长度。 | 73| [MAX_MEDIA_KEY_SYSTEM_NUM](#max_media_key_system_num) 8 | MediaKeySystem的最大数量。 | 74 75 76### 类型定义 77 78| 名称 | 描述 | 79| -------- | -------- | 80| typedef enum [DRM_EventType](#drm_eventtype-1) [DRM_EventType](#drm_eventtype) | 监听事件类型。 | 81| typedef enum [DRM_ContentProtectionLevel](#drm_contentprotectionlevel-1) [DRM_ContentProtectionLevel](#drm_contentprotectionlevel) | 内容保护级别。 | 82| typedef enum [DRM_MediaKeyType](#drm_mediakeytype-1) [DRM_MediaKeyType](#drm_mediakeytype) | 媒体密钥类型。 | 83| typedef enum [DRM_MediaKeyRequestType](#drm_mediakeyrequesttype-1) [DRM_MediaKeyRequestType](#drm_mediakeyrequesttype) | 媒体密钥请求类型。 | 84| typedef enum [DRM_OfflineMediaKeyStatus](#drm_offlinemediakeystatus-1) [DRM_OfflineMediaKeyStatus](#drm_offlinemediakeystatus) | 离线媒体密钥状态。 | 85| typedef enum [DRM_CertificateStatus](#drm_certificatestatus-1) [DRM_CertificateStatus](#drm_certificatestatus) | 设备DRM证书状态。 | 86| typedef struct [DRM_MediaKeyRequestInfo](_d_r_m___media_key_request_info.md) [DRM_MediaKeyRequestInfo](#drm_mediakeyrequestinfo) | 媒体密钥请求信息。 | 87| typedef struct [DRM_MediaKeyRequest](_d_r_m___media_key_request.md) [DRM_MediaKeyRequest](#drm_mediakeyrequest) | 媒体密钥请求。 | 88| typedef struct [DRM_Statistics](_d_r_m___statistics.md) [DRM_Statistics](#drm_statistics) | MediaKeySystem的度量记录。 | 89| typedef struct [DRM_OfflineMediakeyIdArray](_d_r_m___offline_mediakey_id_array.md) [DRM_OfflineMediakeyIdArray](#drm_offlinemediakeyidarray) | 离线媒体密钥标识列表。 | 90| typedef struct [DRM_KeysInfo](_d_r_m___keys_info.md) [DRM_KeysInfo](#drm_keysinfo) | 媒体密钥信息。 | 91| typedef struct [DRM_MediaKeyStatus](_d_r_m___media_key_status.md) [DRM_MediaKeyStatus](#drm_mediakeystatus) | 媒体密钥状态。 | 92| typedef struct [DRM_PsshInfo](_d_r_m___pssh_info.md) [DRM_PsshInfo](#drm_psshinfo) | DRM内容保护系统专用头(Protection System Specific Header)信息。| 93| typedef struct [DRM_MediaKeySystemInfo](_d_r_m___media_key_system_info.md) [DRM_MediaKeySystemInfo](#drm_mediakeysysteminfo) | 加密媒体内容的DRM信息。 | 94| typedef struct [DRM_MediaKeySystemDescription](_d_r_m___media_key_system_description.md) [DRM_MediaKeySystemDescription](#drm_mediakeysystemdescription) | DRM解决方案名称及其UUID的列表。 | 95| typedef void(\* [DRM_MediaKeySystemInfoCallback](#drm_mediakeysysteminfocallback)) ([DRM_MediaKeySystemInfo](_d_r_m___media_key_system_info.md) \*mediaKeySystemInfo) | MediakeySystem信息的回调函数。 | 96| typedef struct [MediaKeySystem](#mediakeysystem) [MediaKeySystem](#mediakeysystem) | MediaKeySystem结构。 | 97| typedef struct [MediaKeySession](#mediakeysession) [MediaKeySession](#mediakeysession) | MediaKeySession结构。 | 98| typedef enum [Drm_ErrCode](#drm_errcode-1) [Drm_ErrCode](#drm_errcode) | DRM错误码。 | 99| typedef [Drm_ErrCode](#drm_errcode)(\* [MediaKeySession_EventCallback](#mediakeysession_eventcallback)) ([DRM_EventType](#drm_eventtype) eventType, uint8_t \*info, int32_t infoLen, char \*extra) | MediaKeySession事件回调函数,不返回MediaKeySession实例,适用于单个媒体解密的场景。 | 100| typedef [Drm_ErrCode](#drm_errcode)(\* [MediaKeySession_KeyChangeCallback](#mediakeysession_keychangecallback)) ([DRM_KeysInfo](_d_r_m___keys_info.md) \*keysInfo, bool newKeysAvailable) | MediaKeySession密钥变换回调函数,不返回MediaKeySession实例,适用于单个媒体解密的场景。 | 101| typedef struct [MediaKeySession_Callback](_media_key_session___callback.md) [MediaKeySession_Callback](#mediakeysession_callback) | MediaKeySession_Callback结构体,适用于单个媒体解密的场景。 | 102| typedef [Drm_ErrCode](#drm_errcode)(\* [OH_MediaKeySession_EventCallback](#oh_mediakeysession_eventcallback)) ([MediaKeySession](#mediakeysession) \*mediaKeySessoin, [DRM_EventType](#drm_eventtype) eventType, uint8_t \*info, int32_t infoLen, char \*extra) | MediaKeySession事件回调函数,返回MediaKeySession实例,适用于多个媒体解密的场景。 | 103| typedef [Drm_ErrCode](#drm_errcode)(\* [OH_MediaKeySession_KeyChangeCallback](#oh_mediakeysession_keychangecallback)) ([MediaKeySession](#mediakeysession) \*mediaKeySessoin, [DRM_KeysInfo](_d_r_m___keys_info.md) \*keysInfo, bool newKeysAvailable) | MediaKeySession密钥变换回调函数,返回MediaKeySession实例,适用于多个媒体解密的场景。 | 104| typedef struct [OH_MediaKeySession_Callback](_o_h___media_key_session___callback.md) [OH_MediaKeySession_Callback](#oh_mediakeysession_callback) | OH_MediaKeySession_Callback结构体,适用多个媒体解密的场景。 | 105| typedef [Drm_ErrCode](#drm_errcode)(\* [MediaKeySystem_Callback](#mediakeysystem_callback)) ([DRM_EventType](#drm_eventtype) eventType, uint8_t \*info, int32_t infoLen, char \*extra) | MediaKeySystem事件回调函数,不返回MediaKeySystem实例,适用于单个MediaKeySystem实例的场景。 | 106| typedef [Drm_ErrCode](#drm_errcode)(\* [OH_MediaKeySystem_Callback](#oh_mediakeysystem_callback)) (MediaKeySystem \*mediaKeySystem, [DRM_EventType](#drm_eventtype) eventType, uint8_t \*info, int32_t infoLen, char \*extra) | MediaKeySystem事件回调函数,返回MediaKeySystem实例,适用于多个MediaKeySystem实例的场景。 | 107 108 109### 枚举 110 111| 名称 | 描述 | 112| -------- | -------- | 113| [DRM_EventType](#drm_eventtype-1) {<br/>EVENT_DRM_BASE = 200, <br/>EVENT_PROVISION_REQUIRED = 201, <br/>EVENT_KEY_REQUIRED = 202, <br/>EVENT_KEY_EXPIRED = 203,<br/>EVENT_VENDOR_DEFINED = 204, <br/>EVENT_EXPIRATION_UPDATE = 206<br/>} | 事件类型。 | 114| [DRM_ContentProtectionLevel](#drm_contentprotectionlevel-1) {<br/>CONTENT_PROTECTION_LEVEL_UNKNOWN = 0, <br/>CONTENT_PROTECTION_LEVEL_SW_CRYPTO, <br/>CONTENT_PROTECTION_LEVEL_HW_CRYPTO, <br/>CONTENT_PROTECTION_LEVEL_ENHANCED_HW_CRYPTO,<br/>CONTENT_PROTECTION_LEVEL_MAX<br/>} | 内容保护级别。 | 115| [DRM_MediaKeyType](#drm_mediakeytype-1) { <br/>MEDIA_KEY_TYPE_OFFLINE = 0, <br/>MEDIA_KEY_TYPE_ONLINE <br/>} | 媒体密钥类型。 | 116| [DRM_MediaKeyRequestType](#drm_mediakeyrequesttype-1) {<br/>MEDIA_KEY_REQUEST_TYPE_UNKNOWN = 0, <br/>MEDIA_KEY_REQUEST_TYPE_INITIAL, <br/>MEDIA_KEY_REQUEST_TYPE_RENEWAL, <br/>MEDIA_KEY_REQUEST_TYPE_RELEASE,<br/>MEDIA_KEY_REQUEST_TYPE_NONE, <br/>MEDIA_KEY_REQUEST_TYPE_UPDATE<br/>} | 媒体密钥请求类型。 | 117| [DRM_OfflineMediaKeyStatus](#drm_offlinemediakeystatus-1) { <br/>OFFLINE_MEDIA_KEY_STATUS_UNKNOWN = 0, <br/>OFFLINE_MEDIA_KEY_STATUS_USABLE, <br/>OFFLINE_MEDIA_KEY_STATUS_INACTIVE } | 离线媒体密钥状态。 | 118| [DRM_CertificateStatus](#drm_certificatestatus-1) {<br/>CERT_STATUS_PROVISIONED = 0, <br/>CERT_STATUS_NOT_PROVISIONED, <br/>CERT_STATUS_EXPIRED, <br/>CERT_STATUS_INVALID,<br/>CERT_STATUS_UNAVAILABLE<br/>} | 设备DRM证书状态。 | 119| [Drm_ErrCode](#drm_errcode-1) {<br/>DRM_ERR_OK = 0, <br/>DRM_CAPI_ERR_BASE = 24700500, <br/>DRM_ERR_NO_MEMORY = DRM_CAPI_ERR_BASE + 1, <br/>DRM_ERR_OPERATION_NOT_PERMITTED = DRM_CAPI_ERR_BASE + 2,<br/>DRM_ERR_INVALID_VAL = DRM_CAPI_ERR_BASE + 3, <br/>DRM_ERR_IO = DRM_CAPI_ERR_BASE + 4, <br/>DRM_ERR_TIMEOUT = DRM_CAPI_ERR_BASE + 5, <br/>DRM_ERR_UNKNOWN = DRM_CAPI_ERR_BASE + 6,<br/>DRM_ERR_SERVICE_DIED = DRM_CAPI_ERR_BASE + 7, <br/>DRM_ERR_INVALID_STATE = DRM_CAPI_ERR_BASE + 8, <br/>DRM_ERR_UNSUPPORTED = DRM_CAPI_ERR_BASE + 9, <br/>DRM_ERR_MAX_SYSTEM_NUM_REACHED = DRM_CAPI_ERR_BASE + 10,<br/>DRM_ERR_MAX_SESSION_NUM_REACHED = DRM_CAPI_ERR_BASE + 11, <br/>DRM_ERR_EXTEND_START = DRM_CAPI_ERR_BASE + 100<br/>} | DRM错误码。 | 120 121 122### 函数 123 124| 名称 | 描述 | 125| -------- | -------- | 126| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySession_GenerateMediaKeyRequest](#oh_mediakeysession_generatemediakeyrequest) ([MediaKeySession](#mediakeysession) \*mediaKeySession, [DRM_MediaKeyRequestInfo](_d_r_m___media_key_request_info.md) \*info, [DRM_MediaKeyRequest](_d_r_m___media_key_request.md) \*mediaKeyRequest) | 生成媒体密钥请求。 | 127| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySession_ProcessMediaKeyResponse](#oh_mediakeysession_processmediakeyresponse) ([MediaKeySession](#mediakeysession) \*mediaKeySession, uint8_t \*response, int32_t responseLen, uint8_t \*offlineMediaKeyId, int32_t \*offlineMediaKeyIdLen) | 处理媒体密钥请求响应。 | 128| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySession_CheckMediaKeyStatus](#oh_mediakeysession_checkmediakeystatus) ([MediaKeySession](#mediakeysession) \*mediaKeySessoin, [DRM_MediaKeyStatus](_d_r_m___media_key_status.md) \*mediaKeyStatus) | 检查媒体密钥状态。 | 129| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySession_ClearMediaKeys](#oh_mediakeysession_clearmediakeys) ([MediaKeySession](#mediakeysession) \*mediaKeySessoin) | 清除当前会话的媒体密钥。 | 130| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySession_GenerateOfflineReleaseRequest](#oh_mediakeysession_generateofflinereleaserequest) ([MediaKeySession](#mediakeysession) \*mediaKeySessoin, uint8_t \*offlineMediaKeyId, int32_t offlineMediaKeyIdLen, uint8_t \*releaseRequest, int32_t \*releaseRequestLen) | 生成离线媒体密钥释放请求。 | 131| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySession_ProcessOfflineReleaseResponse](#oh_mediakeysession_processofflinereleaseresponse) ([MediaKeySession](#mediakeysession) \*mediaKeySessoin, uint8_t \*offlineMediaKeyId, int32_t offlineMediaKeyIdLen, uint8_t \*releaseReponse, int32_t releaseReponseLen) | 处理离线媒体密钥释放响应。 | 132| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySession_RestoreOfflineMediaKeys](#oh_mediakeysession_restoreofflinemediakeys) ([MediaKeySession](#mediakeysession) \*mediaKeySessoin, uint8_t \*offlineMediaKeyId, int32_t offlineMediaKeyIdLen) | 恢复离线媒体密钥。 | 133| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySession_GetContentProtectionLevel](#oh_mediakeysession_getcontentprotectionlevel) ([MediaKeySession](#mediakeysession) \*mediaKeySessoin, [DRM_ContentProtectionLevel](#drm_contentprotectionlevel) \*contentProtectionLevel) | 获取会话的内容保护级别。 | 134| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySession_RequireSecureDecoderModule](#oh_mediakeysession_requiresecuredecodermodule) ([MediaKeySession](#mediakeysession) \*mediaKeySessoin, const char \*mimeType, bool \*status) | 是否需要安全解码。 | 135| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySession_SetMediaKeySessionCallback](#oh_mediakeysession_setmediakeysessioncallback) ([MediaKeySession](#mediakeysession) \*mediaKeySessoin, [MediaKeySession_Callback](_media_key_session___callback.md) \*callback) | 设置MediaKeySession事件回调,适用于单个媒体解密的场景。 | 136| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySession_SetCallback](#oh_mediakeysession_setcallback) ([MediaKeySession](#mediakeysession) \*mediaKeySessoin, [OH_MediaKeySession_Callback](_o_h___media_key_session___callback.md) \*callback) | 设置MediaKeySession事件回调,适用于多个媒体解密的场景。 | 137| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySession_Destroy](#oh_mediakeysession_destroy) ([MediaKeySession](#mediakeysession) \*mediaKeySessoin) | 释放MediaKeySession。 | 138| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySystem_SetCallback](#oh_mediakeysystem_setcallback) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, [OH_MediaKeySystem_Callback](#oh_mediakeysystem_callback) callback) | 设置MediaKeySystem事件回调。 | 139| bool [OH_MediaKeySystem_IsSupported](#oh_mediakeysystem_issupported) (const char \*name) | 判断设备是否支持指定的DRM解决方案。 | 140| bool [OH_MediaKeySystem_IsSupported2](#oh_mediakeysystem_issupported2) (const char \*name, const char \*mimeType) | 判断设备是否支持指定DRM解决方案及媒体类型。 | 141| bool [OH_MediaKeySystem_IsSupported3](#oh_mediakeysystem_issupported3) (const char \*name, const char \*mimeType, [DRM_ContentProtectionLevel](#drm_contentprotectionlevel) contentProtectionLevel) | 判断设备是否支持指定DRM解决方案、媒体类型以及内容保护级别。 | 142| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySystem_GetMediaKeySystems](#oh_mediakeysystem_getmediakeysystems) ([DRM_MediaKeySystemDescription](#drm_mediakeysystemdescription) \*infos, uint32_t \*count) | 获取设备支持的DRM解决方案信息列表。 | 143| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySystem_Create](#oh_mediakeysystem_create) (const char \*name, [MediaKeySystem](#mediakeysystem) \*\*mediaKeySystem) | 创建MediaKeySystem实例。 | 144| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySystem_SetConfigurationString](#oh_mediakeysystem_setconfigurationstring) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, const char \*configName, const char \*value) | 设置字符串类型的配置信息。 | 145| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySystem_GetConfigurationString](#oh_mediakeysystem_getconfigurationstring) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, const char \*configName, char \*value, int32_t valueLen) | 获取字符串类型的配置属性值。 | 146| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySystem_SetConfigurationByteArray](#oh_mediakeysystem_setconfigurationbytearray) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, const char \*configName, uint8_t \*value, int32_t valueLen) | 设置数组类型的配置信息。 | 147| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySystem_GetConfigurationByteArray](#oh_mediakeysystem_getconfigurationbytearray) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, const char \*configName, uint8_t \*value, int32_t \*valueLen) | 按字符数组类型名称获取MediaKeySystem配置值。 | 148| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySystem_GetStatistics](#oh_mediakeysystem_getstatistics) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, [DRM_Statistics](_d_r_m___statistics.md) \*statistics) | 获取MediaKeySystem度量记录。 | 149| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySystem_GetMaxContentProtectionLevel](#oh_mediakeysystem_getmaxcontentprotectionlevel) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, [DRM_ContentProtectionLevel](#drm_contentprotectionlevel) \*contentProtectionLevel) | 获取当前DRM解决方案支持的最大内容保护级别。 | 150| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySystem_SetMediaKeySystemCallback](#oh_mediakeysystem_setmediakeysystemcallback) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, [MediaKeySystem_Callback](#mediakeysystem_callback) callback) | 设置MediaKeySystem事件回调。 | 151| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySystem_CreateMediaKeySession](#oh_mediakeysystem_createmediakeysession) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, [DRM_ContentProtectionLevel](#drm_contentprotectionlevel) \*level, [MediaKeySession](#mediakeysession) \*\*mediaKeySession) | 创建媒体密钥会话实例。 | 152| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySystem_GenerateKeySystemRequest](#oh_mediakeysystem_generatekeysystemrequest) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, uint8_t \*request, int32_t \*requestLen, char \*defaultUrl, int32_t defaultUrlLen) | 生成设备DRM请求。 | 153| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySystem_ProcessKeySystemResponse](#oh_mediakeysystem_processkeysystemresponse) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, uint8_t \*response, int32_t responseLen) | 处理设备DRM证书请求响应。 | 154| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySystem_GetOfflineMediaKeyIds](#oh_mediakeysystem_getofflinemediakeyids) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, [DRM_OfflineMediakeyIdArray](_d_r_m___offline_mediakey_id_array.md) \*offlineMediaKeyIds) | 获取离线媒体密钥标识列表。 | 155| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySystem_GetOfflineMediaKeyStatus](#oh_mediakeysystem_getofflinemediakeystatus) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, uint8_t \*offlineMediaKeyId, int32_t offlineMediaKeyIdLen, [DRM_OfflineMediaKeyStatus](#drm_offlinemediakeystatus) \*status) | 获取离线媒体密钥状态。 | 156| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySystem_ClearOfflineMediaKeys](#oh_mediakeysystem_clearofflinemediakeys) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, uint8_t \*offlineMediaKeyId, int32_t offlineMediaKeyIdLen) | 清除离线媒体密钥。 | 157| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySystem_GetCertificateStatus](#oh_mediakeysystem_getcertificatestatus) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, [DRM_CertificateStatus](#drm_certificatestatus) \*certStatus) | 获取设备DRM证书状态。 | 158| [Drm_ErrCode](#drm_errcode) [OH_MediaKeySystem_Destroy](#oh_mediakeysystem_destroy) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem) | 销毁MediaKeySystem实例。 | 159 160 161### 变量 162 163| 名称 | 描述 | 164| -------- | -------- | 165| [DRM_MediaKeyType](#drm_mediakeytype) [DRM_MediaKeyRequestInfo::type](#type-12) | 媒体密钥请求中的密钥类型。 | 166| int32_t [DRM_MediaKeyRequestInfo::initDataLen](#initdatalen) | 初始数据长度。 | 167| uint8_t [DRM_MediaKeyRequestInfo::initData](#initdata) [[MAX_INIT_DATA_LEN](#max_init_data_len)] | 初始数据。 | 168| char [DRM_MediaKeyRequestInfo::mimeType](#mimetype) [[MAX_MIMETYPE_LEN](#max_mimetype_len)] | 媒体类型。 | 169| uint32_t [DRM_MediaKeyRequestInfo::optionsCount](#optionscount) | 可选数据数量。 | 170| char [DRM_MediaKeyRequestInfo::optionName](#optionname) [[MAX_MEDIA_KEY_REQUEST_OPTION_COUNT](#max_media_key_request_option_count)][[MAX_MEDIA_KEY_REQUEST_OPTION_NAME_LEN](#max_media_key_request_option_name_len)] | 可选数据名称数组。 | 171| char [DRM_MediaKeyRequestInfo::optionData](#optiondata) [[MAX_MEDIA_KEY_REQUEST_OPTION_COUNT](#max_media_key_request_option_count)][[MAX_MEDIA_KEY_REQUEST_OPTION_DATA_LEN](#max_media_key_request_option_data_len)] | 可选数据数组。 | 172| [DRM_MediaKeyRequestType](#drm_mediakeyrequesttype) [DRM_MediaKeyRequest::type](#type-22) | 媒体密钥请求类型。 | 173| int32_t [DRM_MediaKeyRequest::dataLen](#datalen-12) | 媒体密钥请求数据长度。 | 174| uint8_t [DRM_MediaKeyRequest::data](#data-12) [[MAX_MEDIA_KEY_REQUEST_DATA_LEN](#max_media_key_request_data_len)] | 媒体密钥请求数据。 | 175| char [DRM_MediaKeyRequest::defaultUrl](#defaulturl) [[MAX_DEFAULT_URL_LEN](#max_default_url_len)] | DRM服务URL。 | 176| uint32_t [DRM_Statistics::statisticsCount](#statisticscount) | 度量记录数量。 | 177| char [DRM_Statistics::statisticsName](#statisticsname) [[MAX_STATISTICS_COUNT](#max_statistics_count)][[MAX_STATISTICS_NAME_LEN](#max_statistics_name_len)] | 度量记录名称数组。 | 178| char [DRM_Statistics::statisticsDescription](#statisticsdescription) [[MAX_STATISTICS_COUNT](#max_statistics_count)][[MAX_STATISTICS_BUFFER_LEN](#max_statistics_buffer_len)] | 度量记录描述数组。 | 179| uint32_t [DRM_OfflineMediakeyIdArray::idsCount](#idscount) | 离线媒体密钥标识数量。 | 180| int32_t [DRM_OfflineMediakeyIdArray::idsLen](#idslen) [[MAX_OFFLINE_MEDIA_KEY_ID_COUNT](#max_offline_media_key_id_count)] | 离线媒体密钥标识长度集合。 | 181| uint8_t [DRM_OfflineMediakeyIdArray::ids](#ids) [[MAX_OFFLINE_MEDIA_KEY_ID_COUNT](#max_offline_media_key_id_count)][[MAX_OFFLINE_MEDIA_KEY_ID_LEN](#max_offline_media_key_id_len)] | 离线媒体密钥标识集合。 | 182| uint32_t [DRM_KeysInfo::keysInfoCount](#keysinfocount) | 密钥信息中的媒体密钥数量。 | 183| uint8_t [DRM_KeysInfo::keyId](#keyid) [[MAX_KEY_INFO_COUNT](#max_key_info_count)][[MAX_KEY_ID_LEN](#max_key_id_len)] | 离线媒体密钥标识集合。 | 184| char [DRM_KeysInfo::statusValue](#statusvalue-12) [[MAX_KEY_INFO_COUNT](#max_key_info_count)][[MAX_KEY_STATUS_VALUE_LEN](#max_key_status_value_len)] | 密钥信息中的媒体密钥状态值。 | 185| uint32_t [DRM_MediaKeyStatus::statusCount](#statuscount) | 媒体密钥状态数量。 | 186| char [DRM_MediaKeyStatus::statusName](#statusname) [[MAX_MEDIA_KEY_STATUS_COUNT](#max_media_key_status_count)][[MAX_MEDIA_KEY_STATUS_NAME_LEN](#max_media_key_status_name_len)] | 媒体密钥状态名称数组。 | 187| char [DRM_MediaKeyStatus::statusValue](#statusvalue-22) [[MAX_MEDIA_KEY_STATUS_COUNT](#max_media_key_status_count)][[MAX_MEDIA_KEY_STATUS_VALUE_LEN](#max_media_key_status_value_len)] | 媒体密钥状态值数组。 | 188| uint8_t [DRM_PsshInfo::uuid](#uuid-12) [[DRM_UUID_LEN](#drm_uuid_len)] | DRM解决方案唯一标识。 | 189| int32_t [DRM_PsshInfo::dataLen](#datalen-22) | PSSH(Protected System Specific Header)信息长度。 | 190| uint8_t [DRM_PsshInfo::data](#data-22) [[MAX_PSSH_DATA_LEN](#max_pssh_data_len)] | PSSH(Protected System Specific Header)信息。 | 191| uint32_t [DRM_MediaKeySystemInfo::psshCount](#psshcount) | PSSH(Protected System Specific Header)信息数量。 | 192| [DRM_PsshInfo](_d_r_m___pssh_info.md) [DRM_MediaKeySystemInfo::psshInfo](#psshinfo) [[MAX_PSSH_INFO_COUNT](#max_pssh_info_count)] | PSSH(Protected System Specific Header)信息。 | 193| char [DRM_MediaKeySystemDescription::name](#name) [[MAX_MEDIA_KEY_SYSTEM_NAME_LEN](#max_media_key_system_name_len)] | DRM解决方案的名称。 | 194| uint8_t [DRM_MediaKeySystemDescription::uuid](#uuid-22) [[DRM_UUID_LEN](#drm_uuid_len)] | DRM解决方案唯一标识。 | 195| [MediaKeySession_EventCallback](#mediakeysession_eventcallback) [MediaKeySession_Callback::eventCallback](#eventcallback-12) | MediaKeySession事件回调,如密钥过期等。 | 196| [MediaKeySession_KeyChangeCallback](#mediakeysession_keychangecallback) [MediaKeySession_Callback::keyChangeCallback](#keychangecallback-12) | 密钥变换事件的密钥变换回调。 | 197| [OH_MediaKeySession_EventCallback](#oh_mediakeysession_eventcallback) [OH_MediaKeySession_Callback::eventCallback](#eventcallback-22) | MediaKeySession事件回调,如密钥过期等。 | 198| [OH_MediaKeySession_KeyChangeCallback](#oh_mediakeysession_keychangecallback) [OH_MediaKeySession_Callback::keyChangeCallback](#keychangecallback-22) | 密钥变换事件的密钥变换回调。 | 199 200 201 202## 宏定义说明 203 204 205### DRM_UUID_LEN 206 207``` 208#define DRM_UUID_LEN 16 209``` 210 211**描述** 212 213DRM解决方案唯一标识长度。 214 215**起始版本:** 11 216 217 218### MAX_DEFAULT_URL_LEN 219 220``` 221#define MAX_DEFAULT_URL_LEN 2048 222``` 223 224**描述** 225 226DRM服务的URL最大长度。 227 228**起始版本:** 11 229 230 231### MAX_INIT_DATA_LEN 232 233``` 234#define MAX_INIT_DATA_LEN 2048 235``` 236 237**描述** 238 239媒体密钥请求初始化数据的最大长度。 240 241**起始版本:** 11 242 243 244### MAX_KEY_ID_LEN 245 246``` 247#define MAX_KEY_ID_LEN 16 248``` 249 250**描述** 251 252媒体密钥标识的最大长度。 253 254**起始版本:** 11 255 256 257### MAX_KEY_INFO_COUNT 258 259``` 260#define MAX_KEY_INFO_COUNT 64 261``` 262 263**描述** 264 265媒体密钥信息的最大数量。 266 267**起始版本:** 11 268 269 270### MAX_KEY_STATUS_VALUE_LEN 271 272``` 273#define MAX_KEY_STATUS_VALUE_LEN 128 274``` 275 276**描述** 277 278媒体密钥状态值的最大长度。 279 280**起始版本:** 11 281 282 283### MAX_MEDIA_KEY_REQUEST_DATA_LEN 284 285``` 286#define MAX_MEDIA_KEY_REQUEST_DATA_LEN 8192 287``` 288 289**描述** 290 291媒体密钥请求的最大长度。 292 293**起始版本:** 11 294 295 296### MAX_MEDIA_KEY_REQUEST_OPTION_COUNT 297 298``` 299#define MAX_MEDIA_KEY_REQUEST_OPTION_COUNT 16 300``` 301 302**描述** 303 304媒体密钥请求中可选数据的最大数量。 305 306**起始版本:** 11 307 308 309### MAX_MEDIA_KEY_REQUEST_OPTION_DATA_LEN 310 311``` 312#define MAX_MEDIA_KEY_REQUEST_OPTION_DATA_LEN 128 313``` 314 315**描述** 316 317媒体密钥请求中可选数据的最大长度。 318 319**起始版本:** 11 320 321 322### MAX_MEDIA_KEY_REQUEST_OPTION_NAME_LEN 323 324``` 325#define MAX_MEDIA_KEY_REQUEST_OPTION_NAME_LEN 64 326``` 327 328**描述** 329 330媒体密钥请求中可选数据名称的最大长度。 331 332**起始版本:** 11 333 334 335### MAX_MEDIA_KEY_STATUS_COUNT 336 337``` 338#define MAX_MEDIA_KEY_STATUS_COUNT 64 339``` 340 341**描述** 342 343媒体密钥状态的最大数量。 344 345**起始版本:** 11 346 347 348### MAX_MEDIA_KEY_STATUS_NAME_LEN 349 350``` 351#define MAX_MEDIA_KEY_STATUS_NAME_LEN 64 352``` 353 354**描述** 355 356媒体密钥状态名称的最大长度。 357 358**起始版本:** 11 359 360 361### MAX_MEDIA_KEY_STATUS_VALUE_LEN 362 363``` 364#define MAX_MEDIA_KEY_STATUS_VALUE_LEN 256 365``` 366 367**描述** 368 369媒体密钥状态值的最大长度。 370 371**起始版本:** 11 372 373 374### MAX_MEDIA_KEY_SYSTEM_NAME_LEN 375 376``` 377#define MAX_MEDIA_KEY_SYSTEM_NAME_LEN 128 378``` 379**描述** 380 381DRM解决方案名称的最大长度。 382 383**起始版本:** 12 384 385 386### MAX_MEDIA_KEY_SYSTEM_NUM 387 388``` 389#define MAX_MEDIA_KEY_SYSTEM_NUM 8 390``` 391**描述** 392 393支持的DRM解决方案的最大数量。 394 395**起始版本:** 12 396 397 398### MAX_MIMETYPE_LEN 399 400``` 401#define MAX_MIMETYPE_LEN 64 402``` 403 404**描述** 405 406媒体类型的最大长度。 407 408**起始版本:** 11 409 410 411### MAX_OFFLINE_MEDIA_KEY_ID_COUNT 412 413``` 414#define MAX_OFFLINE_MEDIA_KEY_ID_COUNT 512 415``` 416 417**描述** 418 419离线媒体密钥标识的最大数量。 420 421**起始版本:** 11 422 423 424### MAX_OFFLINE_MEDIA_KEY_ID_LEN 425 426``` 427#define MAX_OFFLINE_MEDIA_KEY_ID_LEN 64 428``` 429 430**描述** 431 432离线媒体密钥标识的最大长度。 433 434**起始版本:** 11 435 436 437### MAX_PSSH_DATA_LEN 438 439``` 440#define MAX_PSSH_DATA_LEN 2048 441``` 442 443**描述** 444 445PSSH(Protected System Specific Header)信息的最大长度。 446 447**起始版本:** 11 448 449 450### MAX_PSSH_INFO_COUNT 451 452``` 453#define MAX_PSSH_INFO_COUNT 8 454``` 455 456**描述** 457 458PSSH(Protected System Specific Header)信息的最大数量。 459 460**起始版本:** 11 461 462 463### MAX_STATISTICS_BUFFER_LEN 464 465``` 466#define MAX_STATISTICS_BUFFER_LEN 256 467``` 468 469**描述** 470 471度量记录缓冲区的最大长度。 472 473**起始版本:** 11 474 475 476### MAX_STATISTICS_COUNT 477 478``` 479#define MAX_STATISTICS_COUNT 10 480``` 481 482**描述** 483 484度量记录的最大数量。 485 486**起始版本:** 11 487 488 489### MAX_STATISTICS_NAME_LEN 490 491``` 492#define MAX_STATISTICS_NAME_LEN 64 493``` 494 495**描述** 496 497度量记录名称的最大长度。 498 499**起始版本:** 11 500 501 502## 类型定义说明 503 504 505### DRM_CertificateStatus 506 507``` 508typedef enum DRM_CertificateStatus DRM_CertificateStatus 509``` 510 511**描述** 512 513设备DRM证书状态类型。 514 515**系统能力:** SystemCapability.Multimedia.Drm.Core 516 517**起始版本:** 11 518 519 520### DRM_ContentProtectionLevel 521 522``` 523typedef enum DRM_ContentProtectionLevel DRM_ContentProtectionLevel 524``` 525 526**描述** 527 528内容保护级别类型。 529 530**系统能力:** SystemCapability.Multimedia.Drm.Core 531 532**起始版本:** 11 533 534 535### Drm_ErrCode 536 537``` 538typedef enum Drm_ErrCode Drm_ErrCode 539``` 540 541**描述** 542 543DRM错误码。 544 545**系统能力:** SystemCapability.Multimedia.Drm.Core 546 547**起始版本:** 11 548 549 550### DRM_EventType 551 552``` 553typedef enum DRM_EventType DRM_EventType 554``` 555 556**描述** 557 558监听事件类型。 559 560**起始版本:** 11 561 562 563### DRM_KeysInfo 564 565``` 566typedef struct DRM_KeysInfo DRM_KeysInfo 567``` 568 569**描述** 570 571媒体密钥信息。 572 573**起始版本:** 11 574 575 576### DRM_MediaKeyRequest 577 578``` 579typedef struct DRM_MediaKeyRequest DRM_MediaKeyRequest 580``` 581 582**描述** 583 584媒体密钥请求。 585 586**起始版本:** 11 587 588 589### DRM_MediaKeyRequestInfo 590 591``` 592typedef struct DRM_MediaKeyRequestInfo DRM_MediaKeyRequestInfo 593``` 594 595**描述** 596 597媒体密钥请求信息。 598 599**起始版本:** 11 600 601 602### DRM_MediaKeyRequestType 603 604``` 605typedef enum DRM_MediaKeyRequestType DRM_MediaKeyRequestType 606``` 607 608**描述** 609 610媒体密钥请求类型。 611 612**系统能力:** SystemCapability.Multimedia.Drm.Core 613 614**起始版本:** 11 615 616 617### DRM_MediaKeyStatus 618 619``` 620typedef struct DRM_MediaKeyStatus DRM_MediaKeyStatus 621``` 622 623**描述** 624 625媒体密钥状态。 626 627**起始版本:** 11 628 629 630### DRM_MediaKeySystemDescription 631 632``` 633typedef struct DRM_MediaKeySystemDescription DRM_MediaKeySystemDescription 634``` 635**描述** 636 637DRM解决方案的名称和唯一标识列表。 638 639**起始版本:** 12 640 641 642### DRM_MediaKeySystemInfo 643 644``` 645typedef struct DRM_MediaKeySystemInfo DRM_MediaKeySystemInfo 646``` 647 648**描述** 649 650播放器从媒体源获取的DRM信息。 651 652**起始版本:** 11 653 654 655### DRM_MediaKeySystemInfoCallback 656 657``` 658typedef void(* DRM_MediaKeySystemInfoCallback) (DRM_MediaKeySystemInfo *mediaKeySystemInfo) 659``` 660 661**描述** 662 663应用程序为从媒体源获取DRM信息而设置的回调。 664 665**起始版本:** 11 666 667**参数:** 668 669| 名称 | 描述 | 670| -------- | -------- | 671| mediaKeySystemInfo | 从媒体源获取的DRM信息。 | 672 673### DRM_MediaKeyType 674 675``` 676typedef enum DRM_MediaKeyType DRM_MediaKeyType 677``` 678 679**描述** 680 681媒体密钥类型。 682 683**系统能力:** SystemCapability.Multimedia.Drm.Core 684 685**起始版本:** 11 686 687 688### DRM_OfflineMediakeyIdArray 689 690``` 691typedef struct DRM_OfflineMediakeyIdArray DRM_OfflineMediakeyIdArray 692``` 693 694**描述** 695 696离线媒体密钥标识数组。 697 698**起始版本:** 11 699 700 701### DRM_OfflineMediaKeyStatus 702 703``` 704typedef enum DRM_OfflineMediaKeyStatus DRM_OfflineMediaKeyStatus 705``` 706 707**描述** 708 709离线媒体密钥状态。 710 711**系统能力:** SystemCapability.Multimedia.Drm.Core 712 713**起始版本:** 11 714 715 716### DRM_PsshInfo 717 718``` 719typedef struct DRM_PsshInfo DRM_PsshInfo 720``` 721 722**描述** 723 724包含DRM解决方案唯一标识的PSSH(Protected System Specific Header)信息结构。 725 726**起始版本:** 11 727 728 729### DRM_Statistics 730 731``` 732typedef struct DRM_Statistics DRM_Statistics 733``` 734 735**描述** 736 737DRM的度量记录。 738 739**起始版本:** 11 740 741 742### MediaKeySession 743 744``` 745typedef struct MediaKeySession MediaKeySession 746``` 747 748**描述** 749 750媒体密钥会话结构。 751 752**起始版本:** 11 753 754 755### MediaKeySession_Callback 756 757``` 758typedef struct MediaKeySession_Callback MediaKeySession_Callback 759``` 760 761**描述** 762 763MediaKeySession_Callback结构体,用于监听密钥过期等事件,不返回媒体密钥会话实例,适用于单媒体密钥会话解密场景。 764 765**起始版本:** 11 766 767 768### MediaKeySession_EventCallback 769 770``` 771typedef Drm_ErrCode(* MediaKeySession_EventCallback) (DRM_EventType eventType, uint8_t *info, int32_t infoLen, char *extra) 772``` 773 774**描述** 775 776MediaKeySession事件触发时将调用的回调,如密钥过期事件。 777 778**起始版本:** 11 779 780**参数:** 781 782| 名称 | 描述 | 783| -------- | -------- | 784| eventType | 事件类型。 | 785| info | 从媒体密钥会话获取的事件信息。 | 786| infoLen | 事件信息长度。 | 787| extra | 从媒体密钥会话中获得的额外信息。 | 788 789**返回:** 790 791Drm_ErrCode 错误码。 792 793 794### MediaKeySession_KeyChangeCallback 795 796``` 797typedef Drm_ErrCode(* MediaKeySession_KeyChangeCallback) (DRM_KeysInfo *keysInfo, bool newKeysAvailable) 798``` 799 800**描述** 801 802密钥变换时将调用回调。 803 804**起始版本:** 11 805 806**参数:** 807 808| 名称 | 描述 | 809| -------- | -------- | 810| keysInfo | 密钥信息。 | 811| newKeysAvailable | 新密钥是否可用 | 812 813**返回:** 814 815当参数检查失败时返回DRM_ERR_INVALID_VAL,当函数调用成功时返回DRM_ERR_OK。 816 817 818### MediaKeySystem 819 820``` 821typedef struct MediaKeySystem MediaKeySystem 822``` 823 824**描述** 825 826MediaKeySystem结构。 827 828**起始版本:** 11 829 830 831### MediaKeySystem_Callback 832 833``` 834typedef Drm_ErrCode(* MediaKeySystem_Callback) (DRM_EventType eventType, uint8_t *info, int32_t infoLen, char *extra) 835``` 836 837**描述** 838 839MediaKeySystem事件触发时将调用的回调,不返回MediaKeySystem实例,适用于单个MediaKeySystem场景。 840 841**起始版本:** 11 842 843**参数:** 844 845| 名称 | 描述 | 846| -------- | -------- | 847| eventType | 事件类型。 | 848| info | 事件信息。 | 849| infoLen | 事件信息长度。 | 850| extra | 增量信息。 | 851 852**返回:** 853 854函数结果代码[Drm_ErrCode](#drm_errcode-1): 855- DRM_ERR_OK:执行成功; 856- DRM_ERR_INVALID_VAL:输入参数无效。 857 858 859### OH_MediaKeySession_Callback 860 861``` 862typedef struct OH_MediaKeySession_CallbackOH_MediaKeySession_Callback 863``` 864 865**描述** 866 867OH_MediaKeySession_Callback结构体,用于监听密钥过期等事件,返回媒体密钥会话实例,适用多个媒体密钥会话解密场景。 868 869**起始版本:** 12 870 871 872### OH_MediaKeySession_EventCallback 873 874``` 875typedef Drm_ErrCode(* OH_MediaKeySession_EventCallback) (MediaKeySession *mediaKeySessoin, DRM_EventType eventType, uint8_t *info, int32_t infoLen, char *extra) 876``` 877 878**描述** 879 880MediaKeySystem事件触发时将调用的回调。 881 882**起始版本:** 12 883 884**参数:** 885 886| 名称 | 描述 | 887| -------- | -------- | 888| mediaKeySessoin | 会话实例。 | 889| eventType | 事件类型。 | 890| info | 事件信息。 | 891| infoLen | 事件信息长度。 | 892| extra | 增量信息。 | 893 894**返回:** 895 896Drm_ErrCode 错误码。 897 898 899### OH_MediaKeySession_KeyChangeCallback 900 901``` 902typedef Drm_ErrCode(* OH_MediaKeySession_KeyChangeCallback) (MediaKeySession *mediaKeySessoin, DRM_KeysInfo *keysInfo, bool newKeysAvailable) 903``` 904 905**描述** 906 907密钥变换时将调用的回调。 908 909**起始版本:** 12 910 911**参数:** 912 913| 名称 | 描述 | 914| -------- | -------- | 915| mediaKeySessoin | 媒体密钥会话实例。 | 916| keysInfo | 密钥信息。 | 917| newKeysAvailable | 新密钥是否可用,true表示可用,false表示不可用。 | 918 919**返回:** 920 921当参数检查失败时返回DRM_ERR_INVALID_VAL,当函数调用成功时返回DRM_ERR_OK。 922 923 924### OH_MediaKeySystem_Callback 925 926``` 927typedef Drm_ErrCode(* OH_MediaKeySystem_Callback) (MediaKeySystem *mediaKeySystem, DRM_EventType eventType, uint8_t *info, int32_t infoLen, char *extra) 928``` 929 930**描述** 931 932MediaKeySystem事件触发时将调用的回调,返回MediaKeySystem实例,适用于多个MediaKeySystem场景。 933 934**起始版本:** 12 935 936**参数:** 937 938| 名称 | 描述 | 939| -------- | -------- | 940| mediaKeySystem | MediaKeySystem实例。 | 941| eventType | 事件类型。 | 942| info | 事件信息。 | 943| infoLen | 事件信息长度。 | 944| extra | 增量信息。 | 945 946**返回:** 947 948函数结果代码[Drm_ErrCode](#drm_errcode-1): 949- DRM_ERR_OK:执行成功; 950- DRM_ERR_INVALID_VAL:输入参数无效。 951 952 953## 枚举类型说明 954 955 956### DRM_CertificateStatus 957 958``` 959enum DRM_CertificateStatus 960``` 961 962**描述** 963 964设备DRM证书状态类型。 965 966**系统能力:** SystemCapability.Multimedia.Drm.Core 967 968**起始版本:** 11 969 970| 枚举值 | 描述 | 971| -------- | -------- | 972| CERT_STATUS_PROVISIONED | 设备已安装设备DRM证书 | 973| CERT_STATUS_NOT_PROVISIONED | 设备未安装设备DRM证书或证书状态异常 | 974| CERT_STATUS_EXPIRED | 设备DRM证书过期 | 975| CERT_STATUS_INVALID | 设备DRM证书无效 | 976| CERT_STATUS_UNAVAILABLE | 设备DRM证书不可用 | 977 978 979### DRM_ContentProtectionLevel 980 981``` 982enum DRM_ContentProtectionLevel 983``` 984 985**描述** 986 987内容保护级别类型。 988 989**系统能力:** SystemCapability.Multimedia.Drm.Core 990 991**起始版本:** 11 992 993| 枚举值 | 描述 | 994| -------- | -------- | 995| CONTENT_PROTECTION_LEVEL_UNKNOWN | 未知/默认安全级别 | 996| CONTENT_PROTECTION_LEVEL_SW_CRYPTO | 软件安全级别 | 997| CONTENT_PROTECTION_LEVEL_HW_CRYPTO | 硬件安全级别 | 998| CONTENT_PROTECTION_LEVEL_ENHANCED_HW_CRYPTO | 硬件增强级别 | 999| CONTENT_PROTECTION_LEVEL_MAX | 最大安全级别 | 1000 1001 1002### Drm_ErrCode 1003 1004``` 1005enum Drm_ErrCode 1006``` 1007 1008**描述** 1009 1010DRM错误码。 1011 1012**系统能力:** SystemCapability.Multimedia.Drm.Core 1013 1014**起始版本:** 11 1015 1016| 枚举值 | 描述 | 1017| -------- | -------- | 1018| DRM_ERR_OK | 操作成功完成。 | 1019| DRM_CAPI_ERR_BASE | 基础错误。 | 1020| DRM_ERR_NO_MEMORY | 内存不足。 | 1021| DRM_ERR_OPERATION_NOT_PERMITTED | 不允许的操作。 | 1022| DRM_ERR_INVALID_VAL | 无效参数。 | 1023| DRM_ERR_IO | IO 错误。 | 1024| DRM_ERR_TIMEOUT | 网络超时。 | 1025| DRM_ERR_UNKNOWN | 未知错误。 | 1026| DRM_ERR_SERVICE_DIED | drm服务死亡。 | 1027| DRM_ERR_INVALID_STATE | 无效的操作状态。 | 1028| DRM_ERR_UNSUPPORTED | 不支持的操作。 | 1029| DRM_ERR_MAX_SYSTEM_NUM_REACHED | MediaKeySystem最大实例数。 | 1030| DRM_ERR_MAX_SESSION_NUM_REACHED | MediaKeySession最大实例数。 | 1031| DRM_ERR_EXTEND_START | 扩展错误。 | 1032 1033 1034### DRM_EventType 1035 1036``` 1037enum DRM_EventType 1038``` 1039 1040**描述** 1041 1042监听事件类型。 1043 1044**起始版本:** 11 1045 1046| 枚举值 | 描述 | 1047| -------- | -------- | 1048| EVENT_DRM_BASE | DRM基础事件 | 1049| EVENT_PROVISION_REQUIRED | 设备DRM证书请求事件 | 1050| EVENT_KEY_REQUIRED | 密钥请求事件 | 1051| EVENT_KEY_EXPIRED | 密钥过期事件 | 1052| EVENT_VENDOR_DEFINED | DRM解决方案自定义事件 | 1053| EVENT_EXPIRATION_UPDATE | 密钥过期更新事件 | 1054 1055 1056### DRM_MediaKeyRequestType 1057 1058``` 1059enum DRM_MediaKeyRequestType 1060``` 1061 1062**描述** 1063 1064媒体密钥请求类型。 1065 1066**系统能力:** SystemCapability.Multimedia.Drm.Core 1067 1068**起始版本:** 11 1069 1070| 枚举值 | 描述 | 1071| -------- | -------- | 1072| MEDIA_KEY_REQUEST_TYPE_UNKNOWN | 未知请求类型 | 1073| MEDIA_KEY_REQUEST_TYPE_INITIAL | 初始化请求 | 1074| MEDIA_KEY_REQUEST_TYPE_RENEWAL | 续订请求 | 1075| MEDIA_KEY_REQUEST_TYPE_RELEASE | 释放请求 | 1076| MEDIA_KEY_REQUEST_TYPE_NONE | 无请求 | 1077| MEDIA_KEY_REQUEST_TYPE_UPDATE | 更新请求 | 1078 1079 1080### DRM_MediaKeyType 1081 1082``` 1083enum DRM_MediaKeyType 1084``` 1085 1086**描述** 1087 1088媒体密钥类型。 1089 1090**系统能力:** SystemCapability.Multimedia.Drm.Core 1091 1092**起始版本:** 11 1093 1094| 枚举值 | 描述 | 1095| -------- | -------- | 1096| MEDIA_KEY_TYPE_OFFLINE | 离线 | 1097| MEDIA_KEY_TYPE_ONLINE | 在线 | 1098 1099 1100### DRM_OfflineMediaKeyStatus 1101 1102``` 1103enum DRM_OfflineMediaKeyStatus 1104``` 1105 1106**描述** 1107 1108离线媒体密钥状态。 1109 1110**系统能力:** SystemCapability.Multimedia.Drm.Core 1111 1112**起始版本:** 11 1113 1114| 枚举值 | 描述 | 1115| -------- | -------- | 1116| OFFLINE_MEDIA_KEY_STATUS_UNKNOWN | 未知状态 | 1117| OFFLINE_MEDIA_KEY_STATUS_USABLE | 可用状态 | 1118| OFFLINE_MEDIA_KEY_STATUS_INACTIVE | 失活状态 | 1119 1120 1121## 函数说明 1122 1123 1124### OH_MediaKeySession_CheckMediaKeyStatus() 1125 1126``` 1127Drm_ErrCode OH_MediaKeySession_CheckMediaKeyStatus (MediaKeySession *mediaKeySessoin, DRM_MediaKeyStatus *mediaKeyStatus) 1128``` 1129 1130**描述** 1131 1132检查媒体密钥状态。 1133 1134**起始版本:** 11 1135 1136**参数:** 1137 1138| 名称 | 描述 | 1139| -------- | -------- | 1140| mediaKeySession | MediaKeySession实例。 | 1141| mediaKeyStatus | 媒体密钥状态。 | 1142 1143**返回:** 1144 1145函数结果代码[Drm_ErrCode](#drm_errcode-1): 1146- DRM_ERR_OK:执行成功; 1147- DRM_ERR_NO_MEMORY:内存不足,内存分配失败; 1148- DRM_ERR_INVALID_VAL:输入参数mediaKeySession为空指针或无效,或输入参数mediaKeyStatus为空指针; 1149- DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 1150 1151 1152### OH_MediaKeySession_ClearMediaKeys() 1153 1154``` 1155Drm_ErrCode OH_MediaKeySession_ClearMediaKeys (MediaKeySession *mediaKeySessoin) 1156``` 1157 1158**描述** 1159 1160清除当前会话的媒体密钥。 1161 1162**起始版本:** 11 1163 1164**参数:** 1165 1166| 名称 | 描述 | 1167| -------- | -------- | 1168| mediaKeySession | MediaKeySession实例。 | 1169 1170**返回:** 1171 1172函数结果代码[Drm_ErrCode](#drm_errcode-1): 1173- DRM_ERR_OK:执行成功; 1174- DRM_ERR_INVALID_VAL:输入参数mediaKeySession为空指针或无效; 1175- DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 1176 1177 1178### OH_MediaKeySession_Destroy() 1179 1180``` 1181Drm_ErrCode OH_MediaKeySession_Destroy (MediaKeySession *mediaKeySessoin) 1182``` 1183 1184**描述** 1185 1186销毁MediaKeySession实例。 1187 1188**起始版本:** 11 1189 1190**参数:** 1191 1192| 名称 | 描述 | 1193| -------- | -------- | 1194| mediaKeySession | MediaKeySession实例。 | 1195 1196**返回:** 1197 1198函数结果代码[Drm_ErrCode](#drm_errcode-1): 1199- DRM_ERR_OK:执行成功; 1200- DRM_ERR_INVALID_VAL:输入参数mediaKeySession为空指针或无效; 1201- DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 1202 1203 1204### OH_MediaKeySession_GenerateMediaKeyRequest() 1205 1206``` 1207Drm_ErrCode OH_MediaKeySession_GenerateMediaKeyRequest (MediaKeySession *mediaKeySession, DRM_MediaKeyRequestInfo *info, DRM_MediaKeyRequest *mediaKeyRequest) 1208``` 1209 1210**描述** 1211 1212生成媒体密钥请求。 1213 1214**起始版本:** 11 1215 1216**参数:** 1217 1218| 名称 | 描述 | 1219| -------- | -------- | 1220| mediaKeySession | MediaKeySession实例。 | 1221| info | 媒体密钥请求信息。 | 1222| mediaKeyRequest | 媒体密钥请求。 | 1223 1224**返回:** 1225 1226函数结果代码[Drm_ErrCode](#drm_errcode-1): 1227- DRM_ERR_OK:执行成功; 1228- DRM_ERR_NO_MEMORY:内存不足,内存分配失败; 1229- DRM_ERR_INVALID_VAL:输入参数mediaKeySession为空指针或无效,或输入参数info为空指针,或输入参数mediaKeyRequest为空指针; 1230- DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 1231 1232 1233### OH_MediaKeySession_GenerateOfflineReleaseRequest() 1234 1235``` 1236Drm_ErrCode OH_MediaKeySession_GenerateOfflineReleaseRequest (MediaKeySession *mediaKeySessoin, uint8_t *offlineMediaKeyId, int32_t offlineMediaKeyIdLen, uint8_t *releaseRequest, int32_t *releaseRequestLen) 1237``` 1238 1239**描述** 1240 1241生成离线媒体密钥释放请求。 1242 1243**起始版本:** 11 1244 1245**参数:** 1246 1247| 名称 | 描述 | 1248| -------- | -------- | 1249| mediaKeySession | MediaKeySession实例。 | 1250| offlineMediaKeyId | 离线媒体密钥标识。 | 1251| offlineMediaKeyIdLen| 离线媒体密钥标识长度。 | 1252| releaseRequest| 离线媒体密钥释放请求。 | 1253| releaseRequestLen| 离线媒体密钥释放请求长度。 | 1254 1255**返回:** 1256 1257函数结果代码[Drm_ErrCode](#drm_errcode-1): 1258- DRM_ERR_OK:执行成功; 1259- DRM_ERR_NO_MEMORY:内存不足,内存分配失败; 1260- DRM_ERR_INVALID_VAL:输入参数mediaKeySession为空指针或无效,或其它指针类型输入参数为空指针; 1261- DRM_ERR_UNKNOWN:发生内部错误或设备上的DRM解决方案不支持离线媒体密钥释放,请查看日志详细信息。 1262 1263 1264### OH_MediaKeySession_GetContentProtectionLevel() 1265 1266``` 1267Drm_ErrCode OH_MediaKeySession_GetContentProtectionLevel (MediaKeySession *mediaKeySessoin, DRM_ContentProtectionLevel *contentProtectionLevel) 1268``` 1269 1270**描述** 1271 1272获取会话的内容保护级别。 1273 1274**起始版本:** 11 1275 1276**参数:** 1277 1278| 名称 | 描述 | 1279| -------- | -------- | 1280| mediaKeySession | MediaKeySession例。 | 1281| contentProtectionLevel | 内容保护级别。 | 1282 1283**返回:** 1284 1285函数结果代码[Drm_ErrCode](#drm_errcode-1): 1286- DRM_ERR_OK:执行成功; 1287- DRM_ERR_INVALID_VAL:输入参数mediaKeySession为空指针或无效,或输入参数contentProtectionLevel为空指针; 1288- DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 1289 1290 1291### OH_MediaKeySession_ProcessMediaKeyResponse() 1292 1293``` 1294Drm_ErrCode OH_MediaKeySession_ProcessMediaKeyResponse (MediaKeySession *mediaKeySession, uint8_t *response, int32_t responseLen, uint8_t *offlineMediaKeyId, int32_t *offlineMediaKeyIdLen) 1295``` 1296 1297**描述** 1298 1299处理媒体密钥请求响应。 1300 1301**起始版本:** 11 1302 1303**参数:** 1304 1305| 名称 | 描述 | 1306| -------- | -------- | 1307| mediaKeySession | MediaKeySession实例。 | 1308| response | 媒体密钥请求响应。 | 1309| responseLen | 媒体密钥请求响应长度。 | 1310| offlineMediaKeyId | 离线媒体密钥标识。 | 1311| offlineMediaKeyIdLen | 离线媒体密钥标识的长度。 | 1312 1313**返回:** 1314 1315函数结果代码[Drm_ErrCode](#drm_errcode-1): 1316- DRM_ERR_OK:执行成功; 1317- DRM_ERR_NO_MEMORY:内存不足,内存分配失败; 1318- DRM_ERR_INVALID_VAL:输入参数mediaKeySession为空指针或无效,或其它指针类型输入参数为空指针; 1319- DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 1320 1321 1322### OH_MediaKeySession_ProcessOfflineReleaseResponse() 1323 1324``` 1325Drm_ErrCode OH_MediaKeySession_ProcessOfflineReleaseResponse (MediaKeySession *mediaKeySessoin, uint8_t *offlineMediaKeyId, int32_t offlineMediaKeyIdLen, uint8_t *releaseReponse, int32_t releaseReponseLen) 1326``` 1327 1328**描述** 1329 1330处理离线媒体密钥释放请求响应。 1331 1332**起始版本:** 11 1333 1334**参数:** 1335 1336| 名称 | 描述 | 1337| -------- | -------- | 1338| mediaKeySession | MediaKeySession实例。 | 1339| offlineMediaKeyId | 离线媒体密钥标识。 | 1340| offlineMediaKeyIdLen | 离线媒体密钥标识长度。 | 1341| releaseReponse | 媒体密钥释放请求响应。 | 1342| releaseReponseLen | 媒体密钥释放请求响应长度。 | 1343 1344**返回:** 1345 1346函数结果代码[Drm_ErrCode](#drm_errcode-1): 1347- DRM_ERR_OK:执行成功; 1348- DRM_ERR_INVALID_VAL:输入参数mediaKeySession为空指针或无效,或其它指针类型输入参数为空指针; 1349- DRM_ERR_UNKNOWN:发生内部错误或设备上的DRM解决方案不支持离线媒体密钥释放,请查看日志详细信息。 1350 1351 1352### OH_MediaKeySession_RequireSecureDecoderModule() 1353 1354``` 1355Drm_ErrCode OH_MediaKeySession_RequireSecureDecoderModule (MediaKeySession *mediaKeySessoin, const char *mimeType, bool *status) 1356``` 1357 1358**描述** 1359 1360是否需要安全解码。 1361 1362**起始版本:** 11 1363 1364**参数:** 1365 1366| 名称 | 描述 | 1367| -------- | -------- | 1368| mediaKeySession | MediaKeySession实例。 | 1369| mimeType | 媒体类型,支持的媒体类型取决于DRM解决方案,如:video/avc、video/hev。 | 1370| status | 安全解码模块状态。 | 1371 1372**返回:** 1373 1374函数结果代码[Drm_ErrCode](#drm_errcode-1): 1375- DRM_ERR_OK:执行成功; 1376- DRM_ERR_INVALID_VAL:输入参数mediaKeySession为空指针或无效,或其它指针类型输入参数为空指针; 1377- DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 1378 1379 1380### OH_MediaKeySession_RestoreOfflineMediaKeys() 1381 1382``` 1383Drm_ErrCode OH_MediaKeySession_RestoreOfflineMediaKeys (MediaKeySession *mediaKeySessoin, uint8_t *offlineMediaKeyId, int32_t offlineMediaKeyIdLen) 1384``` 1385 1386**描述** 1387 1388恢复线媒体密钥到当前会话。 1389 1390**起始版本:** 11 1391 1392**参数:** 1393 1394| 名称 | 描述 | 1395| -------- | -------- | 1396| mediaKeySession | MediaKeySession实例。 | 1397| offlineMediaKeyId | 离线媒体密钥标识。 | 1398| offlineMediaKeyIdLen | 离线媒体密钥标识长度。 | 1399 1400**返回:** 1401 1402函数结果代码[Drm_ErrCode](#drm_errcode-1): 1403- DRM_ERR_OK:执行成功; 1404- DRM_ERR_INVALID_VAL:输入参数mediaKeySession为空指针或无效,或其它指针类型输入参数为空指针; 1405- DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 1406 1407 1408### OH_MediaKeySession_SetCallback() 1409 1410``` 1411Drm_ErrCode OH_MediaKeySession_SetCallback (MediaKeySession *mediaKeySessoin, OH_MediaKeySession_Callback *callback) 1412``` 1413 1414**描述** 1415 1416设置MediaKeySession事件回调。 1417 1418**起始版本:** 12 1419 1420**参数:** 1421 1422| 名称 | 描述 | 1423| -------- | -------- | 1424| mediaKeySession | MediaKeySession实例。 | 1425| callback | MediaKeySession的回调。 | 1426 1427**返回:** 1428 1429函数结果代码[Drm_ErrCode](#drm_errcode-1): 1430- DRM_ERR_OK:执行成功; 1431- DRM_ERR_INVALID_VAL:输入参数mediaKeySession为空指针或无效,或输入参数callback为空指针。 1432 1433 1434### OH_MediaKeySession_SetMediaKeySessionCallback() 1435 1436``` 1437Drm_ErrCode OH_MediaKeySession_SetMediaKeySessionCallback (MediaKeySession *mediaKeySessoin, MediaKeySession_Callback *callback) 1438``` 1439 1440**描述** 1441 1442设置MediaKeySession会话事件回调。 1443 1444**起始版本:** 11 1445 1446**参数:** 1447 1448| 名称 | 描述 | 1449| -------- | -------- | 1450| mediaKeySession | MediaKeySession实例。 | 1451| callback | MediaKeySession的回调。 | 1452 1453**返回:** 1454 1455函数结果代码[Drm_ErrCode](#drm_errcode-1): 1456- DRM_ERR_OK:执行成功; 1457- DRM_ERR_INVALID_VAL:输入参数mediaKeySession为空指针或无效,或输入参数callback为空指针。 1458 1459 1460### OH_MediaKeySystem_ClearOfflineMediaKeys() 1461 1462``` 1463Drm_ErrCode OH_MediaKeySystem_ClearOfflineMediaKeys (MediaKeySystem *mediaKeySystem, uint8_t *offlineMediaKeyId, int32_t offlineMediaKeyIdLen) 1464``` 1465 1466**描述** 1467 1468按id清除离线媒体密钥。 1469 1470**起始版本:** 11 1471 1472**参数:** 1473 1474| 名称 | 描述 | 1475| -------- | -------- | 1476| mediaKeySystem | MediaKeySystem实例。 | 1477| offlineMediaKeyId | 离线媒体密钥标识。 | 1478| offlineMediaKeyIdLen | 离线媒体密钥标识长度。 | 1479 1480**返回:** 1481 1482函数结果代码[Drm_ErrCode](#drm_errcode-1): 1483- DRM_ERR_OK:执行成功; 1484- DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,或输入参数offlineMediaKeyId为空指针; 1485- DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 1486 1487 1488### OH_MediaKeySystem_Create() 1489 1490``` 1491Drm_ErrCode OH_MediaKeySystem_Create (const char *name, MediaKeySystem **mediaKeySystem) 1492``` 1493 1494**描述** 1495 1496创建MediaKeySystem实例。 1497 1498**起始版本:** 11 1499 1500**参数:** 1501 1502| 名称 | 描述 | 1503| -------- | -------- | 1504| name | DRM解决方案名称。 | 1505| mediaKeySystem | MediaKeySystem实例。 | 1506 1507**返回:** 1508 1509函数结果代码[Drm_ErrCode](#drm_errcode-1): 1510- DRM_ERR_OK:执行成功; 1511- DRM_ERR_INVALID_VAL:输入参数name为空指针或长度为0、输入参数mediaKeySystem为空指针; 1512- DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息; 1513- DRM_ERR_SERVICE_DIED:服务死亡; 1514- DRM_ERR_MAX_SYSTEM_NUM_REACHED:已创建的MediaKeySystem数量达到最大限制(64个)。 1515 1516 1517### OH_MediaKeySystem_CreateMediaKeySession() 1518 1519``` 1520Drm_ErrCode OH_MediaKeySystem_CreateMediaKeySession (MediaKeySystem *mediaKeySystem, DRM_ContentProtectionLevel *level, MediaKeySession **mediaKeySession) 1521``` 1522 1523**描述** 1524 1525创建MediaKeySession会话实例。 1526 1527**起始版本:** 11 1528 1529**参数:** 1530 1531| 名称 | 描述 | 1532| -------- | -------- | 1533| mediaKeySystem | MediaKeySystem实例。 | 1534| level | 内容保护级别。 | 1535| mediaKeySession | MediaKeySession实例。 | 1536 1537**返回:** 1538 1539函数结果代码[Drm_ErrCode](#drm_errcode-1): 1540- DRM_ERR_OK:执行成功; 1541- DRM_ERR_NO_MEMORY:内存不足,内存分配失败; 1542- DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,或输入参数level超出合理范围,或mediaKeySession为空指针; 1543- DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息; 1544- DRM_ERR_SERVICE_DIED:服务死亡; 1545- DRM_ERR_MAX_SESSION_NUM_REACHED:当前MediaKeySystem已创建的MediaKeySession数量达到最大限制(64个)。 1546 1547 1548### OH_MediaKeySystem_Destroy() 1549 1550``` 1551Drm_ErrCode OH_MediaKeySystem_Destroy (MediaKeySystem *mediaKeySystem) 1552``` 1553 1554**描述** 1555 1556销毁MediaKeySystem实例。 1557 1558**起始版本:** 11 1559 1560**参数:** 1561 1562| 名称 | 描述 | 1563| -------- | -------- | 1564| mediaKeySystem | MediaKeySystem实例。 | 1565 1566**返回:** 1567 1568函数结果代码[Drm_ErrCode](#drm_errcode-1): 1569- DRM_ERR_OK:执行成功; 1570- DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效; 1571- DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 1572 1573 1574### OH_MediaKeySystem_GenerateKeySystemRequest() 1575 1576``` 1577Drm_ErrCode OH_MediaKeySystem_GenerateKeySystemRequest (MediaKeySystem *mediaKeySystem, uint8_t *request, int32_t *requestLen, char *defaultUrl, int32_t defaultUrlLen) 1578``` 1579 1580**描述** 1581 1582生成设备DRM证书请求。 1583 1584**起始版本:** 11 1585 1586**参数:** 1587 1588| 名称 | 描述 | 1589| -------- | -------- | 1590| mediaKeySystem | MediaKeySystem实例。 | 1591| request | 设备DRM证书请求。 | 1592| requestLen | 设备DRM证书请求的长度。 | 1593| defaultUrl | 设备DRM证书服务的URL。 | 1594| defaultUrlLen | 设备DRM证书服务的URL长度。 | 1595 1596**返回:** 1597 1598函数结果代码[Drm_ErrCode](#drm_errcode-1): 1599- DRM_ERR_OK:执行成功; 1600- DRM_ERR_NO_MEMORY:内存不足,内存分配失败; 1601- DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,或其它指针类型输入参数为空指针; 1602- DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 1603 1604 1605### OH_MediaKeySystem_GetCertificateStatus() 1606 1607``` 1608Drm_ErrCode OH_MediaKeySystem_GetCertificateStatus (MediaKeySystem *mediaKeySystem, DRM_CertificateStatus *certStatus) 1609``` 1610 1611**描述** 1612 1613获取设备DRM证书状态。 1614 1615**起始版本:** 11 1616 1617**参数:** 1618 1619| 名称 | 描述 | 1620| -------- | -------- | 1621| mediaKeySystem | MediaKeySystem实例。 | 1622| certStatus | 设备DRM证书状态值。 | 1623 1624**返回:** 1625 1626函数结果代码[Drm_ErrCode](#drm_errcode-1): 1627- DRM_ERR_OK:执行成功; 1628- DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,或输入参数certStatus为空指针; 1629- DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 1630 1631 1632### OH_MediaKeySystem_GetConfigurationByteArray() 1633 1634``` 1635Drm_ErrCode OH_MediaKeySystem_GetConfigurationByteArray (MediaKeySystem *mediaKeySystem, const char *configName, uint8_t *value, int32_t *valueLen) 1636``` 1637 1638**描述** 1639 1640获取字符数组类型配置属性值。 1641 1642**起始版本:** 11 1643 1644**参数:** 1645 1646| 名称 | 描述 | 1647| -------- | -------- | 1648| mediaKeySystem | MediaKeySystem实例。 | 1649| configName | 字符数组类型配置属性名称,不能为空,具体支持的属性名由设备上DRM解决方案决定。 | 1650| value | 字符数组类型配置属性。 | 1651| valueLen | 字符数组类型配置属性长度。 | 1652 1653**返回:** 1654 1655函数结果代码[Drm_ErrCode](#drm_errcode-1): 1656- DRM_ERR_OK:执行成功; 1657- DRM_ERR_NO_MEMORY:内存不足,内存分配失败; 1658- DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,输入参数configName为空指针,输入参数value为空指针,或valueLen为空指针; 1659- DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 1660 1661 1662### OH_MediaKeySystem_GetConfigurationString() 1663 1664``` 1665Drm_ErrCode OH_MediaKeySystem_GetConfigurationString (MediaKeySystem *mediaKeySystem, const char *configName, char *value, int32_t valueLen) 1666``` 1667 1668**描述** 1669 1670获取字符串类型配置属性值。 1671 1672**起始版本:** 11 1673 1674**参数:** 1675 1676| 名称 | 描述 | 1677| -------- | -------- | 1678| mediaKeySystem | MediaKeySystem实例。 | 1679| configName | 字符串类型配置名。 | 1680| value | 字符串类型配置值。 | 1681| valueLen | 字符串类型配置值长度。 | 1682 1683**返回:** 1684 1685函数结果代码[Drm_ErrCode](#drm_errcode-1): 1686- DRM_ERR_OK:执行成功; 1687- DRM_ERR_NO_MEMORY:内存不足,内存分配失败; 1688- DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,输入参数configName为空指针,或输入参数value为空指针; 1689- DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 1690 1691 1692### OH_MediaKeySystem_GetMaxContentProtectionLevel() 1693 1694``` 1695Drm_ErrCode OH_MediaKeySystem_GetMaxContentProtectionLevel (MediaKeySystem *mediaKeySystem, DRM_ContentProtectionLevel *contentProtectionLevel) 1696``` 1697 1698**描述** 1699 1700获取设备支持的最大内容保护级别。 1701 1702**起始版本:** 11 1703 1704**参数:** 1705 1706| 名称 | 描述 | 1707| -------- | -------- | 1708| mediaKeySystem | MediaKeySystem实例。 | 1709| contentProtectionLevel | 内容保护级别。 | 1710 1711**返回:** 1712 1713函数结果代码[Drm_ErrCode](#drm_errcode-1): 1714- DRM_ERR_OK:执行成功; 1715- DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,或输入参数contentProtectionLevel为空指针; 1716- DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 1717 1718 1719### OH_MediaKeySystem_GetMediaKeySystems() 1720 1721``` 1722Drm_ErrCode OH_MediaKeySystem_GetMediaKeySystems (DRM_MediaKeySystemDescription *infos, uint32_t *count) 1723``` 1724 1725**描述** 1726 1727获取设备支持的DRM解决方案的名称和唯一标识的列表。 1728 1729**起始版本:** 12 1730 1731**参数:** 1732 1733| 名称 | 描述 | 1734| -------- | -------- | 1735| infos | DRM解决方案名称和唯一标识的列表。 | 1736| count | DRM解决方案名称和唯一标识的列表长度。 | 1737 1738**返回:** 1739 1740函数结果代码[Drm_ErrCode](#drm_errcode-1): 1741- DRM_ERR_OK:执行成功; 1742- DRM_ERR_INVALID_VAL:输入参数infos为空指针或输入参数count为空指针、输入参数infos长度不足; 1743- DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 1744 1745 1746### OH_MediaKeySystem_GetOfflineMediaKeyIds() 1747 1748``` 1749Drm_ErrCode OH_MediaKeySystem_GetOfflineMediaKeyIds (MediaKeySystem *mediaKeySystem, DRM_OfflineMediakeyIdArray *offlineMediaKeyIds) 1750``` 1751 1752**描述** 1753 1754获取离线媒体密钥标识列表,媒体密钥标识用于对离线媒体密钥的管理。 1755 1756**起始版本:** 11 1757 1758**参数:** 1759 1760| 名称 | 描述 | 1761| -------- | -------- | 1762| mediaKeySystem | MediaKeySystem实例。 | 1763| offlineMediaKeyIds | 离线媒体密钥的媒体密钥标识列表。 | 1764 1765**返回:** 1766 1767函数结果代码[Drm_ErrCode](#drm_errcode-1): 1768- DRM_ERR_OK:执行成功; 1769- DRM_ERR_NO_MEMORY:内存不足,内存分配失败; 1770- DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,或输入参数offlineMediaKeyIds为空指针; 1771- DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 1772 1773 1774### OH_MediaKeySystem_GetOfflineMediaKeyStatus() 1775 1776``` 1777Drm_ErrCode OH_MediaKeySystem_GetOfflineMediaKeyStatus (MediaKeySystem *mediaKeySystem, uint8_t *offlineMediaKeyId, int32_t offlineMediaKeyIdLen, DRM_OfflineMediaKeyStatus *status) 1778``` 1779 1780**描述** 1781 1782获取离线媒体密钥状态。 1783 1784**起始版本:** 11 1785 1786**参数:** 1787 1788| 名称 | 描述 | 1789| -------- | -------- | 1790| mediaKeySystem | MediaKeySystem实例。 | 1791| offlineMediaKeyId | 离线媒体密钥标识。 | 1792| offlineMediaKeyIdLen | 离线媒体密钥标识长度。 | 1793| status | 媒体密钥状态。 | 1794 1795**返回:** 1796 1797函数结果代码[Drm_ErrCode](#drm_errcode-1): 1798- DRM_ERR_OK:执行成功; 1799- DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,或其它指针类型输入参数为空指针; 1800- DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 1801 1802 1803### OH_MediaKeySystem_GetStatistics() 1804 1805``` 1806Drm_ErrCode OH_MediaKeySystem_GetStatistics (MediaKeySystem *mediaKeySystem, DRM_Statistics *statistics) 1807``` 1808 1809**描述** 1810 1811获取度量记录。 1812 1813**起始版本:** 11 1814 1815**参数:** 1816 1817| 名称 | 描述 | 1818| -------- | -------- | 1819| mediaKeySystem | MediaKeySystem实例。 | 1820| statistics | 度量记录。 | 1821 1822**返回:** 1823 1824函数结果代码[Drm_ErrCode](#drm_errcode-1): 1825- DRM_ERR_OK:执行成功; 1826- DRM_ERR_NO_MEMORY:内存不足,内存分配失败; 1827- DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,或输入参数statistics为空指针; 1828- DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 1829 1830 1831### OH_MediaKeySystem_IsSupported() 1832 1833``` 1834bool OH_MediaKeySystem_IsSupported (const char *name) 1835``` 1836 1837**描述** 1838 1839查询设备是否支持对应的DRM解决方案。 1840 1841**起始版本:** 11 1842 1843**参数:** 1844 1845| 名称 | 描述 | 1846| -------- | -------- | 1847| name | DRM解决方案名称。 | 1848 1849**返回:** 1850 1851是否支持。 1852 1853 1854### OH_MediaKeySystem_IsSupported2() 1855 1856``` 1857bool OH_MediaKeySystem_IsSupported2 (const char *name, const char *mimeType) 1858``` 1859 1860**描述** 1861 1862查询设备是否支持对应的DRM解决方案名称及媒体类型。 1863 1864**起始版本:** 11 1865 1866**参数:** 1867 1868| 名称 | 描述 | 1869| -------- | -------- | 1870| name | DRM解决方案名称。 | 1871| mimeType | 媒体类型,支持的媒体类型取决于DRM解决方案,如:video/avc、video/hev。 | 1872 1873**返回:** 1874 1875是否支持。 1876 1877 1878### OH_MediaKeySystem_IsSupported3() 1879 1880``` 1881bool OH_MediaKeySystem_IsSupported3 (const char *name, const char *mimeType, DRM_ContentProtectionLevel contentProtectionLevel) 1882``` 1883 1884**描述** 1885 1886查询设备是否支持对应的DRM解决方案、媒体类型、内容保护级别。 1887 1888**起始版本:** 11 1889 1890**参数:** 1891 1892| 名称 | 描述 | 1893| -------- | -------- | 1894| name | DRM解决方案名称。 | 1895| mimeType | 媒体类型,支持的媒体类型取决于DRM解决方案,如:video/avc、video/hev。 | 1896| contentProtectionLevel | 内容保护级别。 | 1897 1898**返回:** 1899 1900是否支持。 1901 1902 1903### OH_MediaKeySystem_ProcessKeySystemResponse() 1904 1905``` 1906Drm_ErrCode OH_MediaKeySystem_ProcessKeySystemResponse (MediaKeySystem *mediaKeySystem, uint8_t *response, int32_t responseLen) 1907``` 1908 1909**描述** 1910 1911处理设备DRM证书请求响应。 1912 1913**起始版本:** 11 1914 1915**参数:** 1916 1917| 名称 | 描述 | 1918| -------- | -------- | 1919| mediaKeySystem | MediaKeySystem实例。 | 1920| response | 设备DRM证书请求响应。 | 1921| responseLen | 设备DRM证书请求响应长度. | 1922 1923**返回:** 1924 1925函数结果代码[Drm_ErrCode](#drm_errcode-1): 1926- DRM_ERR_OK:执行成功; 1927- DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,或输入参数response为空指针; 1928- DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 1929 1930 1931### OH_MediaKeySystem_SetCallback() 1932 1933``` 1934Drm_ErrCode OH_MediaKeySystem_SetCallback (MediaKeySystem *mediaKeySystem, OH_MediaKeySystem_Callback callback) 1935``` 1936 1937**描述** 1938 1939设置MediaKeySystem事件回调。 1940 1941**起始版本:** 12 1942 1943**参数:** 1944 1945| 名称 | 描述 | 1946| -------- | -------- | 1947| mediaKeySystem | MediaKeySystem实例。 | 1948| callback | 回调函数。 | 1949 1950**返回:** 1951 1952函数结果代码[Drm_ErrCode](#drm_errcode-1): 1953- DRM_ERR_OK:执行成功; 1954- DRM_ERR_INVALID_VAL:输入参数无效。 1955 1956 1957### OH_MediaKeySystem_SetConfigurationByteArray() 1958 1959``` 1960Drm_ErrCode OH_MediaKeySystem_SetConfigurationByteArray (MediaKeySystem *mediaKeySystem, const char *configName, uint8_t *value, int32_t valueLen) 1961``` 1962 1963**描述** 1964 1965设置字符数组类型的配置属性值。 1966 1967**起始版本:** 11 1968 1969**参数:** 1970 1971| 名称 | 描述 | 1972| -------- | -------- | 1973| mediaKeySystem | MediaKeySystem实例。 | 1974| configName | 字符数组类型配置属性名,不能为空,具体支持的属性名由设备上DRM解决方案决定。 | 1975| value | 字符数组类型配置属性值,不能为空,具体支持的属性值由设备上DRM解决方案决定。 | 1976| valueLen | 字符数组类型配置属性值长度。 | 1977 1978**返回:** 1979 1980函数结果代码[Drm_ErrCode](#drm_errcode-1): 1981- DRM_ERR_OK:执行成功; 1982- DRM_ERR_NO_MEMORY:内存不足,内存分配失败; 1983- DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,输入参数configName为空指针,或输入参数value为空指针; 1984- DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 1985 1986### OH_MediaKeySystem_SetConfigurationString() 1987 1988``` 1989Drm_ErrCode OH_MediaKeySystem_SetConfigurationString (MediaKeySystem *mediaKeySystem, const char *configName, const char *value) 1990``` 1991 1992**描述** 1993 1994设置字符串类型的配置属性。 1995 1996**起始版本:** 11 1997 1998**参数:** 1999 2000| 名称 | 描述 | 2001| -------- | -------- | 2002| mediaKeySystem | MediaKeySystem实例。 | 2003| configName | 字符串类型配置属性名,不能为空,具体支持的属性名由设备上DRM解决方案决定。 | 2004| value | 字符串类型配置属性值,不能为空,具体支持的属性值由设备上DRM解决方案决定。 | 2005 2006**返回:** 2007 2008函数结果代码[Drm_ErrCode](#drm_errcode-1): 2009- DRM_ERR_OK:执行成功; 2010- DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效,输入参数configName为空指针,或输入参数value为空指针。 2011 2012 2013### OH_MediaKeySystem_SetMediaKeySystemCallback() 2014 2015``` 2016Drm_ErrCode OH_MediaKeySystem_SetMediaKeySystemCallback (MediaKeySystem *mediaKeySystem, MediaKeySystem_Callback callback) 2017``` 2018 2019**描述** 2020 2021设置MediaKeySystem事件回调。 2022 2023**起始版本:** 11 2024 2025**参数:** 2026 2027| 名称 | 描述 | 2028| -------- | -------- | 2029| mediaKeySystem | MediaKeySystem实例。 | 2030| callback | 回调函数。 | 2031 2032**返回:** 2033 2034函数结果代码[Drm_ErrCode](#drm_errcode-1): 2035- DRM_ERR_OK:执行成功; 2036- DRM_ERR_INVALID_VAL:输入参数mediaKeySystem为空指针或无效。 2037 2038 2039## 变量说明 2040 2041 2042### data [1/2] 2043 2044``` 2045uint8_t DRM_MediaKeyRequest::data[MAX_MEDIA_KEY_REQUEST_DATA_LEN] 2046``` 2047 2048**描述** 2049 2050发送给DRM服务的媒体密钥请求数据。 2051 2052 2053### data [2/2] 2054 2055``` 2056uint8_t DRM_PsshInfo::data[MAX_PSSH_DATA_LEN] 2057``` 2058 2059**描述** 2060 2061PSSH(Protected System Specific Header)信息。 2062 2063 2064### dataLen [1/2] 2065 2066``` 2067int32_t DRM_MediaKeyRequest::dataLen 2068``` 2069 2070**描述** 2071 2072媒体密钥请求数据长度。 2073 2074 2075### dataLen [2/2] 2076 2077``` 2078int32_t DRM_PsshInfo::dataLen 2079``` 2080 2081**描述** 2082 2083PSSH信息长度。 2084 2085 2086### defaultUrl 2087 2088``` 2089char DRM_MediaKeyRequest::defaultUrl[MAX_DEFAULT_URL_LEN] 2090``` 2091 2092**描述** 2093 2094媒体密钥服务URL。 2095 2096 2097### eventCallback [1/2] 2098 2099``` 2100MediaKeySession_EventCallback MediaKeySession_Callback::eventCallback 2101``` 2102 2103**描述** 2104 2105MediaKeySession事件回调,如密钥过期等。 2106 2107 2108### eventCallback [2/2] 2109 2110``` 2111OH_MediaKeySession_EventCallback OH_MediaKeySession_Callback::eventCallback 2112``` 2113 2114**描述** 2115 2116MediaKeySession事件回调,如密钥过期等。 2117 2118### ids 2119 2120``` 2121uint8_t DRM_OfflineMediakeyIdArray::ids[MAX_OFFLINE_MEDIA_KEY_ID_COUNT][MAX_OFFLINE_MEDIA_KEY_ID_LEN] 2122``` 2123 2124**描述** 2125 2126离线媒体密钥标识集合 2127 2128 2129### idsCount 2130 2131``` 2132uint32_t DRM_OfflineMediakeyIdArray::idsCount 2133``` 2134 2135**描述** 2136 2137离线媒体密钥标识数量 2138 2139 2140### idsLen 2141 2142``` 2143int32_t DRM_OfflineMediakeyIdArray::idsLen[MAX_OFFLINE_MEDIA_KEY_ID_COUNT] 2144``` 2145 2146**描述** 2147 2148离线媒体密钥标识长度集合 2149 2150 2151### initData 2152 2153``` 2154uint8_t DRM_MediaKeyRequestInfo::initData[MAX_INIT_DATA_LEN] 2155``` 2156 2157**描述** 2158 2159媒体密钥请求信息中初始化数据。 2160 2161 2162### initDataLen 2163 2164``` 2165int32_t DRM_MediaKeyRequestInfo::initDataLen 2166``` 2167 2168**描述** 2169 2170媒体密钥请求信息中初始化数据的长度。 2171 2172 2173### keyChangeCallback [1/2] 2174 2175``` 2176MediaKeySession_KeyChangeCallback MediaKeySession_Callback::keyChangeCallback 2177``` 2178 2179**描述** 2180 2181密钥变换回调。 2182 2183 2184### keyChangeCallback [2/2] 2185 2186``` 2187OH_MediaKeySession_KeyChangeCallback OH_MediaKeySession_Callback::keyChangeCallback 2188``` 2189 2190**描述** 2191 2192密钥变换回调。 2193 2194### keyId 2195 2196``` 2197uint8_t DRM_KeysInfo::keyId[MAX_KEY_INFO_COUNT][MAX_KEY_ID_LEN] 2198``` 2199 2200**描述** 2201 2202媒体密钥标识数组。 2203 2204 2205### keysInfoCount 2206 2207``` 2208uint32_t DRM_KeysInfo::keysInfoCount 2209``` 2210 2211**描述** 2212 2213密钥信息个数。 2214 2215 2216### mimeType 2217 2218``` 2219char DRM_MediaKeyRequestInfo::mimeType[MAX_MIMETYPE_LEN] 2220``` 2221 2222**描述** 2223 2224媒体密钥类型。 2225 2226 2227### name 2228 2229``` 2230char DRM_MediaKeySystemDescription::name[MAX_MEDIA_KEY_SYSTEM_NAME_LEN] 2231``` 2232**描述** 2233DRM解决方案名称。 2234 2235 2236### optionData 2237 2238``` 2239char DRM_MediaKeyRequestInfo::optionData[MAX_MEDIA_KEY_REQUEST_OPTION_COUNT][MAX_MEDIA_KEY_REQUEST_OPTION_DATA_LEN] 2240``` 2241 2242**描述** 2243 2244可选数据集合。 2245 2246 2247### optionName 2248 2249``` 2250char DRM_MediaKeyRequestInfo::optionName[MAX_MEDIA_KEY_REQUEST_OPTION_COUNT][MAX_MEDIA_KEY_REQUEST_OPTION_NAME_LEN] 2251``` 2252 2253**描述** 2254 2255可选数据名称集合。 2256 2257 2258### optionsCount 2259 2260``` 2261uint32_t DRM_MediaKeyRequestInfo::optionsCount 2262``` 2263 2264**描述** 2265 2266可选数据的数量。 2267 2268 2269### psshCount 2270 2271``` 2272uint32_t DRM_MediaKeySystemInfo::psshCount 2273``` 2274 2275**描述** 2276 2277DRM信息中PSSH(Protected System Specific Header)信息的数量。 2278 2279 2280### psshInfo 2281 2282``` 2283DRM_PsshInfo DRM_MediaKeySystemInfo::psshInfo[MAX_PSSH_INFO_COUNT] 2284``` 2285 2286**描述** 2287 2288DRM信息中PSSH(Protected System Specific Header)信息的数组. 2289 2290 2291### statisticsCount 2292 2293``` 2294uint32_t DRM_Statistics::statisticsCount 2295``` 2296 2297**描述** 2298 2299度量记录的数量。 2300 2301 2302### statisticsDescription 2303 2304``` 2305char DRM_Statistics::statisticsDescription[MAX_STATISTICS_COUNT][MAX_STATISTICS_BUFFER_LEN] 2306``` 2307 2308**描述** 2309 2310度量描述信息集合。 2311 2312 2313### statisticsName 2314 2315``` 2316char DRM_Statistics::statisticsName[MAX_STATISTICS_COUNT][MAX_STATISTICS_NAME_LEN] 2317``` 2318 2319**描述** 2320 2321度量记录名称集合。 2322 2323 2324### statusCount 2325 2326``` 2327uint32_t DRM_MediaKeyStatus::statusCount 2328``` 2329 2330**描述** 2331 2332媒体密钥状态数组长度。 2333 2334 2335### statusName 2336 2337``` 2338char DRM_MediaKeyStatus::statusName[MAX_MEDIA_KEY_STATUS_COUNT][MAX_MEDIA_KEY_STATUS_NAME_LEN] 2339``` 2340 2341**描述** 2342 2343媒体密钥状态的名称数组。 2344 2345 2346### statusValue [1/2] 2347 2348``` 2349char DRM_KeysInfo::statusValue[MAX_KEY_INFO_COUNT][MAX_KEY_STATUS_VALUE_LEN] 2350``` 2351 2352**描述** 2353 2354媒体密钥信息中的媒体密钥状态值数组。 2355 2356 2357### statusValue [2/2] 2358 2359``` 2360char DRM_MediaKeyStatus::statusValue[MAX_MEDIA_KEY_STATUS_COUNT][MAX_MEDIA_KEY_STATUS_VALUE_LEN] 2361``` 2362 2363**描述** 2364 2365MediaKeySession会话中媒体密钥状态值数组。 2366 2367 2368### type [1/2] 2369 2370``` 2371DRM_MediaKeyType DRM_MediaKeyRequestInfo::type 2372``` 2373 2374**描述** 2375 2376媒体密钥请求信息中的密钥类型,在线或者离线。 2377 2378 2379### type [2/2] 2380 2381``` 2382DRM_MediaKeyRequestType DRM_MediaKeyRequest::type 2383``` 2384 2385**描述** 2386 2387媒体密钥请求类型。 2388 2389 2390### uuid [1/2] 2391 2392``` 2393uint8_t DRM_PsshInfo::uuid[DRM_UUID_LEN] 2394``` 2395 2396**描述** 2397pssh信息中的DRM解决方案唯一标识。 2398 2399 2400### uuid [2/2] 2401 2402``` 2403uint8_t DRM_MediaKeySystemDescription::uuid[DRM_UUID_LEN] 2404``` 2405**描述** 2406设备支持的DRM解决方案唯一标识。