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->buffer_为空,或者buffer->buffer_->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 > DRM_KEY_MAX_SUB_SAMPLE_NUM,或者subsamples为空, 则返回此错误码。 434