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/>**引用文件:** <multimedia/drm_framework/native_drm_common.h><br/>**库:** libnative_drm.z.so | 19| [native_drm_err.h](native__drm__err_8h.md) | 定义DRM错误码。<br/>**引用文件:** <multimedia/drm_framework/native_drm_err.h><br/>**库:** libnative_drm.z.so | 20| [native_mediakeysession.h](native__mediakeysession_8h.md) | 定义Drm MediaKeySession API。<br/>**引用文件:** <multimedia/drm_framework/native_mediakeysession.h><br/>**库:** libnative_drm.z.so | 21| [native_mediakeysystem.h](native__mediakeysystem_8h.md) | 定义Drm MediaKeySystem API。<br/>**引用文件:** <multimedia/drm_framework/native_mediakeysystem.h><br/>**库:** libnative_drm.z.so | 22 23 24### 结构体 25 26| 名称 | 描述 | 27| -------- | -------- | 28| struct [DRM_Uint8Buffer](_d_r_m___uint8_buffer.md) | DRM uint_8 数组类型。 | 29| struct [DRM_CharBuffer](_d_r_m___char_buffer.md) | DRM 字符数组类型。 | 30| struct [DRM_CharBufferPair](_d_r_m___char_buffer_pair.md) | 字符数组类型的名值对。 | 31| struct [DRM_Uint8CharBufferPair](_d_r_m___uint8_char_buffer_pair.md) | 整形数组类型的名值对。 | 32| struct [DRM_MediaKeyRequestInfo](_d_r_m___media_key_request_info.md) | 许可证请求参数类型。 | 33| struct [DRM_MediaKeyRequest](_d_r_m___media_key_request.md) | 许可证请求类型。 | 34| struct [DRM_Statistics](_d_r_m___statistics.md) | DRM度量统计信息。 | 35| struct [DRM_MediakeyIdArray](_d_r_m___mediakey_id_array.md) | 离线许可证Id数组。 | 36| struct [DRM_KeysInfo](_d_r_m___keys_info.md) | 密钥信息。 | 37| struct [DRM_MediaKeyDescription](_d_r_m___media_key_description.md) | 在线许可证描述信息。 | 38| struct [DRM_PsshInfo](_d_r_m___pssh_info.md) | DRM Pssh信息。 | 39| struct [DRM_MediaKeySystemInfo](_d_r_m___media_key_system_info.md) | 从媒体源获取的DRM信息。 | 40| struct [MediaKeySession_Callback](_media_key_session___callback.md) | MediaKeySession回调结构体, 用来监听密钥过期、密钥变化等事件。 | 41 42 43### 宏定义 44 45| 名称 | 描述 | 46| -------- | -------- | 47| [DRM_UUID_LEN](#drm_uuid_len) 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 1910值 1911 1912 1913### value [2/2] 1914 1915``` 1916DRM_CharBuffer DRM_Uint8CharBufferPair::value 1917``` 1918 1919**描述** 1920 1921值 1922