atributo MFSampleExtension_Encryption_ProtectionScheme
Especifica el esquema de protección para ejemplos cifrados.
Tipo de datos
UINT32
Comentarios
El valor de este atributo es un miembro de la enumeración MFSampleEncryptionProtectionScheme . En los casos en los que el origen multimedia está basado en MP4, el valor se establece en función del valor del campo scheme_type dentro del cuadro de tipo de esquema ('schm') en el encabezado MP4 ('moov' o 'moof').
Si el campo scheme_type en un archivo basado en MP4, o secuencia, se establece en "cenc" o "cbc1", el atributo MFSampleExtension_Encryption_ProtectionScheme debe establecerse en PROTECTION_SCHEME_AES_CTR o PROTECTION_SCHEME_CBC, respectivamente, y no se debe establecer ningún valor para MFSampleExtension_Encryption_CryptByteBlock y MFSampleExtension_Encryption_SkipByteBlock.
Si el campo scheme_type en un archivo basado en MP4, o secuencia, se establece en "cens" o "cbcs", el atributo MFSampleExtension_Encryption_ProtectionScheme debe establecerse en PROTECTION_SCHEME_AES_CTR o PROTECTION_SCHEME_CBC, respectivamente, y MFSampleExtension_Encryption_CryptByteBlock y MFSampleExtension_Encryption_SkipByteBlock deben establecerse con los valores del cuadro "tenc".
Ejemplos
En el ejemplo siguiente se muestra cómo establecer el MFSampleExtension_Encryption_ProtectionScheme y los atributos de MFSampleExtension_Encryption_CryptByteBlock y MFSampleExtension_Encryption_SkipByteBlock asociados.
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 | Value |
---|---|
Cliente mínimo compatible |
Windows 10, versión 1709 [solo aplicaciones de escritorio] |
Servidor mínimo compatible |
No se admite ninguno |
Encabezado |
|