estrutura KS_FRAME_INFO (ksmedia.h)

A estrutura KS_FRAME_INFO estende a estrutura de KSSTREAM_HEADER para fluxos de vídeo.

Sintaxe

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;

Membros

ExtendedHeaderSize

Especifica o tamanho dessa estrutura, em bytes.

dwFrameFlags

Especifica sinalizadores que indicam informações adicionais sobre o quadro capturado. Durante a captura, o minidriver define esse membro como um dos seguintes valores definidos em ksmedia.h:

Sinalizador Significado
KS_VIDEO_FLAG_FRAME Indica um quadro completo.
KS_VIDEO_FLAG_FIELD1 Indica o Campo 1 de uma sequência de dois campos.
KS_VIDEO_FLAG_FIELD2 Indica o Campo 2 de uma sequência de dois campos.
KS_VIDEO_FLAG_I_FRAME Indica que esse quadro pode ser completamente decodificado sem referência a outros quadros.
KS_VIDEO_FLAG_P_FRAME Indica que esse é um quadro previsto.
KS_VIDEO_FLAG_B_FRAME Indica que esse é um quadro bidirecional.

PictureNumber

Especifica uma contagem que representa o número de imagem atual. Inicialize ou atualize esse valor na transição para KSSTATE_ACQUIRE.

DropCount

Especifica o número de imagens que não foram capturadas. Durante a captura, o minidriver define esse membro. Esse contador deve ser incrementado sempre que um quadro deveria ter sido capturado, mas não foi; essa condição geralmente surge quando nenhum buffer estava disponível durante a captura. Inicialize ou atualize esse valor na transição para KSSTATE_ACQUIRE.

hDirectDraw

Especifica o identificador do modo de usuário para DirectDraw. Esse identificador só é fornecido ao minidriver ao capturar em uma superfície DirectDraw para fins de visualização ou sobreposição.

hSurfaceHandle

Especifica o identificador do modo de usuário para a superfície do DirectDraw. Esse identificador só é fornecido ao minidriver ao capturar em uma superfície DirectDraw para fins de visualização ou sobreposição.

DirectDrawRect

Especifica a parte da superfície do DirectDraw que foi bloqueada. Normalmente, essa é a superfície inteira.

lSurfacePitch

Contém o tom da superfície (também conhecido como stride).

Reserved1

Reservado e não deve ser usado pelo minidriver.

Reserved2

Reservado e não deve ser usado pelo minidriver.

Reserved3

Reservado e não deve ser usado pelo minidriver.

Reserved4

Reservado e não deve ser usado pelo minidriver.

FrameCompletionNumber

Um número de sequência de identificação para o quadro na fila concluída. Esse número é usado para verificar a ordem de quadro adequada. Quando esse valor é 0, o quadro foi cancelado.

Esse membro está disponível a partir do Windows 8.1.

Comentários

A estrutura KS_FRAME_INFO fornece uma maneira de retornar informações sobre o quadro capturado, bem como uma maneira de passar identificadores do Microsoft DirectDraw usados ao capturar em uma superfície DirectDraw.

A contagem de membros PictureNumber representa a contagem da imagem atual, que é calculada de uma das duas maneiras, dependendo do dispositivo:

  • Meça o tempo desde que o fluxo foi iniciado e divida pela duração do quadro. Esse método é apropriado para dispositivos que não fornecem seu próprio relógio. Por exemplo:

    PictureNumber = ElapsedTime / FrameDuration;
    
  • Adicione a contagem de quadros capturados e a contagem de quadros removidos. Esse método é apropriado para dispositivos que fornecem seu próprio relógio. Por exemplo:

    PictureNumber = FramesCaptured + FramesDropped;
    

Ao calcular PictureNumber e DropCount, é importante usar a duração do quadro especificada quando o fluxo foi aberto, o que pode não corresponder necessariamente à taxa em que o dispositivo está realmente produzindo imagens. Por exemplo, uma câmera USB só pode produzir imagens a 7,5 fps, mas um cliente pode abrir o fluxo a 8 fps. Nesse caso, todos os cálculos devem usar o número de 8 fps.

Para obter mais informações sobre como atualizar PictureNumber e DropCount , consulte Capturando vídeo.

Requisitos

Requisito Valor
Cabeçalho ksmedia.h (inclua Ksmedia.h)

Confira também

KSSTREAM_HEADER