#![allow(non_upper_case_globals)]
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
#![allow(deprecated)]
#[allow(unused_imports)]
use crate::averrors::OH_AVErrCode;
pub const DRM_KEY_ID_SIZE: u32 = 16;
pub const DRM_KEY_IV_SIZE: u32 = 16;
pub const DRM_KEY_MAX_SUB_SAMPLE_NUM: u32 = 64;
#[cfg(feature = "api-12")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-12")))]
#[repr(C)]
pub struct OH_AVBuffer {
_unused: [u8; 0],
}
#[cfg(feature = "api-12")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-12")))]
#[repr(C)]
pub struct OH_AVCencInfo {
_unused: [u8; 0],
}
#[cfg(feature = "api-12")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-12")))]
impl DrmCencAlgorithm {
pub const DRM_ALG_CENC_UNENCRYPTED: DrmCencAlgorithm = DrmCencAlgorithm(0);
pub const DRM_ALG_CENC_AES_CTR: DrmCencAlgorithm = DrmCencAlgorithm(1);
pub const DRM_ALG_CENC_AES_WV: DrmCencAlgorithm = DrmCencAlgorithm(2);
pub const DRM_ALG_CENC_AES_CBC: DrmCencAlgorithm = DrmCencAlgorithm(3);
pub const DRM_ALG_CENC_SM4_CBC: DrmCencAlgorithm = DrmCencAlgorithm(4);
pub const DRM_ALG_CENC_SM4_CTR: DrmCencAlgorithm = DrmCencAlgorithm(5);
}
#[repr(transparent)]
#[cfg(feature = "api-12")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-12")))]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub struct DrmCencAlgorithm(pub ::core::ffi::c_uint);
#[cfg(feature = "api-12")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-12")))]
impl DrmCencInfoMode {
pub const DRM_CENC_INFO_KEY_IV_SUBSAMPLES_SET: DrmCencInfoMode = DrmCencInfoMode(0);
pub const DRM_CENC_INFO_KEY_IV_SUBSAMPLES_NOT_SET: DrmCencInfoMode = DrmCencInfoMode(1);
}
#[repr(transparent)]
#[cfg(feature = "api-12")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-12")))]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub struct DrmCencInfoMode(pub ::core::ffi::c_uint);
#[cfg(feature = "api-12")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-12")))]
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct DrmSubsample {
pub clearHeaderLen: u32,
pub payLoadLen: u32,
}
extern "C" {
#[cfg(feature = "api-12")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-12")))]
pub fn OH_AVCencInfo_Create() -> *mut OH_AVCencInfo;
#[cfg(feature = "api-12")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-12")))]
pub fn OH_AVCencInfo_Destroy(cencInfo: *mut OH_AVCencInfo) -> OH_AVErrCode;
#[cfg(feature = "api-12")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-12")))]
pub fn OH_AVCencInfo_SetAlgorithm(
cencInfo: *mut OH_AVCencInfo,
algo: DrmCencAlgorithm,
) -> OH_AVErrCode;
#[cfg(feature = "api-12")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-12")))]
pub fn OH_AVCencInfo_SetKeyIdAndIv(
cencInfo: *mut OH_AVCencInfo,
keyId: *mut u8,
keyIdLen: u32,
iv: *mut u8,
ivLen: u32,
) -> OH_AVErrCode;
#[cfg(feature = "api-12")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-12")))]
pub fn OH_AVCencInfo_SetSubsampleInfo(
cencInfo: *mut OH_AVCencInfo,
encryptedBlockCount: u32,
skippedBlockCount: u32,
firstEncryptedOffset: u32,
subsampleCount: u32,
subsamples: *mut DrmSubsample,
) -> OH_AVErrCode;
#[cfg(feature = "api-12")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-12")))]
pub fn OH_AVCencInfo_SetMode(
cencInfo: *mut OH_AVCencInfo,
mode: DrmCencInfoMode,
) -> OH_AVErrCode;
#[cfg(feature = "api-12")]
#[cfg_attr(docsrs, doc(cfg(feature = "api-12")))]
pub fn OH_AVCencInfo_SetAVBuffer(
cencInfo: *mut OH_AVCencInfo,
buffer: *mut OH_AVBuffer,
) -> OH_AVErrCode;
}