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) |