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 |
---|---|
|
Ignorez le deuxième champ de chaque cadre entrelacé. |
|
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 |
---|---|
|
Limitez la sortie pour correspondre à la bande passante GPU. |
|
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. |
|
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 :
- EVRConfig_AllowBatching
- EVRConfig_AllowDropToBob
- EVRConfig_AllowDropToHalfInterlace
- EVRConfig_AllowScaling
- EVRConfig_AllowDropToThrottle
- EVRConfig_ForceBatching
- EVRConfig_ForceBob
- EVRConfig_ForceHalfInterlace
- EVRConfig_ForceScaling
- EVRConfig_ForceThrottle
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.
Rubriques connexes