KS_FRAME_INFO 構造体 (ksmedia.h)

KS_FRAME_INFO構造体は、ビデオ ストリームのKSSTREAM_HEADER構造を拡張します。

構文

typedef struct tagKS_FRAME_INFO {
  ULONG    ExtendedHeaderSize;
  DWORD    dwFrameFlags;
  LONGLONG PictureNumber;
  LONGLONG DropCount;
  HANDLE   hDirectDraw;
  HANDLE   hSurfaceHandle;
  RECT     DirectDrawRect;
  union {
    LONG  lSurfacePitch;
    DWORD Reserved1;
  };
  DWORD    Reserved2;
  union {
    struct {
      DWORD Reserved3;
      DWORD Reserved4;
    };
    ULONGLONG FrameCompletionNumber;
  };
} KS_FRAME_INFO, *PKS_FRAME_INFO;

メンバー

ExtendedHeaderSize

この構造体のサイズをバイト単位で指定します。

dwFrameFlags

キャプチャされたフレームに関する追加情報を示すフラグを指定します。 キャプチャ中、ミニドライバーは、このメンバーを ksmedia.h で定義されている次のいずれかの値に設定します。

フラグ 説明
KS_VIDEO_FLAG_FRAME 完全なフレームを示します。
KS_VIDEO_FLAG_FIELD1 2 フィールド シーケンスのフィールド 1 を示します。
KS_VIDEO_FLAG_FIELD2 2 フィールド シーケンスのフィールド 2 を示します。
KS_VIDEO_FLAG_I_FRAME このフレームを他のフレームを参照せずに完全にデコードできることを示します。
KS_VIDEO_FLAG_P_FRAME これは予測フレームであることを示します。
KS_VIDEO_FLAG_B_FRAME これは双方向フレームであることを示します。

PictureNumber

現在の図番号を表すカウントを指定します。 KSSTATE_ACQUIREへの移行時に、この値を初期化または更新します。

DropCount

キャプチャされなかった画像の数を指定します。 キャプチャ中に、ミニドライバーはこのメンバーを設定します。 フレームをキャプチャする必要があるが、キャプチャされなかった場合は常に、このカウンターをインクリメントする必要があります。この状態は通常、キャプチャ中にバッファーが使用できなかった場合に発生します。 KSSTATE_ACQUIREへの移行時に、この値を初期化または更新します。

hDirectDraw

DirectDraw へのユーザー モード ハンドルを指定します。 このハンドルは、プレビューまたはオーバーレイの目的で DirectDraw サーフェイスにキャプチャする場合にのみミニドライバーに提供されます。

hSurfaceHandle

DirectDraw サーフェイスへのユーザー モード ハンドルを指定します。 このハンドルは、プレビューまたはオーバーレイの目的で DirectDraw サーフェイスにキャプチャする場合にのみミニドライバーに提供されます。

DirectDrawRect

ロックされている DirectDraw サーフェスの部分を指定します。 これは通常、サーフェス全体です。

lSurfacePitch

サーフェス ピッチ (ストライドとも呼ばれます) が含まれます。

Reserved1

予約済みで、ミニドライバーで使用しないでください。

Reserved2

予約済みで、ミニドライバーで使用しないでください。

Reserved3

予約済みで、ミニドライバーで使用しないでください。

Reserved4

予約済みで、ミニドライバーで使用しないでください。

FrameCompletionNumber

完了したキュー内のフレームの識別シーケンス番号。 この番号は、適切なフレーム順序を確認するために使用されます。 この値が 0 の場合、フレームは取り消されました。

このメンバーは、Windows 8.1 以降で使用できます。

注釈

KS_FRAME_INFO構造体は、キャプチャされたフレームに関する情報を返す方法と、DirectDraw サーフェスにキャプチャするときに使用される Microsoft DirectDraw ハンドルを渡す方法を提供します。

PictureNumber メンバー数は、現在の図の数を表します。これは、デバイスに応じて次の 2 つの方法のいずれかで計算されます。

  • ストリームが開始されてからの時間を測定し、フレーム期間で除算します。 この方法は、独自のクロックを提供しないデバイスに適しています。 例:

    PictureNumber = ElapsedTime / FrameDuration;
    
  • キャプチャされたフレームの数と削除されたフレームの数をまとめて追加します。 この方法は、独自のクロックを提供するデバイスに適しています。 例:

    PictureNumber = FramesCaptured + FramesDropped;
    

PictureNumberDropCount を計算するときは、ストリームを開いたときに指定されたフレーム期間を使用することが重要です。これは、デバイスが実際にイメージを生成する速度と必ずしも一致しない場合があります。 たとえば、USB カメラでは 7.5 fps の画像のみが生成されますが、クライアントは 8 fps でストリームを開く可能性があります。 この場合、すべての計算で 8 fps の数値を使用する必要があります。

PictureNumberDropCount の更新の詳細については、「ビデオのキャプチャ」を参照してください。

要件

要件
Header ksmedia.h (Ksmedia.h を含む)

こちらもご覧ください

KSSTREAM_HEADER