• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# native_mediakeysession.h
2
3## 概述
4
5定义Drm MediaKeySession API。提供以下功能:<br> 生成媒体密钥请求、处理媒体密钥响应、事件监听、获取内容保护级别、检查媒体密钥状态、删除媒体密钥等。
6
7**引用文件:** <multimedia/drm_framework/native_mediakeysession.h>
8
9**库:** libnative_drm.z.so
10
11**系统能力:** SystemCapability.Multimedia.Drm.Core
12
13**起始版本:** 11
14
15**相关模块:** [Drm](capi-drm.md)
16
17## 汇总
18
19### 结构体
20
21| 名称 | typedef关键字 | 描述 |
22| -- | -- | -- |
23| [MediaKeySession_Callback](capi-drm-mediakeysession-callback.md) | MediaKeySession_Callback | MediaKeySession_Callback结构体,用于监听密钥过期、密钥更改等事件,不返回媒体密钥会话实例,适用于单媒体密钥会话解密场景。 |
24| [OH_MediaKeySession_Callback](capi-drm-oh-mediakeysession-callback.md) | OH_MediaKeySession_Callback | OH_MediaKeySession_Callback结构体,用于监听密钥过期、密钥更改等事件,返回媒体密钥会话实例,适用多个媒体密钥会话解密场景。 |
25
26### 函数
27
28| 名称 | typedef关键字 | 描述 |
29| -- | -- | -- |
30| [typedef  Drm_ErrCode (\*MediaKeySession_EventCallback)(DRM_EventType eventType, uint8_t *info,int32_t infoLen, char *extra)](#mediakeysession_eventcallback) | MediaKeySession_EventCallback | MediaKeySession事件触发时将调用的回调,如密钥过期事件。 |
31| [typedef  Drm_ErrCode (\*MediaKeySession_KeyChangeCallback)(DRM_KeysInfo *keysInfo, bool newKeysAvailable)](#mediakeysession_keychangecallback) | MediaKeySession_KeyChangeCallback | 密钥变换时将调用回调。 |
32| [typedef Drm_ErrCode (\*OH_MediaKeySession_EventCallback)(MediaKeySession *mediaKeySession, DRM_EventType eventType,uint8_t *info, int32_t infoLen, char *extra)](#oh_mediakeysession_eventcallback) | OH_MediaKeySession_EventCallback | 事件触发时将调用的回调。 |
33| [typedef Drm_ErrCode (\*OH_MediaKeySession_KeyChangeCallback)(MediaKeySession *mediaKeySession, DRM_KeysInfo *keysInfo, bool newKeysAvailable)](#oh_mediakeysession_keychangecallback) | OH_MediaKeySession_KeyChangeCallback | 密钥变换时将调用的回调。 |
34| [Drm_ErrCode OH_MediaKeySession_GenerateMediaKeyRequest(MediaKeySession *mediaKeySession, DRM_MediaKeyRequestInfo *info, DRM_MediaKeyRequest *mediaKeyRequest)](#oh_mediakeysession_generatemediakeyrequest) | - | 生成媒体密钥请求。 |
35| [Drm_ErrCode OH_MediaKeySession_ProcessMediaKeyResponse(MediaKeySession *mediaKeySession, uint8_t *response, int32_t responseLen, uint8_t *offlineMediaKeyId, int32_t *offlineMediaKeyIdLen)](#oh_mediakeysession_processmediakeyresponse) | - | 处理媒体密钥请求响应。 |
36| [Drm_ErrCode OH_MediaKeySession_CheckMediaKeyStatus(MediaKeySession *mediaKeySession, DRM_MediaKeyStatus *mediaKeyStatus)](#oh_mediakeysession_checkmediakeystatus) | - | 检查媒体密钥状态。 |
37| [Drm_ErrCode OH_MediaKeySession_ClearMediaKeys(MediaKeySession *mediaKeySession)](#oh_mediakeysession_clearmediakeys) | - | 清除当前会话的媒体密钥。 |
38| [Drm_ErrCode OH_MediaKeySession_GenerateOfflineReleaseRequest(MediaKeySession *mediaKeySession, uint8_t *offlineMediaKeyId, int32_t offlineMediaKeyIdLen, uint8_t *releaseRequest,int32_t *releaseRequestLen)](#oh_mediakeysession_generateofflinereleaserequest) | - | 生成离线媒体密钥释放请求。 |
39| [Drm_ErrCode OH_MediaKeySession_ProcessOfflineReleaseResponse(MediaKeySession *mediaKeySession, uint8_t *offlineMediaKeyId, int32_t offlineMediaKeyIdLen, uint8_t *releaseReponse,int32_t releaseReponseLen)](#oh_mediakeysession_processofflinereleaseresponse) | - | 处理离线媒体密钥释放请求响应。 |
40| [Drm_ErrCode OH_MediaKeySession_RestoreOfflineMediaKeys(MediaKeySession *mediaKeySession, uint8_t *offlineMediaKeyId, int32_t offlineMediaKeyIdLen)](#oh_mediakeysession_restoreofflinemediakeys) | - | 恢复离线媒体密钥到当前会话。 |
41| [Drm_ErrCode OH_MediaKeySession_GetContentProtectionLevel(MediaKeySession *mediaKeySession, DRM_ContentProtectionLevel *contentProtectionLevel)](#oh_mediakeysession_getcontentprotectionlevel) | - | 获取会话的内容保护级别。 |
42| [Drm_ErrCode OH_MediaKeySession_RequireSecureDecoderModule(MediaKeySession *mediaKeySession, const char *mimeType, bool *status)](#oh_mediakeysession_requiresecuredecodermodule) | - | 是否需要安全解码。 |
43| [Drm_ErrCode OH_MediaKeySession_SetMediaKeySessionCallback(MediaKeySession *mediaKeySession, MediaKeySession_Callback *callback)](#oh_mediakeysession_setmediakeysessioncallback) | - | 设置MediaKeySession会话事件回调。 |
44| [Drm_ErrCode OH_MediaKeySession_SetCallback(MediaKeySession *mediaKeySession, OH_MediaKeySession_Callback *callback)](#oh_mediakeysession_setcallback) | - | 设置MediaKeySession事件回调。 |
45| [Drm_ErrCode OH_MediaKeySession_Destroy(MediaKeySession *mediaKeySession)](#oh_mediakeysession_destroy) | - | 销毁MediaKeySession实例。 |
46
47## 函数说明
48
49### MediaKeySession_EventCallback()
50
51```
52typedef  Drm_ErrCode (*MediaKeySession_EventCallback)(DRM_EventType eventType, uint8_t *info,int32_t infoLen, char *extra)
53```
54
55**描述**
56
57MediaKeySession事件触发时将调用的回调,如密钥过期事件。
58
59**起始版本:** 11
60
61
62**参数:**
63
64| 参数项 | 描述 |
65| -- | -- |
66| [DRM_EventType](capi-native-drm-common-h.md#drm_eventtype) eventType | 事件类型。 |
67|  uint8_t *info | 从媒体密钥会话获取的事件信息。 |
68| int32_t infoLen | 事件信息长度。 |
69|  char *extra | 从媒体密钥会话中获得的额外信息。 |
70
71**返回:**
72
73| 类型 | 说明 |
74| -- | -- |
75| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | 错误码。 |
76
77### MediaKeySession_KeyChangeCallback()
78
79```
80typedef  Drm_ErrCode (*MediaKeySession_KeyChangeCallback)(DRM_KeysInfo *keysInfo, bool newKeysAvailable)
81```
82
83**描述**
84
85密钥变换时将调用回调。
86
87**起始版本:** 11
88
89
90**参数:**
91
92| 参数项 | 描述 |
93| -- | -- |
94| [DRM_KeysInfo](capi-drm-drm-keysinfo.md) *keysInfo | 密钥信息。 |
95|  bool newKeysAvailable | 新密钥是否可用。 |
96
97**返回:**
98
99| 类型 | 说明 |
100| -- | -- |
101| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_INVALID_VAL:参数检查失败。 |
102
103### OH_MediaKeySession_EventCallback()
104
105```
106typedef Drm_ErrCode (*OH_MediaKeySession_EventCallback)(MediaKeySession *mediaKeySession, DRM_EventType eventType,uint8_t *info, int32_t infoLen, char *extra)
107```
108
109**描述**
110
111事件触发时将调用的回调。
112
113**起始版本:** 12
114
115
116**参数:**
117
118| 参数项 | 描述 |
119| -- | -- |
120| [MediaKeySession](capi-drm-mediakeysession.md) *mediaKeySession | 会话实例。 |
121| [DRM_EventType](capi-native-drm-common-h.md#drm_eventtype) eventType | 事件类型。 |
122| uint8_t *info | 事件信息。 |
123|  int32_t infoLen | 事件信息长度。 |
124|  char *extra | 增量信息。 |
125
126**返回:**
127
128| 类型 | 说明 |
129| -- | -- |
130| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | 错误码。 |
131
132### OH_MediaKeySession_KeyChangeCallback()
133
134```
135typedef Drm_ErrCode (*OH_MediaKeySession_KeyChangeCallback)(MediaKeySession *mediaKeySession, DRM_KeysInfo *keysInfo,bool newKeysAvailable)
136```
137
138**描述**
139
140密钥变换时将调用的回调。
141
142**起始版本:** 12
143
144
145**参数:**
146
147| 参数项 | 描述 |
148| -- | -- |
149| [MediaKeySession](capi-drm-mediakeysession.md) *mediaKeySession | 媒体密钥会话实例。 |
150| [DRM_KeysInfo](capi-drm-drm-keysinfo.md) *keysInfo | 密钥信息。 |
151| bool newKeysAvailable | 新密钥是否可用,true表示可用,false表示不可用。 |
152
153**返回:**
154
155| 类型 | 说明 |
156| -- | -- |
157| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_INVALID_VAL:参数检查失败。 |
158
159### OH_MediaKeySession_GenerateMediaKeyRequest()
160
161```
162Drm_ErrCode OH_MediaKeySession_GenerateMediaKeyRequest(MediaKeySession *mediaKeySession,DRM_MediaKeyRequestInfo *info, DRM_MediaKeyRequest *mediaKeyRequest)
163```
164
165**描述**
166
167生成媒体密钥请求。
168
169**起始版本:** 11
170
171
172**参数:**
173
174| 参数项 | 描述 |
175| -- | -- |
176| [MediaKeySession](capi-drm-mediakeysession.md) *mediaKeySession | MediaKeySession实例。 |
177| [DRM_MediaKeyRequestInfo](capi-drm-drm-mediakeyrequestinfo.md) *info | 媒体密钥请求信息。 |
178| [DRM_MediaKeyRequest](capi-drm-drm-mediakeyrequest.md) *mediaKeyRequest | 媒体密钥请求。 |
179
180**返回:**
181
182| 类型 | 说明 |
183| -- | -- |
184| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_NO_MEMORY:内存不足,内存分配失败。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySession为空指针或无效,或输入参数info为空指针,或输入参数mediaKeyRequest为空指针。<br>DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 |
185
186### OH_MediaKeySession_ProcessMediaKeyResponse()
187
188```
189Drm_ErrCode OH_MediaKeySession_ProcessMediaKeyResponse(MediaKeySession *mediaKeySession,uint8_t *response, int32_t responseLen, uint8_t *offlineMediaKeyId, int32_t *offlineMediaKeyIdLen)
190```
191
192**描述**
193
194处理媒体密钥请求响应。
195
196**起始版本:** 11
197
198
199**参数:**
200
201| 参数项 | 描述 |
202| -- | -- |
203| [MediaKeySession](capi-drm-mediakeysession.md) *mediaKeySession | MediaKeySession实例。 |
204| uint8_t *response | 媒体密钥请求响应。 |
205| int32_t responseLen | 媒体密钥请求响应长度。 |
206| uint8_t *offlineMediaKeyId | 离线媒体密钥标识。 |
207| int32_t *offlineMediaKeyIdLen | 离线媒体密钥标识的长度。 |
208
209**返回:**
210
211| 类型 | 说明 |
212| -- | -- |
213| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_NO_MEMORY:内存不足,内存分配失败。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySession为空指针或无效,或其它指针类型输入参数为空指针。<br>DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 |
214
215### OH_MediaKeySession_CheckMediaKeyStatus()
216
217```
218Drm_ErrCode OH_MediaKeySession_CheckMediaKeyStatus(MediaKeySession *mediaKeySession,DRM_MediaKeyStatus *mediaKeyStatus)
219```
220
221**描述**
222
223检查媒体密钥状态。
224
225**起始版本:** 11
226
227
228**参数:**
229
230| 参数项 | 描述 |
231| -- | -- |
232| [MediaKeySession](capi-drm-mediakeysession.md) *mediaKeySession | MediaKeySession实例。 |
233| [DRM_MediaKeyStatus](capi-drm-drm-mediakeystatus.md) *mediaKeyStatus | 媒体密钥状态。 |
234
235**返回:**
236
237| 类型 | 说明 |
238| -- | -- |
239| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_NO_MEMORY:内存不足,内存分配失败。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySession为空指针或无效,或输入参数mediaKeyStatus为空指针。<br>DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 |
240
241### OH_MediaKeySession_ClearMediaKeys()
242
243```
244Drm_ErrCode OH_MediaKeySession_ClearMediaKeys(MediaKeySession *mediaKeySession)
245```
246
247**描述**
248
249清除当前会话的媒体密钥。
250
251**起始版本:** 11
252
253
254**参数:**
255
256| 参数项 | 描述 |
257| -- | -- |
258| [MediaKeySession](capi-drm-mediakeysession.md) *mediaKeySession | MediaKeySession实例。 |
259
260**返回:**
261
262| 类型 | 说明 |
263| -- | -- |
264| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySession为空指针或无效。<br>DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 |
265
266### OH_MediaKeySession_GenerateOfflineReleaseRequest()
267
268```
269Drm_ErrCode OH_MediaKeySession_GenerateOfflineReleaseRequest(MediaKeySession *mediaKeySession,uint8_t *offlineMediaKeyId, int32_t offlineMediaKeyIdLen, uint8_t *releaseRequest,int32_t *releaseRequestLen)
270```
271
272**描述**
273
274生成离线媒体密钥释放请求。
275
276**起始版本:** 11
277
278
279**参数:**
280
281| 参数项 | 描述 |
282| -- | -- |
283| [MediaKeySession](capi-drm-mediakeysession.md) *mediaKeySession | MediaKeySession实例。 |
284| uint8_t *offlineMediaKeyId | 离线媒体密钥标识。 |
285| int32_t *releaseRequestLen | 离线媒体密钥标识长度。 |
286| uint8_t *releaseRequest | 离线媒体密钥释放请求。 |
287| int32_t *releaseRequestLen | 离线媒体密钥释放请求长度。 |
288
289**返回:**
290
291| 类型 | 说明 |
292| -- | -- |
293| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_NO_MEMORY:内存不足,内存分配失败。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySession为空指针或无效,或其它指针类型输入参数为空指针。<br>DRM_ERR_UNKNOWN:发生内部错误或设备上的DRM解决方案不支持离线媒体密钥释放,请查看日志详细信息。 |
294
295### OH_MediaKeySession_ProcessOfflineReleaseResponse()
296
297```
298Drm_ErrCode OH_MediaKeySession_ProcessOfflineReleaseResponse(MediaKeySession *mediaKeySession,uint8_t *offlineMediaKeyId, int32_t offlineMediaKeyIdLen, uint8_t *releaseReponse,int32_t releaseReponseLen)
299```
300
301**描述**
302
303处理离线媒体密钥释放请求响应。
304
305**起始版本:** 11
306
307
308**参数:**
309
310| 参数项 | 描述 |
311| -- | -- |
312| [MediaKeySession](capi-drm-mediakeysession.md) *mediaKeySession | MediaKeySession实例。 |
313| uint8_t *offlineMediaKeyId | 离线媒体密钥标识。 |
314| int32_t offlineMediaKeyIdLen | 离线媒体密钥标识长度。 |
315| uint8_t *releaseReponse | 媒体密钥释放请求响应。 |
316| int32_t releaseReponseLen | 媒体密钥释放请求响应长度。 |
317
318**返回:**
319
320| 类型 | 说明 |
321| -- | -- |
322| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySession为空指针或无效,或其它指针类型输入参数为空指针。<br>DRM_ERR_UNKNOWN:发生内部错误或设备上的DRM解决方案不支持离线媒体密钥释放,请查看日志详细信息。 |
323
324### OH_MediaKeySession_RestoreOfflineMediaKeys()
325
326```
327Drm_ErrCode OH_MediaKeySession_RestoreOfflineMediaKeys(MediaKeySession *mediaKeySession,uint8_t *offlineMediaKeyId, int32_t offlineMediaKeyIdLen)
328```
329
330**描述**
331
332恢复离线媒体密钥到当前会话。
333
334**起始版本:** 11
335
336
337**参数:**
338
339| 参数项 | 描述 |
340| -- | -- |
341| [MediaKeySession](capi-drm-mediakeysession.md) *mediaKeySession | MediaKeySession实例。 |
342| uint8_t *offlineMediaKeyId | 离线媒体密钥标识。 |
343| int32_t offlineMediaKeyIdLen | 离线媒体密钥标识长度。 |
344
345**返回:**
346
347| 类型 | 说明 |
348| -- | -- |
349| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySession为空指针或无效,或其它指针类型输入参数为空指针。<br>DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 |
350
351### OH_MediaKeySession_GetContentProtectionLevel()
352
353```
354Drm_ErrCode OH_MediaKeySession_GetContentProtectionLevel(MediaKeySession *mediaKeySession,DRM_ContentProtectionLevel *contentProtectionLevel)
355```
356
357**描述**
358
359获取会话的内容保护级别。
360
361**起始版本:** 11
362
363
364**参数:**
365
366| 参数项 | 描述 |
367| -- | -- |
368| [MediaKeySession](capi-drm-mediakeysession.md) *mediaKeySession | MediaKeySession实例。 |
369| [DRM_ContentProtectionLevel](capi-native-drm-common-h.md#drm_contentprotectionlevel) *contentProtectionLevel | 内容保护级别。 |
370
371**返回:**
372
373| 类型 | 说明 |
374| -- | -- |
375| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySession为空指针或无效,或输入参数contentProtectionLevel为空指针。<br>DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 |
376
377### OH_MediaKeySession_RequireSecureDecoderModule()
378
379```
380Drm_ErrCode OH_MediaKeySession_RequireSecureDecoderModule(MediaKeySession *mediaKeySession,const char *mimeType, bool *status)
381```
382
383**描述**
384
385是否需要安全解码。
386
387**起始版本:** 11
388
389
390**参数:**
391
392| 参数项 | 描述 |
393| -- | -- |
394| [MediaKeySession](capi-drm-mediakeysession.md) *mediaKeySession | MediaKeySession实例。 |
395| const char *mimeType | 媒体类型,支持的媒体类型取决于DRM解决方案,如:video/avcvideo/hev。 |
396| bool *status | 安全解码模块状态。 |
397
398**返回:**
399
400| 类型 | 说明 |
401| -- | -- |
402| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySession为空指针或无效,或其它指针类型输入参数为空指针。<br>DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 |
403
404### OH_MediaKeySession_SetMediaKeySessionCallback()
405
406```
407Drm_ErrCode OH_MediaKeySession_SetMediaKeySessionCallback(MediaKeySession *mediaKeySession,MediaKeySession_Callback *callback)
408```
409
410**描述**
411
412设置MediaKeySession会话事件回调。
413
414**起始版本:** 11
415
416
417**参数:**
418
419| 参数项 | 描述 |
420| -- | -- |
421| [MediaKeySession](capi-drm-mediakeysession.md) *mediaKeySession | MediaKeySession实例。 |
422| [MediaKeySession_Callback](capi-drm-mediakeysession-callback.md) *callback | MediaKeySession的回调。 |
423
424**返回:**
425
426| 类型 | 说明 |
427| -- | -- |
428| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySession为空指针或无效,或输入参数callback为空指针。 |
429
430### OH_MediaKeySession_SetCallback()
431
432```
433Drm_ErrCode OH_MediaKeySession_SetCallback(MediaKeySession *mediaKeySession,OH_MediaKeySession_Callback *callback)
434```
435
436**描述**
437
438设置MediaKeySession事件回调。
439
440**起始版本:** 12
441
442
443**参数:**
444
445| 参数项 | 描述 |
446| -- | -- |
447| [MediaKeySession](capi-drm-mediakeysession.md) *mediaKeySession | MediaKeySession实例。 |
448| [OH_MediaKeySession_Callback](capi-drm-oh-mediakeysession-callback.md) *callback | MediaKeySession的回调。 |
449
450**返回:**
451
452| 类型 | 说明 |
453| -- | -- |
454| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySession为空指针或无效,或输入参数callback为空指针。 |
455
456### OH_MediaKeySession_Destroy()
457
458```
459Drm_ErrCode OH_MediaKeySession_Destroy(MediaKeySession *mediaKeySession)
460```
461
462**描述**
463
464销毁MediaKeySession实例。
465
466**起始版本:** 11
467
468
469**参数:**
470
471| 参数项 | 描述 |
472| -- | -- |
473| [MediaKeySession](capi-drm-mediakeysession.md) *mediaKeySession | MediaKeySession实例。 |
474
475**返回:**
476
477| 类型 | 说明 |
478| -- | -- |
479| [Drm_ErrCode](capi-native-drm-err-h.md#drm_errcode) | DRM_ERR_OK:执行成功。<br>DRM_ERR_INVALID_VAL:输入参数mediaKeySession为空指针或无效。<br>DRM_ERR_UNKNOWN:发生内部错误,请查看日志详细信息。 |
480
481
482