Modo de combinação YUV

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

Este tópico se aplica ao Windows XP Service Pack 2 ou posterior.

A partir do Windows XP Service Pack 2, a VMR dá suporte a um modo de combinação chamado modo de combinação YUV. Esse modo é mais útil para aplicativos avançados de TV ou DVD. Ele troca parte do poder do mixer de VMR por um melhor desempenho em hardwares gráficos de baixo nível que usa um design de arquitetura de memória unificada. O modo de combinação YUV tem suporte na VMR-7 e na VMR-9.

Vantagens

O modo de combinação YUV tem várias vantagens relacionadas ao desempenho de renderização em relação ao modo de combinação RGB original compatível com a VMR:

  • Quando a VMR está no modo de combinação YUV, todas as operações de composição de fluxo de vídeo e de interlacagem são executadas no espaço de cores YUV. As superfícies YUV normalmente exigem de 50% a 60% menos largura de banda de memória do que superfícies RGB equivalentes.
  • A desinterlacização e a composição de fluxo são executadas por uma única chamada para o driver gráfico. O driver pode usar os recursos de várias texturização do hardware gráfico, resultando em economia de largura de banda de memória adicional.

Embora qualquer aplicativo de vídeo possa usar o modo de combinação YUV, ele destina-se principalmente a dois tipos de aplicativo de reprodução de vídeo:

  1. Aplicativos de TV que exibem legendas ocultas ou teletexto.
  2. Os aplicativos de DVD exibem dados de subpictura de DVD ou legendas ocultas.

Restrições

Várias restrições são impostas pela VMR quando ela é colocada no modo de combinação YUV:

  • O fluxo 0 (o fluxo conectado ao Pino de Entrada 0) pode ser progressivo ou entrelaçado; todos os outros fluxos devem ser progressivos.
  • GUID_NULL (modo de tecelagem) não é permitido para o fluxo 0.
  • DeinterlacePref_Weave não pode ser usado como um modo de fallback porque isso pode impedir que um dispositivo de desconsulta seja criado. O modo de combinação YUV requer um dispositivo de desinterlace, mesmo que o vídeo de entrada não esteja entrelaçado.
  • Nenhuma alteração pode ser feita no valor alfa planar associado a cada fluxo de entrada de VMR.
  • O usuário não pode alterar a ordem Z dos fluxos de vídeo conectados. A ordem Z padrão é retirada da ordem de fixação.
  • Não há suporte para chave de cores.
  • O pino de entrada 0 deve receber o fluxo de vídeo.
  • Os outros pinos de entrada só podem receber dados de subtransmissão de vídeo, como sub-imagem de DVD, legendas ocultas ou teletexto.
  • Os outros pinos de entrada só podem aceitar formatos YUV alfa por pixel, como AYUV, AI44 e IA44.
  • Nenhum dos pinos de entrada da VMR pode aceitar qualquer formato RGB.
  • As imagens de bitmap fornecidas pelo aplicativo não podem mais ser combinadas com o vídeo antes da apresentação para a exibição.
  • Sub-fluxos individuais não podem ser invertidos horizontal ou verticalmente usando as funções de "retângulo de saída" do mixer da VMR. Há suporte para o repositório e o redimensionamento de fluxo "normal".
  • A cor da tela de fundo de combinação (especificada por IVMRMixerControl::SetBackgroundClr) ainda é especificada no espaço de cor RGB, assim como no modo de combinação RGB.

Configuration

Os aplicativos devem configurar explicitamente a VMR para aproveitar o modo de combinação YUV; o modo de combinação RGB original continua sendo o modo de combinação padrão. Para habilitar o modo de combinação YUV na VMR-7, chame IVMRMixerControl::SetMixingPrefs com o sinalizador MixerPref_RenderTargetYUV. Essa chamada deve ser feita antes que qualquer um dos pinos de entrada da VMR seja conectado. Para habilitar o modo de combinação YUV na VMR-9, chame IVMRMixerControl9::SetMixingPrefs com o sinalizador MixerPref9_RenderTargetYUV.

A única maneira de determinar se a VMR-7 dá suporte ao novo modo de combinação YUV é tentar definir a VMR nesse modo. Se a chamada for bem-sucedida, você ainda poderá colocar a VMR de volta no modo de combinação RGB, se necessário. Depois de definida no modo de combinação YUV, a VMR só pode ser alterada de volta para o modo de combinação RGB depois que todos os pinos de entrada tiverem sido desconectados.

No modo de combinação YUV, você pode reduzir a carga na GPU (unidade de processamento gráfico) aplicando os seguintes sinalizadores no método SetMixingPrefs :

Sinalizador Descrição
VMR-7: MixerPref_DynamicSwitchToBOBVMR-9: MixerPref9_DynamicSwitchToBOB
Alterne para bob deinterlacing.
VMR-7: MixerPref_DynamicDecimateBy2VMR-9: MixerPref_DynamicDecimateBy2
Dizimar a imagem por um fator de 2 horizontal e verticalmente.

 

Você pode adicionar ou remover esses sinalizadores enquanto o grafo de filtro está em execução; a alteração é aplicada quando o mixer de VMR compõe o próximo quadro de vídeo. Os sinalizadores não são mutuamente exclusivos. Essas configurações reduzem a qualidade da imagem, portanto, normalmente, você as aplicaria somente quando a qualidade do vídeo for menos importante, por exemplo, se o vídeo estiver sendo reproduzido em uma pequena parte da interface do usuário.

Usando o modo de combinação de VMR