attribut MFSampleExtension_Encryption_ProtectionScheme
Spécifie le schéma de protection pour les exemples chiffrés.
Type de données
UINT32
Notes
La valeur de cet attribut est membre de l’énumération MFSampleEncryptionProtectionScheme . Dans les cas où la source du média est basée sur MP4, la valeur est définie en fonction de la valeur du champ scheme_type dans la zone de type de schéma (« schm ») dans l’en-tête MP4 (« moov » ou « moof »).
Si le champ scheme_type dans un fichier ou un flux MP4 est défini sur « cenc » ou « cbc1 », l’attribut MFSampleExtension_Encryption_ProtectionScheme doit être défini sur PROTECTION_SCHEME_AES_CTR ou PROTECTION_SCHEME_CBC, respectivement, et aucune valeur ne doit être définie pour MFSampleExtension_Encryption_CryptByteBlock et MFSampleExtension_Encryption_SkipByteBlock.
Si le champ scheme_type dans un fichier mp4, ou un flux, est défini sur « cens » ou « cbcs », l’attribut MFSampleExtension_Encryption_ProtectionScheme doit être défini sur PROTECTION_SCHEME_AES_CTR ou PROTECTION_SCHEME_CBC, respectivement, et MFSampleExtension_Encryption_CryptByteBlock et MFSampleExtension_Encryption_SkipByteBlock doivent être définis à l’aide des valeurs de la zone « tenc ».
Exemples
L’exemple suivant montre comment définir le MFSampleExtension_Encryption_ProtectionScheme et les attributs MFSampleExtension_Encryption_CryptByteBlock et MFSampleExtension_Encryption_SkipByteBlock associés.
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;
}
Spécifications
Condition requise | Valeur |
---|---|
Client minimal pris en charge |
Windows 10, version 1709 [applications de bureau uniquement] |
Serveur minimal pris en charge |
Aucun pris en charge |
En-tête |
|