Compartilhar via


Benefícios dos DMOs

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEnginee Audio/Video Capture na 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 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.]

Os DMOs oferecem as seguintes vantagens:

  • Eles geralmente são menores e mais simples do que os filtros do DirectShow, pois dão suporte a menos funcionalidades.
  • Eles são mais flexíveis do que os filtros do DirectShow porque não exigem um grafo de filtro. Você pode usá-los com o DirectShow quando precisar dos serviços que o DirectShow fornece, como sincronização, conexão inteligente, tratamento automático do fluxo de dados e gerenciamento de threads. Os clientes que não precisam desses serviços podem acessar os DMOs diretamente.
  • Os DMOs sempre executam o processamento de dados síncrono, o que elimina muitos dos problemas de threading que você deve considerar se você escreve um filtro.
  • Ao contrário dos codecs tradicionais do ACM e do VCM, os DMOs são baseados no COM (Component Object Model) para que possam ser estendidos por QueryInterface.
  • Os DMOs dão suporte a um modelo de streaming mais generalizado do que codecs ACM ou VCM. Assim como os filtros do DirectShow, os DMOs podem dar suporte a várias entradas e várias saídas.

Por esses motivos, os DMOs agora são recomendados como a solução para escrever codificadores, decodificadores e efeitos de áudio. Muitos outros cenários também são possíveis, dependendo das necessidades do aplicativo.

Como os DMOs diferem dos filtros do DirectShow

Os filtros do DirectShow não podem funcionar fora de um grafo de filtro do DirectShow. No DirectShow, o Gerenciador de Grafos de Filtro é mediado entre o aplicativo e os filtros. Os filtros do DirectShow fazem a maior parte do trabalho necessário para transmitir dados, incluindo:

  • Alocando buffers.
  • Negociando tipos de mídia e conexões com outros filtros.
  • Enviar dados por push pelo grafo de filtro.
  • Enviando eventos para o Gerenciador de Grafos de Filtro.
  • Sincronizando vários threads.

Por outro lado, um DMO não faz nada disso. Em vez disso, esses tipos de tarefas são de responsabilidade do cliente usando o DMO. O cliente aloca buffers, preenche-os com dados e os entrega ao DMO. O DMO processa os dados e o cliente recupera os buffers de saída resultantes.

sobre de DMOs