Gestion de la qualité vidéo

Cette rubrique décrit certaines améliorations apportées au pipeline vidéo dans Windows 7, à la fois pour Microsoft Media Foundation et Microsoft DirectShow.

Dans un monde parfait, la vidéo ne ferait jamais de problème, quelle que soit la résolution vidéo ou la charge processeur/GPU. En réalité, bien sûr, le pipeline vidéo doit être en mesure de faire face à des ressources matérielles limitées, et il doit adapter la lecture de manière adaptative à l’environnement système. Les objectifs de la gestion de la qualité vidéo sont les suivants :

  • Réduire les démangeaisons (images supprimées ou tardives).
  • Réduire l’utilisation de la mémoire, en particulier dans le GPU.
  • Réduire la consommation d’énergie, en particulier dans les ordinateurs portables fonctionnant sur batterie.
  • Obtenez la meilleure qualité d’image possible, en fonction des contraintes de ressources.
  • Gardez la vidéo synchronisée avec l’audio.

Certains de ces objectifs sont contraires, en particulier sur les systèmes bas de bout en bout. En général, il y a un compromis entre vitesse et qualité. Le glitching est plus répréhensible que les réductions modérées de la qualité visuelle. L’importance relative de la consommation d’énergie varie en fonction de l’environnement; dans un ordinateur portable fonctionnant sur batterie, il est très important.

Dans Windows 7, le convertisseur vidéo amélioré (EVR) offre une meilleure prise en charge de la gestion de la qualité vidéo. Le pipeline Media Foundation et le pipeline DirectShow ont tous deux été mis à jour pour tirer parti de ces fonctionnalités. Une approche à deux volets est utilisée :

  • Avant le début de la lecture, le pipeline peut effectuer des optimisations statiques, en fonction des paramètres de gestion de l’alimentation de l’utilisateur et des informations sur le matériel.
  • Une fois la lecture démarrée, le pipeline peut appliquer des optimisations dynamiques, en fonction des performances au moment de l’exécution.

Gestion de la qualité dans Media Foundation

Pour activer les optimisations statiques, définissez l’attribut MF_TOPOLOGY_STATIC_PLAYBACK_OPTIMIZATIONS sur la topologie partielle avant de résoudre la topologie. Le chargeur de topologie interroge cet attribut dans sa méthode IMFTopoLoader::Load .

Si vous activez les optimisations statiques, vous devez définir deux autres attributs sur la topologie :

Attribut Description
MF_TOPOLOGY_PLAYBACK_MAX_DIMS
Spécifie la taille maximale de la fenêtre de lecture vidéo.
MF_TOPOLOGY_PLAYBACK_FRAMERATE
Spécifie le taux d’actualisation du moniteur.

 

Ces deux attributs aident le pipeline à calculer le paramètre le plus efficace pour la gestion de la qualité.

Les optimisations dynamiques sont effectuées par le gestionnaire de qualité. Vous n’avez pas besoin de faire quoi que ce soit pour activer le responsable qualité ; il est automatiquement activé. Le gestionnaire de qualité existait dans Windows Vista ; dans Windows 7, l’EVR peut mieux répondre aux messages du gestionnaire de qualité.

Gestion de la qualité dans DirectShow

DirectShow prend en charge les optimisations statiques et dynamiques pour la lecture de DVD. Pour activer ces optimisations dans une application de lecture de DVD, définissez les indicateurs suivants dans le paramètre dwFlags de la méthode IDvdGraphBuilder::RenderDvdVideoVolume :

Indicateur Description
AM_DVD_ADAPT_GRAPH Active les optimisations statiques.
AM_DVD_EVR_QOS Active les optimisations dynamiques.

 

D’autres applications DirectShow peuvent activer des optimisations dynamiques en appelant la méthode IEVRFilterConfigEx::SetConfigPrefs directement sur le filtre EVR. Spécifiez l’indicateur EVRFilterConfigPrefs_EnableQoS .

Notes

Les optimisations statiques dans DirectShow sont limitées à la lecture de DVD.

 

Gestion de la qualité dans l’EVR

L’EVR prend en charge de nouveaux indicateurs de configuration pour la gestion de la qualité. Si vous activez les optimisations de gestion de la qualité décrites précédemment, vous n’avez pas besoin de définir ces indicateurs directement. Toutefois, ils sont documentés pour les applications qui souhaitent un contrôle plus granulaire sur l’EVR.

Définissez les indicateurs suivants sur le mélangeur EVR en appelant la méthode IMFVideoMixerControl2::SetMixingPrefs :

Indicateurs Description
  • MFVideoMixPrefs_ForceHalfInterlace
  • MFVideoMixPrefs_AllowDropToHalfInterlace
Ignorez le deuxième champ de chaque image entrelacée.
  • MFVideoMixPrefs_AllowDropToBob
  • MFVideoMixPrefs_ForceBob
Utilisez le désinterlacage bob, même si le pilote prend en charge un mode de désinterlacation de qualité supérieure.

 

Définissez les indicateurs suivants sur le présentateur EVR en appelant la méthode IMFVideoDisplayControl::SetRenderingPrefs :

Indicateurs Description
  • MFVideoRenderPrefs_ForceOutputThrottling
  • MFVideoRenderPrefs_AllowOutputThrottling
Limitez la sortie pour qu’elle corresponde à la bande passante GPU.
  • MFVideoRenderPrefs_ForceBatching
  • MFVideoRenderPrefs_AllowBatching
Appels par lots Direct3D Present. Cette optimisation permet au système d’entrer plus fréquemment dans des états inactifs, ce qui peut réduire la consommation d’énergie.
  • MFVideoRenderPrefs_ForceScaling
  • MFVideoRenderPrefs_AllowScaling
Effectuez un mixage vidéo à l’aide d’un rectangle plus petit que le rectangle de sortie. Mettre à l’échelle le résultat à la taille de sortie appropriée.

 

En outre, le récepteur multimédia EVR prend en charge les attributs de configuration qui correspondent à chacun de ces indicateurs :

Avant de commencer la lecture, vous pouvez définir ces attributs directement sur le récepteur multimédia EVR, en guise d’alternative à l’appel des méthodes IMFVideoMixerControl2 et IMFVideoDisplayControl . Pour définir ces attributs, interrogez le récepteur multimédia EVR pour IMFAttributes.

Session multimédia