MFSampleExtension_Encryption_ProtectionScheme 属性

指定加密示例的保护方案。

数据类型

UINT32

备注

此属性的值是 MFSampleEncryptionProtectionScheme 枚举的成员。 如果媒体源是基于 MP4 的,则根据 mp4 标头 (“moov”或“moof” ) 中的方案类型框 ('schm') scheme_type字段的值来设置该值。

如果基于 MP4 的文件或流中的 scheme_type 字段设置为“cenc”或“cbc1”,则 MFSampleExtension_Encryption_ProtectionScheme 属性应分别设置为 PROTECTION_SCHEME_AES_CTRPROTECTION_SCHEME_CBC,并且不应为 MFSampleExtension_Encryption_CryptByteBlockMFSampleExtension_Encryption_SkipByteBlock设置任何值。

如果基于 MP4 的文件或流中的 scheme_type 字段设置为“cens”或“cbcs”,则 MFSampleExtension_Encryption_ProtectionScheme 属性应分别设置为 PROTECTION_SCHEME_AES_CTRPROTECTION_SCHEME_CBC,并且必须使用“tenc”框中的值设置 MFSampleExtension_Encryption_CryptByteBlockMFSampleExtension_Encryption_SkipByteBlock

示例

以下示例演示如何设置 MFSampleExtension_Encryption_ProtectionScheme 以及关联的 MFSampleExtension_Encryption_CryptByteBlockMFSampleExtension_Encryption_SkipByteBlock 属性。

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

要求

要求
最低受支持的客户端
Windows 10版本 1709 [仅限桌面应用]
最低受支持的服务器
无受支持的版本
标头
Mfidl.h