Injeção de quadro
Por padrão, no AVStream, um solicitante adquire quadros vazios de um alocador e os coloca em uma fila. Em seguida, o minidriver preenche quadros por processamento centrado em pinos ou processamento centrado em filtro. Os quadros se movem através de um transporte para o próximo objeto no circuito, eventualmente completando o circuito e retornando ao solicitante. Em seguida, o AVStream reutiliza os quadros.
Os minidrivers podem substituir esse comportamento padrão usando o modo de injeção. No modo de injeção, o minidriver é responsável por colocar quadros no circuito. Os quadros se propagam ao redor do circuito da maneira padrão. Quando os quadros retornam ao objeto AVStream em que começaram, AVStream chama uma rotina AVStrMiniFrameReturn fornecida pelo minidriver.
Nessa rotina, o minidriver pode, por exemplo, desalocar o quadro, concluir o trabalho pendente no retorno do quadro ou reabastecer e reinjetar o quadro.
Para definir o modo de injeção, o minidriver chama KsPinRegisterFrameReturnCallback e fornece um ponteiro para sua rotina AVStrMiniFrameReturn .
Não chame KsPinRegisterFrameReturnCallback, a menos que o filtro esteja no estado stop.
Para injetar quadros no circuito, chame KsPinSubmitFrame ou KsPinSubmitFrameMdl.
O diagrama abaixo mostra um conjunto de filtros AVStream composto por um filtro de origem, um filtro de transformação in-loco e um filtro de renderização com os quadros de injeção de origem.