Compartilhar via


Introdução ao suporte a codec de hardware no AVStream

A partir do Windows 7, o Windows Media Foundation representa componentes de mídia baseados em AVStream como MFTs (Transformações do Media Foundation) no modo de usuário.

Usando esse recurso, os fornecedores podem apresentar decodificadores, codificadores e processadores de vídeo baseados em hardware como MFTs que, por sua vez, podem ser manipulados no nível do aplicativo.

O modelo AVStream permanece inalterado no Windows 7 e requer apenas algumas adições ao minidriver para habilitar essa funcionalidade.

A topologia de transcodificação é mostrada no diagrama a seguir:

diagrama ilustrando a topologia de transcodificação.

Para obter o melhor desempenho, o processamento de mídia mostrado na linha inferior do diagrama deve ocorrer em hardware dedicado. Nesse cenário, o hardware de transcodificação dedicado é conhecido como SHED (Decodificador de Codificador de Hardware Seguro). O SHED pode ser empacotado como um módulo de plug-in para a placa-mãe ou como um recurso integrado no adaptador de vídeo.

O Windows 7 ainda dá suporte à transcodificação baseada em software. No entanto, como o sistema executa o trabalho de transcodificação em hardware dedicado em vez da CPU, uma solução baseada em SHED melhora significativamente a experiência do usuário em comparação com uma solução baseada em software.

Conforme mostrado no diagrama anterior, os clientes de modo de usuário podem acessar as transformações de modo de usuário usando a interface IMFTransform exposta em cada MFT. IMFTransform está disponível no Vista e versões posteriores do Windows, mas o mecanismo para expor o processamento de mídia baseado em hardware para aplicativos no modo de usuário só está disponível a partir do Windows 7.

O módulo Proxy de Dispositivo fornecido pelo sistema ou Devproxy tem a mesma função que KSProxy no modelo de streaming do DirectShow. O Devproxy intermedia a comunicação entre Ks.sys no modo kernel e componentes MFT no modo de usuário.

A função de processamento de mídia de hardware encapsulada resultante é chamada de MFT de Proxy de Dispositivo. Para aproveitar esse mecanismo, um minidriver AVStream deve fazer o seguinte:

  • Exponha funções de transformação como filtros KS individuais que fazem parte do minidriver AVStream. Por exemplo, se o dispositivo tiver recursos de decodificação, codificação e processamento de vídeo, essas funções deverão ser representadas como três filtros KS distintos.

    • Codificador: usado para converter de um formato descompactado em um formato compactado.

    • Decodificador: usado para converter de um formato compactado em um formato descompactado, que deve incluir NV12.

    • Processador de Vídeo: usado para executar dimensionamento, intercalação/desassociamento e conversão de formato. Não inclua suporte ao processamento de vídeo no filtro de decodificador ou codificador.

      A Microsoft recomenda fortemente que os fornecedores forneçam suporte ao dimensionamento baseado em hardware. No entanto, se você optar por não fornecer suporte ao dimensionamento baseado em hardware, poderá usar o MFT de processamento de vídeo fornecido pelo sistema para executar operações de dimensionamento em um nível reduzido de desempenho. Se você não fornecer suporte a dimensionamento baseado em hardware, o construtor de topologias do Media Foundation inserirá automaticamente o MFT de dimensionamento fornecido pelo sistema na topologia.

  • Registre seus filtros KS de processamento de mídia em uma das seguintes categorias de KS, disponíveis no Windows 7 e versões posteriores do Windows:

    Além disso, as seguintes categorias também são definidas para uso em outros cenários de transcodificação:

  • Os aplicativos de base de mídia podem usar a função MFTEnumEx para enumerar os dispositivos registrados como MFTs usando as categorias mencionadas anteriormente.