harmony 鸿蒙Multimedia_Drm
Multimedia_Drm
概述
三方应用自行实现媒体解封装,可使用本模块提供的接口设置解密参数, 且当DRM实例和会话创建完成后,以实现DRM加密节目的解密功能。
对应的开发指南及样例可参考媒体数据解析。
系统能力: SystemCapability.Multimedia.Media.Spliter
起始版本: 12
汇总
文件
名称 | 描述 |
---|---|
native_cencinfo.h | 声明用于设置解密参数的Native API。 |
结构体
名称 | 描述 |
---|---|
struct DrmSubsample | Subsample结构类型定义。 |
宏定义
名称 | 描述 |
---|---|
DRM_KEY_ID_SIZE 16 | Key id长度为16字节。 |
DRM_KEY_IV_SIZE 16 | Iv长度为16字节。 |
DRM_KEY_MAX_SUB_SAMPLE_NUM 64 | 最大的Subsample数量为64个。 |
类型定义
名称 | 描述 |
---|---|
typedef struct OH_AVBuffer OH_AVBuffer | AVBuffer结构。 |
typedef struct OH_AVCencInfo OH_AVCencInfo | AVCencInfo结构。 |
typedef enum DrmCencAlgorithm DrmCencAlgorithm | Drm CENC算法类型。 |
typedef enum DrmCencInfoMode DrmCencInfoMode | 枚举类型,表示cencInfo中keyId/iv/subsample信息是否设置。 |
typedef struct DrmSubsample DrmSubsample | Subsample结构类型定义。 |
枚举
名称 | 描述 |
---|---|
DrmCencAlgorithm { DRM_ALG_CENC_UNENCRYPTED = 0x0, DRM_ALG_CENC_AES_CTR = 0x1, DRM_ALG_CENC_AES_WV = 0x2, DRM_ALG_CENC_AES_CBC = 0x3, DRM_ALG_CENC_SM4_CBC = 0x4, DRM_ALG_CENC_SM4_CTR = 0x5 } |
Drm CENC算法类型。 |
DrmCencInfoMode { DRM_CENC_INFO_KEY_IV_SUBSAMPLES_SET = 0x0, DRM_CENC_INFO_KEY_IV_SUBSAMPLES_NOT_SET = 0x1 } |
枚举类型,表示cencInfo中keyId/iv/subsample信息是否设置。 |
函数
名称 | 描述 |
---|---|
OH_AVCencInfo * OH_AVCencInfo_Create () | 创建用于设置cencInfo的OH_AVCencInfo实例。 |
OH_AVErrCode OH_AVCencInfo_Destroy (OH_AVCencInfo *cencInfo) | 销毁OH_AVCencInfo实例并释放内部资源。 |
OH_AVErrCode OH_AVCencInfo_SetAlgorithm (OH_AVCencInfo *cencInfo, enum DrmCencAlgorithm algo) | 设置cencInfo加密算法。 |
OH_AVErrCode OH_AVCencInfo_SetKeyIdAndIv (OH_AVCencInfo *cencInfo, uint8_t *keyId, uint32_t keyIdLen, uint8_t *iv, uint32_t ivLen) | 设置cencInfo的keyId和iv。 |
OH_AVErrCode OH_AVCencInfo_SetSubsampleInfo (OH_AVCencInfo *cencInfo, uint32_t encryptedBlockCount, uint32_t skippedBlockCount, uint32_t firstEncryptedOffset, uint32_t subsampleCount, DrmSubsample *subsamples) | 设置cencInfo的subsamples信息。 |
OH_AVErrCode OH_AVCencInfo_SetMode (OH_AVCencInfo *cencInfo, enum DrmCencInfoMode mode) | 设置cencInfo的模式。 |
OH_AVErrCode OH_AVCencInfo_SetAVBuffer (OH_AVCencInfo *cencInfo, OH_AVBuffer *buffer) | 将cencInfo设置到AVBuffer。 |
宏定义说明
DRM_KEY_ID_SIZE
#define DRM_KEY_ID_SIZE 16
描述
Key id长度为16字节。
起始版本: 12
DRM_KEY_IV_SIZE
#define DRM_KEY_IV_SIZE 16
描述
Iv长度为16字节。
起始版本: 12
DRM_KEY_MAX_SUB_SAMPLE_NUM
#define DRM_KEY_MAX_SUB_SAMPLE_NUM 64
描述
最大的Subsample数量为64个。
起始版本: 12
类型定义说明
DrmCencAlgorithm
typedef enum DrmCencAlgorithm DrmCencAlgorithm
描述
Drm CENC算法类型。
起始版本: 12
DrmCencInfoMode
typedef enum DrmCencInfoMode DrmCencInfoMode
描述
枚举类型,表示cencInfo中keyId/iv/subsample信息是否设置。
起始版本: 12
DrmSubsample
typedef struct DrmSubsample DrmSubsample
描述
Subsample结构类型定义。
起始版本: 12
OH_AVBuffer
typedef struct OH_AVBuffer OH_AVBuffer
描述
AVBuffer结构。
起始版本: 12
OH_AVCencInfo
typedef struct OH_AVCencInfo OH_AVCencInfo
描述
AVCencInfo结构。
起始版本: 12
枚举类型说明
DrmCencAlgorithm
enum DrmCencAlgorithm
描述
Drm CENC算法类型。
起始版本: 12
枚举值 | 描述 |
---|---|
DRM_ALG_CENC_UNENCRYPTED | 不加密算法。 |
DRM_ALG_CENC_AES_CTR | AES CTR算法。 |
DRM_ALG_CENC_AES_WV | AES WV算法。 |
DRM_ALG_CENC_AES_CBC | AES CBC算法。 |
DRM_ALG_CENC_SM4_CBC | SM4 CBC算法。 |
DRM_ALG_CENC_SM4_CTR | SM4 CTR算法。 |
DrmCencInfoMode
enum DrmCencInfoMode
描述
枚举类型,表示cencInfo中keyId/iv/subsample信息是否设置。
起始版本: 12
枚举值 | 描述 |
---|---|
DRM_CENC_INFO_KEY_IV_SUBSAMPLES_SET | keyId/iv/subsample信息已设置。 |
DRM_CENC_INFO_KEY_IV_SUBSAMPLES_NOT_SET | keyId/iv/subsample信息未设置。 |
函数说明
OH_AVCencInfo_Create()
OH_AVCencInfo* OH_AVCencInfo_Create ()
描述
创建用于设置cencInfo的OH_AVCencInfo实例。
系统能力: SystemCapability.Multimedia.Media.Spliter
起始版本: 12
返回:
返回新创建的OH_AVCencInfo对象。如果返回nullptr,则表示创建对象失败。
可能失败的原因:应用程序地址空间已满,或者对象中的数据初始化失败。
OH_AVCencInfo_Destroy()
OH_AVErrCode OH_AVCencInfo_Destroy (OH_AVCencInfo * cencInfo)
描述
销毁OH_AVCencInfo实例并释放内部资源。
同一个实例只能销毁一次。在再次创建实例之前,不应使用该实例。 建议在实例销毁成功后立即将实例指针设置为nullptr。
系统能力: SystemCapability.Multimedia.Media.Spliter
起始版本: 12
参数:
名称 | 描述 |
---|---|
cencInfo | 指向OH_AVCencInfo实例的指针。 |
返回:
参考OH_AVErrCode:
AV_ERR_OK 0 - 执行成功。
AV_ERR_INVALID_VAL 3 - cencInfo为空。
OH_AVCencInfo_SetAlgorithm()
OH_AVErrCode OH_AVCencInfo_SetAlgorithm (OH_AVCencInfo * cencInfo, enum DrmCencAlgorithm algo )
描述
设置cencInfo加密算法。
系统能力: SystemCapability.Multimedia.Media.Spliter
起始版本: 12
参数:
名称 | 描述 |
---|---|
cencInfo | 指向OH_AVCencInfo实例的指针。 |
algo | 加密算法模式。 |
返回:
参考OH_AVErrCode:
AV_ERR_OK 0 - 执行成功。
AV_ERR_INVALID_VAL 3 - cencInfo为空。
OH_AVCencInfo_SetAVBuffer()
OH_AVErrCode OH_AVCencInfo_SetAVBuffer (OH_AVCencInfo * cencInfo, OH_AVBuffer * buffer )
描述
将cencInfo设置到AVBuffer。
系统能力: SystemCapability.Multimedia.Media.Spliter
起始版本: 12
参数:
名称 | 描述 |
---|---|
cencInfo | 指向OH_AVCencInfo实例的指针。 |
buffer | 携带数据的帧buffer。 |
返回:
参考OH_AVErrCode:
AV_ERR_OK 0 - 执行成功。
AV_ERR_INVALID_VAL 3 - 如果cencInfo为空,或者buffer为空, 或者buffer->buffer为空,或者buffer->buffer->meta_为空,则返回此错误码。
OH_AVCencInfo_SetKeyIdAndIv()
OH_AVErrCode OH_AVCencInfo_SetKeyIdAndIv (OH_AVCencInfo * cencInfo, uint8_t * keyId, uint32_t keyIdLen, uint8_t * iv, uint32_t ivLen )
描述
设置cencInfo的keyId和iv。
系统能力: SystemCapability.Multimedia.Media.Spliter
起始版本: 12
参数:
名称 | 描述 |
---|---|
cencInfo | 指向OH_AVCencInfo实例的指针。 |
keyId | Key标识。 |
keyIdLen | Key标识长度。 |
iv | 初始化向量。 |
ivLen | 初始化向量长度。 |
返回:
参考OH_AVErrCode:
AV_ERR_OK 0 - 执行成功。
AV_ERR_INVALID_VAL 3 - 如果cencInfo为空,或者keyId为空,或者keyIdLen != DRM_KEY_ID_SIZE,或者iv是空,或者ivLen != DRM_KEY_IV_SIZE,或者keyId拷贝失败,或者iv拷贝失败,则返回此错误码。
OH_AVCencInfo_SetMode()
OH_AVErrCode OH_AVCencInfo_SetMode (OH_AVCencInfo * cencInfo, enum DrmCencInfoMode mode )
描述
设置cencInfo的模式。
系统能力: SystemCapability.Multimedia.Media.Spliter
起始版本: 12
参数:
名称 | 描述 |
---|---|
cencInfo | 指向OH_AVCencInfo实例的指针。 |
mode | cencInfo模式,指示是否设置了keyId/iv/subsample。 |
返回:
参考OH_AVErrCode:
AV_ERR_OK 0 - 执行成功。
AV_ERR_INVALID_VAL 3 - cencInfo为空。
OH_AVCencInfo_SetSubsampleInfo()
OH_AVErrCode OH_AVCencInfo_SetSubsampleInfo (OH_AVCencInfo * cencInfo, uint32_t encryptedBlockCount, uint32_t skippedBlockCount, uint32_t firstEncryptedOffset, uint32_t subsampleCount, DrmSubsample * subsamples )
描述
设置cencInfo的subsamples信息。
系统能力: SystemCapability.Multimedia.Media.Spliter
起始版本: 12
参数:
名称 | 描述 |
---|---|
cencInfo | 指向OH_AVCencInfo实例的指针。 |
encryptedBlockCount | 加密块的数量。 |
skippedBlockCount | 不加密块的数量。 |
firstEncryptedOffset | 第一个加密有效负载的偏移量。 |
subsampleCount | Subsample数量。 |
subsamples | Subsample内容集。 |
返回:
参考OH_AVErrCode:
AV_ERR_OK 0 - 执行成功。
AV_ERR_INVALID_VAL 3 - 如果cencInfo为空, 或者subsampleCount > DRM_KEY_MAX_SUB_SAMPLE_NUM,或者subsamples为空, 则返回此错误码。
你可能感兴趣的鸿蒙文章
- 所属分类: 后端技术
- 本文标签:
热门推荐
-
2、 - 优质文章
-
3、 gate.io
-
8、 golang
-
9、 openharmony
-
10、 Vue中input框自动聚焦