1e41f4b71Sopenharmony_ci# Multimedia_Drm
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ci## 概述
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ci三方应用自行实现媒体解封装,可使用本模块提供的接口设置解密参数, 且当DRM实例和会话创建完成后,以实现DRM加密节目的解密功能。
7e41f4b71Sopenharmony_ci
8e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Spliter
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci**起始版本:** 12
11e41f4b71Sopenharmony_ci
12e41f4b71Sopenharmony_ci
13e41f4b71Sopenharmony_ci## 汇总
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ci
16e41f4b71Sopenharmony_ci### 文件
17e41f4b71Sopenharmony_ci
18e41f4b71Sopenharmony_ci| 名称 | 描述 | 
19e41f4b71Sopenharmony_ci| -------- | -------- |
20e41f4b71Sopenharmony_ci| [native_cencinfo.h](native__cencinfo_8h.md) | 声明用于设置解密参数的Native API。 | 
21e41f4b71Sopenharmony_ci
22e41f4b71Sopenharmony_ci
23e41f4b71Sopenharmony_ci### 结构体
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ci| 名称 | 描述 | 
26e41f4b71Sopenharmony_ci| -------- | -------- |
27e41f4b71Sopenharmony_ci| struct  [DrmSubsample](_drm_subsample.md) | Subsample结构类型定义。 | 
28e41f4b71Sopenharmony_ci
29e41f4b71Sopenharmony_ci
30e41f4b71Sopenharmony_ci### 宏定义
31e41f4b71Sopenharmony_ci
32e41f4b71Sopenharmony_ci| 名称 | 描述 | 
33e41f4b71Sopenharmony_ci| -------- | -------- |
34e41f4b71Sopenharmony_ci| [DRM_KEY_ID_SIZE](#drm_key_id_size)   16 | Key id长度为16字节。 | 
35e41f4b71Sopenharmony_ci| [DRM_KEY_IV_SIZE](#drm_key_iv_size)   16 | Iv长度为16字节。 | 
36e41f4b71Sopenharmony_ci| [DRM_KEY_MAX_SUB_SAMPLE_NUM](#drm_key_max_sub_sample_num)   64 | 最大的Subsample数量为64个。 | 
37e41f4b71Sopenharmony_ci
38e41f4b71Sopenharmony_ci
39e41f4b71Sopenharmony_ci### 类型定义
40e41f4b71Sopenharmony_ci
41e41f4b71Sopenharmony_ci| 名称 | 描述 | 
42e41f4b71Sopenharmony_ci| -------- | -------- |
43e41f4b71Sopenharmony_ci| typedef struct [OH_AVBuffer](#oh_avbuffer) [OH_AVBuffer](#oh_avbuffer) | AVBuffer结构。 | 
44e41f4b71Sopenharmony_ci| typedef struct [OH_AVCencInfo](#oh_avcencinfo) [OH_AVCencInfo](#oh_avcencinfo) | AVCencInfo结构。 | 
45e41f4b71Sopenharmony_ci| typedef enum [DrmCencAlgorithm](#drmcencalgorithm) [DrmCencAlgorithm](#drmcencalgorithm) | Drm CENC算法类型。 | 
46e41f4b71Sopenharmony_ci| typedef enum [DrmCencInfoMode](#drmcencinfomode) [DrmCencInfoMode](#drmcencinfomode) | 枚举类型,表示cencInfo中keyId/iv/subsample信息是否设置。 | 
47e41f4b71Sopenharmony_ci| typedef struct [DrmSubsample](_drm_subsample.md) [DrmSubsample](#drmsubsample) | Subsample结构类型定义。 | 
48e41f4b71Sopenharmony_ci
49e41f4b71Sopenharmony_ci
50e41f4b71Sopenharmony_ci### 枚举
51e41f4b71Sopenharmony_ci
52e41f4b71Sopenharmony_ci| 名称 | 描述 | 
53e41f4b71Sopenharmony_ci| -------- | -------- |
54e41f4b71Sopenharmony_ci| [DrmCencAlgorithm](#drmcencalgorithm) {<br/>DRM_ALG_CENC_UNENCRYPTED = 0x0, DRM_ALG_CENC_AES_CTR = 0x1,<br/>DRM_ALG_CENC_AES_WV = 0x2, DRM_ALG_CENC_AES_CBC = 0x3,<br/>DRM_ALG_CENC_SM4_CBC = 0x4, DRM_ALG_CENC_SM4_CTR = 0x5<br/>} | Drm CENC算法类型。 | 
55e41f4b71Sopenharmony_ci| [DrmCencInfoMode](#drmcencinfomode) {<br/>DRM_CENC_INFO_KEY_IV_SUBSAMPLES_SET = 0x0,<br/>DRM_CENC_INFO_KEY_IV_SUBSAMPLES_NOT_SET = 0x1 } | 枚举类型,表示cencInfo中keyId/iv/subsample信息是否设置。 | 
56e41f4b71Sopenharmony_ci
57e41f4b71Sopenharmony_ci
58e41f4b71Sopenharmony_ci### 函数
59e41f4b71Sopenharmony_ci
60e41f4b71Sopenharmony_ci| 名称 | 描述 | 
61e41f4b71Sopenharmony_ci| -------- | -------- |
62e41f4b71Sopenharmony_ci| [OH_AVCencInfo](#oh_avcencinfo) \* [OH_AVCencInfo_Create](#oh_avcencinfo_create) () | 创建用于设置cencInfo的OH_AVCencInfo实例。 | 
63e41f4b71Sopenharmony_ci| OH_AVErrCode [OH_AVCencInfo_Destroy](#oh_avcencinfo_destroy) ([OH_AVCencInfo](#oh_avcencinfo) \*cencInfo) | 销毁OH_AVCencInfo实例并释放内部资源。 | 
64e41f4b71Sopenharmony_ci| OH_AVErrCode [OH_AVCencInfo_SetAlgorithm](#oh_avcencinfo_setalgorithm) ([OH_AVCencInfo](#oh_avcencinfo) \*cencInfo, enum [DrmCencAlgorithm](#drmcencalgorithm) algo) | 设置cencInfo加密算法。 | 
65e41f4b71Sopenharmony_ci| OH_AVErrCode [OH_AVCencInfo_SetKeyIdAndIv](#oh_avcencinfo_setkeyidandiv) ([OH_AVCencInfo](#oh_avcencinfo) \*cencInfo, uint8_t \*keyId, uint32_t keyIdLen, uint8_t \*iv, uint32_t ivLen) | 设置cencInfo的keyId和iv。 | 
66e41f4b71Sopenharmony_ci| OH_AVErrCode [OH_AVCencInfo_SetSubsampleInfo](#oh_avcencinfo_setsubsampleinfo) ([OH_AVCencInfo](#oh_avcencinfo) \*cencInfo, uint32_t encryptedBlockCount, uint32_t skippedBlockCount, uint32_t firstEncryptedOffset, uint32_t subsampleCount, [DrmSubsample](_drm_subsample.md) \*subsamples) | 设置cencInfo的subsamples信息。 | 
67e41f4b71Sopenharmony_ci| OH_AVErrCode [OH_AVCencInfo_SetMode](#oh_avcencinfo_setmode) ([OH_AVCencInfo](#oh_avcencinfo) \*cencInfo, enum [DrmCencInfoMode](#drmcencinfomode) mode) | 设置cencInfo的模式。 | 
68e41f4b71Sopenharmony_ci| OH_AVErrCode [OH_AVCencInfo_SetAVBuffer](#oh_avcencinfo_setavbuffer) ([OH_AVCencInfo](#oh_avcencinfo) \*cencInfo, [OH_AVBuffer](#oh_avbuffer) \*buffer) | 将cencInfo设置到AVBuffer。 | 
69e41f4b71Sopenharmony_ci
70e41f4b71Sopenharmony_ci
71e41f4b71Sopenharmony_ci## 宏定义说明
72e41f4b71Sopenharmony_ci
73e41f4b71Sopenharmony_ci
74e41f4b71Sopenharmony_ci### DRM_KEY_ID_SIZE
75e41f4b71Sopenharmony_ci
76e41f4b71Sopenharmony_ci```
77e41f4b71Sopenharmony_ci#define DRM_KEY_ID_SIZE   16
78e41f4b71Sopenharmony_ci```
79e41f4b71Sopenharmony_ci
80e41f4b71Sopenharmony_ci**描述**
81e41f4b71Sopenharmony_ci
82e41f4b71Sopenharmony_ciKey id长度为16字节。
83e41f4b71Sopenharmony_ci
84e41f4b71Sopenharmony_ci**起始版本:** 12
85e41f4b71Sopenharmony_ci
86e41f4b71Sopenharmony_ci
87e41f4b71Sopenharmony_ci### DRM_KEY_IV_SIZE
88e41f4b71Sopenharmony_ci
89e41f4b71Sopenharmony_ci```
90e41f4b71Sopenharmony_ci#define DRM_KEY_IV_SIZE   16
91e41f4b71Sopenharmony_ci```
92e41f4b71Sopenharmony_ci
93e41f4b71Sopenharmony_ci**描述**
94e41f4b71Sopenharmony_ci
95e41f4b71Sopenharmony_ciIv长度为16字节。
96e41f4b71Sopenharmony_ci
97e41f4b71Sopenharmony_ci**起始版本:** 12
98e41f4b71Sopenharmony_ci
99e41f4b71Sopenharmony_ci
100e41f4b71Sopenharmony_ci### DRM_KEY_MAX_SUB_SAMPLE_NUM
101e41f4b71Sopenharmony_ci
102e41f4b71Sopenharmony_ci```
103e41f4b71Sopenharmony_ci#define DRM_KEY_MAX_SUB_SAMPLE_NUM   64
104e41f4b71Sopenharmony_ci```
105e41f4b71Sopenharmony_ci
106e41f4b71Sopenharmony_ci**描述**
107e41f4b71Sopenharmony_ci
108e41f4b71Sopenharmony_ci最大的Subsample数量为64个。
109e41f4b71Sopenharmony_ci
110e41f4b71Sopenharmony_ci**起始版本:** 12
111e41f4b71Sopenharmony_ci
112e41f4b71Sopenharmony_ci
113e41f4b71Sopenharmony_ci## 类型定义说明
114e41f4b71Sopenharmony_ci
115e41f4b71Sopenharmony_ci
116e41f4b71Sopenharmony_ci### DrmCencAlgorithm
117e41f4b71Sopenharmony_ci
118e41f4b71Sopenharmony_ci```
119e41f4b71Sopenharmony_citypedef enum DrmCencAlgorithm DrmCencAlgorithm
120e41f4b71Sopenharmony_ci```
121e41f4b71Sopenharmony_ci
122e41f4b71Sopenharmony_ci**描述**
123e41f4b71Sopenharmony_ci
124e41f4b71Sopenharmony_ciDrm CENC算法类型。
125e41f4b71Sopenharmony_ci
126e41f4b71Sopenharmony_ci**起始版本:** 12
127e41f4b71Sopenharmony_ci
128e41f4b71Sopenharmony_ci
129e41f4b71Sopenharmony_ci### DrmCencInfoMode
130e41f4b71Sopenharmony_ci
131e41f4b71Sopenharmony_ci```
132e41f4b71Sopenharmony_citypedef enum DrmCencInfoMode DrmCencInfoMode
133e41f4b71Sopenharmony_ci```
134e41f4b71Sopenharmony_ci
135e41f4b71Sopenharmony_ci**描述**
136e41f4b71Sopenharmony_ci
137e41f4b71Sopenharmony_ci枚举类型,表示cencInfo中keyId/iv/subsample信息是否设置。
138e41f4b71Sopenharmony_ci
139e41f4b71Sopenharmony_ci**起始版本:** 12
140e41f4b71Sopenharmony_ci
141e41f4b71Sopenharmony_ci
142e41f4b71Sopenharmony_ci### DrmSubsample
143e41f4b71Sopenharmony_ci
144e41f4b71Sopenharmony_ci```
145e41f4b71Sopenharmony_citypedef struct DrmSubsample DrmSubsample
146e41f4b71Sopenharmony_ci```
147e41f4b71Sopenharmony_ci
148e41f4b71Sopenharmony_ci**描述**
149e41f4b71Sopenharmony_ci
150e41f4b71Sopenharmony_ciSubsample结构类型定义。
151e41f4b71Sopenharmony_ci
152e41f4b71Sopenharmony_ci**起始版本:** 12
153e41f4b71Sopenharmony_ci
154e41f4b71Sopenharmony_ci
155e41f4b71Sopenharmony_ci### OH_AVBuffer
156e41f4b71Sopenharmony_ci
157e41f4b71Sopenharmony_ci```
158e41f4b71Sopenharmony_citypedef struct OH_AVBuffer OH_AVBuffer
159e41f4b71Sopenharmony_ci```
160e41f4b71Sopenharmony_ci
161e41f4b71Sopenharmony_ci**描述**
162e41f4b71Sopenharmony_ci
163e41f4b71Sopenharmony_ciAVBuffer结构。
164e41f4b71Sopenharmony_ci
165e41f4b71Sopenharmony_ci**起始版本:** 12
166e41f4b71Sopenharmony_ci
167e41f4b71Sopenharmony_ci
168e41f4b71Sopenharmony_ci### OH_AVCencInfo
169e41f4b71Sopenharmony_ci
170e41f4b71Sopenharmony_ci```
171e41f4b71Sopenharmony_citypedef struct OH_AVCencInfo OH_AVCencInfo
172e41f4b71Sopenharmony_ci```
173e41f4b71Sopenharmony_ci
174e41f4b71Sopenharmony_ci**描述**
175e41f4b71Sopenharmony_ci
176e41f4b71Sopenharmony_ciAVCencInfo结构。
177e41f4b71Sopenharmony_ci
178e41f4b71Sopenharmony_ci**起始版本:** 12
179e41f4b71Sopenharmony_ci
180e41f4b71Sopenharmony_ci
181e41f4b71Sopenharmony_ci## 枚举类型说明
182e41f4b71Sopenharmony_ci
183e41f4b71Sopenharmony_ci
184e41f4b71Sopenharmony_ci### DrmCencAlgorithm
185e41f4b71Sopenharmony_ci
186e41f4b71Sopenharmony_ci```
187e41f4b71Sopenharmony_cienum DrmCencAlgorithm
188e41f4b71Sopenharmony_ci```
189e41f4b71Sopenharmony_ci
190e41f4b71Sopenharmony_ci**描述**
191e41f4b71Sopenharmony_ci
192e41f4b71Sopenharmony_ciDrm CENC算法类型。
193e41f4b71Sopenharmony_ci
194e41f4b71Sopenharmony_ci**起始版本:** 12
195e41f4b71Sopenharmony_ci
196e41f4b71Sopenharmony_ci| 枚举值 | 描述 | 
197e41f4b71Sopenharmony_ci| -------- | -------- |
198e41f4b71Sopenharmony_ci| DRM_ALG_CENC_UNENCRYPTED | 不加密算法。 | 
199e41f4b71Sopenharmony_ci| DRM_ALG_CENC_AES_CTR | AES CTR算法。 | 
200e41f4b71Sopenharmony_ci| DRM_ALG_CENC_AES_WV | AES WV算法。 | 
201e41f4b71Sopenharmony_ci| DRM_ALG_CENC_AES_CBC | AES CBC算法。 | 
202e41f4b71Sopenharmony_ci| DRM_ALG_CENC_SM4_CBC | SM4 CBC算法。 | 
203e41f4b71Sopenharmony_ci| DRM_ALG_CENC_SM4_CTR | SM4 CTR算法。 | 
204e41f4b71Sopenharmony_ci
205e41f4b71Sopenharmony_ci
206e41f4b71Sopenharmony_ci### DrmCencInfoMode
207e41f4b71Sopenharmony_ci
208e41f4b71Sopenharmony_ci```
209e41f4b71Sopenharmony_cienum DrmCencInfoMode
210e41f4b71Sopenharmony_ci```
211e41f4b71Sopenharmony_ci
212e41f4b71Sopenharmony_ci**描述**
213e41f4b71Sopenharmony_ci
214e41f4b71Sopenharmony_ci枚举类型,表示cencInfo中keyId/iv/subsample信息是否设置。
215e41f4b71Sopenharmony_ci
216e41f4b71Sopenharmony_ci**起始版本:** 12
217e41f4b71Sopenharmony_ci
218e41f4b71Sopenharmony_ci| 枚举值 | 描述 | 
219e41f4b71Sopenharmony_ci| -------- | -------- |
220e41f4b71Sopenharmony_ci| DRM_CENC_INFO_KEY_IV_SUBSAMPLES_SET | keyId/iv/subsample信息已设置。 | 
221e41f4b71Sopenharmony_ci| DRM_CENC_INFO_KEY_IV_SUBSAMPLES_NOT_SET | keyId/iv/subsample信息未设置。 | 
222e41f4b71Sopenharmony_ci
223e41f4b71Sopenharmony_ci
224e41f4b71Sopenharmony_ci## 函数说明
225e41f4b71Sopenharmony_ci
226e41f4b71Sopenharmony_ci
227e41f4b71Sopenharmony_ci### OH_AVCencInfo_Create()
228e41f4b71Sopenharmony_ci
229e41f4b71Sopenharmony_ci```
230e41f4b71Sopenharmony_ciOH_AVCencInfo* OH_AVCencInfo_Create ()
231e41f4b71Sopenharmony_ci```
232e41f4b71Sopenharmony_ci
233e41f4b71Sopenharmony_ci**描述**
234e41f4b71Sopenharmony_ci
235e41f4b71Sopenharmony_ci创建用于设置cencInfo的OH_AVCencInfo实例。
236e41f4b71Sopenharmony_ci
237e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Spliter
238e41f4b71Sopenharmony_ci
239e41f4b71Sopenharmony_ci**起始版本:** 12
240e41f4b71Sopenharmony_ci
241e41f4b71Sopenharmony_ci**返回:**
242e41f4b71Sopenharmony_ci
243e41f4b71Sopenharmony_ci返回新创建的OH_AVCencInfo对象。如果返回nullptr,则表示创建对象失败。
244e41f4b71Sopenharmony_ci
245e41f4b71Sopenharmony_ci可能失败的原因:应用程序地址空间已满,或者对象中的数据初始化失败。
246e41f4b71Sopenharmony_ci
247e41f4b71Sopenharmony_ci
248e41f4b71Sopenharmony_ci### OH_AVCencInfo_Destroy()
249e41f4b71Sopenharmony_ci
250e41f4b71Sopenharmony_ci```
251e41f4b71Sopenharmony_ciOH_AVErrCode OH_AVCencInfo_Destroy (OH_AVCencInfo * cencInfo)
252e41f4b71Sopenharmony_ci```
253e41f4b71Sopenharmony_ci
254e41f4b71Sopenharmony_ci**描述**
255e41f4b71Sopenharmony_ci
256e41f4b71Sopenharmony_ci销毁OH_AVCencInfo实例并释放内部资源。
257e41f4b71Sopenharmony_ci
258e41f4b71Sopenharmony_ci同一个实例只能销毁一次。在再次创建实例之前,不应使用该实例。 建议在实例销毁成功后立即将实例指针设置为nullptr。
259e41f4b71Sopenharmony_ci
260e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Spliter
261e41f4b71Sopenharmony_ci
262e41f4b71Sopenharmony_ci**起始版本:** 12
263e41f4b71Sopenharmony_ci
264e41f4b71Sopenharmony_ci**参数:**
265e41f4b71Sopenharmony_ci
266e41f4b71Sopenharmony_ci| 名称 | 描述 | 
267e41f4b71Sopenharmony_ci| -------- | -------- |
268e41f4b71Sopenharmony_ci| cencInfo | 指向OH_AVCencInfo实例的指针。 | 
269e41f4b71Sopenharmony_ci
270e41f4b71Sopenharmony_ci**返回:**
271e41f4b71Sopenharmony_ci
272e41f4b71Sopenharmony_ci参考[OH_AVErrCode](_core.md#oh_averrcode):
273e41f4b71Sopenharmony_ci
274e41f4b71Sopenharmony_ci**AV_ERR_OK** 0 - 执行成功。 
275e41f4b71Sopenharmony_ci
276e41f4b71Sopenharmony_ci**AV_ERR_INVALID_VAL** 3 - cencInfo为空。
277e41f4b71Sopenharmony_ci
278e41f4b71Sopenharmony_ci
279e41f4b71Sopenharmony_ci### OH_AVCencInfo_SetAlgorithm()
280e41f4b71Sopenharmony_ci
281e41f4b71Sopenharmony_ci```
282e41f4b71Sopenharmony_ciOH_AVErrCode OH_AVCencInfo_SetAlgorithm (OH_AVCencInfo * cencInfo, enum DrmCencAlgorithm algo )
283e41f4b71Sopenharmony_ci```
284e41f4b71Sopenharmony_ci
285e41f4b71Sopenharmony_ci**描述**
286e41f4b71Sopenharmony_ci
287e41f4b71Sopenharmony_ci设置cencInfo加密算法。
288e41f4b71Sopenharmony_ci
289e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Spliter
290e41f4b71Sopenharmony_ci
291e41f4b71Sopenharmony_ci**起始版本:** 12
292e41f4b71Sopenharmony_ci
293e41f4b71Sopenharmony_ci**参数:**
294e41f4b71Sopenharmony_ci
295e41f4b71Sopenharmony_ci| 名称 | 描述 | 
296e41f4b71Sopenharmony_ci| -------- | -------- |
297e41f4b71Sopenharmony_ci| cencInfo | 指向OH_AVCencInfo实例的指针。 | 
298e41f4b71Sopenharmony_ci| algo | 加密算法模式。 | 
299e41f4b71Sopenharmony_ci
300e41f4b71Sopenharmony_ci**返回:**
301e41f4b71Sopenharmony_ci
302e41f4b71Sopenharmony_ci参考[OH_AVErrCode](_core.md#oh_averrcode):
303e41f4b71Sopenharmony_ci
304e41f4b71Sopenharmony_ci**AV_ERR_OK** 0 - 执行成功。 
305e41f4b71Sopenharmony_ci
306e41f4b71Sopenharmony_ci**AV_ERR_INVALID_VAL** 3 - cencInfo为空。
307e41f4b71Sopenharmony_ci
308e41f4b71Sopenharmony_ci
309e41f4b71Sopenharmony_ci### OH_AVCencInfo_SetAVBuffer()
310e41f4b71Sopenharmony_ci
311e41f4b71Sopenharmony_ci```
312e41f4b71Sopenharmony_ciOH_AVErrCode OH_AVCencInfo_SetAVBuffer (OH_AVCencInfo * cencInfo, OH_AVBuffer * buffer )
313e41f4b71Sopenharmony_ci```
314e41f4b71Sopenharmony_ci
315e41f4b71Sopenharmony_ci**描述**
316e41f4b71Sopenharmony_ci
317e41f4b71Sopenharmony_ci将cencInfo设置到AVBuffer。
318e41f4b71Sopenharmony_ci
319e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Spliter
320e41f4b71Sopenharmony_ci
321e41f4b71Sopenharmony_ci**起始版本:** 12
322e41f4b71Sopenharmony_ci
323e41f4b71Sopenharmony_ci**参数:**
324e41f4b71Sopenharmony_ci
325e41f4b71Sopenharmony_ci| 名称 | 描述 | 
326e41f4b71Sopenharmony_ci| -------- | -------- |
327e41f4b71Sopenharmony_ci| cencInfo | 指向OH_AVCencInfo实例的指针。 | 
328e41f4b71Sopenharmony_ci| buffer | 携带数据的帧buffer。 | 
329e41f4b71Sopenharmony_ci
330e41f4b71Sopenharmony_ci**返回:**
331e41f4b71Sopenharmony_ci
332e41f4b71Sopenharmony_ci参考[OH_AVErrCode](_core.md#oh_averrcode):
333e41f4b71Sopenharmony_ci
334e41f4b71Sopenharmony_ci**AV_ERR_OK** 0 - 执行成功。 
335e41f4b71Sopenharmony_ci
336e41f4b71Sopenharmony_ci**AV_ERR_INVALID_VAL** 3 - 如果cencInfo为空,或者buffer为空, 或者buffer-&gt;buffer_为空,或者buffer-&gt;buffer_-&gt;meta_为空,则返回此错误码。
337e41f4b71Sopenharmony_ci
338e41f4b71Sopenharmony_ci
339e41f4b71Sopenharmony_ci### OH_AVCencInfo_SetKeyIdAndIv()
340e41f4b71Sopenharmony_ci
341e41f4b71Sopenharmony_ci```
342e41f4b71Sopenharmony_ciOH_AVErrCode OH_AVCencInfo_SetKeyIdAndIv (OH_AVCencInfo * cencInfo, uint8_t * keyId, uint32_t keyIdLen, uint8_t * iv, uint32_t ivLen )
343e41f4b71Sopenharmony_ci```
344e41f4b71Sopenharmony_ci
345e41f4b71Sopenharmony_ci**描述**
346e41f4b71Sopenharmony_ci
347e41f4b71Sopenharmony_ci设置cencInfo的keyId和iv。
348e41f4b71Sopenharmony_ci
349e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Spliter
350e41f4b71Sopenharmony_ci
351e41f4b71Sopenharmony_ci**起始版本:** 12
352e41f4b71Sopenharmony_ci
353e41f4b71Sopenharmony_ci**参数:**
354e41f4b71Sopenharmony_ci
355e41f4b71Sopenharmony_ci| 名称 | 描述 | 
356e41f4b71Sopenharmony_ci| -------- | -------- |
357e41f4b71Sopenharmony_ci| cencInfo | 指向OH_AVCencInfo实例的指针。 | 
358e41f4b71Sopenharmony_ci| keyId | Key标识。 | 
359e41f4b71Sopenharmony_ci| keyIdLen | Key标识长度。 | 
360e41f4b71Sopenharmony_ci| iv | 初始化向量。 | 
361e41f4b71Sopenharmony_ci| ivLen | 初始化向量长度。 | 
362e41f4b71Sopenharmony_ci
363e41f4b71Sopenharmony_ci**返回:**
364e41f4b71Sopenharmony_ci
365e41f4b71Sopenharmony_ci参考[OH_AVErrCode](_core.md#oh_averrcode):
366e41f4b71Sopenharmony_ci
367e41f4b71Sopenharmony_ci**AV_ERR_OK** 0 - 执行成功。 
368e41f4b71Sopenharmony_ci
369e41f4b71Sopenharmony_ci**AV_ERR_INVALID_VAL** 3 - 如果cencInfo为空,或者keyId为空,或者keyIdLen != DRM_KEY_ID_SIZE,或者iv是空,或者ivLen != DRM_KEY_IV_SIZE,或者keyId拷贝失败,或者iv拷贝失败,则返回此错误码。
370e41f4b71Sopenharmony_ci
371e41f4b71Sopenharmony_ci
372e41f4b71Sopenharmony_ci### OH_AVCencInfo_SetMode()
373e41f4b71Sopenharmony_ci
374e41f4b71Sopenharmony_ci```
375e41f4b71Sopenharmony_ciOH_AVErrCode OH_AVCencInfo_SetMode (OH_AVCencInfo * cencInfo, enum DrmCencInfoMode mode )
376e41f4b71Sopenharmony_ci```
377e41f4b71Sopenharmony_ci
378e41f4b71Sopenharmony_ci**描述**
379e41f4b71Sopenharmony_ci
380e41f4b71Sopenharmony_ci设置cencInfo的模式。
381e41f4b71Sopenharmony_ci
382e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Spliter
383e41f4b71Sopenharmony_ci
384e41f4b71Sopenharmony_ci**起始版本:** 12
385e41f4b71Sopenharmony_ci
386e41f4b71Sopenharmony_ci**参数:**
387e41f4b71Sopenharmony_ci
388e41f4b71Sopenharmony_ci| 名称 | 描述 | 
389e41f4b71Sopenharmony_ci| -------- | -------- |
390e41f4b71Sopenharmony_ci| cencInfo | 指向OH_AVCencInfo实例的指针。 | 
391e41f4b71Sopenharmony_ci| mode | cencInfo模式,指示是否设置了keyId/iv/subsample。 | 
392e41f4b71Sopenharmony_ci
393e41f4b71Sopenharmony_ci**返回:**
394e41f4b71Sopenharmony_ci
395e41f4b71Sopenharmony_ci参考[OH_AVErrCode](_core.md#oh_averrcode):
396e41f4b71Sopenharmony_ci
397e41f4b71Sopenharmony_ci**AV_ERR_OK** 0 - 执行成功。 
398e41f4b71Sopenharmony_ci
399e41f4b71Sopenharmony_ci**AV_ERR_INVALID_VAL** 3 - cencInfo为空。
400e41f4b71Sopenharmony_ci
401e41f4b71Sopenharmony_ci
402e41f4b71Sopenharmony_ci### OH_AVCencInfo_SetSubsampleInfo()
403e41f4b71Sopenharmony_ci
404e41f4b71Sopenharmony_ci```
405e41f4b71Sopenharmony_ciOH_AVErrCode OH_AVCencInfo_SetSubsampleInfo (OH_AVCencInfo * cencInfo, uint32_t encryptedBlockCount, uint32_t skippedBlockCount, uint32_t firstEncryptedOffset, uint32_t subsampleCount, DrmSubsample * subsamples )
406e41f4b71Sopenharmony_ci```
407e41f4b71Sopenharmony_ci
408e41f4b71Sopenharmony_ci**描述**
409e41f4b71Sopenharmony_ci
410e41f4b71Sopenharmony_ci设置cencInfo的subsamples信息。
411e41f4b71Sopenharmony_ci
412e41f4b71Sopenharmony_ci**系统能力:** SystemCapability.Multimedia.Media.Spliter
413e41f4b71Sopenharmony_ci
414e41f4b71Sopenharmony_ci**起始版本:** 12
415e41f4b71Sopenharmony_ci
416e41f4b71Sopenharmony_ci**参数:**
417e41f4b71Sopenharmony_ci
418e41f4b71Sopenharmony_ci| 名称 | 描述 | 
419e41f4b71Sopenharmony_ci| -------- | -------- |
420e41f4b71Sopenharmony_ci| cencInfo | 指向OH_AVCencInfo实例的指针。 | 
421e41f4b71Sopenharmony_ci| encryptedBlockCount | 加密块的数量。 | 
422e41f4b71Sopenharmony_ci| skippedBlockCount | 不加密块的数量。 | 
423e41f4b71Sopenharmony_ci| firstEncryptedOffset | 第一个加密有效负载的偏移量。 | 
424e41f4b71Sopenharmony_ci| subsampleCount | Subsample数量。 | 
425e41f4b71Sopenharmony_ci| subsamples | Subsample内容集。 | 
426e41f4b71Sopenharmony_ci
427e41f4b71Sopenharmony_ci**返回:**
428e41f4b71Sopenharmony_ci
429e41f4b71Sopenharmony_ci参考[OH_AVErrCode](_core.md#oh_averrcode):
430e41f4b71Sopenharmony_ci
431e41f4b71Sopenharmony_ci**AV_ERR_OK** 0 - 执行成功。 
432e41f4b71Sopenharmony_ci
433e41f4b71Sopenharmony_ci**AV_ERR_INVALID_VAL** 3 - 如果cencInfo为空, 或者subsampleCount &gt; DRM_KEY_MAX_SUB_SAMPLE_NUM,或者subsamples为空, 则返回此错误码。
434