Freigeben über


MFSampleExtension_Encryption_ProtectionScheme-Attribut

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

Datentyp

UINT32

Bemerkungen

Der Wert dieses Attributs ist ein Element der MFSampleEncryptionProtectionScheme-Enumeration . In Fällen, in denen die Medienquelle MP4-basiert, wird der Wert basierend auf dem Wert des felds scheme_type im Schematypfeld ("schm") im MP4-Header ("moov" oder "moof") festgelegt.

Wenn das scheme_type Feld in einer MP4-basierten Datei oder einem Stream auf "cenc" oder "cbc1" festgelegt ist, sollte das attribut MFSampleExtension_Encryption_ProtectionScheme auf PROTECTION_SCHEME_AES_CTR bzw . PROTECTION_SCHEME_CBC festgelegt werden, und es sollten keine Werte für MFSampleExtension_Encryption_CryptByteBlock und MFSampleExtension_Encryption_SkipByteBlock festgelegt werden.

Wenn das scheme_type Feld in einer MP4-basierten Datei oder einem Stream auf "cens" oder "cbcs" festgelegt ist, sollte das attribut MFSampleExtension_Encryption_ProtectionScheme 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

Im folgenden Beispiel wird gezeigt, wie die MFSampleExtension_Encryption_ProtectionScheme und die zugehörigen MFSampleExtension_Encryption_CryptByteBlock - und MFSampleExtension_Encryption_SkipByteBlock-Attribute festgelegt werden.

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 [nur Desktop-Apps]
Unterstützte Mindestversion (Server)
Nicht unterstützt
Header
Mfidl.h