Gerenciamento de Qualidade de Vídeo

Este tópico descreve algumas melhorias no pipeline de vídeo no Windows 7, tanto para o Microsoft Media Foundation quanto para o Microsoft DirectShow.

Em um mundo perfeito, o vídeo nunca falharia, independentemente da resolução de vídeo ou da carga de CPU/GPU. Na realidade, é claro, o pipeline de vídeo deve ser capaz de lidar com recursos finitos de hardware e deve adaptar adaptávelmente a reprodução para o ambiente do sistema. As metas para o gerenciamento de qualidade de vídeo são:

  • Reduzir falhas (quadros descartados ou tardios).
  • Reduza o uso de memória, especialmente na GPU.
  • Reduza o consumo de energia, especialmente em laptops em execução com energia da bateria.
  • Obtenha a melhor qualidade de imagem possível, dadas as restrições de recurso.
  • Mantenha o vídeo sincronizado com áudio.

Algumas dessas metas são contrárias, especialmente em sistemas de baixo nível. Geralmente há uma troca entre velocidade e qualidade. A falha é mais desagradável do que reduções moderadas na qualidade visual. A importância relativa do consumo de energia varia de acordo com o ambiente; em um laptop em execução com energia da bateria, é muito importante.

No Windows 7, o EVR (renderizador de vídeo) aprimorado tem melhor suporte para o gerenciamento de qualidade de vídeo. Tanto o pipeline do Media Foundation quanto o pipeline do DirectShow foram atualizados para aproveitar essas funcionalidades. Uma abordagem de duas pontas é usada:

  • Antes do início da reprodução, o pipeline pode executar otimizações estáticas, com base nas configurações e nas informações de gerenciamento de energia do usuário sobre o hardware.
  • Após o início da reprodução, o pipeline pode aplicar otimizações dinâmicas, com base no desempenho em tempo de execução.

Quality Management in Media Foundation

Para habilitar otimizações estáticas, defina o atributo MF_TOPOLOGY_STATIC_PLAYBACK_OPTIMIZATIONS na topologia parcial antes de resolver a topologia. O carregador de topologia consulta esse atributo em seu método IMFTopoLoader::Load .

Se você habilitar otimizações estáticas, deverá definir dois outros atributos na topologia:

Atributo Descrição
MF_TOPOLOGY_PLAYBACK_MAX_DIMS
Especifica o tamanho máximo da janela de reprodução de vídeo.
MF_TOPOLOGY_PLAYBACK_FRAMERATE
Especifica a taxa de atualização do monitor.

 

Esses dois atributos ajudam o pipeline a calcular a configuração mais eficaz para o gerenciamento de qualidade.

As otimizações dinâmicas são executadas pelo gerenciador de qualidade. Você não precisa fazer nada para habilitar o gerenciador de qualidade; ele é habilitado automaticamente. O gerenciador de qualidade existia no Windows Vista; no Windows 7, o EVR pode responder melhor às mensagens do gerenciador de qualidade.

Gerenciamento de Qualidade no DirectShow

O DirectShow dá suporte a otimizações estáticas e dinâmicas para reprodução de DVD. Para habilitar essas otimizações em um aplicativo de reprodução de DVD, defina os seguintes sinalizadores no parâmetro dwFlags do método IDvdGraphBuilder::RenderDvdVideoVolume :

Sinalizador Descrição
AM_DVD_ADAPT_GRAPH Habilita otimizações estáticas.
AM_DVD_EVR_QOS Habilita otimizações dinâmicas.

 

Outros aplicativos DirectShow podem habilitar otimizações dinâmicas chamando o método IEVRFilterConfigEx::SetConfigPrefs diretamente no filtro EVR. Especifique o sinalizador EVRFilterConfigPrefs_EnableQoS .

Observação

As otimizações estáticas no DirectShow estão limitadas à reprodução de DVD.

 

Gerenciamento de Qualidade no EVR

O EVR dá suporte a alguns novos sinalizadores de configuração para o gerenciamento de qualidade. Se você habilitar as otimizações de gerenciamento de qualidade descritas anteriormente, não precisará definir esses sinalizadores diretamente. No entanto, eles são documentados para aplicativos que desejam um controle mais granular sobre o EVR.

Defina os seguintes sinalizadores no mixer EVR chamando o método IMFVideoMixerControl2::SetMixingPrefs :

Flags Descrição
  • MFVideoMixPrefs_ForceHalfInterlace
  • MFVideoMixPrefs_AllowDropToHalfInterlace
Ignore o segundo campo de cada quadro entrelaçado.
  • MFVideoMixPrefs_AllowDropToBob
  • MFVideoMixPrefs_ForceBob
Use o desinterlacing bob, mesmo que o driver dê suporte a um modo de desinterlace de qualidade mais alta.

 

Defina os seguintes sinalizadores no apresentador do EVR chamando o método IMFVideoDisplayControl::SetRenderingPrefs :

Flags Descrição
  • MFVideoRenderPrefs_ForceOutputThrottling
  • MFVideoRenderPrefs_AllowOutputThrottling
Limitação da saída para corresponder à largura de banda da GPU.
  • MFVideoRenderPrefs_ForceBatching
  • MFVideoRenderPrefs_AllowBatching
Chamadas presentes do Direct3D do Lote. Essa otimização permite que o sistema entre em estados ociosos com mais frequência, o que pode reduzir o consumo de energia.
  • MFVideoRenderPrefs_ForceScaling
  • MFVideoRenderPrefs_AllowScaling
Execute a combinação de vídeo usando um retângulo menor que o retângulo de saída. Dimensione o resultado para o tamanho de saída correto.

 

Além disso, o coletor de mídia EVR dá suporte a atributos de configuração que correspondem a cada um desses sinalizadores:

Antes do início da reprodução, você pode definir esses atributos diretamente no coletor de mídia EVR, como uma alternativa para chamar os métodos IMFVideoMixerControl2 e IMFVideoDisplayControl . Para definir esses atributos, consulte o coletor de mídia EVR para IMFAttributes.

Sessão de Mídia