1# IMediaKeySession 2 3 4## 概述 5 6DRM会话功能接口,获取/设置许可证、查询当前会话许可证状态、删除当前会话许可证、释放许可证、恢复离线许可证、 判断是否需要安全内存中解密、获取解密模块实例、设置会话消息通知接口、销毁会话。 7 8**起始版本:** 4.1 9 10**相关模块:**[HdiDrm](_hdi_drm.md) 11 12 13## 汇总 14 15 16### Public 成员函数 17 18| 名称 | 描述 | 19| -------- | -------- | 20| [GenerateMediaKeyRequest](#generatemediakeyrequest) ([in] struct [MediaKeyRequestInfo](_media_key_request_info.md) mediaKeyRequestInfo, [out] struct [MediaKeyRequest](_media_key_request.md) mediaKeyRequest) | 产生获取许可证请求。 | 21| [ProcessMediaKeyResponse](#processmediakeyresponse) ([in] unsigned char[] mediaKeyResponse, [out] unsigned char[] mediaKeyId) | 处理许可证响应。 | 22| [CheckMediaKeyStatus](#checkmediakeystatus) ([out] Map< String, String > mediaKeyStatus) | 查询许可证状态(包括策略等信息)。 | 23| [ClearMediaKeys](#clearmediakeys) () | 删除许可证。 | 24| [GetOfflineReleaseRequest](#getofflinereleaserequest) ([in] unsigned char[] mediaKeyId, [out] unsigned char[] releaseRequest) | 产生离线许可证释放请求。 | 25| [ProcessOfflineReleaseResponse](#processofflinereleaseresponse) ([in] unsigned char[] mediaKeyId, [in] unsigned char[] response) | 处理离线许可证释放响应。 | 26| [RestoreOfflineMediaKeys](#restoreofflinemediakeys) ([in] unsigned char[] mediaKeyId) | 恢复离线许可证至当前会话。 | 27| [GetContentProtectionLevel](#getcontentprotectionlevel) ([out] enum [ContentProtectionLevel](_hdi_drm.md#contentprotectionlevel) level) | 获取当前DRM会话的内容保护级别。 | 28| [RequiresSecureDecoderModule](#requiressecuredecodermodule) ([in] String mimeType, [out] boolean required) | 判断是否需要安全内存用于存放解密后的数据。 | 29| [SetCallback](#setcallback) ([in] [IMediaKeySessionCallback](interface_i_media_key_session_callback.md) sessionCallback) | 设置DRM会话事件通知接口。 | 30| [GetMediaDecryptModule](#getmediadecryptmodule) ([out] [IMediaDecryptModule](interface_i_media_decrypt_module.md) decryptModule) | 获取解密模块实例。 | 31| [Destroy](#destroy) () | 销毁DRM会话。 | 32 33 34## 成员函数说明 35 36 37### CheckMediaKeyStatus() 38 39``` 40IMediaKeySession::CheckMediaKeyStatus ([out] Map< String, String > mediaKeyStatus) 41``` 42**描述** 43查询许可证状态(包括策略等信息)。 44 45**起始版本:** 4.1 46 47**参数:** 48 49| 名称 | 描述 | 50| -------- | -------- | 51| mediaKeyStatus | 许可证状态。 | 52 53**返回:** 54 550 表示执行成功。 56 57其他值表示执行失败。 58 59 60### ClearMediaKeys() 61 62``` 63IMediaKeySession::ClearMediaKeys () 64``` 65**描述** 66删除许可证。 67 68**起始版本:** 4.1 69 70**返回:** 71 720 表示执行成功。 73 74其他值表示执行失败。 75 76 77### Destroy() 78 79``` 80IMediaKeySession::Destroy () 81``` 82**描述** 83销毁DRM会话。 84 85**起始版本:** 4.1 86 87**返回:** 88 890 表示执行成功。 90 91其他值表示执行失败。 92 93 94### GenerateMediaKeyRequest() 95 96``` 97IMediaKeySession::GenerateMediaKeyRequest ([in] struct MediaKeyRequestInfo mediaKeyRequestInfo, [out] struct MediaKeyRequest mediaKeyRequest ) 98``` 99**描述** 100产生获取许可证请求。 101 102**起始版本:** 4.1 103 104**参数:** 105 106| 名称 | 描述 | 107| -------- | -------- | 108| mediaKeyRequestInfo | 用于产生许可证请求的初始信息。 | 109| mediaKeyRequest | 许可证请求。 | 110 111**返回:** 112 1130 表示执行成功。 114 115其他值表示执行失败。 116 117 118### GetContentProtectionLevel() 119 120``` 121IMediaKeySession::GetContentProtectionLevel ([out] enum ContentProtectionLevel level) 122``` 123**描述** 124获取当前DRM会话的内容保护级别。 125 126**起始版本:** 4.1 127 128**参数:** 129 130| 名称 | 描述 | 131| -------- | -------- | 132| level | 内容保护级别。 | 133 134**返回:** 135 1360 表示执行成功。 137 138其他值表示执行失败。 139 140 141### GetMediaDecryptModule() 142 143``` 144IMediaKeySession::GetMediaDecryptModule ([out] IMediaDecryptModule decryptModule) 145``` 146**描述** 147获取解密模块实例。 148 149**起始版本:** 4.1 150 151**参数:** 152 153| 名称 | 描述 | 154| -------- | -------- | 155| decryptModule | 解密模块实例。 | 156 157**返回:** 158 1590 表示执行成功。 160 161其他值表示执行失败。 162 163 164### GetOfflineReleaseRequest() 165 166``` 167IMediaKeySession::GetOfflineReleaseRequest ([in] unsigned char[] mediaKeyId, [out] unsigned char[] releaseRequest ) 168``` 169**描述** 170产生离线许可证释放请求。 171 172**起始版本:** 4.1 173 174**参数:** 175 176| 名称 | 描述 | 177| -------- | -------- | 178| mediaKeyId | 离线许可证索引。 | 179| releaseRequest | 离线许可证释放请求。 | 180 181**返回:** 182 1830 表示执行成功。 184 185其他值表示执行失败。 186 187 188### ProcessMediaKeyResponse() 189 190``` 191IMediaKeySession::ProcessMediaKeyResponse ([in] unsigned char[] mediaKeyResponse, [out] unsigned char[] mediaKeyId ) 192``` 193**描述** 194处理许可证响应。 195 196**起始版本:** 4.1 197 198**参数:** 199 200| 名称 | 描述 | 201| -------- | -------- | 202| mediaKeyResponse | 待处理的许可证响应。 | 203| mediaKeyId | 对于离线许可证类型,表示索引;在线许可证类型下,值为空。 | 204 205**返回:** 206 2070 表示执行成功。 208 209其他值表示执行失败。 210 211 212### ProcessOfflineReleaseResponse() 213 214``` 215IMediaKeySession::ProcessOfflineReleaseResponse ([in] unsigned char[] mediaKeyId, [in] unsigned char[] response ) 216``` 217**描述** 218处理离线许可证释放响应。 219 220**起始版本:** 4.1 221 222**参数:** 223 224| 名称 | 描述 | 225| -------- | -------- | 226| mediaKeyId | 离线许可证索引。 | 227| response | 离线许可证释放响应。 | 228 229**返回:** 230 2310 表示执行成功。 232 233其他值表示执行失败。 234 235 236### RequiresSecureDecoderModule() 237 238``` 239IMediaKeySession::RequiresSecureDecoderModule ([in] String mimeType, [out] boolean required ) 240``` 241**描述** 242判断是否需要安全内存用于存放解密后的数据。 243 244**起始版本:** 4.1 245 246**参数:** 247 248| 名称 | 描述 | 249| -------- | -------- | 250| mimeType | 待解密内容的MIME类型。 | 251| required | 布尔值表示是否需要安全内存,true表示需要安全内存存储解密后的视频帧, flase表示不需要安全内存存储解密后的视频帧。 | 252 253**返回:** 254 2550 表示执行成功。 256 257其他值表示执行失败。 258 259 260### RestoreOfflineMediaKeys() 261 262``` 263IMediaKeySession::RestoreOfflineMediaKeys ([in] unsigned char[] mediaKeyId) 264``` 265**描述** 266恢复离线许可证至当前会话。 267 268**起始版本:** 4.1 269 270**参数:** 271 272| 名称 | 描述 | 273| -------- | -------- | 274| mediaKeyId | 离线许可证索引。 | 275 276**返回:** 277 2780 表示执行成功。 279 280其他值表示执行失败。 281 282 283### SetCallback() 284 285``` 286IMediaKeySession::SetCallback ([in] IMediaKeySessionCallback sessionCallback) 287``` 288**描述** 289设置DRM会话事件通知接口。 290 291**起始版本:** 4.1 292 293**参数:** 294 295| 名称 | 描述 | 296| -------- | -------- | 297| sessionCallback | DRM实例事件通知接口。 | 298 299**返回:** 300 3010 表示执行成功。 302 303其他值表示执行失败。 304