atributo MFSampleExtension_Encryption_ProtectionScheme
Especifica o esquema de proteção para amostras criptografadas.
Tipo de dados
UINT32
Comentários
O valor desse atributo é um membro da enumeração MFSampleEncryptionProtectionScheme . Nos casos em que a fonte de mídia é baseada em MP4, o valor é definido com base no valor do campo scheme_type dentro da caixa de tipo de esquema ('schm') no cabeçalho MP4 ('moov' ou 'moof').
Se o campo scheme_type em um arquivo baseado em MP4 ou fluxo for definido como 'cenc' ou 'cbc1', o atributo MFSampleExtension_Encryption_ProtectionScheme deverá ser definido como PROTECTION_SCHEME_AES_CTR ou PROTECTION_SCHEME_CBC, respectivamente, e nenhum valor deve ser definido para MFSampleExtension_Encryption_CryptByteBlock e MFSampleExtension_Encryption_SkipByteBlock.
Se o campo scheme_type em um arquivo baseado em MP4 ou fluxo for definido como 'cens' ou 'cbcs', o atributo MFSampleExtension_Encryption_ProtectionScheme deverá ser definido como PROTECTION_SCHEME_AES_CTR ou PROTECTION_SCHEME_CBC, respectivamente, e MFSampleExtension_Encryption_CryptByteBlock e MFSampleExtension_Encryption_SkipByteBlock devem ser definidos usando os valores na caixa 'tenc'.
Exemplos
O exemplo a seguir mostra como definir o MFSampleExtension_Encryption_ProtectionScheme e os atributos MFSampleExtension_Encryption_CryptByteBlock e MFSampleExtension_Encryption_SkipByteBlock associados.
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;
}
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte |
Windows 10, versão 1709 [somente aplicativos da área de trabalho] |
Servidor mínimo com suporte |
Nenhum compatível |
Cabeçalho |
|