Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Ao escrever um minidriver AVStream, você fornece filtros que usam um dos dois paradigmas de processamento: processamento centrado em pin ou processamento centrado em filtro.
O processamento centrado em pino significa que o AVStream chama a rotina de disparo do processo do pino do minidriver quando novos quadros chegam na fila de pino.
O processamento centrado em filtro significa que o AVStream chama a rotina de expedição do processo de filtro do minidriver quando há quadros de dados disponíveis em cada pin instanciado. Observe que essas definições especificam o comportamento padrão; Os minidrivers podem modificar o comportamento padrão definindo sinalizadores na estrutura de KSPIN_DESCRIPTOR_EX .
Em geral, os filtros de software usam processamento centrado em filtro e filtros de hardware usam processamento centrado em pin. Por exemplo, o hardware que transforma ou renderiza dados pode rotear dados em um filtro centrado em pin. Há casos raros em que essas funções podem ser revertidas.
Para fornecer um filtro centrado em pino, o minidriver fornece um ponteiro para uma rotina de retorno de chamada AVStrMiniPinProcess em cada estrutura KSPIN_DISPATCH; não forneça um despacho de processamento na estrutura KSFILTER_DISPATCH.
Se o minidriver não modificar as configurações dos sinalizadores na estrutura KSPIN_DESCRIPTOR_EX, o AVStream chamará, em três situações, a rotina de callback AVStrMiniPinProcess fornecida pelo fabricante.
O pino faz a transição para o estado mínimo de processamento. Os frames já devem existir na fila e o pino deve fazer a transição de abaixo do estado mínimo de processamento para, no mínimo, o estado mínimo de processamento.
Novos frames chegam. O pino deve estar em pelo menos o estado mínimo de processamento e não deve haver quadros na borda de ataque ou à frente dela.
O Minidriver chama explicitamente KsPinAttemptProcessing.
Por padrão, pausar é o estado mínimo de processamento.
Além disso, AVStream não chamará o despacho do processo do pino se a porta AND do pino estiver fechada. Se você usar as rotinas KSGATEXxx para adicionar entradas adicionais de desligamento ao portão AND do pino, por exemplo, seu processo de distribuição não será chamado.
Quando o AVStream chama AVStrMiniPinProcess, ele fornece um ponteiro para o objeto pin que tem dados disponíveis. A expedição de processamento do minidriver pode adquirir um ponteiro de borda superior chamando KsPinGetLeadingEdgeStreamPointer. Em seguida, os minidrivers manipulam dados de fluxo usando a API do ponteiro de fluxo .
Minidrivers que usam processamento centrado em pinos podem modificar quando o AVStream chama o AVStrMiniPinProcess, definindo sinalizadores na estrutura KSPIN_DESCRIPTOR_EX relevante. As descrições de sinalizadores na página de referência do KSPIN_DESCRIPTOR_EX são particularmente relevantes para os fornecedores que estão implementando filtros com foco em pinos.
As tentativas de processamento poderão falhar se o minidriver estiver mantendo o mutex de processamento por meio de KsPinAcquireProcessingMutex. Problemas também poderão surgir se o minidriver manipular diretamente uma porta usando as chamadas KSGATE* .
O AVStream Simulated Hardware Sample Driver (AVSHwS) dos exemplos do Kit de Driver do Windows é um driver de captura focado em pinos para um componente de hardware simulado. O exemplo de Avshws mostra como implementar o DMA por meio do AVStream.