estructura KS_FRAME_INFO (ksmedia.h)
La estructura KS_FRAME_INFO extiende la estructura de KSSTREAM_HEADER para secuencias de vídeo.
Sintaxis
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;
Miembros
ExtendedHeaderSize
Especifica el tamaño de esta estructura, en bytes.
dwFrameFlags
Especifica marcas que indican información adicional sobre el marco capturado. Durante la captura, el minidriver establece este miembro en uno de los siguientes valores definidos en ksmedia.h:
Bandera | Significado |
---|---|
KS_VIDEO_FLAG_FRAME | Indica un marco completo. |
KS_VIDEO_FLAG_FIELD1 | Indica el campo 1 de una secuencia de dos campos. |
KS_VIDEO_FLAG_FIELD2 | Indica el campo 2 de una secuencia de dos campos. |
KS_VIDEO_FLAG_I_FRAME | Indica que este marco se puede descodificar completamente sin hacer referencia a ningún otro fotograma. |
KS_VIDEO_FLAG_P_FRAME | Indica que se trata de un marco predicho. |
KS_VIDEO_FLAG_B_FRAME | Indica que se trata de un marco bidireccional. |
PictureNumber
Especifica un recuento que representa el número de imagen actual. Inicialice o actualice este valor en la transición a KSSTATE_ACQUIRE.
DropCount
Especifica el número de imágenes que no se capturaron. Durante la captura, el minidriver establece este miembro. Este contador debe incrementarse siempre que se haya capturado un marco, pero no lo era; esta condición suele surgir cuando no había búferes disponibles durante la captura. Inicialice o actualice este valor en la transición a KSSTATE_ACQUIRE.
hDirectDraw
Especifica el identificador del modo de usuario para DirectDraw. Este identificador solo se proporciona al minidriver al capturar en una superficie de DirectDraw con fines de vista previa o superposición.
hSurfaceHandle
Especifica el identificador del modo de usuario en la superficie de DirectDraw. Este identificador solo se proporciona al minidriver al capturar en una superficie de DirectDraw con fines de vista previa o superposición.
DirectDrawRect
Especifica la parte de la superficie de DirectDraw que se ha bloqueado. Normalmente, esta es toda la superficie.
lSurfacePitch
Contiene el tono de superficie (también conocido como paso).
Reserved1
Reservado y no debe ser utilizado por el minidriver.
Reserved2
Reservado y no debe ser utilizado por el minidriver.
Reserved3
Reservado y no debe ser utilizado por el minidriver.
Reserved4
Reservado y no debe ser utilizado por el minidriver.
FrameCompletionNumber
Número de secuencia de identificación del marco en la cola completada. Este número se usa para comprobar el orden de fotogramas adecuado. Cuando este valor es 0, se canceló el marco.
Este miembro está disponible a partir de Windows 8.1.
Observaciones
La estructura KS_FRAME_INFO proporciona una manera de devolver información sobre el marco capturado, así como una manera de pasar los identificadores de Microsoft DirectDraw que se usan al capturar en una superficie de DirectDraw.
El recuento de miembros PictureNumber representa el recuento de la imagen actual, que se calcula de una de estas dos maneras en función del dispositivo:
Mida el tiempo desde que se inició la secuencia y divida por la duración del fotograma. Este método es adecuado para los dispositivos que no proporcionan su propio reloj. Por ejemplo:
PictureNumber = ElapsedTime / FrameDuration;
Agregue el recuento de fotogramas capturados y el recuento de fotogramas descartados. Este método es adecuado para los dispositivos que proporcionan su propio reloj. Por ejemplo:
PictureNumber = FramesCaptured + FramesDropped;
Al calcular PictureNumber y DropCount, es importante usar la duración del fotograma especificada cuando se abrió la secuencia, lo que puede no coincidir necesariamente con la velocidad a la que el dispositivo está produciendo realmente imágenes. Por ejemplo, una cámara USB solo puede producir imágenes a 7,5 fps, pero un cliente podría abrir la secuencia a 8 fps. En este caso, todos los cálculos deben usar el número de 8 fps.
Para obtener más información sobre cómo actualizar PictureNumber y DropCount vea Captura de vídeo.
Requisitos
Requisito | Valor |
---|---|
encabezado de | ksmedia.h (incluya Ksmedia.h) |