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