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