estrutura KS_VIDEOINFOHEADER2 (ksmedia.h)
A estrutura KS_VIDEOINFOHEADER2 descreve os detalhes de um fluxo de vídeo, incluindo as configurações bob ou weave, a proteção de cópia e a taxa de proporção de pixel.
Sintaxe
typedef struct tagKS_VIDEOINFOHEADER2 {
RECT rcSource;
RECT rcTarget;
DWORD dwBitRate;
DWORD dwBitErrorRate;
REFERENCE_TIME AvgTimePerFrame;
DWORD dwInterlaceFlags;
DWORD dwCopyProtectFlags;
DWORD dwPictAspectRatioX;
DWORD dwPictAspectRatioY;
union {
DWORD dwControlFlags;
DWORD dwReserved1;
};
DWORD dwReserved2;
KS_BITMAPINFOHEADER bmiHeader;
} KS_VIDEOINFOHEADER2, *PKS_VIDEOINFOHEADER2;
Membros
rcSource
Especifica um retângulo de recorte que seleciona a parte do sinal de vídeo ativo a ser usado.
rcTarget
Especifica um retângulo que indica qual parte do buffer de destino usar.
dwBitRate
Especifica um valor que indica a taxa de dados apropriada do fluxo de vídeo, em bits por segundo.
dwBitErrorRate
Especifica um valor que indica a taxa de erro de dados do fluxo de vídeo, em erros de bits por segundo.
AvgTimePerFrame
Especifica o tempo médio por quadro, em unidades de 100 nanossegundos.
dwInterlaceFlags
Especifica informações de entrelaçamento. Sinalizadores indefinidos devem ser definidos como zero ou a conexão pode ser rejeitada. Esse membro pode ser definido como um ou mais valores (OR lógicos) definidos em ksmedia.h:
Sinalizador | Descrição |
---|---|
KS_INTERLACE_IsInterlaced | Indica um fluxo de entrelaçamento. Se 0, os outros KS_INTERLACE_Xxx bits serão irrelevantes. |
KS_INTERLACE_1FieldPerSample | Indica um campo por exemplo de mídia. Se zero, indica dois campos por exemplo de mídia. |
KS_INTERLACE_Field1First | Indica que o Campo 1 é o primeiro. Se zero, indica que o Campo 2 é o primeiro. O campo superior no PAL é o Campo 1, o campo superior no NTSC é o Campo 2. |
KS_INTERLACE_UNUSED | Não usado |
KS_INTERLACE_FieldPatternMask | Indica os bits usados para especificar o padrão de campo. |
KS_INTERLACE_FieldPatField1Only | Indica que um fluxo nunca contém um Campo 2. |
KS_INTERLACE_FieldPatField2Only | Indica que um fluxo nunca contém um Campo 1. |
KS_INTERLACE_FieldPatBothRegular | Indica que haverá um Campo 2 para cada Campo 1. |
KS_INTERLACE_FieldPatBothIrregular | Indica um padrão aleatório de Campo 1 e Campo 2s. |
KS_INTERLACE_DisplayModeMask | Inválido para captura de vídeo. |
KS_INTERLACE_DisplayModeBobOnly | Inválido para captura de vídeo. |
KS_INTERLACE_DisplayModeWeaveOnly | Inválido para captura de vídeo. |
KS_INTERLACE_DisplayModeBobOrWeave | Inválido para captura de vídeo. |
dwCopyProtectFlags
Especifica um valor KSCOPYPROTECTRestrictDuplication (0x00000001) para indicar se a duplicação de um fluxo deve ser restrita. Se indefinido, especifique zero ou a conexão será rejeitada.
dwPictAspectRatioX
Especifica a dimensão x da taxa de proporção de imagem (por exemplo, 16 para uma exibição de 16 × 9). O valor é expresso em polegadas por polegadas, não pixels por pixels.
dwPictAspectRatioY
Especifica a dimensão y da taxa de proporção da imagem (por exemplo, 9 para exibição de 16 × 9). O valor é expresso em polegadas por polegadas, não pixels por pixels.
dwControlFlags
Em sistemas operacionais anteriores ao Windows Vista, esse membro era chamado dwReserved1 e era necessário ser zero. No Windows Vista, dwReserved1 foi combinado em uma união com um novo membro chamado dwControlFlags. Se usado, dwControlFlags contém um OR bit a bit dos sinalizadores na tabela a seguir.
Valor | Descrição |
---|---|
AMCONTROL_USED | Indica que os sinalizadores dwControlFlags são usados . |
AMCONTROL_PAD_TO_4x3 | A imagem deve ser acolchoada e exibida em uma área 4 x 3. |
AMCONTROL_PAD_TO_16x9 | A imagem deve ser acolchoada e exibida em uma área de 16 x 9. |
AMCONTROL_COLORINFO_PRESENT | Informações adicionais de cor estão contidas nos 24 bits superiores do campo dwControlFlags . |
O sinalizador AMCONTROL_USED fornece compatibilidade com versões anteriores com filtros mais antigos. Se o sinalizador AMCONTROL_USED não estiver definido, os bits restantes neste campo deverão ser ignorados. Se um filtro usar outros sinalizadores, ele deverá definir o sinalizador AMCONTROL_USED.
Os dois sinalizadores AMCONTROL_PAD_xxx são usados por decodificadores para determinar a taxa de proporção do retângulo de saída.
Se o sinalizador AMCONTROL_COLORINFO_PRESENT estiver definido, isso significa que os 24 bits superiores do campo dwControlFlags são tratados como uma estrutura DXVA_ExtendedFormat .
Consulte a seção Comentários mais adiante neste tópico para obter mais informações sobre dwControlFlags.
dwReserved1
Esse membro é para compatibilidade com versões anteriores. Consulte dwControlFlags para obter mais informações.
dwReserved2
Reservado para uso do sistema. Deve ser definido como zero ou a conexão será rejeitada.
bmiHeader
Indica uma estrutura KS_BITMAPINFOHEADER que contém informações de cor e dimensão para o bitmap da imagem de vídeo.
Comentários
Para descrever um fluxo de vídeo sem configurações bob ou weave, use KS_VIDEOINFOHEADER.
A estrutura KS_VIDEOINFOHEADER2 é idêntica à estrutura de VIDEOINFOHEADER2 do DirectShow.
Os minidrivers de captura que produzem campos de vídeo (em vez de quadros) devem usar a estrutura KS_DATARANGE_VIDEO2 , que contém a estrutura KS_VIDEOINFOHEADER2.
Um filtro de origem pode solicitar que o filtro de coletor use apenas uma seção do vídeo fornecendo valores que definem efetivamente um retângulo de recorte no membro rcSource . No entanto, se o filtro de coletor não marcar para o retângulo de recorte na conexão, o filtro de coletor simplesmente renderiza todo o vídeo, ignorando efetivamente todas as informações de recorte passadas do filtro de origem para o filtro de coletor.
O ideal é que um filtro de coletor verifique rcSource e, se o filtro de coletor não der suporte à extração de imagem e o retângulo não estiver vazio, ele rejeitará a conexão. Um filtro deve usar a função Win32 SetRectEmpty para redefinir um retângulo para todos os zeros (e definir IsRectEmpty como posteriormente marcar retângulo).
O membro rcTarget especifica o retângulo de destino para o vídeo. A maioria dos filtros de origem define esse membro como todos os zeros. Um filtro downstream pode solicitar que o vídeo seja colocado em uma área específica dos buffers que ele fornece. Nesse caso, ele chama a função Win32 QueryAccept com um destino não vazio.
Se o sinalizador AMCONTROL_COLORINFO_PRESENT estiver definido no membro dwControlFlags , você poderá converter o valor dwControlFlags em uma estrutura DXVA_ExtendedFormat para acessar as informações de cor estendidas. Para obter mais informações, consulte VIDEOINFOHEADER2.
Requisitos
Requisito | Valor |
---|---|
Cabeçalho | ksmedia.h (inclua Ksmedia.h) |