структура 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:

Flag Значение
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 предоставляет способ возврата сведений о кадре, а также способ передачи дескрипторов Microsoft DirectDraw, используемых при захвате, в поверхность DirectDraw.

Число элементов PictureNumber представляет количество текущего рисунка, которое вычисляется одним из двух способов в зависимости от устройства:

  • Измерьте время с момента запуска потока и разделите его на длительность кадра. Этот метод подходит для устройств, которые не предоставляют собственные часы. Пример:

    PictureNumber = ElapsedTime / FrameDuration;
    
  • Сложить количество захваченных кадров и число отброшенных кадров. Этот метод подходит для устройств, предоставляющих собственные часы. Пример:

    PictureNumber = FramesCaptured + FramesDropped;
    

При вычислении PictureNumber и DropCount важно использовать длительность кадра, указанную при открытии потока, которая не обязательно может соответствовать скорости, с которой устройство фактически создает изображения. Например, USB-камера может создавать изображения только с разрешением 7,5 кадров/с, но клиент может открывать поток со значением 8 кадров/с. В этом случае все вычисления должны использовать число 8 кадров/с.

Дополнительные сведения об обновлении PictureNumber и DropCount см. в разделе Запись видео.

Требования

Требование Значение
Заголовок ksmedia.h (включая Ksmedia.h)

См. также раздел

KSSTREAM_HEADER