Compartilhar via


Interface IAMPushSource (strmif.h)

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Audio/Video Capture in 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.]

A IAMPushSource interface sincroniza um grafo de filtro que renderiza uma fonte dinâmica. Uma fonte dinâmica é uma fonte que transmite dados em tempo real, como um dispositivo de captura ou uma transmissão de rede.

Os filtros de origem que transmitem dados dinâmicos devem expor essa interface em seus pinos de saída. Em geral, os aplicativos não devem chamar os métodos nessa interface; Em vez disso, use a interface IAMGraphStreams .

Herança

A interface IAMPushSource herda de IAMLatency. IAMPushSource também tem estes tipos de membros:

Métodos

A interface IAMPushSource tem esses métodos.

 
IAMPushSource::GetMaxStreamOffset

O método GetMaxStreamOffset recupera o deslocamento máximo de fluxo ao qual o filtro pode dar suporte.
IAMPushSource::GetPushSourceFlags

O método GetPushSourceFlags recupera uma combinação de sinalizadores que descrevem o comportamento do filtro.
IAMPushSource::GetStreamOffset

O método GetStreamOffset recupera o deslocamento que o filtro usa ao gerar carimbos de data/hora.
IAMPushSource::SetMaxStreamOffset

O método SetMaxStreamOffset especifica o deslocamento de fluxo que será permitido no grafo de filtro.
IAMPushSource::SetPushSourceFlags

O método SetPushSourceFlags define sinalizadores que especificam o comportamento do filtro. Atualmente, os aplicativos não devem chamar esse método, pois não há suporte para sinalizadores de solicitação e um aplicativo não deve substituir os sinalizadores definidos pelo filtro.
IAMPushSource::SetStreamOffset

O método SetStreamOffset define o deslocamento para carimbos de data/hora gerados por esse filtro.

Comentários

O Gerenciador de Grafo de Filtro usa os métodos nessa interface para resolver dois problemas que normalmente ocorrem ao renderizar fontes dinâmicas:

  • Latência: quando um grafo de filtro inclui mais de uma fonte dinâmica, as fontes geralmente têm latências diferentes, o que pode fazer com que elas fiquem fora de sincronia. Por exemplo, se a captura de áudio tiver um tempo de latência maior do que a captura de vídeo, o áudio ficará atrás do vídeo, a menos que o grafo compense a diferença.
  • Correspondência de taxa: quando um filtro de renderizador está conectado a uma fonte dinâmica, ele deve ajustar sua taxa de consumo de dados para corresponder à taxa de produção do filtro de origem. Caso contrário, poderá haver lacunas nos dados (se o renderizador for executado mais rápido que a origem) ou os dados poderão ser descartados (se a origem for executada mais rapidamente).
Para corrigir a latência, o grafo de filtro chama IAMLatency::GetLatency em cada pino de saída que expõe a IAMPushSource interface e determina a latência máxima no grafo. Em seguida, ele chama IAMPushSource::SetStreamOffset em todos os filtros com menor que a latência máxima, para que eles ajustem os carimbos de data/hora gerados pelo deslocamento correto.

Para executar a correspondência de taxa, o grafo de filtro precisa determinar se o filtro do renderizador pode corresponder as taxas de relógio com o filtro de origem. O método IAMPushSource::GetPushSourceFlags retorna um conjunto de sinalizadores indicando se é seguro para o renderizador corresponder as taxas com a origem.

Esses problemas não afetam a captura em um arquivo. O filtro Gravador de Arquivos depende de carimbos de data/hora nos exemplos de entrada para gravar o arquivo corretamente; os fluxos são sincronizados durante a reprodução. Quanto à correspondência de taxa, os dados são sempre gravados no arquivo o mais rápido possível.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho strmif.h (inclua Dshow.h)

Confira também

IAMLatency