다음을 통해 공유


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;
    

PictureNumberDropCount를 계산할 때 스트림이 열릴 때 지정된 프레임 기간을 사용하는 것이 중요합니다. 이는 디바이스가 실제로 이미지를 생성하는 속도와 반드시 일치하지 않을 수 있습니다. 예를 들어 USB 카메라는 7.5fps의 이미지만 생성할 수 있지만 클라이언트는 8fps로 스트림을 열 수 있습니다. 이 경우 모든 계산에서는 8fps 번호를 사용해야 합니다.

PictureNumberDropCount를 업데이트하는 방법에 대한 자세한 내용은 비디오 캡처를 참조하세요.

요구 사항

요구 사항
헤더 ksmedia.h(Ksmedia.h 포함)

추가 정보

KSSTREAM_HEADER