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
캡처된 프레임에 대한 추가 정보를 나타내는 플래그를 지정합니다. 캡처하는 동안 minidriver는 이 멤버를 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
표면 피치(stride라고도 함)를 포함합니다.
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 포함) |