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/avcvideo/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/avcvideo/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/avcvideo/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解决方案唯一标识。