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 46**起始版本:** 4.1 47 48**参数:** 49 50| 名称 | 描述 | 51| -------- | -------- | 52| mediaKeyStatus | 许可证状态。 | 53 54**返回:** 55 560 表示执行成功。 57 58其他值表示执行失败。 59 60 61### ClearMediaKeys() 62 63``` 64IMediaKeySession::ClearMediaKeys () 65``` 66**描述** 67 68删除许可证。 69 70**起始版本:** 4.1 71 72**返回:** 73 740 表示执行成功。 75 76其他值表示执行失败。 77 78 79### Destroy() 80 81``` 82IMediaKeySession::Destroy () 83``` 84**描述** 85 86销毁DRM会话。 87 88**起始版本:** 4.1 89 90**返回:** 91 920 表示执行成功。 93 94其他值表示执行失败。 95 96 97### GenerateMediaKeyRequest() 98 99``` 100IMediaKeySession::GenerateMediaKeyRequest ([in] struct MediaKeyRequestInfo mediaKeyRequestInfo, [out] struct MediaKeyRequest mediaKeyRequest ) 101``` 102**描述** 103 104产生获取许可证请求。 105 106**起始版本:** 4.1 107 108**参数:** 109 110| 名称 | 描述 | 111| -------- | -------- | 112| mediaKeyRequestInfo | 用于产生许可证请求的初始信息。 | 113| mediaKeyRequest | 许可证请求。 | 114 115**返回:** 116 1170 表示执行成功。 118 119其他值表示执行失败。 120 121 122### GetContentProtectionLevel() 123 124``` 125IMediaKeySession::GetContentProtectionLevel ([out] enum ContentProtectionLevel level) 126``` 127**描述** 128 129获取当前DRM会话的内容保护级别。 130 131**起始版本:** 4.1 132 133**参数:** 134 135| 名称 | 描述 | 136| -------- | -------- | 137| level | 内容保护级别。 | 138 139**返回:** 140 1410 表示执行成功。 142 143其他值表示执行失败。 144 145 146### GetMediaDecryptModule() 147 148``` 149IMediaKeySession::GetMediaDecryptModule ([out] IMediaDecryptModule decryptModule) 150``` 151**描述** 152 153获取解密模块实例。 154 155**起始版本:** 4.1 156 157**参数:** 158 159| 名称 | 描述 | 160| -------- | -------- | 161| decryptModule | 解密模块实例。 | 162 163**返回:** 164 1650 表示执行成功。 166 167其他值表示执行失败。 168 169 170### GetOfflineReleaseRequest() 171 172``` 173IMediaKeySession::GetOfflineReleaseRequest ([in] unsigned char[] mediaKeyId, [out] unsigned char[] releaseRequest ) 174``` 175**描述** 176 177产生离线许可证释放请求。 178 179**起始版本:** 4.1 180 181**参数:** 182 183| 名称 | 描述 | 184| -------- | -------- | 185| mediaKeyId | 离线许可证索引。 | 186| releaseRequest | 离线许可证释放请求。 | 187 188**返回:** 189 1900 表示执行成功。 191 192其他值表示执行失败。 193 194 195### ProcessMediaKeyResponse() 196 197``` 198IMediaKeySession::ProcessMediaKeyResponse ([in] unsigned char[] mediaKeyResponse, [out] unsigned char[] mediaKeyId ) 199``` 200**描述** 201 202处理许可证响应。 203 204**起始版本:** 4.1 205 206**参数:** 207 208| 名称 | 描述 | 209| -------- | -------- | 210| mediaKeyResponse | 待处理的许可证响应。 | 211| mediaKeyId | 对于离线许可证类型,表示索引;在线许可证类型下,值为空。 | 212 213**返回:** 214 2150 表示执行成功。 216 217其他值表示执行失败。 218 219 220### ProcessOfflineReleaseResponse() 221 222``` 223IMediaKeySession::ProcessOfflineReleaseResponse ([in] unsigned char[] mediaKeyId, [in] unsigned char[] response ) 224``` 225**描述** 226 227处理离线许可证释放响应。 228 229**起始版本:** 4.1 230 231**参数:** 232 233| 名称 | 描述 | 234| -------- | -------- | 235| mediaKeyId | 离线许可证索引。 | 236| response | 离线许可证释放响应。 | 237 238**返回:** 239 2400 表示执行成功。 241 242其他值表示执行失败。 243 244 245### RequiresSecureDecoderModule() 246 247``` 248IMediaKeySession::RequiresSecureDecoderModule ([in] String mimeType, [out] boolean required ) 249``` 250**描述** 251 252判断是否需要安全内存用于存放解密后的数据。 253 254**起始版本:** 4.1 255 256**参数:** 257 258| 名称 | 描述 | 259| -------- | -------- | 260| mimeType | 待解密内容的MIME类型。 | 261| required | 布尔值表示是否需要安全内存,true表示需要安全内存存储解密后的视频帧, flase表示不需要安全内存存储解密后的视频帧。 | 262 263**返回:** 264 2650 表示执行成功。 266 267其他值表示执行失败。 268 269 270### RestoreOfflineMediaKeys() 271 272``` 273IMediaKeySession::RestoreOfflineMediaKeys ([in] unsigned char[] mediaKeyId) 274``` 275**描述** 276 277恢复离线许可证至当前会话。 278 279**起始版本:** 4.1 280 281**参数:** 282 283| 名称 | 描述 | 284| -------- | -------- | 285| mediaKeyId | 离线许可证索引。 | 286 287**返回:** 288 2890 表示执行成功。 290 291其他值表示执行失败。 292 293 294### SetCallback() 295 296``` 297IMediaKeySession::SetCallback ([in] IMediaKeySessionCallback sessionCallback) 298``` 299**描述** 300 301设置DRM会话事件通知接口。 302 303**起始版本:** 4.1 304 305**参数:** 306 307| 名称 | 描述 | 308| -------- | -------- | 309| sessionCallback | DRM实例事件通知接口。 | 310 311**返回:** 312 3130 表示执行成功。 314 315其他值表示执行失败。 316