Gestão 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 da CPU/GPU. Na realidade, é claro, o pipeline de vídeo deve ser capaz de lidar com recursos de hardware finitos, e deve adaptar adaptativamente a reprodução ao ambiente do sistema. Os objetivos para a gestão da qualidade de vídeo são:
- Reduza o brilho (quadros caídos ou atrasados).
- Reduza o uso de memória, especialmente na GPU.
- Reduza o consumo de energia, especialmente em laptops movidos a bateria.
- Obtenha a melhor qualidade de imagem possível, dadas as restrições de recursos.
- Mantenha o vídeo sincronizado com o áudio.
Alguns desses objetivos são contrários, particularmente em sistemas low-end. Geralmente, há um trade-off entre velocidade e qualidade. O brilho é mais censurável do que reduções moderadas na qualidade visual. A importância relativa do consumo de energia varia com o ambiente; Em um laptop funcionando com bateria, é muito importante.
No Windows 7, o renderizador de vídeo aprimorado (EVR) tem melhor suporte para gerenciamento de qualidade de vídeo. Tanto o pipeline do Media Foundation quanto o pipeline do DirectShow foram atualizados para aproveitar esses recursos. É utilizada uma abordagem em duas vertentes:
- Antes do início da reprodução, o pipeline pode executar otimizações estáticas, com base nas configurações de gerenciamento de energia do usuário e informações 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.
Gestão da Qualidade na Fundação Media
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 IMFTopoLoader::Load método.
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 da qualidade.
As otimizações dinâmicas são realizadas pelo gestor de qualidade. Você não precisa fazer nada para habilitar o gerente de qualidade; ele é ativado automaticamente. O gestor de qualidade existia no Windows Vista; no Windows 7, o EVR pode responder melhor às mensagens do gestor de qualidade.
Gestão da Qualidade no DirectShow
O DirectShow suporta 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 IDvdGraphBuilder::RenderDvdVideoVolume método:
Bandeira | Descrição |
---|---|
AM_DVD_ADAPT_GRAPH | Permite otimizações estáticas. |
AM_DVD_EVR_QOS | Permite 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 são limitadas à reprodução de DVD.
Gestão da Qualidade no EVR
O EVR suporta alguns novos sinalizadores de configuração para gestão da qualidade. Se você habilitar as otimizações de gerenciamento de qualidade descritas anteriormente, não será necessário 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 misturador EVR chamando o IMFVideoMixerControl2::SetMixingPrefs método:
Bandeiras | Descrição |
---|---|
|
Pule o segundo campo de cada quadro entrelaçado. |
|
Utilize o desentrelaçamento bob, mesmo que o condutor suporte um modo de desentrelaçamento de qualidade superior. |
Defina os seguintes sinalizadores no apresentador EVR chamando o IMFVideoDisplayControl::SetRenderingPrefs método:
Bandeiras | Descrição |
---|---|
|
Acelere a saída para corresponder à largura de banda da GPU. |
|
Chamadas Batch Direct3D Present. Essa otimização permite que o sistema entre em estados ociosos com mais frequência, o que pode reduzir o consumo de energia. |
|
Execute a mistura 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 suporta atributos de configuração que correspondem a cada um desses sinalizadores:
- EVRConfig_AllowBatching
- EVRConfig_AllowDropToBob
- EVRConfig_AllowDropToHalfInterlace
- EVRConfig_AllowScaling
- EVRConfig_AllowDropToThrottle
- EVRConfig_ForceBatching
- EVRConfig_ForceBob
- EVRConfig_ForceHalfInterlace
- EVRConfig_ForceScaling
- EVRConfig_ForceThrottle
Antes de iniciar a reprodução, você pode definir esses atributos diretamente no coletor de mídia EVR, como uma alternativa para chamar o IMFVideoMixerControl2 e IMFVideoDisplayControl métodos. Para definir esses atributos, consulte o coletor de mídia EVR para IMFAttributes.
Tópicos relacionados