Visão geral da arquitetura do Media Foundation
Este tópico descreve o design geral do Microsoft Media Foundation. Para obter informações sobre como usar o Media Foundation para tarefas de programação específicas, consulte Media Foundation Programming Guide.
O diagrama a seguir mostra uma exibição de alto nível da arquitetura do Media Foundation.
Media Foundation fornece dois modelos de programação distintos. O primeiro modelo, mostrado no lado esquerdo do diagrama, usa um pipeline de ponta a ponta para dados de mídia. O aplicativo inicializa o pipeline — por exemplo, fornecendo a URL de um arquivo a ser reproduzido — e, em seguida, chama métodos para controlar o streaming. No segundo modelo, mostrado no lado direito do diagrama, o aplicativo extrai dados de uma fonte ou os envia por push para um destino (ou ambos). Este modelo é particularmente útil se você precisar processar os dados, porque o aplicativo tem acesso direto ao fluxo de dados.
Primitivos e Plataforma
A partir da parte inferior do diagrama, os primitivos são objetos auxiliares usados em toda a API do Media Foundation.
- Atributos são uma maneira genérica de armazenar informações dentro de um objeto, como uma lista de pares chave/valor.
- Tipos de mídia descrevem o formato de um fluxo de dados de mídia.
- Media buffers armazenam segmentos de dados de mídia, como quadros de vídeo e amostras de áudio, e são utilizados para transportar dados entre objetos.
- Exemplos de multimédia são contentores para buffers de multimédia. Eles também contêm metadados sobre os buffers, como carimbos de data/hora.
As APIs do Media Foundation Platform fornecem algumas funcionalidades principais usadas pelo pipeline do Media Foundation, como callbacks assíncronos e filas de trabalho. Alguns aplicativos podem precisar chamar essas APIs diretamente; Além disso, você precisará deles se implementar uma fonte, transformação ou coletor personalizado para o Media Foundation.
Fluxo de mídia
O pipeline de mídia contém três tipos de objeto que geram ou processam dados de mídia:
- Fontes de mídia introduzem dados no pipeline. Uma fonte de mídia pode obter dados de um arquivo local, como um arquivo de vídeo; a partir de um fluxo de rede; ou a partir de um dispositivo de captura de hardware.
- Media Foundation transforma o processo dos (MFTs) para processar dados de um fluxo. Codificadores e decodificadores são implementados como MFTs.
- Media Sinks consomem os dados; por exemplo, mostrando vídeo no visor, reproduzindo áudio ou gravando os dados em um arquivo de mídia.
Terceiros podem implementar suas próprias fontes, coletores e MFTs personalizados; por exemplo, para suportar novos formatos de arquivo de mídia.
O Media Session controla o fluxo de dados através do pipeline e lida com tarefas como controle de qualidade, sincronização de áudio/vídeo e resposta a alterações de formato.
Leitor de código-fonte e gravador de pia
O Source Reader e o Sink Writer fornecem uma maneira alternativa de usar os componentes básicos do Media Foundation (fontes de mídia, transformações e coletores de mídia). O leitor de origem hospeda uma fonte de mídia e zero ou mais decodificadores, enquanto o gravador de destino hospeda um destino de mídia e zero ou mais codificadores. Você pode usar o leitor de fonte para obter dados compactados ou não compactados de uma fonte de mídia e usar o gravador de destino para codificar dados e enviar os dados para um destino de mídia.
Observação
O leitor de origem e o gravador de destino estão disponíveis no Windows 7.
Esse modelo de programação dá ao aplicativo mais controle sobre o fluxo de dados e também dá ao aplicativo acesso direto aos dados da fonte.
Tópicos relacionados