IBasicVideo::GetCurrentImage メソッド (control.h)
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
メソッドは GetCurrentImage
、レンダラーで待機している現在のイメージを取得します。
構文
HRESULT GetCurrentImage(
[in, out] long *pBufferSize,
[out] long *pDIBImage
);
パラメーター
[in, out] pBufferSize
呼び出し元が渡すバッファーのサイズを含む変数へのポインター。 pDIBImage が NULL の場合、このパラメーターは必要なバッファー サイズを受け取ります。
[out] pDIBImage
完全なイメージがデバイスに依存しないビットマップ (DIB) 形式で格納されるバッファーへのポインター。 ポインターを長いポインター型にキャストします。
戻り値
HRESULT 値を返します。
注釈
Video Renderer フィルターと Video Mixing Renderer (VMR) では、このメソッドの実装方法が異なります。
ビデオ レンダラーのみ:
レンダラーが DirectDraw アクセラレーションを使用している場合、このメソッドは失敗します。 残念ながら、これはエンドユーザーのハードウェア構成に依存するため、実際にはこの方法は信頼できません。このメソッドを呼び出す前に、ビデオ レンダラーを一時停止します。 それ以外の場合、メソッドは VFW_E_NOT_PAUSEDを返します。 IMediaControl::GetState を呼び出して、一時停止操作が完了したことを確認します。一時停止操作が完了していない場合、GetCurrentImage メソッドはE_UNEXPECTEDを返します。 ソース フィルターで使用できるデータによっては、ビデオ レンダラーでこの要求を処理することは保証されません。 使用可能なイメージがない場合は、E_FAILを返します。
ビデオ 混合レンダラーのみ:
このメソッドは、VMR が DirectDraw アクセラレーションを使用しているかどうか、および現在のグラフの状態 (実行中、停止、または一時停止) に関係なく、信頼性が高いです。ビデオ レンダラーとビデオ 混合レンダラー:
イメージを保持するために必要なバッファー サイズを取得するには、pDIBImage パラメーターに NULL ポインターを指定してこのメソッドを呼び出します。 メソッドは、 pBufferSize パラメーターで必要なバッファー サイズを返します。 そのサイズのバッファーを割り当て、 pDIBImage がバッファーを指すメソッドをもう一度呼び出します。 2 番目の呼び出しでは、 pBufferSize を使用してバッファー サイズを指定します。 バッファーが小さすぎて完全なイメージを保持できる場合、メソッドは E_OUTOFMEMORYを返します。メソッドが成功した場合、バッファーには、 BITMAPINFOHEADER 構造体を含む DIB イメージ全体に加えて、Win32 BITMAPINFO 構造体で定義されているパレット エントリとビット マスクが格納されます。 イメージの形式はソース フィルターによって提供される種類によって異なり、事前に指定することはできません。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | control.h (Dshow.h を含む) |
Library | Strmiids.lib |