Partilhar via


Modelo de tração

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEnginee Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda vivamente que o novo código utilize MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

Na interfaceIMemInputPin, o filtro upstream determina quais dados enviar e envia os dados para o filtro downstream. Para alguns filtros, um modelo de puxar é mais apropriado. Aqui, o filtro downstream solicita dados do filtro upstream. As amostras ainda viajam a jusante, do pino de saída ao pino de entrada, mas o filtro a jusante inicia o fluxo de dados. Esse tipo de conexão usa o interface IAsyncReader.

O uso típico para o modelo pull é na reprodução de arquivos. Por exemplo, em um gráfico de reprodução AVI, o filtro Async File Source executa operações genéricas de leitura de arquivos e entrega os dados como um fluxo de bytes, sem informações de formato. O filtro AVI Splitter lê os cabeçalhos AVI e analisa o fluxo em amostras de vídeo e áudio. O divisor AVI pode determinar quais dados ele precisa melhor do que o filtro Async File Source e, portanto, ele usa IAsyncReader em vez de IMemInputPin.

Para solicitar dados do pino de saída, o pino de entrada chama um dos seguintes métodos:

O primeiro método é assíncrono, para suportar várias leituras sobrepostas. Os outros são síncronos.

Em teoria, qualquer filtro pode suportar IAsyncReader, mas na prática ele é projetado para filtros de origem que se conectam a filtros de analisador. O analisador age muito como um filtro de origem no modelo push. Quando ele pausa, ele cria um thread de streaming que extrai dados da conexão de IAsyncReader e os envia para baixo. Os pinos de saída usam IMemInputPine o resto do gráfico usa o modelo de push padrão.

fluxo de dados no gráfico de filtro