MFSampleExtension _ Encryption _ ProtectionScheme-Attribut

Gibt das Schutzschema für verschlüsselte Beispiele an.

Datentyp

UINT32

Hinweise

Der Wert dieses Attributs ist ein Member der MFSampleEncryptionProtectionScheme-Enumeration. In Fällen, in denen die Medienquelle MP4-basiert ist, wird _ der Wert auf Grundlage des Werts des Schematypfelds innerhalb des Schematypfelds ("")" im MP4-Header ("moov" oder "moof") festgelegt.

Wenn das _ Schematypfeld in einer MP4-basierten Datei oder einem Stream auf "cenc" oder "cbc1" festgelegt ist, sollte das MFSampleExtension _ Encryption _ ProtectionScheme-Attribut auf PROTECTION SCHEME _ _ AES _ CTR bzw. PROTECTION SCHEME _ _ CBC festgelegt werden, und es sollten keine Werte für MFSampleExtension _ Encryption _ CryptByteBlock und MFSampleExtension _ Encryption _ SkipByteBlockfestgelegt werden.

Wenn _ das Schematypfeld in einer MP4-basierten Datei oder einem Stream auf "cens" oder "cbcs" festgelegt ist, sollte das MFSampleExtension _ Encryption _ ProtectionScheme-Attribut auf PROTECTION SCHEME _ _ AES _ CTR bzw. PROTECTION SCHEME _ _ CBC festgelegt werden, und MFSampleExtension _ Encryption _ CryptByteBlock und MFSampleExtension _ Encryption _ SkipByteBlock müssen mithilfe der Werte im Feld "tenc" festgelegt werden.

Beispiele

Das folgende Beispiel zeigt, wie Sie die Attribute MFSampleExtension _ Encryption _ ProtectionScheme und die zugeordneten Attribute "MFSampleExtension _ Encryption _ CryptByteBlock" und "MFSampleExtension _ Encryption _ SkipByteBlock" festlegen.

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

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows 10, version 1709 desktop apps only (Nur [ Desktop-Apps der Version 1709)]
Unterstützte Mindestversion (Server)
Nicht unterstützt
Header
Mfidl.h