• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# Drm
2
3
4## 概述
5
6提供数字版权保护能力的API。
7
8**起始版本:** 11
9
10
11## 汇总
12
13
14### 文件
15
16| 名称 | 描述 |
17| -------- | -------- |
18| [native_drm_common.h](native__drm__common_8h.md) | 定义DRM数据类型。<br/>**引用文件:** &lt;multimedia/drm_framework/native_drm_common.h&gt;<br/>**库:** libnative_drm.z.so |
19| [native_drm_err.h](native__drm__err_8h.md) | 定义DRM错误码。<br/>**引用文件:** &lt;multimedia/drm_framework/native_drm_err.h&gt;<br/>**库:** libnative_drm.z.so |
20| [native_mediakeysession.h](native__mediakeysession_8h.md) | 定义Drm MediaKeySession API。<br/>**引用文件:** &lt;multimedia/drm_framework/native_mediakeysession.h&gt;<br/>**库:** libnative_drm.z.so |
21| [native_mediakeysystem.h](native__mediakeysystem_8h.md) | 定义Drm MediaKeySystem API。<br/>**引用文件:** &lt;multimedia/drm_framework/native_mediakeysystem.h&gt;<br/>**库:** libnative_drm.z.so |
22
23
24### 结构体
25
26| 名称 | 描述 |
27| -------- | -------- |
28| struct&nbsp;&nbsp;[DRM_Uint8Buffer](_d_r_m___uint8_buffer.md) | DRM uint_8 数组类型。 |
29| struct&nbsp;&nbsp;[DRM_CharBuffer](_d_r_m___char_buffer.md) | DRM 字符数组类型。 |
30| struct&nbsp;&nbsp;[DRM_CharBufferPair](_d_r_m___char_buffer_pair.md) | 字符数组类型的名值对。 |
31| struct&nbsp;&nbsp;[DRM_Uint8CharBufferPair](_d_r_m___uint8_char_buffer_pair.md) | 整形数组类型的名值对。 |
32| struct&nbsp;&nbsp;[DRM_MediaKeyRequestInfo](_d_r_m___media_key_request_info.md) | 许可证请求参数类型。 |
33| struct&nbsp;&nbsp;[DRM_MediaKeyRequest](_d_r_m___media_key_request.md) | 许可证请求类型。 |
34| struct&nbsp;&nbsp;[DRM_Statistics](_d_r_m___statistics.md) | DRM度量统计信息。 |
35| struct&nbsp;&nbsp;[DRM_MediakeyIdArray](_d_r_m___mediakey_id_array.md) | 离线许可证Id数组。 |
36| struct&nbsp;&nbsp;[DRM_KeysInfo](_d_r_m___keys_info.md) | 密钥信息。 |
37| struct&nbsp;&nbsp;[DRM_MediaKeyDescription](_d_r_m___media_key_description.md) | 在线许可证描述信息。 |
38| struct&nbsp;&nbsp;[DRM_PsshInfo](_d_r_m___pssh_info.md) | DRM Pssh信息。 |
39| struct&nbsp;&nbsp;[DRM_MediaKeySystemInfo](_d_r_m___media_key_system_info.md) | 从媒体源获取的DRM信息。 |
40| struct&nbsp;&nbsp;[MediaKeySession_Callback](_media_key_session___callback.md) | MediaKeySession回调结构体, 用来监听密钥过期、密钥变化等事件。 |
41
42
43### 宏定义
44
45| 名称 | 描述 |
46| -------- | -------- |
47| [DRM_UUID_LEN](#drm_uuid_len)&nbsp;&nbsp;&nbsp;16 | DRM插件类型名。 |
48
49
50### 类型定义
51
52| 名称 | 描述 |
53| -------- | -------- |
54| typedef enum [DRM_ListenerType](#drm_listenertype)[DRM_ListenerType](#drm_listenertype) | 监听类型。 |
55| typedef enum [DRM_ContentProtectionLevel](#drm_contentprotectionlevel)[DRM_ContentProtectionLevel](#drm_contentprotectionlevel) | 内容保护级别类型。 |
56| typedef enum [DRM_MediaKeyType](#drm_mediakeytype)[DRM_MediaKeyType](#drm_mediakeytype) | 许可证类型。 |
57| typedef enum [DRM_MediaKeyRequestType](#drm_mediakeyrequesttype)[DRM_MediaKeyRequestType](#drm_mediakeyrequesttype) | 许可证请求类型。 |
58| typedef enum [DRM_OfflineMediaKeyStatus](#drm_offlinemediakeystatus)[DRM_OfflineMediaKeyStatus](#drm_offlinemediakeystatus) | 离线许可证状态。 |
59| typedef enum [DRM_CertificateStatus](#drm_certificatestatus)[DRM_CertificateStatus](#drm_certificatestatus) | 设备证书状态类型。 |
60| typedef enum [DRM_MediaKeyStatus](#drm_mediakeystatus)[DRM_MediaKeyStatus](#drm_mediakeystatus) | 在线许可证状态。 |
61| typedef struct [DRM_Uint8Buffer](_d_r_m___uint8_buffer.md)[DRM_Uint8Buffer](#drm_uint8buffer) | DRM uint_8 数组类型。 |
62| typedef struct [DRM_CharBuffer](_d_r_m___char_buffer.md)[DRM_CharBuffer](#drm_charbuffer) | DRM 字符数组类型。 |
63| typedef struct [DRM_CharBufferPair](_d_r_m___char_buffer_pair.md)[DRM_CharBufferPair](#drm_charbufferpair) | 字符数组类型的名值对。 |
64| typedef struct [DRM_Uint8CharBufferPair](_d_r_m___uint8_char_buffer_pair.md)[DRM_Uint8CharBufferPair](#drm_uint8charbufferpair) | 整形数组类型的名值对。 |
65| typedef struct [DRM_MediaKeyRequestInfo](_d_r_m___media_key_request_info.md)[DRM_MediaKeyRequestInfo](#drm_mediakeyrequestinfo) | 许可证请求参数类型。 |
66| typedef struct [DRM_MediaKeyRequest](_d_r_m___media_key_request.md)[DRM_MediaKeyRequest](#drm_mediakeyrequest) | 许可证请求类型。 |
67| typedef struct [DRM_Statistics](_d_r_m___statistics.md)[DRM_Statistics](#drm_statistics) | DRM度量统计信息。 |
68| typedef struct [DRM_MediakeyIdArray](_d_r_m___mediakey_id_array.md)[DRM_MediakeyIdArray](#drm_mediakeyidarray) | 离线许可证Id数组。 |
69| typedef struct [DRM_KeysInfo](_d_r_m___keys_info.md)[DRM_KeysInfo](#drm_keysinfo) | 密钥信息。 |
70| typedef struct [DRM_MediaKeyDescription](_d_r_m___media_key_description.md)[DRM_MediaKeyDescription](#drm_mediakeydescription) | 在线许可证描述信息。 |
71| typedef struct [DRM_PsshInfo](_d_r_m___pssh_info.md)[DRM_PsshInfo](#drm_psshinfo) | DRM Pssh信息。 |
72| typedef struct [DRM_MediaKeySystemInfo](_d_r_m___media_key_system_info.md)[DRM_MediaKeySystemInfo](#drm_mediakeysysteminfo) | 从媒体源获取的DRM信息。 |
73| typedef void(\* [DRM_MediaKeySystemInfoCallback](#drm_mediakeysysteminfocallback)) ([DRM_MediaKeySystemInfo](_d_r_m___media_key_system_info.md) \*mediaKeySystemInfo) | MeidiaKeySystem函数指针类型。 |
74| typedef struct [MediaKeySystem](#mediakeysystem)[MediaKeySystem](#mediakeysystem) | MediaKeySystem结构体。 |
75| typedef struct [MediaKeySession](#mediakeysession)[MediaKeySession](#mediakeysession) | MediaKeySession结构体。 |
76| typedef enum [Drm_ErrCode](#drm_errcode)[Drm_ErrCode](#drm_errcode) | DRM错误码。 |
77| typedef [Drm_ErrCode](#drm_errcode)(\* [MediaKeySession_EventCallback](#mediakeysession_eventcallback)) ([DRM_ListenerType](#drm_listenertype) eventType, [DRM_Uint8CharBufferPair](_d_r_m___uint8_char_buffer_pair.md) \*eventInfo) | 事件触发时将调用的回调。 |
78| typedef [Drm_ErrCode](#drm_errcode)(\* [MediaKeySession_KeyChangeCallback](#mediakeysession_keychangecallback)) ([DRM_KeysInfo](_d_r_m___keys_info.md) \*keysInfo, bool newKeysAvailable) | 注册监听,监听密钥变化。 |
79| typedef struct [MediaKeySession_Callback](_media_key_session___callback.md)[MediaKeySession_Callback](#mediakeysession_callback) | MediaKeySession回调结构体, 用来监听密钥过期、密钥变化等事件。 |
80| typedef [Drm_ErrCode](#drm_errcode)(\* [MediaKeySystem_Callback](#mediakeysystem_callback)) ([DRM_ListenerType](#drm_listenertype) eventType, [DRM_Uint8CharBufferPair](_d_r_m___uint8_char_buffer_pair.md) \*eventInfo) | 事件触发时将调用的回调。 |
81
82
83### 枚举
84
85| 名称 | 描述 |
86| -------- | -------- |
87| [DRM_ListenerType](#drm_listenertype) {<br/>LISTENER_DRM_EVENT = 200,<br/>LISTENER_PROVISION_REQUIRED = 201,<br/>LISTENER_KEY_REQUIRED = 202,<br/>LISTENER_KEY_EXPIRED = 203,<br/>LISTENER_VENDOR_DEFINED = 204,<br/>LISTENER_EXPIRATION_UPDATE = 206<br/>} | 监听类型。 |
88| [DRM_ContentProtectionLevel](#drm_contentprotectionlevel) {<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/>} | 内容保护级别类型。 |
89| [DRM_MediaKeyType](#drm_mediakeytype) {<br/>MEDIA_KEY_TYPE_OFFLINE = 0,<br/>MEDIA_KEY_TYPE_ONLINE<br/>} | 许可证类型。 |
90| [DRM_MediaKeyRequestType](#drm_mediakeyrequesttype) {<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/>} | 许可证请求类型。 |
91| [DRM_OfflineMediaKeyStatus](#drm_offlinemediakeystatus) {<br/>OFFLINE_MEDIA_KEY_STATUS_UNKNOWN = 0,<br/>OFFLINE_MEDIA_KEY_STATUS_USABLE,<br/>OFFLINE_MEDIA_KEY_STATUS_INACTIVE<br/>} | 离线许可证状态。 |
92| [DRM_CertificateStatus](#drm_certificatestatus) {<br/>CERT_STATUS_PROVISIONED = 0,<br/>CERT_STATUS_NOT_PROVISIONED,<br/>CERT_STATUS_EXPIRED,<br/>CERT_STATUS_INVALID,<br/>CERT_STATUS_UNAVAILABLE<br/>} | 设备证书状态类型。 |
93| [DRM_MediaKeyStatus](#drm_mediakeystatus) {<br/>MEDIA_KEY_STATUS_OK = 0,<br/>MEDIA_KEY_STATUS_UNAVAILABLE = 1<br/>} | 在线许可证状态。 |
94| [Drm_ErrCode](#drm_errcode) {<br/>DRM_ERR_OK = 0,<br/>DRM_ERR_NO_MEMORY,<br/>DRM_ERR_OPERATION_NOT_PERMITTED,<br/>DRM_ERR_INVALID_VAL,<br/>DRM_ERR_IO,<br/>DRM_ERR_TIMEOUT,<br/>DRM_ERR_UNKNOWN,<br/>DRM_ERR_SERVICE_DIED,<br/>DRM_ERR_INVALID_STATE,<br/>DRM_ERR_UNSUPPORTED,<br/>DRM_ERR_MAX_SYSTEM_NUM_REACHED,<br/>DRM_ERR_MAX_SESSION_NUM_REACHED,<br/>DRM_ERR_EXTEND_START = 100<br/>} | DRM错误码。 |
95
96
97### 函数
98
99| 名称 | 描述 |
100| -------- | -------- |
101| [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) | 生成许可证请求。 |
102| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySession_ProcessMediaKeyResponse](#oh_mediakeysession_processmediakeyresponse) ([MediaKeySession](#mediakeysession) \*keySession, [DRM_Uint8Buffer](_d_r_m___uint8_buffer.md) \*response, unsigned char \*\*mediaKeyId, int32_t \*mediaKeyIdLen) | 处理许可证响应。 |
103| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySession_CheckMediaKeyStatus](#oh_mediakeysession_checkmediakeystatus) ([MediaKeySession](#mediakeysession) \*mediaKeySessoin, [DRM_MediaKeyDescription](_d_r_m___media_key_description.md) \*\*mediaKeyDescription) | 检查许可证状态. |
104| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySession_ClearMediaKeys](#oh_mediakeysession_clearmediakeys) ([MediaKeySession](#mediakeysession) \*mediaKeySessoin) | 清除当前会话的许可证 . |
105| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySession_GenerateOfflineReleaseRequest](#oh_mediakeysession_generateofflinereleaserequest) ([MediaKeySession](#mediakeysession) \*mediaKeySessoin, [DRM_Uint8Buffer](_d_r_m___uint8_buffer.md) \*mediaKeyId, unsigned char \*\*releaseRequest, int32_t \*releaseRequestLen) | 生成离线许可证释放请求。 |
106| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySession_ProcessOfflineReleaseResponse](#oh_mediakeysession_processofflinereleaseresponse) ([MediaKeySession](#mediakeysession) \*mediaKeySessoin, [DRM_Uint8Buffer](_d_r_m___uint8_buffer.md) \*mediaKeyId, [DRM_Uint8Buffer](_d_r_m___uint8_buffer.md) \*releaseReponse) | 处理离线许可证释放响应。 |
107| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySession_RestoreOfflineMediaKeys](#oh_mediakeysession_restoreofflinemediakeys) ([MediaKeySession](#mediakeysession) \*mediaKeySessoin, [DRM_Uint8Buffer](_d_r_m___uint8_buffer.md) \*mediaKeyId) | 根据许可证ID恢复对应许可证状态。 |
108| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySession_GetContentProtectionLevel](#oh_mediakeysession_getcontentprotectionlevel) ([MediaKeySession](#mediakeysession) \*mediaKeySessoin, [DRM_ContentProtectionLevel](#drm_contentprotectionlevel) \*contentProtectionLevel) | 获取当前会话的内容保护级别。 |
109| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySession_RequireSecureDecoderModule](#oh_mediakeysession_requiresecuredecodermodule) ([MediaKeySession](#mediakeysession) \*mediaKeySessoin, const char \*mimeType, bool \*status) | 查询是否需要安全解码。 |
110| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySession_SetMediaKeySessionCallback](#oh_mediakeysession_setmediakeysessioncallback) ([MediaKeySession](#mediakeysession) \*mediaKeySessoin, [MediaKeySession_Callback](_media_key_session___callback.md) \*callback) | 设置MediaKeySession事件回调。 |
111| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySession_Destroy](#oh_mediakeysession_destroy) ([MediaKeySession](#mediakeysession) \*mediaKeySessoin) | MediaKeySession资源销毁。 |
112| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySystem_GetMediaKeySystemName](#oh_mediakeysystem_getmediakeysystemname) (const char \*uuid, unsigned char \*\*name, int32_t \*nameLen) | 通过MediaKeySystem方案唯一编号获取MediaKeySystem方案名。 |
113| bool [OH_MediaKeySystem_IsSupported](#oh_mediakeysystem_issupported) (const char \*name) | 查询设备是否支持指定MediaKeySystem方案。 |
114| bool [OH_MediaKeySystem_IsSupported2](#oh_mediakeysystem_issupported2) (const char \*name, const char \*mimeType) | 查询设备是否支持指定MediaKeySystem方案、指定媒体类型。 |
115| bool [OH_MediaKeySystem_IsSupported3](#oh_mediakeysystem_issupported3) (const char \*name, const char \*mimeType, [DRM_ContentProtectionLevel](#drm_contentprotectionlevel) contentProtectionLevel) | 查询设备是否支持指定MediaKeySystem方案、指定媒体类型、指定内容保护级别。 |
116| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySystem_Create](#oh_mediakeysystem_create) (const char \*name, [MediaKeySystem](#mediakeysystem) \*\*mediaKeySystem) | 根据方案名创建一个MediaKeySystem实例。 |
117| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySystem_SetConfigurationString](#oh_mediakeysystem_setconfigurationstring) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, const char \*configName, const char \*value) | 通过配置名设置MediaKeySystem的字符串类型配置值。 |
118| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySystem_GetConfigurationString](#oh_mediakeysystem_getconfigurationstring) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, const char \*configName, char \*\*value, int32_t \*valueLen) | 通过配置名获取MediaKeySystem的字符串类型配置值。 |
119| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySystem_SetConfigurationByteArray](#oh_mediakeysystem_setconfigurationbytearray) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, const char \*configName, [DRM_Uint8Buffer](_d_r_m___uint8_buffer.md) \*value) | 通过配置名设置MediaKeySystem的字符数组类型配置值。 |
120| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySystem_GetConfigurationByteArray](#oh_mediakeysystem_getconfigurationbytearray) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, const char \*configName, unsigned char \*\*value, int32_t \*valueLen) | 通过配置名获取MediaKeySystem的字符数组类型配置值。 |
121| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySystem_GetStatistics](#oh_mediakeysystem_getstatistics) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, [DRM_Statistics](_d_r_m___statistics.md) \*\*statistics) | 获取MediaKeySystem的度量统计信息。 |
122| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySystem_GetMaxContentProtectionLevel](#oh_mediakeysystem_getmaxcontentprotectionlevel) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, [DRM_ContentProtectionLevel](#drm_contentprotectionlevel) \*contentProtectionLevel) | 获取MediaKeySystem支持的最大内容保护级别。 |
123| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySystem_SetMediaKeySystemCallback](#oh_mediakeysystem_setmediakeysystemcallback) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, [MediaKeySystem_Callback](#mediakeysystem_callback) callback) | 设置MediaKeySystem回调监听。 |
124| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySystem_CreateMediaKeySession](#oh_mediakeysystem_createmediakeysession) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, [DRM_ContentProtectionLevel](#drm_contentprotectionlevel) \*level, [MediaKeySession](#mediakeysession) \*\*mediaKeySession) | 创建一个MediaKeySession实例。 |
125| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySystem_GenerateKeySystemRequest](#oh_mediakeysystem_generatekeysystemrequest) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, unsigned char \*\*request, int32_t \*requestLen, char \*\*defaultUrl, int32_t \*defaultUrlLen) | 生成设备证书请求。 |
126| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySystem_ProcessKeySystemResponse](#oh_mediakeysystem_processkeysystemresponse) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, [DRM_Uint8Buffer](_d_r_m___uint8_buffer.md) \*response) | 处理设备证书响应。 |
127| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySystem_GetOfflineMediaKeyIds](#oh_mediakeysystem_getofflinemediakeyids) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, [DRM_MediakeyIdArray](_d_r_m___mediakey_id_array.md) \*\*mediaKeyIds) | 获取离线许可证状态。 |
128| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySystem_GetOfflineMediaKeyStatus](#oh_mediakeysystem_getofflinemediakeystatus) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, [DRM_Uint8Buffer](_d_r_m___uint8_buffer.md) \*mediaKeyId, [DRM_OfflineMediaKeyStatus](#drm_offlinemediakeystatus) \*status) | 获取离线许可证状态。 |
129| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySystem_ClearOfflineMediaKeys](#oh_mediakeysystem_clearofflinemediakeys) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, [DRM_Uint8Buffer](_d_r_m___uint8_buffer.md) \*mediaKeyId) | 根据许可证Id清理许可证。 |
130| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySystem_GetCertificateStatus](#oh_mediakeysystem_getcertificatestatus) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem, [DRM_CertificateStatus](#drm_certificatestatus) \*certStatus) | 获取设备证书状态。 |
131| [Drm_ErrCode](#drm_errcode)[OH_MediaKeySystem_Destroy](#oh_mediakeysystem_destroy) ([MediaKeySystem](#mediakeysystem) \*mediaKeySystem) | 销毁MediaKeySystem实例。 |
132
133
134### 变量
135
136| 名称 | 描述 |
137| -------- | -------- |
138| unsigned char \* [DRM_Uint8Buffer::buffer](#buffer-12) | 数组首地址 |
139| uint32_t [DRM_Uint8Buffer::bufferLen](#bufferlen-12) | 数组长度 |
140| char \* [DRM_CharBuffer::buffer](#buffer-22) | 数组首地址 |
141| uint32_t [DRM_CharBuffer::bufferLen](#bufferlen-22) | 数组长度 |
142| [DRM_CharBuffer](_d_r_m___char_buffer.md)[DRM_CharBufferPair::name](#name) | 名字 |
143| [DRM_CharBuffer](_d_r_m___char_buffer.md)[DRM_CharBufferPair::value](#value-12) | 值 |
144| [DRM_Uint8Buffer](_d_r_m___uint8_buffer.md)[DRM_Uint8CharBufferPair::key](#key) | 名字 |
145| [DRM_CharBuffer](_d_r_m___char_buffer.md)[DRM_Uint8CharBufferPair::value](#value-22) | 值 |
146| [DRM_MediaKeyType](#drm_mediakeytype)[DRM_MediaKeyRequestInfo::type](#type-12) | 许可证类型 |
147| [DRM_Uint8Buffer](_d_r_m___uint8_buffer.md)[DRM_MediaKeyRequestInfo::data](#data-13) | base64编码后的pssh数据 |
148| [DRM_CharBuffer](_d_r_m___char_buffer.md)[DRM_MediaKeyRequestInfo::mimeType](#mimetype) | 媒体类型 |
149| uint32_t [DRM_MediaKeyRequestInfo::optionsCount](#optionscount) | 操作数数组长度 |
150| [DRM_CharBufferPair](_d_r_m___char_buffer_pair.md)[DRM_MediaKeyRequestInfo::optionsData](#optionsdata) [0] | 操作数数组 |
151| [DRM_MediaKeyRequestType](#drm_mediakeyrequesttype)[DRM_MediaKeyRequest::type](#type-22) | 许可证请求类型 |
152| [DRM_Uint8Buffer](_d_r_m___uint8_buffer.md)[DRM_MediaKeyRequest::data](#data-23) | 许可证请求数据 |
153| [DRM_CharBuffer](_d_r_m___char_buffer.md)[DRM_MediaKeyRequest::defaultUrl](#defaulturl) | 许可证服务器URL |
154| uint32_t [DRM_Statistics::statisticsCount](#statisticscount) | 度量信息数组长度 |
155| [DRM_CharBufferPair](_d_r_m___char_buffer_pair.md)[DRM_Statistics::info](#info) [0] | 度量信息数组 |
156| uint32_t [DRM_MediakeyIdArray::mediaKeyIdCount](#mediakeyidcount) | 许可证Id数组长度 |
157| [DRM_Uint8Buffer](_d_r_m___uint8_buffer.md)[DRM_MediakeyIdArray::mediaKeyIds](#mediakeyids) [0] | 许可证Id数组 |
158| uint32_t [DRM_KeysInfo::keysCount](#keyscount) | 密钥信息数组长度 |
159| [DRM_Uint8CharBufferPair](_d_r_m___uint8_char_buffer_pair.md)[DRM_KeysInfo::keysInfo](#keysinfo) [0] | 密钥信息数组 |
160| uint32_t [DRM_MediaKeyDescription::mediaKeyCount](#mediakeycount) | 许可证信息数组长度 |
161| [DRM_CharBufferPair](_d_r_m___char_buffer_pair.md)[DRM_MediaKeyDescription::description](#description) [0] | 许可证信息数组 |
162| char [DRM_PsshInfo::uuid](#uuid) [[DRM_UUID_LEN](#drm_uuid_len)] | DRM插件类型名 |
163| uint32_t [DRM_PsshInfo::dataLen](#datalen) | PSSH数据长度 |
164| unsigned char \* [DRM_PsshInfo::data](#data-33) | PSSH数据 |
165| uint32_t [DRM_MediaKeySystemInfo::psshCount](#psshcount) | PSSH信息数组长度 |
166| [DRM_PsshInfo](_d_r_m___pssh_info.md)[DRM_MediaKeySystemInfo::psshInfo](#psshinfo) [0] | PSSH信息数组 |
167| [MediaKeySession_EventCallback](#mediakeysession_eventcallback)[MediaKeySession_Callback::eventCallback](#eventcallback) | KeySession回调事件,如许可证过期。 |
168| [MediaKeySession_KeyChangeCallback](#mediakeysession_keychangecallback)[MediaKeySession_Callback::keyChangeCallback](#keychangecallback) | 密钥变化事件触发的keyChange事件。 |
169
170
171## 宏定义说明
172
173
174### DRM_UUID_LEN
175
176```
177#define DRM_UUID_LEN   16
178```
179
180**描述**
181
182DRM插件类型名。
183
184**系统能力:** SystemCapability.Multimedia.Drm.Core
185
186**起始版本:** 11
187
188
189## 类型定义说明
190
191
192### DRM_CertificateStatus
193
194```
195typedef enum DRM_CertificateStatusDRM_CertificateStatus
196```
197
198**描述**
199
200设备证书状态类型。
201
202**系统能力:** SystemCapability.Multimedia.Drm.Core
203
204**起始版本:** 11
205
206
207### DRM_CharBuffer
208
209```
210typedef struct DRM_CharBufferDRM_CharBuffer
211```
212
213**描述**
214
215DRM 字符数组类型。
216
217**系统能力:** SystemCapability.Multimedia.Drm.Core
218
219**起始版本:** 11
220
221
222### DRM_CharBufferPair
223
224```
225typedef struct DRM_CharBufferPairDRM_CharBufferPair
226```
227
228**描述**
229
230字符数组类型的名值对。
231
232**系统能力:** SystemCapability.Multimedia.Drm.Core
233
234**起始版本:** 11
235
236
237### DRM_ContentProtectionLevel
238
239```
240typedef enum DRM_ContentProtectionLevelDRM_ContentProtectionLevel
241```
242
243**描述**
244
245内容保护级别类型。
246
247**系统能力:** SystemCapability.Multimedia.Drm.Core
248
249**起始版本:** 11
250
251
252### Drm_ErrCode
253
254```
255typedef enum Drm_ErrCodeDrm_ErrCode
256```
257
258**描述**
259
260DRM错误码。
261
262**系统能力:** SystemCapability.Multimedia.Drm.Core
263
264**起始版本:** 11
265
266
267### DRM_KeysInfo
268
269```
270typedef struct DRM_KeysInfoDRM_KeysInfo
271```
272
273**描述**
274
275密钥信息。
276
277**系统能力:** SystemCapability.Multimedia.Drm.Core
278
279**起始版本:** 11
280
281
282### DRM_ListenerType
283
284```
285typedef enum DRM_ListenerTypeDRM_ListenerType
286```
287
288**描述**
289
290监听类型。
291
292**系统能力:** SystemCapability.Multimedia.Drm.Core.
293
294**起始版本:** 11
295
296
297### DRM_MediaKeyDescription
298
299```
300typedef struct DRM_MediaKeyDescriptionDRM_MediaKeyDescription
301```
302
303**描述**
304
305在线许可证描述信息。
306
307**系统能力:** SystemCapability.Multimedia.Drm.Core
308
309**起始版本:** 11
310
311
312### DRM_MediakeyIdArray
313
314```
315typedef struct DRM_MediakeyIdArrayDRM_MediakeyIdArray
316```
317
318**描述**
319
320离线许可证Id数组。
321
322**系统能力:** SystemCapability.Multimedia.Drm.Core
323
324**起始版本:** 11
325
326
327### DRM_MediaKeyRequest
328
329```
330typedef struct DRM_MediaKeyRequestDRM_MediaKeyRequest
331```
332
333**描述**
334
335许可证请求类型。
336
337**系统能力:** SystemCapability.Multimedia.Drm.Core
338
339**起始版本:** 11
340
341
342### DRM_MediaKeyRequestInfo
343
344```
345typedef struct DRM_MediaKeyRequestInfoDRM_MediaKeyRequestInfo
346```
347
348**描述**
349
350许可证请求参数类型。
351
352**系统能力:** SystemCapability.Multimedia.Drm.Core
353
354**起始版本:** 11
355
356
357### DRM_MediaKeyRequestType
358
359```
360typedef enum DRM_MediaKeyRequestTypeDRM_MediaKeyRequestType
361```
362
363**描述**
364
365许可证请求类型。
366
367**系统能力:** SystemCapability.Multimedia.Drm.Core
368
369**起始版本:** 11
370
371
372### DRM_MediaKeyStatus
373
374```
375typedef enum DRM_MediaKeyStatusDRM_MediaKeyStatus
376```
377
378**描述**
379
380在线许可证状态。
381
382**系统能力:** SystemCapability.Multimedia.Drm.Core
383
384**起始版本:** 11
385
386
387### DRM_MediaKeySystemInfoCallback
388
389```
390typedef void (*DRM_MediaKeySystemInfoCallback)(DRM_MediaKeySystemInfo* mediaKeySystemInfo)
391```
392
393**描述**
394
395MeidiaKeySystem函数指针类型。
396
397**起始版本:** 11
398
399**参数:**
400
401| 名称 | 描述 |
402| -------- | -------- |
403| mediaKeySystemInfo | 密钥信息。 |
404
405
406### DRM_MediaKeySystemInfo
407
408```
409typedef struct DRM_MediaKeySystemInfoDRM_MediaKeySystemInfo
410```
411
412**描述**
413
414从媒体源获取的DRM信息。
415
416**系统能力:** SystemCapability.Multimedia.Drm.Core
417
418**起始版本:** 11
419
420
421### DRM_MediaKeyType
422
423```
424typedef enum DRM_MediaKeyTypeDRM_MediaKeyType
425```
426
427**描述**
428
429许可证类型。
430
431**系统能力:** SystemCapability.Multimedia.Drm.Core
432
433**起始版本:** 11
434
435
436### DRM_OfflineMediaKeyStatus
437
438```
439typedef enum DRM_OfflineMediaKeyStatusDRM_OfflineMediaKeyStatus
440```
441
442**描述**
443
444离线许可证状态。
445
446**系统能力:** SystemCapability.Multimedia.Drm.Core
447
448**起始版本:** 11
449
450
451### DRM_PsshInfo
452
453```
454typedef struct DRM_PsshInfoDRM_PsshInfo
455```
456
457**描述**
458
459DRM Pssh信息。
460
461**系统能力:** SystemCapability.Multimedia.Drm.Core
462
463**起始版本:** 11
464
465
466### DRM_Statistics
467
468```
469typedef struct DRM_StatisticsDRM_Statistics
470```
471
472**描述**
473
474DRM度量统计信息。
475
476**系统能力:** SystemCapability.Multimedia.Drm.Core
477
478**起始版本:** 11
479
480
481### DRM_Uint8Buffer
482
483```
484typedef struct DRM_Uint8BufferDRM_Uint8Buffer
485```
486
487**描述**
488
489DRM uint_8 数组类型。
490
491**系统能力:** SystemCapability.Multimedia.Drm.Core
492
493**起始版本:** 11
494
495
496### DRM_Uint8CharBufferPair
497
498```
499typedef struct DRM_Uint8CharBufferPairDRM_Uint8CharBufferPair
500```
501
502**描述**
503
504整形数组类型的名值对。
505
506**系统能力:** SystemCapability.Multimedia.Drm.Core
507
508**起始版本:** 11
509
510
511### MediaKeySession
512
513```
514typedef struct MediaKeySessionMediaKeySession
515```
516
517**描述**
518
519MediaKeySession结构体。
520
521**系统能力:** SystemCapability.Multimedia.Drm.Core
522
523**起始版本:** 11
524
525
526### MediaKeySession_Callback
527
528```
529typedef struct MediaKeySession_CallbackMediaKeySession_Callback
530```
531
532**描述**
533
534MediaKeySession回调结构体, 用来监听密钥过期、密钥变化等事件。
535
536**起始版本:** 11
537
538
539### MediaKeySession_EventCallback
540
541```
542typedef Drm_ErrCode(* MediaKeySession_EventCallback) (DRM_ListenerType eventType, DRM_Uint8CharBufferPair *eventInfo)
543```
544
545**描述**
546
547事件触发时将调用的回调。
548
549**起始版本:** 11
550
551**参数:**
552
553| 名称 | 描述 |
554| -------- | -------- |
555| eventType | 事件类型。 |
556| eventInfo | 从MediaKeySystem中获取的事件信息。 |
557
558**返回:**
559
560参数检查错误返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
561
562
563### MediaKeySession_KeyChangeCallback
564
565```
566typedef Drm_ErrCode(* MediaKeySession_KeyChangeCallback) (DRM_KeysInfo *keysInfo, bool newKeysAvailable)
567```
568
569**描述**
570
571注册监听,监听密钥变化。
572
573**起始版本:** 11
574
575**参数:**
576
577| 名称 | 描述 |
578| -------- | -------- |
579| keysInfo | 密钥信息。 |
580| newKeysAvailable | 新密钥释放可用。 |
581
582**返回:**
583
584参数检查错误返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
585
586
587### MediaKeySystem
588
589```
590typedef struct MediaKeySystemMediaKeySystem
591```
592
593**描述**
594
595MediaKeySystem结构体。
596
597**系统能力:** SystemCapability.Multimedia.Drm.Core
598
599**起始版本:** 11
600
601
602### MediaKeySystem_Callback
603
604```
605typedef Drm_ErrCode(* MediaKeySystem_Callback) (DRM_ListenerType eventType, DRM_Uint8CharBufferPair *eventInfo)
606```
607
608**描述**
609
610事件触发时将调用的回调。
611
612**起始版本:** 11
613
614**参数:**
615
616| 名称 | 描述 |
617| -------- | -------- |
618| eventType | 事件类型。 |
619| eventInfo | MediaKeySystem获取到的事件信息。 |
620
621**返回:**
622
623参数检查失败返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
624
625
626## 枚举类型说明
627
628
629### DRM_CertificateStatus
630
631```
632enum DRM_CertificateStatus
633```
634
635**描述**
636
637设备证书状态类型。
638
639**系统能力:** SystemCapability.Multimedia.Drm.Core
640
641**起始版本:** 11
642
643| 枚举值 | 描述 |
644| -------- | -------- |
645| CERT_STATUS_PROVISIONED | 设备已安装设备证书 |
646| CERT_STATUS_NOT_PROVISIONED | 设备未安装设备证书 |
647| CERT_STATUS_EXPIRED | 设备证书过期 |
648| CERT_STATUS_INVALID | 无效设备证书 |
649| CERT_STATUS_UNAVAILABLE | 设备证书不可用 |
650
651
652### DRM_ContentProtectionLevel
653
654```
655enum DRM_ContentProtectionLevel
656```
657
658**描述**
659
660内容保护级别类型。
661
662**系统能力:** SystemCapability.Multimedia.Drm.Core
663
664**起始版本:** 11
665
666| 枚举值 | 描述 |
667| -------- | -------- |
668| CONTENT_PROTECTION_LEVEL_UNKNOWN | 未知级别 |
669| CONTENT_PROTECTION_LEVEL_SW_CRYPTO | 软件安全级别 |
670| CONTENT_PROTECTION_LEVEL_HW_CRYPTO | 硬件安全级别 |
671| CONTENT_PROTECTION_LEVEL_ENHANCED_HW_CRYPTO | 硬件增强级别 |
672| CONTENT_PROTECTION_LEVEL_MAX | 最大安全级别 |
673
674
675### Drm_ErrCode
676
677```
678enum Drm_ErrCode
679```
680
681**描述**
682
683DRM错误码。
684
685**系统能力:** SystemCapability.Multimedia.Drm.Core
686
687**起始版本:** 11
688
689| 枚举值 | 描述 |
690| -------- | -------- |
691| DRM_ERR_OK | 操作成功完成。 |
692| DRM_ERR_NO_MEMORY | 内存不足。 |
693| DRM_ERR_OPERATION_NOT_PERMITTED | 不支持的操作。 |
694| DRM_ERR_INVALID_VAL | 无效参数。 |
695| DRM_ERR_IO | IO 错误。 |
696| DRM_ERR_TIMEOUT | 网络超时。 |
697| DRM_ERR_UNKNOWN | 未知错误。 |
698| DRM_ERR_SERVICE_DIED | drm服务挂死。 |
699| DRM_ERR_INVALID_STATE | 无效的操作状态。 |
700| DRM_ERR_UNSUPPORTED | 不支持的操作。 |
701| DRM_ERR_MAX_SYSTEM_NUM_REACHED | MediaKeySystem最大实例数。 |
702| DRM_ERR_MAX_SESSION_NUM_REACHED | MediaKeySession最大实例数。 |
703| DRM_ERR_EXTEND_START | 扩展错误。 |
704
705
706### DRM_ListenerType
707
708```
709enum DRM_ListenerType
710```
711
712**描述**
713
714监听类型。
715
716**系统能力:** SystemCapability.Multimedia.Drm.Core.
717
718**起始版本:** 11
719
720| 枚举值 | 描述 |
721| -------- | -------- |
722| LISTENER_DRM_EVENT | DRM基础事件 |
723| LISTENER_PROVISION_REQUIRED | 设备证书请求事件 |
724| LISTENER_KEY_REQUIRED | 密钥请求事件 |
725| LISTENER_KEY_EXPIRED | 密钥过期事件 |
726| LISTENER_VENDOR_DEFINED | 第三方定义事件 |
727| LISTENER_EXPIRATION_UPDATE | 密钥过期更新事件 |
728
729
730### DRM_MediaKeyRequestType
731
732```
733enum DRM_MediaKeyRequestType
734```
735
736**描述**
737
738许可证请求类型。
739
740**系统能力:** SystemCapability.Multimedia.Drm.Core
741
742**起始版本:** 11
743
744| 枚举值 | 描述 |
745| -------- | -------- |
746| MEDIA_KEY_REQUEST_TYPE_UNKNOWN | 未知请求类型 |
747| MEDIA_KEY_REQUEST_TYPE_INITIAL | 初始化请求 |
748| MEDIA_KEY_REQUEST_TYPE_RENEWAL | 续订请求 |
749| MEDIA_KEY_REQUEST_TYPE_RELEASE | 释放请求 |
750| MEDIA_KEY_REQUEST_TYPE_NONE | 无请求 |
751| MEDIA_KEY_REQUEST_TYPE_UPDATE | 更新请求 |
752
753
754### DRM_MediaKeyStatus
755
756```
757enum DRM_MediaKeyStatus
758```
759
760**描述**
761
762在线许可证状态。
763
764**系统能力:** SystemCapability.Multimedia.Drm.Core
765
766**起始版本:** 11
767
768| 枚举值 | 描述 |
769| -------- | -------- |
770| MEDIA_KEY_STATUS_OK | 可用状态 |
771| MEDIA_KEY_STATUS_UNAVAILABLE | 许可证不存在 |
772
773
774### DRM_MediaKeyType
775
776```
777enum DRM_MediaKeyType
778```
779
780**描述**
781
782许可证类型。
783
784**系统能力:** SystemCapability.Multimedia.Drm.Core
785
786**起始版本:** 11
787
788| 枚举值 | 描述 |
789| -------- | -------- |
790| MEDIA_KEY_TYPE_OFFLINE | 离线 |
791| MEDIA_KEY_TYPE_ONLINE | 在线 |
792
793
794### DRM_OfflineMediaKeyStatus
795
796```
797enum DRM_OfflineMediaKeyStatus
798```
799
800**描述**
801
802离线许可证状态。
803
804**系统能力:** SystemCapability.Multimedia.Drm.Core
805
806**起始版本:** 11
807
808| 枚举值 | 描述 |
809| -------- | -------- |
810| OFFLINE_MEDIA_KEY_STATUS_UNKNOWN | 未知状态 |
811| OFFLINE_MEDIA_KEY_STATUS_USABLE | 可用状态 |
812| OFFLINE_MEDIA_KEY_STATUS_INACTIVE | 失活状态 |
813
814
815## 函数说明
816
817
818### OH_MediaKeySession_CheckMediaKeyStatus()
819
820```
821Drm_ErrCode OH_MediaKeySession_CheckMediaKeyStatus (MediaKeySession * mediaKeySessoin, DRM_MediaKeyDescription ** mediaKeyDescription )
822```
823
824**描述**
825
826检查许可证状态.
827
828**起始版本:** 11
829
830**参数:**
831
832| 名称 | 描述 |
833| -------- | -------- |
834| mediaKeySession | mediaKeySession实例。 |
835| mediaKeyDescription | 许可证状态描述。 |
836
837**返回:**
838
839参数检查错误返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
840
841
842### OH_MediaKeySession_ClearMediaKeys()
843
844```
845Drm_ErrCode OH_MediaKeySession_ClearMediaKeys (MediaKeySession * mediaKeySessoin)
846```
847
848**描述**
849
850清除当前会话的许可证 .
851
852**起始版本:** 11
853
854**参数:**
855
856| 名称 | 描述 |
857| -------- | -------- |
858| mediaKeySession | mediaKeySession实例。 |
859
860**返回:**
861
862参数检查错误返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
863
864
865### OH_MediaKeySession_Destroy()
866
867```
868Drm_ErrCode OH_MediaKeySession_Destroy (MediaKeySession * mediaKeySessoin)
869```
870
871**描述**
872
873MediaKeySession资源销毁.
874
875**起始版本:** 11
876
877**参数:**
878
879| 名称 | 描述 |
880| -------- | -------- |
881| mediaKeySession | mediaKeySession实例。 |
882
883**返回:**
884
885参数检查错误返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
886
887
888### OH_MediaKeySession_GenerateMediaKeyRequest()
889
890```
891Drm_ErrCode OH_MediaKeySession_GenerateMediaKeyRequest (MediaKeySession * mediaKeySession, DRM_MediaKeyRequestInfo * info, DRM_MediaKeyRequest ** mediaKeyRequest )
892```
893
894**描述**
895
896生成许可证请求。
897
898**起始版本:** 11
899
900**参数:**
901
902| 名称 | 描述 |
903| -------- | -------- |
904| mediaKeySession | mediaKeySession实例。 |
905| info | 许可证请求信息。 |
906| mediaKeyRequest | 许可证请求 |
907
908**返回:**
909
910Drm_ErrCode.
911
912
913### OH_MediaKeySession_GenerateOfflineReleaseRequest()
914
915```
916Drm_ErrCode OH_MediaKeySession_GenerateOfflineReleaseRequest (MediaKeySession * mediaKeySessoin, DRM_Uint8Buffer * mediaKeyId, unsigned char ** releaseRequest, int32_t * releaseRequestLen )
917```
918
919**描述**
920
921生成离线许可证释放请求。
922
923**起始版本:** 11
924
925**参数:**
926
927| 名称 | 描述 |
928| -------- | -------- |
929| mediaKeySession | mediaKeySession实例。 |
930| mediaKeyId | 许可证Id。 |
931| releaseRequest | 离线许可证请求。 |
932| releaseRequestLen | 离线许可证请求长度。 |
933
934**返回:**
935
936参数检查错误返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
937
938
939### OH_MediaKeySession_GetContentProtectionLevel()
940
941```
942Drm_ErrCode OH_MediaKeySession_GetContentProtectionLevel (MediaKeySession * mediaKeySessoin, DRM_ContentProtectionLevel * contentProtectionLevel )
943```
944
945**描述**
946
947获取当前会话的内容保护级别。
948
949**起始版本:** 11
950
951**参数:**
952
953| 名称 | 描述 |
954| -------- | -------- |
955| mediaKeySession | mediaKeySession实例。 |
956| contentProtectionLevel | 内容保护级别。 |
957
958**返回:**
959
960参数检查错误返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
961
962
963### OH_MediaKeySession_ProcessMediaKeyResponse()
964
965```
966Drm_ErrCode OH_MediaKeySession_ProcessMediaKeyResponse (MediaKeySession * keySession, DRM_Uint8Buffer * response, unsigned char ** mediaKeyId, int32_t * mediaKeyIdLen )
967```
968
969**描述**
970
971处理许可证响应。
972
973**起始版本:** 11
974
975**参数:**
976
977| 名称 | 描述 |
978| -------- | -------- |
979| mediaKeySession | mediaKeySession实例。 |
980| response | 许可证响应。 |
981| mediaKeyId | 许可证Id。 |
982| mediaKeyIdLen | 许可证Id长度。 |
983
984**返回:**
985
986参数检查错误返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
987
988
989### OH_MediaKeySession_ProcessOfflineReleaseResponse()
990
991```
992Drm_ErrCode OH_MediaKeySession_ProcessOfflineReleaseResponse (MediaKeySession * mediaKeySessoin, DRM_Uint8Buffer * mediaKeyId, DRM_Uint8Buffer * releaseReponse )
993```
994
995**描述**
996
997处理离线许可证释放响应。
998
999**起始版本:** 11
1000
1001**参数:**
1002
1003| 名称 | 描述 |
1004| -------- | -------- |
1005| mediaKeySession | mediaKeySession实例。 |
1006| mediaKeyId | 许可证Id。 |
1007| releaseReponse | 许可证响应。 |
1008
1009**返回:**
1010
1011参数检查错误返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
1012
1013
1014### OH_MediaKeySession_RequireSecureDecoderModule()
1015
1016```
1017Drm_ErrCode OH_MediaKeySession_RequireSecureDecoderModule (MediaKeySession * mediaKeySessoin, const char * mimeType, bool * status )
1018```
1019
1020**描述**
1021
1022查询是否需要安全解码.
1023
1024**起始版本:** 11
1025
1026**参数:**
1027
1028| 名称 | 描述 |
1029| -------- | -------- |
1030| mediaKeySession | mediaKeySession实例。 |
1031| mimeType | 媒体类型。 |
1032| status | 是否安全解码。 |
1033
1034**返回:**
1035
1036参数检查错误返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
1037
1038
1039### OH_MediaKeySession_RestoreOfflineMediaKeys()
1040
1041```
1042Drm_ErrCode OH_MediaKeySession_RestoreOfflineMediaKeys (MediaKeySession * mediaKeySessoin, DRM_Uint8Buffer * mediaKeyId )
1043```
1044
1045**描述**
1046
1047根据许可证ID恢复对应许可证状态。
1048
1049**起始版本:** 11
1050
1051**参数:**
1052
1053| 名称 | 描述 |
1054| -------- | -------- |
1055| mediaKeySession | mediaKeySession实例。 |
1056| mediaKeyId | 许可证Id。 |
1057
1058**返回:**
1059
1060参数检查错误返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
1061
1062
1063### OH_MediaKeySession_SetMediaKeySessionCallback()
1064
1065```
1066Drm_ErrCode OH_MediaKeySession_SetMediaKeySessionCallback (MediaKeySession * mediaKeySessoin, MediaKeySession_Callback * callback )
1067```
1068
1069**描述**
1070
1071设置MediaKeySession事件回调。
1072
1073**起始版本:** 11
1074
1075**参数:**
1076
1077| 名称 | 描述 |
1078| -------- | -------- |
1079| mediaKeySession | mediaKeySession实例。 |
1080| callback | 设置到MediaKeySession中的回调. |
1081
1082**返回:**
1083
1084参数检查错误返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
1085
1086
1087### OH_MediaKeySystem_ClearOfflineMediaKeys()
1088
1089```
1090Drm_ErrCode OH_MediaKeySystem_ClearOfflineMediaKeys (MediaKeySystem * mediaKeySystem, DRM_Uint8Buffer * mediaKeyId )
1091```
1092
1093**描述**
1094
1095根据许可证Id清理许可证.
1096
1097**起始版本:** 11
1098
1099**参数:**
1100
1101| 名称 | 描述 |
1102| -------- | -------- |
1103| mediaKeySystem | MediaKeySystem实例。 |
1104| mediaKeyId | 许可证Id. |
1105
1106**返回:**
1107
1108参数检查失败返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
1109
1110
1111### OH_MediaKeySystem_Create()
1112
1113```
1114Drm_ErrCode OH_MediaKeySystem_Create (const char * name, MediaKeySystem ** mediaKeySystem )
1115```
1116
1117**描述**
1118
1119根据方案名创建一个MediaKeySystem实例。
1120
1121**起始版本:** 11
1122
1123**参数:**
1124
1125| 名称 | 描述 |
1126| -------- | -------- |
1127| name | MediaKeySystem方案名 |
1128| mediaKeySystem | MediaKeySystem实例。 |
1129
1130**返回:**
1131
1132参数检查失败返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。 达到MediaKeySession实例最大数量返回DRM_ERR_MAX_SYSTEM_NUM_REACHED。
1133
1134
1135### OH_MediaKeySystem_CreateMediaKeySession()
1136
1137```
1138Drm_ErrCode OH_MediaKeySystem_CreateMediaKeySession (MediaKeySystem * mediaKeySystem, DRM_ContentProtectionLevel * level, MediaKeySession ** mediaKeySession )
1139```
1140
1141**描述**
1142
1143创建一个MediaKeySession实例。
1144
1145**起始版本:** 11
1146
1147**参数:**
1148
1149| 名称 | 描述 |
1150| -------- | -------- |
1151| mediaKeySystem | 用来创建MediaKeySession实例的MediaKeySystem实例。 |
1152| level | 内容保护级别。 |
1153| mediaKeySession | MediaKeySession实例。 |
1154
1155**返回:**
1156
1157参数检查失败返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。 达到MediaKeySession实例最大数量返回DRM_ERR_MAX_SESSION_NUM_REACHED。
1158
1159
1160### OH_MediaKeySystem_Destroy()
1161
1162```
1163Drm_ErrCode OH_MediaKeySystem_Destroy (MediaKeySystem * mediaKeySystem)
1164```
1165
1166**描述**
1167
1168销毁MediaKeySystem实例。
1169
1170**起始版本:** 11
1171
1172**参数:**
1173
1174| 名称 | 描述 |
1175| -------- | -------- |
1176| mediaKeySystem | 被销毁的MediaKeySystem实例。 |
1177
1178**返回:**
1179
1180参数检查失败返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
1181
1182
1183### OH_MediaKeySystem_GenerateKeySystemRequest()
1184
1185```
1186Drm_ErrCode OH_MediaKeySystem_GenerateKeySystemRequest (MediaKeySystem * mediaKeySystem, unsigned char ** request, int32_t * requestLen, char ** defaultUrl, int32_t * defaultUrlLen )
1187```
1188
1189**描述**
1190
1191生成设备证书请求。
1192
1193**起始版本:** 11
1194
1195**参数:**
1196
1197| 名称 | 描述 |
1198| -------- | -------- |
1199| mediaKeySystem | MediaKeySystem实例。 |
1200| request | Provision请求数据。 |
1201| requestLen | Provision请求长度。 |
1202| defaultUrl | Provision服务器URL。 |
1203| defaultUrlLen | Provision服务器URL长度。 |
1204
1205**返回:**
1206
1207参数检查失败返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
1208
1209
1210### OH_MediaKeySystem_GetCertificateStatus()
1211
1212```
1213Drm_ErrCode OH_MediaKeySystem_GetCertificateStatus (MediaKeySystem * mediaKeySystem, DRM_CertificateStatus * certStatus )
1214```
1215
1216**描述**
1217
1218获取设备证书状态.
1219
1220**起始版本:** 11
1221
1222**参数:**
1223
1224| 名称 | 描述 |
1225| -------- | -------- |
1226| mediaKeySystem | MediaKeySystem实例。 |
1227| certStatus | 获取的设备证书状态。 |
1228
1229**返回:**
1230
1231参数检查失败返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
1232
1233
1234### OH_MediaKeySystem_GetConfigurationByteArray()
1235
1236```
1237Drm_ErrCode OH_MediaKeySystem_GetConfigurationByteArray (MediaKeySystem * mediaKeySystem, const char * configName, unsigned char ** value, int32_t * valueLen )
1238```
1239
1240**描述**
1241
1242通过配置名获取MediaKeySystem的字符数组类型配置值。
1243
1244**起始版本:** 11
1245
1246**参数:**
1247
1248| 名称 | 描述 |
1249| -------- | -------- |
1250| mediaKeySystem | MediaKeySystem实例。 |
1251| configName | 字符串类型配置名。 |
1252| value | 字节数组形式配置值。 |
1253| valueLen | 字节数组形式配置值长度。 |
1254
1255**返回:**
1256
1257参数检查失败返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
1258
1259
1260### OH_MediaKeySystem_GetConfigurationString()
1261
1262```
1263Drm_ErrCode OH_MediaKeySystem_GetConfigurationString (MediaKeySystem * mediaKeySystem, const char * configName, char ** value, int32_t * valueLen )
1264```
1265
1266**描述**
1267
1268通过配置名获取MediaKeySystem的字符串类型配置值。
1269
1270**起始版本:** 11
1271
1272**参数:**
1273
1274| 名称 | 描述 |
1275| -------- | -------- |
1276| mediaKeySystem | MediaKeySystem实例。 |
1277| configName | 字符串类型配置名。 |
1278| value | 字符串形式配置值。 |
1279| valueLen | 字符串形式配置值长度。 |
1280
1281**返回:**
1282
1283参数检查失败返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
1284
1285
1286### OH_MediaKeySystem_GetMaxContentProtectionLevel()
1287
1288```
1289Drm_ErrCode OH_MediaKeySystem_GetMaxContentProtectionLevel (MediaKeySystem * mediaKeySystem, DRM_ContentProtectionLevel * contentProtectionLevel )
1290```
1291
1292**描述**
1293
1294获取MediaKeySystem支持的最大内容保护级别。
1295
1296**起始版本:** 11
1297
1298**参数:**
1299
1300| 名称 | 描述 |
1301| -------- | -------- |
1302| mediaKeySystem | MediaKeySystem实例。 |
1303| contentProtectionLevel | 内容保护级别。 |
1304
1305**返回:**
1306
1307参数检查失败返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
1308
1309
1310### OH_MediaKeySystem_GetMediaKeySystemName()
1311
1312```
1313Drm_ErrCode OH_MediaKeySystem_GetMediaKeySystemName (const char * uuid, unsigned char ** name, int32_t * nameLen )
1314```
1315
1316**描述**
1317
1318通过MediaKeySystem方案唯一编号获取MediaKeySystem方案名。
1319
1320**起始版本:** 11
1321
1322**参数:**
1323
1324| 名称 | 描述 |
1325| -------- | -------- |
1326| uuid | MediaKeySystem方案唯一编号。 |
1327| name | MediaKeySystem方案名。 |
1328| nameLen | MediaKeySystem方案名长度。 |
1329
1330**返回:**
1331
1332参数检查失败返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
1333
1334
1335### OH_MediaKeySystem_GetOfflineMediaKeyIds()
1336
1337```
1338Drm_ErrCode OH_MediaKeySystem_GetOfflineMediaKeyIds (MediaKeySystem * mediaKeySystem, DRM_MediakeyIdArray ** mediaKeyIds )
1339```
1340
1341**描述**
1342
1343获取离线许可证状态。
1344
1345**起始版本:** 11
1346
1347**参数:**
1348
1349| 名称 | 描述 |
1350| -------- | -------- |
1351| mediaKeySystem | MediaKeySystem实例。 |
1352| mediaKeyIds | 离线许可证Id。 |
1353
1354**返回:**
1355
1356参数检查失败返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
1357
1358
1359### OH_MediaKeySystem_GetOfflineMediaKeyStatus()
1360
1361```
1362Drm_ErrCode OH_MediaKeySystem_GetOfflineMediaKeyStatus (MediaKeySystem * mediaKeySystem, DRM_Uint8Buffer * mediaKeyId, DRM_OfflineMediaKeyStatus * status )
1363```
1364
1365**描述**
1366
1367获取离线许可证状态。
1368
1369**起始版本:** 11
1370
1371**参数:**
1372
1373| 名称 | 描述 |
1374| -------- | -------- |
1375| mediaKeySystem | MediaKeySystem实例。 |
1376| mediaKeyId | 许可证Id。 |
1377| status | 获取到的许可证状态。 |
1378
1379**返回:**
1380
1381参数检查失败返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
1382
1383
1384### OH_MediaKeySystem_GetStatistics()
1385
1386```
1387Drm_ErrCode OH_MediaKeySystem_GetStatistics (MediaKeySystem * mediaKeySystem, DRM_Statistics ** statistics )
1388```
1389
1390**描述**
1391
1392获取MediaKeySystem的度量统计信息。
1393
1394**起始版本:** 11
1395
1396**参数:**
1397
1398| 名称 | 描述 |
1399| -------- | -------- |
1400| mediaKeySystem | MediaKeySystem实例。 |
1401| statistics | 度量统计信息。 |
1402
1403**返回:**
1404
1405参数检查失败返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
1406
1407
1408### OH_MediaKeySystem_IsSupported()
1409
1410```
1411bool OH_MediaKeySystem_IsSupported (const char * name)
1412```
1413
1414**描述**
1415
1416查询设备是否支持指定MediaKeySystem方案。
1417
1418**起始版本:** 11
1419
1420**参数:**
1421
1422| 名称 | 描述 |
1423| -------- | -------- |
1424| name | MediaKeySystem方案名。 |
1425
1426**返回:**
1427
1428支持与否。
1429
1430
1431### OH_MediaKeySystem_IsSupported2()
1432
1433```
1434bool OH_MediaKeySystem_IsSupported2 (const char * name, const char * mimeType )
1435```
1436
1437**描述**
1438
1439查询设备是否支持指定MediaKeySystem方案、指定媒体类型。
1440
1441**起始版本:** 11
1442
1443**参数:**
1444
1445| 名称 | 描述 |
1446| -------- | -------- |
1447| name | MediaKeySystem方案名。 |
1448| mimeType | 媒体类型。 |
1449
1450**返回:**
1451
1452支持与否。
1453
1454
1455### OH_MediaKeySystem_IsSupported3()
1456
1457```
1458bool OH_MediaKeySystem_IsSupported3 (const char * name, const char * mimeType, DRM_ContentProtectionLevel contentProtectionLevel )
1459```
1460
1461**描述**
1462
1463查询设备是否支持指定MediaKeySystem方案、指定媒体类型、指定内容保护级别。
1464
1465**起始版本:** 11
1466
1467**参数:**
1468
1469| 名称 | 描述 |
1470| -------- | -------- |
1471| name | MediaKeySystem方案名。 |
1472| mimeType | 媒体类型。 |
1473| contentProtectionLevel | 内容保护级别。 |
1474
1475**返回:**
1476
1477支持与否。
1478
1479
1480### OH_MediaKeySystem_ProcessKeySystemResponse()
1481
1482```
1483Drm_ErrCode OH_MediaKeySystem_ProcessKeySystemResponse (MediaKeySystem * mediaKeySystem, DRM_Uint8Buffer * response )
1484```
1485
1486**描述**
1487
1488处理设备证书响应。
1489
1490**起始版本:** 11
1491
1492**参数:**
1493
1494| 名称 | 描述 |
1495| -------- | -------- |
1496| mediaKeySystem | MediaKeySystem实例。 |
1497| response | 设备证书响应。 |
1498
1499**返回:**
1500
1501参数检查失败返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
1502
1503
1504### OH_MediaKeySystem_SetConfigurationByteArray()
1505
1506```
1507Drm_ErrCode OH_MediaKeySystem_SetConfigurationByteArray (MediaKeySystem * mediaKeySystem, const char * configName, DRM_Uint8Buffer * value )
1508```
1509
1510**描述**
1511
1512通过配置名设置MediaKeySystem的字符数组类型配置值。
1513
1514**起始版本:** 11
1515
1516**参数:**
1517
1518| 名称 | 描述 |
1519| -------- | -------- |
1520| mediaKeySystem | MediaKeySystem实例。 |
1521| configName | 字符串类型配置名。 |
1522| value | 字节数组形式配置值。 |
1523| valueLen | 字节数组形式配置值长度。 |
1524
1525**返回:**
1526
1527参数检查失败返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
1528
1529
1530### OH_MediaKeySystem_SetConfigurationString()
1531
1532```
1533Drm_ErrCode OH_MediaKeySystem_SetConfigurationString (MediaKeySystem * mediaKeySystem, const char * configName, const char * value )
1534```
1535
1536**描述**
1537
1538通过配置名设置MediaKeySystem的字符串类型配置值。
1539
1540**起始版本:** 11
1541
1542**参数:**
1543
1544| 名称 | 描述 |
1545| -------- | -------- |
1546| mediaKeySystem | MediaKeySystem实例。 |
1547| configName | 字符串类型配置名。 |
1548| value | 字符串形式配置值。 |
1549| valueLen | 字符串形式配置值长度。 |
1550
1551**返回:**
1552
1553参数检查失败返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
1554
1555
1556### OH_MediaKeySystem_SetMediaKeySystemCallback()
1557
1558```
1559Drm_ErrCode OH_MediaKeySystem_SetMediaKeySystemCallback (MediaKeySystem * mediaKeySystem, MediaKeySystem_Callback callback )
1560```
1561
1562**描述**
1563
1564设置MediaKeySystem回调监听。
1565
1566**起始版本:** 11
1567
1568**参数:**
1569
1570| 名称 | 描述 |
1571| -------- | -------- |
1572| mediaKeySystem | MediaKeySystem实例。 |
1573| callback | 设置到MediaKeySystem中的回调函数。 |
1574
1575**返回:**
1576
1577参数检查失败返回DRM_ERR_INVALID_VAL, 调用成功返回DRM_ERR_OK。
1578
1579
1580## 变量说明
1581
1582
1583### buffer [1/2]
1584
1585```
1586unsigned char* DRM_Uint8Buffer::buffer
1587```
1588
1589**描述**
1590
1591数组首地址
1592
1593
1594### buffer [2/2]
1595
1596```
1597char* DRM_CharBuffer::buffer
1598```
1599
1600**描述**
1601
1602数组首地址
1603
1604
1605### bufferLen [1/2]
1606
1607```
1608uint32_t DRM_Uint8Buffer::bufferLen
1609```
1610
1611**描述**
1612
1613数组长度
1614
1615
1616### bufferLen [2/2]
1617
1618```
1619uint32_t DRM_CharBuffer::bufferLen
1620```
1621
1622**描述**
1623
1624数组长度
1625
1626
1627### data [1/3]
1628
1629```
1630DRM_Uint8Buffer DRM_MediaKeyRequestInfo::data
1631```
1632
1633**描述**
1634
1635base64编码后的pssh数据
1636
1637
1638### data [2/3]
1639
1640```
1641DRM_Uint8Buffer DRM_MediaKeyRequest::data
1642```
1643
1644**描述**
1645
1646许可证请求数据
1647
1648
1649### data [3/3]
1650
1651```
1652unsigned char* DRM_PsshInfo::data
1653```
1654
1655**描述**
1656
1657PSSH数据
1658
1659
1660### dataLen
1661
1662```
1663uint32_t DRM_PsshInfo::dataLen
1664```
1665
1666**描述**
1667
1668PSSH数据长度
1669
1670
1671### defaultUrl
1672
1673```
1674DRM_CharBuffer DRM_MediaKeyRequest::defaultUrl
1675```
1676
1677**描述**
1678
1679许可证服务器URL
1680
1681
1682### description
1683
1684```
1685DRM_CharBufferPair DRM_MediaKeyDescription::description[0]
1686```
1687
1688**描述**
1689
1690许可证信息数组
1691
1692
1693### eventCallback
1694
1695```
1696MediaKeySession_EventCallback MediaKeySession_Callback::eventCallback
1697```
1698
1699**描述**
1700
1701KeySession回调事件,如许可证过期。
1702
1703
1704### info
1705
1706```
1707DRM_CharBufferPair DRM_Statistics::info[0]
1708```
1709
1710**描述**
1711
1712度量信息数组
1713
1714
1715### key
1716
1717```
1718DRM_Uint8Buffer DRM_Uint8CharBufferPair::key
1719```
1720
1721**描述**
1722
1723名字
1724
1725
1726### keyChangeCallback
1727
1728```
1729MediaKeySession_KeyChangeCallback MediaKeySession_Callback::keyChangeCallback
1730```
1731
1732**描述**
1733
1734密钥变化事件触发的keyChange事件。
1735
1736
1737### keysCount
1738
1739```
1740uint32_t DRM_KeysInfo::keysCount
1741```
1742
1743**描述**
1744
1745密钥信息数组长度
1746
1747
1748### keysInfo
1749
1750```
1751DRM_Uint8CharBufferPair DRM_KeysInfo::keysInfo[0]
1752```
1753
1754**描述**
1755
1756密钥信息数组
1757
1758
1759### mediaKeyCount
1760
1761```
1762uint32_t DRM_MediaKeyDescription::mediaKeyCount
1763```
1764
1765**描述**
1766
1767许可证信息数组长度
1768
1769
1770### mediaKeyIdCount
1771
1772```
1773uint32_t DRM_MediakeyIdArray::mediaKeyIdCount
1774```
1775
1776**描述**
1777
1778许可证Id数组长度
1779
1780
1781### mediaKeyIds
1782
1783```
1784DRM_Uint8Buffer DRM_MediakeyIdArray::mediaKeyIds[0]
1785```
1786
1787**描述**
1788
1789许可证Id数组
1790
1791
1792### mimeType
1793
1794```
1795DRM_CharBuffer DRM_MediaKeyRequestInfo::mimeType
1796```
1797
1798**描述**
1799
1800媒体类型
1801
1802
1803### name
1804
1805```
1806DRM_CharBuffer DRM_CharBufferPair::name
1807```
1808
1809**描述**
1810
1811名字
1812
1813
1814### optionsCount
1815
1816```
1817uint32_t DRM_MediaKeyRequestInfo::optionsCount
1818```
1819
1820**描述**
1821
1822操作数数组长度
1823
1824
1825### optionsData
1826
1827```
1828DRM_CharBufferPair DRM_MediaKeyRequestInfo::optionsData[0]
1829```
1830
1831**描述**
1832
1833操作数数组
1834
1835
1836### psshCount
1837
1838```
1839uint32_t DRM_MediaKeySystemInfo::psshCount
1840```
1841
1842**描述**
1843
1844PSSH信息数组长度
1845
1846
1847### psshInfo
1848
1849```
1850DRM_PsshInfo DRM_MediaKeySystemInfo::psshInfo[0]
1851```
1852
1853**描述**
1854
1855PSSH信息数组
1856
1857
1858### statisticsCount
1859
1860```
1861uint32_t DRM_Statistics::statisticsCount
1862```
1863
1864**描述**
1865
1866度量信息数组长度
1867
1868
1869### type [1/2]
1870
1871```
1872DRM_MediaKeyType DRM_MediaKeyRequestInfo::type
1873```
1874
1875**描述**
1876
1877许可证类型
1878
1879
1880### type [2/2]
1881
1882```
1883DRM_MediaKeyRequestType DRM_MediaKeyRequest::type
1884```
1885
1886**描述**
1887
1888许可证请求类型
1889
1890
1891### uuid
1892
1893```
1894char DRM_PsshInfo::uuid[DRM_UUID_LEN]
1895```
1896
1897**描述**
1898
1899DRM插件类型名
1900
1901
1902### value [1/2]
1903
1904```
1905DRM_CharBuffer DRM_CharBufferPair::value
1906```
1907
1908**描述**
1909
19101911
1912
1913### value [2/2]
1914
1915```
1916DRM_CharBuffer DRM_Uint8CharBufferPair::value
1917```
1918
1919**描述**
1920
19211922