MFSampleExtension_Encryption_ProtectionScheme屬性
指定加密範例的保護設定。
資料類型
UINT32
備註
此屬性的值是 MFSampleEncryptionProtectionScheme 列舉的成員。 如果媒體來源是以 MP4 為基礎,則會根據配置類型方塊中的 [scheme_type ] 欄位的值來設定值, ('schm') MP4 標頭 ('moov' 或 'moof') 。
如果以 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 [僅限傳統型應用程式] |
最低支援的伺服器 |
都不支援 |
標頭 |
|