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 の更新の詳細については、「ビデオのキャプチャ」を参照してください。
要件
要件 | 値 |
---|---|
Header | ksmedia.h (Ksmedia.h を含む) |