MFSampleExtension_Encryption_ProtectionScheme-Attribut
Gibt das Schutzschema für verschlüsselte Beispiele an.
Datentyp
UINT32
Bemerkungen
Der Wert dieses Attributs ist ein Element der MFSampleEncryptionProtectionScheme-Enumeration . In Fällen, in denen die Medienquelle MP4-basiert, wird der Wert basierend auf dem Wert des felds scheme_type im Schematypfeld ("schm") im MP4-Header ("moov" oder "moof") festgelegt.
Wenn das scheme_type Feld in einer MP4-basierten Datei oder einem Stream auf "cenc" oder "cbc1" festgelegt ist, sollte das attribut MFSampleExtension_Encryption_ProtectionScheme auf PROTECTION_SCHEME_AES_CTR bzw . PROTECTION_SCHEME_CBC festgelegt werden, und es sollten keine Werte für MFSampleExtension_Encryption_CryptByteBlock und MFSampleExtension_Encryption_SkipByteBlock festgelegt werden.
Wenn das scheme_type Feld in einer MP4-basierten Datei oder einem Stream auf "cens" oder "cbcs" festgelegt ist, sollte das attribut MFSampleExtension_Encryption_ProtectionScheme auf PROTECTION_SCHEME_AES_CTR bzw . PROTECTION_SCHEME_CBC festgelegt werden, und MFSampleExtension_Encryption_CryptByteBlock und MFSampleExtension_Encryption_SkipByteBlock müssen mithilfe der Werte im Feld "tenc" festgelegt werden.
Beispiele
Im folgenden Beispiel wird gezeigt, wie die MFSampleExtension_Encryption_ProtectionScheme und die zugehörigen MFSampleExtension_Encryption_CryptByteBlock - und MFSampleExtension_Encryption_SkipByteBlock-Attribute festgelegt werden.
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;
}
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) |
Windows 10, Version 1709 [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) |
Nicht unterstützt |
Header |
|