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 | 두 필드 시퀀스의 필드 1을 나타냅니다. |
| KS_VIDEO_FLAG_FIELD2 | 두 필드 시퀀스의 필드 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 멤버 수는 디바이스에 따라 두 가지 방법 중 하나로 계산되는 현재 그림의 수를 나타냅니다.
스트림이 시작된 이후의 시간을 측정하고 프레임 기간으로 나눕니다. 이 방법은 자신의 시계를 제공하지 않는 디바이스에 적합합니다. 다음은 그 예입니다.
PictureNumber = ElapsedTime / FrameDuration;캡처된 프레임 수와 삭제된 프레임 수를 함께 추가합니다. 이 메서드는 자신의 시계를 제공하는 디바이스에 적합합니다. 다음은 그 예입니다.
PictureNumber = FramesCaptured + FramesDropped;
PictureNumber 및 DropCount 를 계산할 때 스트림이 열릴 때 지정된 프레임 기간을 사용하는 것이 중요합니다. 이는 디바이스가 실제로 이미지를 생성하는 속도와 반드시 일치하지 않을 수도 있습니다. 예를 들어 USB 카메라는 7.5fps의 이미지만 생성할 수 있지만 클라이언트는 8fps로 스트림을 열 수 있습니다. 이 경우 모든 계산에서는 8fps 번호를 사용해야 합니다.
PictureNumber 및 DropCount 업데이트에 대한 자세한 내용은 비디오 캡처를 참조하세요.
요구 사항
| 머리글 | ksmedia.h(Ksmedia.h 포함) |
참조
피드백
다음에 대한 사용자 의견 제출 및 보기