Sobre topologias

Uma topologia é um objeto que representa como os dados fluem no pipeline. Um aplicativo cria uma topologia para descrever o caminho que cada fluxo leva da fonte de mídia para um coletor de mídia. O aplicativo passa a topologia para a Sessão de Mídia e a Sessão de Mídia usa a topologia para controlar o fluxo de dados.

Os componentes de processamento de dados no pipeline (fontes de mídia, transformações e coletores de mídia) são representados na topologia como nós. O fluxo de dados de um componente para outro é representado por uma conexão entre os nós. Os seguintes tipos de nó são definidos:

  • Nó de origem: representa um fluxo de mídia em uma fonte de mídia.
  • Nó de transformação: representa uma transformação do Media Foundation (MFT).
  • Nó de saída: representa um coletor de fluxo em um coletor de mídia.
  • Nó do tee: representa uma bifurcação no fluxo. Nós tee são uma exceção à regra de que um nó representa um objeto de pipeline. Ao contrário de outros tipos de nó, o nó tee simplesmente direciona o fluxo de dados.

Uma topologia funcional deve conter pelo menos um nó de origem conectado a um nó de saída, possivelmente por meio de um ou mais nós de transformação. Por exemplo, o diagrama a seguir mostra uma topologia simples com um fluxo.

um diagrama que mostra uma topologia com um fluxo.

Para reprodução de arquivo, o nó de transformação pode representar um decodificador e o nó de saída representaria o renderizador de áudio ou vídeo. Para codificação de arquivo, o nó de transformação representaria um codificador e o nó de saída representaria um coletor de arquivos, como o coletor de arquivos ASF.

Se dois nós estiverem conectados, o nó que produz dados será chamado de nó upstream e o nó que recebe dados será chamado de nó downstream. Por exemplo, no diagrama anterior, o nó de origem é upstream do nó de transformação.

Em um par de nós conectados, o ponto de conexão no nó upstream é chamado de saída. O ponto de conexão no nó downstream é chamado de entrada. O diagrama a seguir mostra um par de nós com seus pontos de conexão e o fluxo de dados entre eles. Os pontos de conexão não são representados como objetos separados na topologia. Eles são especificados pelo valor de índice no objeto do nó.

um diagrama que mostra dois nós conectados.

Um nó de origem não pode ter nenhuma entrada. Portanto, não pode haver nós upstream de um nó de origem. Da mesma forma, um nó de saída não pode ter saídas e não pode haver nenhum nó downstream de um nó de saída. Uma cadeia de nós de um nó de origem para um nó de saída é chamada de branch da topologia. O primeiro diagrama neste tópico mostra uma topologia com um único branch. Geralmente, há um branch por fluxo. Para reproduzir um arquivo com um fluxo de áudio e um fluxo de vídeo, por exemplo, requer uma topologia com dois branches.

Topologias parciais

Uma topologia completa ou completa contém um nó para cada objeto de pipeline necessário. No entanto, nem sempre o aplicativo precisa criar uma topologia completa. Em vez disso, ele cria uma topologia parcial que omite um ou mais nós de transformação.

A Sessão de Mídia conclui a topologia usando um objeto chamado carregador de topologia. O carregador de topologia converte topologias parciais em topologias completas inserindo as transformações necessárias. O processo de conversão é chamado de resolução da topologia.

Por exemplo, para reproduzir um fluxo de áudio codificado, a topologia deve ter um decodificador entre os nós de origem e saída. O aplicativo cria uma topologia parcial que conecta o nó de origem diretamente ao nó de saída, sem o decodificador. O carregador de topologia examina os formatos de fluxo, localiza o decodificador correto e insere um nó de transformação na topologia.

O diagrama a seguir mostra a topologia parcial criada pelo aplicativo.

um diagrama que mostra uma parcial com um nó de origem e um nó de saída.

O próximo diagrama mostra a topologia completa após o carregador de topologia resolvê-la. Neste exemplo, o carregador de topologia inseriu um nó de transformação para o decodificador.

um diagrama que mostra uma topologia completa.

Na versão atual do Media Foundation, o carregador de topologia dá suporte a topologias para reprodução. Para codificação de arquivo e outros cenários, o aplicativo deve construir uma topologia completa.

Os aplicativos também podem criar o carregador de topologia e usá-lo diretamente. Por exemplo, você pode usar o carregador de topologia para resolve uma topologia parcial e modificar a topologia completa antes de dá-la à Sessão de Mídia. Para criar o carregador de topologia, chame MFCreateTopoLoader.

Topologias