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 toma 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 saídas 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ó Tee: Representa uma bifurcação no fluxo. Os nós Tee são uma exceção à regra de que os nós representam objetos de pipeline. Ao contrário de outros tipos de nós, o nó tee atua apenas como direcionador do 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.
Para reprodução de arquivos, o nó de transformação pode representar um decodificador e o nó de saída representa 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 arquivo, como o coletor de arquivo ASF.
Se dois nós estiverem conectados, o nó que produz dados é chamado de nó upstream , e o nó que recebe dados é chamado de nó downstream . Por exemplo, no diagrama anterior, o nó de origem está a montante do nó de transformação.
Em um par de nós conectados, o ponto de conexão no nó a montante é chamado de saída . O ponto de conexão no nó a jusante é 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 nó de origem não pode ter entradas. Portanto, não pode haver nenhum nó a montante 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ó a jusante de um nó de saída. Uma cadeia de nós de um nó de origem para um nó de saída é chamada de ramificação da topologia. O primeiro diagrama neste tópico mostra uma topologia com uma única ramificação. Geralmente há um ramo por fluxo. Para reproduzir um arquivo com um fluxo de áudio e um fluxo de vídeo, por exemplo, requer uma topologia com duas ramificações.
Topologias parciais
Uma topologia completa ou total contém um nó para cada objeto de pipeline necessário. No entanto, o aplicativo nem sempre 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 topologias converte topologias parciais em topologias completas inserindo as transformações necessárias. O processo de conversão é chamado de a 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 de 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, encontra o decodificador correto e insere um nó de transformação na topologia.
O diagrama a seguir mostra a topologia parcial criada pelo aplicativo.
O diagrama seguinte mostra a topologia completa depois que o carregador de topologia a resolve. Neste exemplo, o carregador de topologia inseriu um nó de transformação para o decodificador.
Na versão atual do Media Foundation, o carregador de topologias suporta topologias para reprodução. Para codificação de arquivos 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 resolver uma topologia parcial e, em seguida, modificar a topologia completa antes de fornecê-la à Sessão de Mídia. Para criar o carregador de topologia, chame MFCreateTopoLoader.
Tópicos relacionados