Win32 API 日本語リファレンス
ホームMedia.MediaFoundation › IMFMediaEngineProtectedContent

IMFMediaEngineProtectedContent

COM
IID9f8021e8-9c8c-487e-bb5c-79aa4779938c継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

Media Engine が保護された動画コンテンツを再生できるようにします。

解説(Remarks)

このインターフェイスへのポインターを取得するには、Media Engine に対して QueryInterface を呼び出します。

メソッド 6

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT ShareResources(IUnknown* pUnkDeviceContext)

フレームサーバーモードにおいて、Media Engine が保護されたコンテンツにアクセスできるようにします。

pUnkDeviceContextIUnknown*inDirect3D 11 デバイスコンテキストへのポインター。Media Engine はこのポインターに対して ID3D11VideoContext インターフェイスをクエリします。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

フレームサーバーモードにおいて、このメソッドは Media Engine が保護されたコンテンツを Direct3D 11 デバイスと共有できるようにします。

vtbl 4 HRESULT GetRequiredProtections(DWORD* pFrameProtectionFlags)

フレームサーバーモードで適用する必要があるコンテンツ保護を取得します。

pFrameProtectionFlagsDWORD*outMF_MEDIA_ENGINE_FRAME_PROTECTION_FLAGS 列挙型の 0 個以上のフラグのビットごとの OR を受け取ります。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

vtbl 5 HRESULT SetOPMWindow(HWND hwnd)

出力リンク保護を受け取るウィンドウを指定します。

hwndHWNDinウィンドウへのハンドル。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

フレームサーバーモードでは、このメソッドを呼び出して保護された動画コンテンツの宛先ウィンドウを指定します。Media Engine は、Output Protection Manager(OPM)を使用して、このウィンドウにリンク保護を設定します。

vtbl 6 HRESULT TransferVideoFrame(IUnknown* pDstSurf, MFVideoNormalizedRect* pSrc, RECT* pDst, MFARGB* pBorderClr, DWORD* pFrameProtectionFlags)

保護された動画フレームを DXGI サーフェスにコピーします。

pDstSurfIUnknown*inコピー先サーフェスの IUnknown インターフェイスへのポインター。
pSrcMFVideoNormalizedRect*inoptionalソース矩形を指定する MFVideoNormalizedRect 構造体へのポインター。
pDstRECT*inコピー先矩形を指定する RECT 構造体へのポインター。
pBorderClrMFARGB*inoptional境界色を指定する MFARGB 構造体へのポインター。
pFrameProtectionFlagsDWORD*outMF_MEDIA_ENGINE_FRAME_PROTECTION_FLAGS 列挙型の 0 個以上のフラグのビットごとの OR を受け取ります。これらのフラグは、アプリケーションがサーフェスを表示する前に適用する必要があるコンテンツ保護を示します。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

保護されたコンテンツの場合は、IMFMediaEngine::TransferVideoFrame メソッドの代わりにこのメソッドを呼び出します。

vtbl 7 HRESULT SetContentProtectionManager(IMFContentProtectionManager* pCPM)

コンテンツ保護マネージャー(CPM)を設定します。

pCPMIMFContentProtectionManager*inoptional呼び出し元が実装する IMFContentProtectionManager インターフェイスへのポインター。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

Media Engine は、ライセンスの取得など、保護されたコンテンツに関連するイベントを処理するために CPM を使用します。

vtbl 8 HRESULT SetApplicationCertificate(BYTE* pbBlob, DWORD cbBlob)

アプリケーションの証明書を設定します。

pbBlobBYTE*inX.509 形式の証明書と、それに続いて証明書の秘密鍵を用いて SHA-256 署名で署名されたアプリケーション識別子を含むバッファーへのポインター。
cbBlobDWORDinpbBlob バッファーのサイズ(バイト単位)。

戻り値

このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。

解説(Remarks)

フレームサーバーモードで保護された動画コンテンツにアクセスするには、このメソッドを呼び出します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

出力引数:
#define global IID_IMFMediaEngineProtectedContent "{9F8021E8-9C8C-487E-BB5C-79AA4779938C}"
#usecom global IMFMediaEngineProtectedContent IID_IMFMediaEngineProtectedContent "{}"
#comfunc global IMFMediaEngineProtectedContent_ShareResources               3 sptr
#comfunc global IMFMediaEngineProtectedContent_GetRequiredProtections       4 var
#comfunc global IMFMediaEngineProtectedContent_SetOPMWindow                 5 sptr
#comfunc global IMFMediaEngineProtectedContent_TransferVideoFrame           6 sptr,var,var,var,var
#comfunc global IMFMediaEngineProtectedContent_SetContentProtectionManager  7 sptr
#comfunc global IMFMediaEngineProtectedContent_SetApplicationCertificate    8 var,int
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。