Partager via


Gestion de la qualité des vidéos

Cette rubrique décrit quelques 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 serait jamais glissée, 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éduisez les glures (supprimées ou tardives).
  • Réduisez l’utilisation de la mémoire, en particulier dans le GPU.
  • Réduisez la consommation d’alimentation, en particulier dans les ordinateurs portables fonctionnant sur batterie.
  • Obtenez la meilleure qualité d’image possible, en fonction des contraintes de ressources.
  • Maintenez 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 règle générale, il y a un compromis entre vitesse et qualité. Les glitchings sont plus répréhensibles que les réductions modérées de la qualité visuelle. L’importance relative de la consommation d’énergie varie selon 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é des vidéos. Le pipeline Media Foundation et le pipeline DirectShow ont été mis à jour pour tirer parti de ces fonctionnalités. Une approche à deux volets est utilisée :

  • Avant le démarrage 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 d’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 des 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 responsable de la qualité. Vous n’avez rien à faire pour permettre au responsable de la qualité ; elle est automatiquement activée. Le gestionnaire de qualité existait dans Windows Vista ; dans Windows 7, l’EVR peut mieux répondre aux messages du responsable de la 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 DVD, définissez les indicateurs suivants dans le paramètre dwFlags de la méthode IDvdGraphBuilder ::RenderDvdVideoVolume :

Drapeau 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.

Note

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 précis sur l’EVR.

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

Drapeaux Description
  • MFVideoMixPrefs_ForceHalfInterlace
  • MFVideoMixPrefs_AllowDropToHalfInterlace
Ignorez le deuxième champ de chaque cadre entrelacé.
  • MFVideoMixPrefs_AllowDropToBob
  • MFVideoMixPrefs_ForceBob
Utilisez bob deinterlacing, même si le pilote prend en charge un mode de déinterlace de qualité supérieure.

 

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

Drapeaux Description
  • MFVideoRenderPrefs_ForceOutputThrottling
  • MFVideoRenderPrefs_AllowOutputThrottling
Limitez la sortie pour correspondre à la bande passante GPU.
  • MFVideoRenderPrefs_ForceBatching
  • MFVideoRenderPrefs_AllowBatching
Appels Batch Direct3D Present. Cette optimisation permet au système d’entrer dans des états inactifs plus fréquemment, ce qui peut réduire la consommation d’énergie.
  • MFVideoRenderPrefs_ForceScaling
  • MFVideoRenderPrefs_AllowScaling
Effectuez un mélange vidéo à l’aide d’un rectangle plus petit que le rectangle de sortie. Mettez le résultat à l’échelle vers la taille de sortie correcte.

 

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

Avant le démarrage de 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.

de session multimédia