VIDEOINFOHEADER 構造体

VIDEOINFOHEADER 構造体は、ビデオ イメージのビットマップと色情報を記述する。

構文

typedef struct tagVIDEOINFOHEADER {
    RECT                rcSource,
    RECT                rcTarget;
    DWORD               dwBitRate;
    DWORD               dwBitErrorRate;
    REFERENCE_TIME      AvgTimePerFrame;
    BITMAPINFOHEADER    bmiHeader;
} VIDEOINFOHEADER;

メンバ

rcSource

転送元ビデオ ウィンドウを指定する RECT 構造体。ソース ビデオ ストリームの一部を選択するため、この構造体をクリッピング矩形としてもよい。

rcTarget

転送先ビデオ ウィンドウを指定する RECT 構造体。

dwBitRate

ビデオ ストリームのおおよそのデータ レート (ビット/秒)。

dwBitErrorRate

データ エラー レート (ビット エラー/秒) 。

AvgTimePerFrame

必要なビデオ フレームの平均表示時間 (100 ナノ秒単位) 。実際のフレームあたりの表示時間は長くなる可能性がある。「注意」を参照。

bmiHeader

ビデオ イメージのビットマップの色情報およびディメンジョン情報が格納された BITMAPINFOHEADER 構造体。フォーマット ブロックにカラー テーブルまたは色マスクが含まれる場合は、bmiHeader メンバのすぐ後ろに続く。最初のカラー エントリを取得するには、メンバのアドレスを BITMAPINFO ポインタにキャストする。

注意

rcSource メンバと rcTarget メンバの使い方の詳細については、「ビデオ レンダラにおける転送元矩形と転送先矩形」を参照すること。

フレーム レート

AvgTimePerFrame の値は通常、ソース フィルタが設定する。ソース フィルタはメディア ストリームから値を取得する。この値を使って作成時のフレーム レートが計算できる。作成時のフレーム レートとは、ビデオをレンダリングするためのフレーム レートのことである。再生中は、システムは作成時のレートでストリームをレンダリングできないこともあるので、実際のフレーム レートはこれより小さいことがある。このような状況は、マシンのリソースが過剰にコミットされた場合に起こり得る。また、モニタのリフレッシュ レートがビデオの再生レートに影響する可能性もある。たとえば、目的のレートが 60,000/1001 (NTSC TV) でモニタのリフレッシュ レートが 60Hz とすると、目的のレートと実際のレートは決して一致しない。再生時に達成した実際のフレーム レートを取得するには、ビデオ レンダラの IQualProp::get_AvgFrameRate メソッドを使う。

再生時に、アプリケーションは次の方法で作成時のフレーム レートを取得できる。

  • 古いビデオ レンダラ フィルタを使ってレンダリングする場合は、IBasicVideo::get_AvgTimePerFrame メソッドを呼び出すこと。
  • Video Mixing Renderer (VMR) を使ってレンダリングする場合は、入力ピンで IPin::ConnectionMediaType を呼び出し、フォーマット ブロックを調べること。VMR は複数の入力ストリームをサポートしており、それらの入力ストリームに同じフレーム レートを持たせる必要はない。

ビデオ ファイルの作成時のフレーム レートをレンダリングしないで取得するには、IMediaDet::get_FrameRate を使うこと。

参照