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->buffer_**, or **buffer->buffer_->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