次の方法で共有


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;
    

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

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

必要条件

要件 価値
ヘッダー ksmedia.h (Ksmedia.h を含む)

関連項目

KSSTREAM_HEADER