estructura KS_FRAME_INFO (ksmedia.h)

La estructura KS_FRAME_INFO extiende la estructura de KSSTREAM_HEADER para las 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:

Marca 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 cada vez que se debe haber 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 para 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. Esta es normalmente 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 para el marco de 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.

Comentarios

La estructura KS_FRAME_INFO proporciona una manera de devolver información sobre el fotograma 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 según el 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 quitados. 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 Capturar vídeo.

Requisitos

Requisito Valor
Header ksmedia.h (incluye Ksmedia.h)

Consulte también

KSSTREAM_HEADER