Compartilhar via


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