Share via


IBasicVideo::GetCurrentImage メソッド (control.h)

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayerIMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

メソッドは GetCurrentImage 、レンダラーで待機している現在のイメージを取得します。

構文

HRESULT GetCurrentImage(
  [in, out] long *pBufferSize,
  [out]     long *pDIBImage
);

パラメーター

[in, out] pBufferSize

呼び出し元が渡すバッファーのサイズを含む変数へのポインター。 pDIBImageNULL の場合、このパラメーターは必要なバッファー サイズを受け取ります。

[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

こちらもご覧ください

エラーコードと成功コード

IBasicVideo インターフェイス