次の方法で共有


MFSampleExtension_Encryption_ProtectionScheme属性

暗号化されたサンプルの保護スキームを指定します。

データ型

UINT32

注釈

この属性の値は、 MFSampleEncryptionProtectionScheme 列挙体のメンバーです。 メディア ソースが MP4 ベースの場合、値は MP4 ヘッダー ('moov' または 'moof') のスキームの種類ボックス ('schm') 内の scheme_type フィールドの値に基づいて設定されます。

MP4 ベースのファイル (ストリーム) の scheme_type フィールドが 'cenc' または 'cbc1' に設定されている場合は、 MFSampleExtension_Encryption_ProtectionScheme 属性をそれぞれ PROTECTION_SCHEME_AES_CTR または PROTECTION_SCHEME_CBCに設定し、 MFSampleExtension_Encryption_CryptByteBlockMFSampleExtension_Encryption_SkipByteBlockに値を設定する必要はありません。

MP4 ベースのファイルまたはストリームの scheme_type フィールドが 'cens' または 'cbcs' に設定されている場合は、 MFSampleExtension_Encryption_ProtectionScheme 属性をそれぞれ PROTECTION_SCHEME_AES_CTR または PROTECTION_SCHEME_CBC に設定し、'tenc' ボックスの値を使用して MFSampleExtension_Encryption_CryptByteBlockMFSampleExtension_Encryption_SkipByteBlock を設定する必要があります。

次の例では、MFSampleExtension_Encryption_ProtectionSchemeと関連付けられている MFSampleExtension_Encryption_CryptByteBlock 属性と MFSampleExtension_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 [デスクトップ アプリのみ]
サポートされている最小のサーバー
サポートなし
Header
Mfidl.h