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_CryptByteBlock と MFSampleExtension_Encryption_SkipByteBlockに値を設定する必要はありません。
MP4 ベースのファイルまたはストリームの scheme_type フィールドが 'cens' または 'cbcs' に設定されている場合は、 MFSampleExtension_Encryption_ProtectionScheme 属性をそれぞれ PROTECTION_SCHEME_AES_CTR または PROTECTION_SCHEME_CBC に設定し、'tenc' ボックスの値を使用して MFSampleExtension_Encryption_CryptByteBlock と MFSampleExtension_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 |
|