1e41f4b71Sopenharmony_ci# Multimedia_Drm
2e41f4b71Sopenharmony_ci
3e41f4b71Sopenharmony_ci
4e41f4b71Sopenharmony_ci## Overview
5e41f4b71Sopenharmony_ci
6e41f4b71Sopenharmony_ciThe Multimedia_Drm module provides APIs for you to set decryption parameters. After a DRM instance and session are created, you can decrypt a DRM encrypted program.
7e41f4b71Sopenharmony_ci
8e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter
9e41f4b71Sopenharmony_ci
10e41f4b71Sopenharmony_ci**Since**: 12
11e41f4b71Sopenharmony_ci
12e41f4b71Sopenharmony_ci
13e41f4b71Sopenharmony_ci## Summary
14e41f4b71Sopenharmony_ci
15e41f4b71Sopenharmony_ci
16e41f4b71Sopenharmony_ci### Files
17e41f4b71Sopenharmony_ci
18e41f4b71Sopenharmony_ci| Name| Description| 
19e41f4b71Sopenharmony_ci| -------- | -------- |
20e41f4b71Sopenharmony_ci| [native_cencinfo.h](native__cencinfo_8h.md) | Declares the native APIs used to set decryption parameters.| 
21e41f4b71Sopenharmony_ci
22e41f4b71Sopenharmony_ci
23e41f4b71Sopenharmony_ci### Structs
24e41f4b71Sopenharmony_ci
25e41f4b71Sopenharmony_ci| Name| Description| 
26e41f4b71Sopenharmony_ci| -------- | -------- |
27e41f4b71Sopenharmony_ci| struct  [DrmSubsample](_drm_subsample.md) | Describes the subsample type.| 
28e41f4b71Sopenharmony_ci
29e41f4b71Sopenharmony_ci
30e41f4b71Sopenharmony_ci### Macros
31e41f4b71Sopenharmony_ci
32e41f4b71Sopenharmony_ci| Name| Description| 
33e41f4b71Sopenharmony_ci| -------- | -------- |
34e41f4b71Sopenharmony_ci| [DRM_KEY_ID_SIZE](#drm_key_id_size)   16 | The length of the key ID is 16 bytes.| 
35e41f4b71Sopenharmony_ci| [DRM_KEY_IV_SIZE](#drm_key_iv_size)   16 | The length of the Initialization Vector (IV) is 16 bytes.| 
36e41f4b71Sopenharmony_ci| [DRM_KEY_MAX_SUB_SAMPLE_NUM](#drm_key_max_sub_sample_num)   64 | The maximum number of subsamples is 64.| 
37e41f4b71Sopenharmony_ci
38e41f4b71Sopenharmony_ci
39e41f4b71Sopenharmony_ci### Types
40e41f4b71Sopenharmony_ci
41e41f4b71Sopenharmony_ci| Name| Description| 
42e41f4b71Sopenharmony_ci| -------- | -------- |
43e41f4b71Sopenharmony_ci| typedef struct [OH_AVBuffer](#oh_avbuffer) [OH_AVBuffer](#oh_avbuffer) | Defines a struct for the audio/video buffer.| 
44e41f4b71Sopenharmony_ci| typedef struct [OH_AVCencInfo](#oh_avcencinfo) [OH_AVCencInfo](#oh_avcencinfo) | Defines a struct for the audio/video Common Encryption Scheme (CENC) information.| 
45e41f4b71Sopenharmony_ci| typedef enum [DrmCencAlgorithm](#drmcencalgorithm) [DrmCencAlgorithm](#drmcencalgorithm) | Defines an enum for the DRM CENC algorithm types.| 
46e41f4b71Sopenharmony_ci| typedef enum [DrmCencInfoMode](#drmcencinfomode) [DrmCencInfoMode](#drmcencinfomode) | Defines an enum for the modes for setting the key ID, IV, and subsample information in the CENC information.| 
47e41f4b71Sopenharmony_ci| typedef struct [DrmSubsample](_drm_subsample.md) [DrmSubsample](#drmsubsample) | Defines a struct for the subsample type.| 
48e41f4b71Sopenharmony_ci
49e41f4b71Sopenharmony_ci
50e41f4b71Sopenharmony_ci### Enums
51e41f4b71Sopenharmony_ci
52e41f4b71Sopenharmony_ci| Name| Description| 
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>} | Enumerates the DRM CENC algorithm types.| 
55e41f4b71Sopenharmony_ci| [DrmCencInfoMode](#drmcencinfomode) {<br>DRM_CENC_INFO_KEY_IV_SUBSAMPLES_SET = 0x0,<br>DRM_CENC_INFO_KEY_IV_SUBSAMPLES_NOT_SET = 0x1 } | Enumerates the modes for setting the key ID, IV, and subsample information in the CENC information.| 
56e41f4b71Sopenharmony_ci
57e41f4b71Sopenharmony_ci
58e41f4b71Sopenharmony_ci### Functions
59e41f4b71Sopenharmony_ci
60e41f4b71Sopenharmony_ci| Name| Description| 
61e41f4b71Sopenharmony_ci| -------- | -------- |
62e41f4b71Sopenharmony_ci| [OH_AVCencInfo](#oh_avcencinfo) \* [OH_AVCencInfo_Create](#oh_avcencinfo_create) () | Creates an **OH_AVCencInfo** instance for setting the CENC information.| 
63e41f4b71Sopenharmony_ci| OH_AVErrCode [OH_AVCencInfo_Destroy](#oh_avcencinfo_destroy) ([OH_AVCencInfo](#oh_avcencinfo) \*cencInfo) | Destroys an **OH_AVCencInfo** instance and clears internal resources.| 
64e41f4b71Sopenharmony_ci| OH_AVErrCode [OH_AVCencInfo_SetAlgorithm](#oh_avcencinfo_setalgorithm) ([OH_AVCencInfo](#oh_avcencinfo) \*cencInfo, enum [DrmCencAlgorithm](#drmcencalgorithm) algo) | Sets an encryption algorithm of the CENC information.| 
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) | Sets the key ID and IV in the CENC information.| 
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) | Sets the subsample information in the CENC information.| 
67e41f4b71Sopenharmony_ci| OH_AVErrCode [OH_AVCencInfo_SetMode](#oh_avcencinfo_setmode) ([OH_AVCencInfo](#oh_avcencinfo) \*cencInfo, enum [DrmCencInfoMode](#drmcencinfomode) mode) | Sets the CENC information mode.| 
68e41f4b71Sopenharmony_ci| OH_AVErrCode [OH_AVCencInfo_SetAVBuffer](#oh_avcencinfo_setavbuffer) ([OH_AVCencInfo](#oh_avcencinfo) \*cencInfo, [OH_AVBuffer](#oh_avbuffer) \*buffer) | Sets the CENC information to an AVBuffer.| 
69e41f4b71Sopenharmony_ci
70e41f4b71Sopenharmony_ci
71e41f4b71Sopenharmony_ci## Macro Description
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**Description**
81e41f4b71Sopenharmony_ci
82e41f4b71Sopenharmony_ciThe length of the key ID is 16 bytes.
83e41f4b71Sopenharmony_ci
84e41f4b71Sopenharmony_ci**Since**: 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**Description**
94e41f4b71Sopenharmony_ci
95e41f4b71Sopenharmony_ciThe length of the Initialization Vector (IV) is 16 bytes.
96e41f4b71Sopenharmony_ci
97e41f4b71Sopenharmony_ci**Since**: 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**Description**
107e41f4b71Sopenharmony_ci
108e41f4b71Sopenharmony_ciThe maximum number of subsamples is 64.
109e41f4b71Sopenharmony_ci
110e41f4b71Sopenharmony_ci**Since**: 12
111e41f4b71Sopenharmony_ci
112e41f4b71Sopenharmony_ci
113e41f4b71Sopenharmony_ci## Type Description
114e41f4b71Sopenharmony_ci
115e41f4b71Sopenharmony_ci
116e41f4b71Sopenharmony_ci### DrmCencAlgorithm
117e41f4b71Sopenharmony_ci
118e41f4b71Sopenharmony_ci```
119e41f4b71Sopenharmony_citypedef enum DrmCencAlgorithm DrmCencAlgorithm
120e41f4b71Sopenharmony_ci```
121e41f4b71Sopenharmony_ci
122e41f4b71Sopenharmony_ci**Description**
123e41f4b71Sopenharmony_ci
124e41f4b71Sopenharmony_ciDefines an enum for the DRM CENC algorithm types.
125e41f4b71Sopenharmony_ci
126e41f4b71Sopenharmony_ci**Since**: 12
127e41f4b71Sopenharmony_ci
128e41f4b71Sopenharmony_ci
129e41f4b71Sopenharmony_ci### DrmCencInfoMode
130e41f4b71Sopenharmony_ci
131e41f4b71Sopenharmony_ci```
132e41f4b71Sopenharmony_citypedef enum DrmCencInfoMode DrmCencInfoMode
133e41f4b71Sopenharmony_ci```
134e41f4b71Sopenharmony_ci
135e41f4b71Sopenharmony_ci**Description**
136e41f4b71Sopenharmony_ci
137e41f4b71Sopenharmony_ciDefines an enum for the modes for setting the key ID, IV, and subsample information in the CENC information.
138e41f4b71Sopenharmony_ci
139e41f4b71Sopenharmony_ci**Since**: 12
140e41f4b71Sopenharmony_ci
141e41f4b71Sopenharmony_ci
142e41f4b71Sopenharmony_ci### DrmSubsample
143e41f4b71Sopenharmony_ci
144e41f4b71Sopenharmony_ci```
145e41f4b71Sopenharmony_citypedef struct DrmSubsample DrmSubsample
146e41f4b71Sopenharmony_ci```
147e41f4b71Sopenharmony_ci
148e41f4b71Sopenharmony_ci**Description**
149e41f4b71Sopenharmony_ci
150e41f4b71Sopenharmony_ciDefines a struct for the subsample type.
151e41f4b71Sopenharmony_ci
152e41f4b71Sopenharmony_ci**Since**: 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**Description**
162e41f4b71Sopenharmony_ci
163e41f4b71Sopenharmony_ciDefines a struct for the audio/video buffer.
164e41f4b71Sopenharmony_ci
165e41f4b71Sopenharmony_ci**Since**: 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**Description**
175e41f4b71Sopenharmony_ci
176e41f4b71Sopenharmony_ciDefines a struct for the audio/video Common Encryption Scheme (CENC) information.
177e41f4b71Sopenharmony_ci
178e41f4b71Sopenharmony_ci**Since**: 12
179e41f4b71Sopenharmony_ci
180e41f4b71Sopenharmony_ci
181e41f4b71Sopenharmony_ci## Enum Description
182e41f4b71Sopenharmony_ci
183e41f4b71Sopenharmony_ci
184e41f4b71Sopenharmony_ci### DrmCencAlgorithm
185e41f4b71Sopenharmony_ci
186e41f4b71Sopenharmony_ci```
187e41f4b71Sopenharmony_cienum DrmCencAlgorithm
188e41f4b71Sopenharmony_ci```
189e41f4b71Sopenharmony_ci
190e41f4b71Sopenharmony_ci**Description**
191e41f4b71Sopenharmony_ci
192e41f4b71Sopenharmony_ciEnumerates the DRM CENC algorithm types.
193e41f4b71Sopenharmony_ci
194e41f4b71Sopenharmony_ci**Since**: 12
195e41f4b71Sopenharmony_ci
196e41f4b71Sopenharmony_ci| Value| Description| 
197e41f4b71Sopenharmony_ci| -------- | -------- |
198e41f4b71Sopenharmony_ci| DRM_ALG_CENC_UNENCRYPTED | No encryption algorithm is used.| 
199e41f4b71Sopenharmony_ci| DRM_ALG_CENC_AES_CTR | AES CTR algorithm.| 
200e41f4b71Sopenharmony_ci| DRM_ALG_CENC_AES_WV | AES WV algorithm.| 
201e41f4b71Sopenharmony_ci| DRM_ALG_CENC_AES_CBC | AES CBC algorithm.| 
202e41f4b71Sopenharmony_ci| DRM_ALG_CENC_SM4_CBC | SM4 CBC algorithm.| 
203e41f4b71Sopenharmony_ci| DRM_ALG_CENC_SM4_CTR | SM4 CTR algorithm.| 
204e41f4b71Sopenharmony_ci
205e41f4b71Sopenharmony_ci
206e41f4b71Sopenharmony_ci### DrmCencInfoMode
207e41f4b71Sopenharmony_ci
208e41f4b71Sopenharmony_ci```
209e41f4b71Sopenharmony_cienum DrmCencInfoMode
210e41f4b71Sopenharmony_ci```
211e41f4b71Sopenharmony_ci
212e41f4b71Sopenharmony_ci**Description**
213e41f4b71Sopenharmony_ci
214e41f4b71Sopenharmony_ciEnumerates the modes for setting the key ID, IV, and subsample information in the CENC information.
215e41f4b71Sopenharmony_ci
216e41f4b71Sopenharmony_ci**Since**: 12
217e41f4b71Sopenharmony_ci
218e41f4b71Sopenharmony_ci| Value| Description| 
219e41f4b71Sopenharmony_ci| -------- | -------- |
220e41f4b71Sopenharmony_ci| DRM_CENC_INFO_KEY_IV_SUBSAMPLES_SET | The key ID, IV, and subsample information is set.| 
221e41f4b71Sopenharmony_ci| DRM_CENC_INFO_KEY_IV_SUBSAMPLES_NOT_SET | The key ID, IV, and subsample information is not set.| 
222e41f4b71Sopenharmony_ci
223e41f4b71Sopenharmony_ci
224e41f4b71Sopenharmony_ci## Function Description
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**Description**
234e41f4b71Sopenharmony_ci
235e41f4b71Sopenharmony_ciCreates an **OH_AVCencInfo** instance for setting the CENC information.
236e41f4b71Sopenharmony_ci
237e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter
238e41f4b71Sopenharmony_ci
239e41f4b71Sopenharmony_ci**Since**: 12
240e41f4b71Sopenharmony_ci
241e41f4b71Sopenharmony_ci**Returns**
242e41f4b71Sopenharmony_ci
243e41f4b71Sopenharmony_ciReturns the pointer to the **OH_AVCencInfo** instance created if the operation is successful; returns a null pointer otherwise.
244e41f4b71Sopenharmony_ci
245e41f4b71Sopenharmony_ciThe possible causes of an operation failure are as follows: The application address space is full, or the data in the object fails to be initialized.
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**Description**
255e41f4b71Sopenharmony_ci
256e41f4b71Sopenharmony_ciDestroys an **OH_AVCencInfo** instance and clears internal resources.
257e41f4b71Sopenharmony_ci
258e41f4b71Sopenharmony_ciAn instance can be destroyed only once. Do not use the instance until it is created again. You are advised to set the instance pointer to a null pointer once the instance is destroyed.
259e41f4b71Sopenharmony_ci
260e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter
261e41f4b71Sopenharmony_ci
262e41f4b71Sopenharmony_ci**Since**: 12
263e41f4b71Sopenharmony_ci
264e41f4b71Sopenharmony_ci**Parameters**
265e41f4b71Sopenharmony_ci
266e41f4b71Sopenharmony_ci| Name| Description| 
267e41f4b71Sopenharmony_ci| -------- | -------- |
268e41f4b71Sopenharmony_ci| cencInfo | Pointer to an **OH_AVCencInfo** instance.| 
269e41f4b71Sopenharmony_ci
270e41f4b71Sopenharmony_ci**Returns**
271e41f4b71Sopenharmony_ci
272e41f4b71Sopenharmony_ciReturns a result code defined in [OH_AVErrCode](_core.md#oh_averrcode). The following result codes are possible:
273e41f4b71Sopenharmony_ci
274e41f4b71Sopenharmony_ci**AV_ERR_OK** (value: 0): The operation is successful.
275e41f4b71Sopenharmony_ci
276e41f4b71Sopenharmony_ci**AV_ERR_INVALID_VAL** (value: 3): The cencInfo struct is empty.
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**Description**
286e41f4b71Sopenharmony_ci
287e41f4b71Sopenharmony_ciSets an encryption algorithm of the CENC information.
288e41f4b71Sopenharmony_ci
289e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter
290e41f4b71Sopenharmony_ci
291e41f4b71Sopenharmony_ci**Since**: 12
292e41f4b71Sopenharmony_ci
293e41f4b71Sopenharmony_ci**Parameters**
294e41f4b71Sopenharmony_ci
295e41f4b71Sopenharmony_ci| Name| Description| 
296e41f4b71Sopenharmony_ci| -------- | -------- |
297e41f4b71Sopenharmony_ci| cencInfo | Pointer to an **OH_AVCencInfo** instance.| 
298e41f4b71Sopenharmony_ci| algo | Encryption algorithm.| 
299e41f4b71Sopenharmony_ci
300e41f4b71Sopenharmony_ci**Returns**
301e41f4b71Sopenharmony_ci
302e41f4b71Sopenharmony_ciReturns a result code defined in [OH_AVErrCode](_core.md#oh_averrcode). The following result codes are possible:
303e41f4b71Sopenharmony_ci
304e41f4b71Sopenharmony_ci**AV_ERR_OK** (value: 0): The operation is successful.
305e41f4b71Sopenharmony_ci
306e41f4b71Sopenharmony_ci**AV_ERR_INVALID_VAL** (value: 3): The cencInfo struct is empty.
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**Description**
316e41f4b71Sopenharmony_ci
317e41f4b71Sopenharmony_ciSets the CENC information to an AVBuffer.
318e41f4b71Sopenharmony_ci
319e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter
320e41f4b71Sopenharmony_ci
321e41f4b71Sopenharmony_ci**Since**: 12
322e41f4b71Sopenharmony_ci
323e41f4b71Sopenharmony_ci**Parameters**
324e41f4b71Sopenharmony_ci
325e41f4b71Sopenharmony_ci| Name| Description| 
326e41f4b71Sopenharmony_ci| -------- | -------- |
327e41f4b71Sopenharmony_ci| cencInfo | Pointer to an **OH_AVCencInfo** instance.| 
328e41f4b71Sopenharmony_ci| buffer | Pointer to the frame buffer that carries data.| 
329e41f4b71Sopenharmony_ci
330e41f4b71Sopenharmony_ci**Returns**
331e41f4b71Sopenharmony_ci
332e41f4b71Sopenharmony_ciReturns a result code defined in [OH_AVErrCode](_core.md#oh_averrcode). The following result codes are possible:
333e41f4b71Sopenharmony_ci
334e41f4b71Sopenharmony_ci**AV_ERR_OK** (value: 0): The operation is successful.
335e41f4b71Sopenharmony_ci
336e41f4b71Sopenharmony_ci**AV_ERR_INVALID_VAL** (value: 3): **cencInfo**, **buffer**, **buffer-&gt;buffer_**, or **buffer-&gt;buffer_-&gt;meta_** is null.
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**Description**
346e41f4b71Sopenharmony_ci
347e41f4b71Sopenharmony_ciSets the key ID and IV in the CENC information.
348e41f4b71Sopenharmony_ci
349e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter
350e41f4b71Sopenharmony_ci
351e41f4b71Sopenharmony_ci**Since**: 12
352e41f4b71Sopenharmony_ci
353e41f4b71Sopenharmony_ci**Parameters**
354e41f4b71Sopenharmony_ci
355e41f4b71Sopenharmony_ci| Name| Description| 
356e41f4b71Sopenharmony_ci| -------- | -------- |
357e41f4b71Sopenharmony_ci| cencInfo | Pointer to an **OH_AVCencInfo** instance.| 
358e41f4b71Sopenharmony_ci| keyId | Pointer to the key ID.| 
359e41f4b71Sopenharmony_ci| keyIdLen | Length of the key ID.| 
360e41f4b71Sopenharmony_ci| iv | Pointer to the IV.| 
361e41f4b71Sopenharmony_ci| ivLen | Length of the IV.| 
362e41f4b71Sopenharmony_ci
363e41f4b71Sopenharmony_ci**Returns**
364e41f4b71Sopenharmony_ci
365e41f4b71Sopenharmony_ciReturns a result code defined in [OH_AVErrCode](_core.md#oh_averrcode). The following result codes are possible:
366e41f4b71Sopenharmony_ci
367e41f4b71Sopenharmony_ci**AV_ERR_OK** (value: 0): The operation is successful.
368e41f4b71Sopenharmony_ci
369e41f4b71Sopenharmony_ci**AV_ERR_INVALID_VAL** (value: 3): **cencInfo**, **keyId**, or **iv** is null, **keyIdLen** is not equal to **DRM_KEY_ID_SIZE**, **ivLen** is not equal to **DRM_KEY_IV_SIZE**, the key ID or IV fails to be copied.
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**Description**
379e41f4b71Sopenharmony_ci
380e41f4b71Sopenharmony_ciSets the CENC information mode.
381e41f4b71Sopenharmony_ci
382e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter
383e41f4b71Sopenharmony_ci
384e41f4b71Sopenharmony_ci**Since**: 12
385e41f4b71Sopenharmony_ci
386e41f4b71Sopenharmony_ci**Parameters**
387e41f4b71Sopenharmony_ci
388e41f4b71Sopenharmony_ci| Name| Description| 
389e41f4b71Sopenharmony_ci| -------- | -------- |
390e41f4b71Sopenharmony_ci| cencInfo | Pointer to an **OH_AVCencInfo** instance.| 
391e41f4b71Sopenharmony_ci| mode | CENC information mode, indicating whether the key ID, IV, and subsample information is set.| 
392e41f4b71Sopenharmony_ci
393e41f4b71Sopenharmony_ci**Returns**
394e41f4b71Sopenharmony_ci
395e41f4b71Sopenharmony_ciReturns a result code defined in [OH_AVErrCode](_core.md#oh_averrcode). The following result codes are possible:
396e41f4b71Sopenharmony_ci
397e41f4b71Sopenharmony_ci**AV_ERR_OK** (value: 0): The operation is successful.
398e41f4b71Sopenharmony_ci
399e41f4b71Sopenharmony_ci**AV_ERR_INVALID_VAL** (value: 3): The cencInfo struct is empty.
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**Description**
409e41f4b71Sopenharmony_ci
410e41f4b71Sopenharmony_ciSets the subsample information in the CENC information.
411e41f4b71Sopenharmony_ci
412e41f4b71Sopenharmony_ci**System capability**: SystemCapability.Multimedia.Media.Spliter
413e41f4b71Sopenharmony_ci
414e41f4b71Sopenharmony_ci**Since**: 12
415e41f4b71Sopenharmony_ci
416e41f4b71Sopenharmony_ci**Parameters**
417e41f4b71Sopenharmony_ci
418e41f4b71Sopenharmony_ci| Name| Description| 
419e41f4b71Sopenharmony_ci| -------- | -------- |
420e41f4b71Sopenharmony_ci| cencInfo | Pointer to an **OH_AVCencInfo** instance.| 
421e41f4b71Sopenharmony_ci| encryptedBlockCount | Number of encrypted blocks.| 
422e41f4b71Sopenharmony_ci| skippedBlockCount | Number of non-encrypted blocks.| 
423e41f4b71Sopenharmony_ci| firstEncryptedOffset | Offset of the first encrypted payload.| 
424e41f4b71Sopenharmony_ci| subsampleCount | Number of subsamples.| 
425e41f4b71Sopenharmony_ci| subsamples | Pointer to the subsamples.| 
426e41f4b71Sopenharmony_ci
427e41f4b71Sopenharmony_ci**Returns**
428e41f4b71Sopenharmony_ci
429e41f4b71Sopenharmony_ciReturns a result code defined in [OH_AVErrCode](_core.md#oh_averrcode). The following result codes are possible:
430e41f4b71Sopenharmony_ci
431e41f4b71Sopenharmony_ci**AV_ERR_OK** (value: 0): The operation is successful.
432e41f4b71Sopenharmony_ci
433e41f4b71Sopenharmony_ci**AV_ERR_INVALID_VAL** (value: 3): **cencInfo** is null, **subsampleCount** is greater than **DRM_KEY_MAX_SUB_SAMPLE_NUM**, or **subsamples** is null.
434