Compartir a través de


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
Mfidl.h