Поделиться через


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

Указывает флаги, указывающие дополнительные сведения о захваченном кадре. Во время записи мини-driver задает этому элементу одно из следующих значений, определенных в 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

Указывает количество изображений, которые не были записаны. Во время записи мини-driver задает этот элемент. Этот счетчик должен увеличиваться всякий раз, когда кадр должен быть захвачен, но не был; это условие обычно возникает, когда буферы не были доступны во время записи. Инициализировать или обновить это значение при переходе в KSSTATE_ACQUIRE.

hDirectDraw

Указывает дескриптор пользовательского режима в DirectDraw. Этот дескриптор предоставляется только мини-driver при захвате на поверхность DirectDraw для предварительного просмотра или наложения.

hSurfaceHandle

Указывает дескриптор пользовательского режима для поверхности DirectDraw. Этот дескриптор предоставляется только мини-driver при захвате на поверхность DirectDraw для предварительного просмотра или наложения.

DirectDrawRect

Указывает часть заблокированной поверхности DirectDraw. Обычно это всю поверхность.

lSurfacePitch

Содержит поверхностный шаг (также известный как шаг).

Reserved1

Зарезервировано и не должно использоваться мини-driver.

Reserved2

Зарезервировано и не должно использоваться мини-driver.

Reserved3

Зарезервировано и не должно использоваться мини-driver.

Reserved4

Зарезервировано и не должно использоваться мини-driver.

FrameCompletionNumber

Идентификационный порядковый номер кадра в завершенной очереди. Это число используется для проверки правильного порядка кадров. Если это значение равно 0, кадр был отменен.

Этот член доступен начиная с Windows 8.1.

Замечания

Структура KS_FRAME_INFO предоставляет способ возврата сведений о захваченном кадре, а также способ передачи дескрипторов Microsoft DirectDraw, используемых при захвате на поверхность DirectDraw.

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

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

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

    PictureNumber = FramesCaptured + FramesDropped;
    

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

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

Требования

Требование Ценность
заголовка ksmedia.h (include Ksmedia.h)

См. также

KSSTREAM_HEADER