MFSampleExtension_Encryption_ProtectionScheme 属性
指定加密示例的保护方案。
数据类型
UINT32
备注
此属性的值是 MFSampleEncryptionProtectionScheme 枚举的成员。 如果媒体源是基于 MP4 的,则根据 mp4 标头 (“moov”或“moof” ) 中的方案类型框 ('schm') scheme_type字段的值来设置该值。
如果基于 MP4 的文件或流中的 scheme_type 字段设置为“cenc”或“cbc1”,则 MFSampleExtension_Encryption_ProtectionScheme 属性应分别设置为 PROTECTION_SCHEME_AES_CTR 或 PROTECTION_SCHEME_CBC,并且不应为 MFSampleExtension_Encryption_CryptByteBlock 和 MFSampleExtension_Encryption_SkipByteBlock设置任何值。
如果基于 MP4 的文件或流中的 scheme_type 字段设置为“cens”或“cbcs”,则 MFSampleExtension_Encryption_ProtectionScheme 属性应分别设置为 PROTECTION_SCHEME_AES_CTR 或 PROTECTION_SCHEME_CBC,并且必须使用“tenc”框中的值设置 MFSampleExtension_Encryption_CryptByteBlock 和 MFSampleExtension_Encryption_SkipByteBlock 。
示例
以下示例演示如何设置 MFSampleExtension_Encryption_ProtectionScheme 以及关联的 MFSampleExtension_Encryption_CryptByteBlock 和 MFSampleExtension_Encryption_SkipByteBlock 属性。
HRESULT AddEncryptionAttributes(_In_ IMFSample* pSample, _In_ bool fIsEncrypted)
{
HRESULT hr = S_OK;
if (fIsEncrypted)
{
//Set Encryption Protection Scheme
hr = pSample->UINT32(MFSampleExtension_Encryption_ProtectionScheme,
SAMPLE_ENCRYPTION_PROTECTION_SCHEME_AES_CBC);
if (FAILED(hr))
return hr;
//Set the Initialization Vector (IV)
//(spSampleEncryptionData is omitted from this example for simplicity.)
hr = pSample->SetBlob(MFSampleExtension_Encryption_SampleID,
(BYTE*)(spSampleEncryptionData->m_pInitializationVector),
spSampleEncryptionData->m_bIVSize);
if (FAILED(hr))
return hr;
//Set crypt and skip byte blocks for pattern encryption
hr = pSample->SetUINT32(MFSampleExtension_Encryption_CryptByteBlock, 1);
if (FAILED(hr))
return hr;
hr = pSample->SetUINT32(MFSampleExtension_Encryption_SkipByteBlock, 9);
if (FAILED(hr))
return hr;
}
return hr;
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 |
Windows 10版本 1709 [仅限桌面应用] |
最低受支持的服务器 |
无受支持的版本 |
标头 |
|