attributo MFSampleExtension_Encryption_ProtectionScheme

Specifica lo schema di protezione per gli esempi crittografati.

Tipo di dati

UINT32

Commenti

Il valore di questo attributo è un membro dell'enumerazione MFSampleEncryptionProtectionScheme . Nei casi in cui l'origine multimediale è basata su MP4, il valore viene impostato in base al valore del campo scheme_type all'interno della casella di tipo schema ('schm') nell'intestazione MP4 ('moov' o 'moof').

Se il campo scheme_type in un file basato su MP4 o flusso è impostato su "cenc" o "cbc1", l'attributo MFSampleExtension_Encryption_ProtectionScheme deve essere impostato rispettivamente su PROTECTION_SCHEME_AES_CTR o PROTECTION_SCHEME_CBC e non è necessario impostare alcun valore per MFSampleExtension_Encryption_CryptByteBlock e MFSampleExtension_Encryption_SkipByteBlock.

Se il campo scheme_type in un file basato su MP4 o un flusso è impostato su "cens" o "cbcs", l'attributo MFSampleExtension_Encryption_ProtectionScheme deve essere impostato rispettivamente su PROTECTION_SCHEME_AES_CTR o PROTECTION_SCHEME_CBC, rispettivamente, e MFSampleExtension_Encryption_CryptByteBlock e MFSampleExtension_Encryption_SkipByteBlock devono essere impostati usando i valori nella casella "tenc".

Esempio

Nell'esempio seguente viene illustrato come impostare il MFSampleExtension_Encryption_ProtectionScheme e gli attributi MFSampleExtension_Encryption_CryptByteBlock e MFSampleExtension_Encryption_SkipByteBlock associati.

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;
}

Requisiti

Requisito Valore
Client minimo supportato
Windows 10 versione 1709 [solo app desktop]
Server minimo supportato
Nessuno supportato
Intestazione
Mfidl.h