IEVRTrustedVideoPlugin
COM公式ドキュメント
拡張ビデオレンダラー (EVR) 用のプラグインコンポーネントが保護されたメディアを扱えるようにします。
メソッド 4
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
プラグインが現時点で一時的な脆弱性を持っているかどうかを照会します。
| pYes | BOOL* | out | Boolean 値を受け取ります。TRUE の場合、プラグインは現時点で一時的な脆弱性を持たず、保護されたコンテンツを受信できます。FALSE の場合、プラグインは一時的な脆弱性を持っています。メソッドが失敗した場合、EVR はこの値を FALSE(信頼されていない)として扱います。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドは、入力トラストオーソリティ (ITA) がプラグインを信頼しなくなる原因となる一時的な状態を、プラグインが報告するための手段を提供します。たとえば、EVR プレゼンターがウィンドウモードにある場合、GDI による画面キャプチャに対して脆弱です。
Direct3D で画面キャプチャを無効化するには、プラグインは次のことを行う必要があります。
- Direct3D デバイスをフルスクリーン排他モードで作成する。
- デバイスの作成時に D3DCREATE_DISABLE_PRINTSCREEN フラグを指定する。詳細については、DirectX のドキュメントの IDirect3D9::CreateDevice を参照してください。
これらの条件が満たされている場合、プレゼンターは pYes パラメーターに TRUE を返すことができます。それ以外の場合は FALSE を返す必要があります。
EVR は、デバイスが変化するたびにこのメソッドを呼び出します。プラグインが FALSE を返した場合、EVR はこの状態を、プラグインが未知の種類の新しい出力コネクターを持っているかのように扱います。ポリシーオブジェクトは、ITA のポリシーに応じて再生を許可またはブロックできます。
このメソッドは、一時的な状態を報告するためにのみ使用してください。決して信頼された状態にならないプラグインは、IEVRTrustedVideoPlugin インターフェイスをまったく実装すべきではありません。
プラグインが実効ビデオ解像度を制限できるかどうかを照会します。
| pYes | BOOL* | out | Boolean 値を受け取ります。TRUE の場合、プラグインは実効ビデオ解像度を制限できます。それ以外の場合、プラグインはビデオ解像度を制限できません。メソッドが失敗した場合、EVR はこの値を FALSE(サポートされていない)として扱います。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
制限 (constriction) は、ビデオフレームの実効解像度を指定した最大ピクセル数に制限する保護メカニズムです。
ビデオの制限は、ミキサーまたはプレゼンターのいずれかによって実装できます。
このメソッドが TRUE を返す場合、EVR はいつでも IEVRTrustedVideoPlugin::SetConstriction を呼び出す可能性があります。
実効ビデオ解像度を制限します。
| dwKPix | DWORD | in | 最終的なビデオ画像に含めることができるソースピクセルの最大数(1000 ピクセル単位)。値がゼロの場合、ビデオは無効になります。値が MAXDWORD (0xFFFFFFFF) の場合、ビデオの制限は解除され、ビデオはフル解像度でレンダリングされる可能性があります。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
このメソッドは、ビデオ画像の実効解像度を制限します。画像の引き伸ばしにより、ターゲットデバイス上の実際の解像度はより高くなる可能性があります。
IEVRTrustedVideoPlugin::CanConstrict メソッドが TRUE を返す場合、EVR はいつでもこのメソッドを呼び出す可能性があります。
プラグインがビデオ画像をエクスポートする機能を有効または無効にします。
| bDisable | BOOL | in | Boolean 値。画像のエクスポートを無効にするには TRUE を、有効にするには FALSE を指定します。 |
戻り値
このメソッドは HRESULT を返します。取り得る値には、以下の表に示すものが含まれますが、これらに限定されません。
| 戻り値 | 説明 |
|---|---|
| メソッドは成功しました。 |
解説(Remarks)
EVR プラグインは、アプリケーションがビデオフレームのコピーを取得する手段を公開することがあります。たとえば、標準の EVR プレゼンターは IMFVideoDisplayControl::GetCurrentImage を実装しています。
プラグインが画像のエクスポートをサポートしている場合、このメソッドはそれを有効または無効にします。このメソッドが初めて呼び出される前は、EVR はこのメカニズムが有効であると想定します。
プラグインが画像のエクスポートをサポートしていない場合、このメソッドは S_OK を返し、bDisable の値を無視すべきです。メソッドが失敗した場合、EVR はそれをポリシーの適用の失敗として扱い、これによりおそらく再生が停止します。
画像のエクスポートが無効になっている間、GetCurrentImage などの関連するエクスポートメソッドは、MF_E_LICENSE_INCORRECT_RIGHTS を返すべきです。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IEVRTrustedVideoPlugin "{83A4CE40-7710-494B-A893-A472049AF630}" #usecom global IEVRTrustedVideoPlugin IID_IEVRTrustedVideoPlugin "{}" #comfunc global IEVRTrustedVideoPlugin_IsInTrustedVideoMode 3 var #comfunc global IEVRTrustedVideoPlugin_CanConstrict 4 var #comfunc global IEVRTrustedVideoPlugin_SetConstriction 5 int #comfunc global IEVRTrustedVideoPlugin_DisableImageExport 6 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IEVRTrustedVideoPlugin "{83A4CE40-7710-494B-A893-A472049AF630}" #usecom global IEVRTrustedVideoPlugin IID_IEVRTrustedVideoPlugin "{}" #comfunc global IEVRTrustedVideoPlugin_IsInTrustedVideoMode 3 sptr #comfunc global IEVRTrustedVideoPlugin_CanConstrict 4 sptr #comfunc global IEVRTrustedVideoPlugin_SetConstriction 5 int #comfunc global IEVRTrustedVideoPlugin_DisableImageExport 6 int ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。