атрибут MFSampleExtension_Encryption_ProtectionScheme
Указывает схему защиты для зашифрованных примеров.
Тип данных
UINT32
Комментарии
Значение этого атрибута является членом перечисления MFSampleEncryptionProtectionScheme . В случаях, когда источник мультимедиа основан на MP4, значение задается на основе значения поля scheme_type в поле типа схемы (schm) в заголовке MP4 (moov или moof).
Если для поля scheme_type в mp4-файле или потоке задано значение cenc или cbc1, то атрибуту MFSampleExtension_Encryption_ProtectionScheme должно быть присвоено значение PROTECTION_SCHEME_AES_CTR или PROTECTION_SCHEME_CBC соответственно, и значения для MFSampleExtension_Encryption_CryptByteBlock и MFSampleExtension_Encryption_SkipByteBlock не следует задавать.
Если для поля scheme_type в mp4-файле или потоке задано значение "cens" или "cbcs", то для атрибута MFSampleExtension_Encryption_ProtectionScheme следует задать значение PROTECTION_SCHEME_AES_CTR или PROTECTION_SCHEME_CBC соответственно, а MFSampleExtension_Encryption_CryptByteBlock и MFSampleExtension_Encryption_SkipByteBlock следует задать с помощью значений в поле "tenc".
Примеры
В следующем примере показано, как задать 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 [только классические приложения] |
Минимальная версия сервера |
Ни одна версия не поддерживается |
Заголовок |
|