Présentation de l’accélération matérielle basée sur la classe StageVideo

La présentation à accélération matérielle, qui comprend la mise à l’échelle de la vidéo, la conversion de la couleur et la fusion, exploite l’optimisation des performances assurée par le décodage à accélération matérielle. Sur les périphériques qui gèrent l’accélération par processeur graphique (matérielle), vous disposez d’un objet flash.media.StageVideo pour traiter la vidéo directement sur le matériel du périphérique. Un traitement direct permet à l’unité centrale d’exécuter d’autres tâches pendant que le processeur graphique gère la vidéo. La classe Video existante fait en revanche appel à la présentation logicielle. La présentation logicielle est exécutée dans l’unité centrale et sollicite parfois une proportion élevée des ressources du système.

A l’heure actuelle, peu de périphériques prennent en charge l’accélération par processeur graphique complète. La vidéo sur la scène permet toutefois aux applications d’exploiter pleinement l’accélération matérielle éventuellement intégrée.

La classe StageVideo ne rend pas obsolète la classe Video. L’association de ces deux classes assure l’expérience optimale de visualisation de la vidéo autorisée par les ressources du périphérique à un moment donné. L’application exploite l’accélération matérielle en écoutant les événements appropriés et bascule entre les classes StageVideo et Video en fonction des besoins.

La classe StageVideo impose diverses restrictions en matière d’utilisation de la vidéo. Avant de mettre en œuvre la classe StageVideo, passez en revue les directives et assurez-vous que l’application est en mesure de les prendre en charge. Si vous acceptez les restrictions, utilisez la classe StageVideo à chaque fois que Flash Player détecte qu’une présentation à accélération matérielle est disponible. Voir Directives et restrictions .

Plans parallèles : Vidéo sur la scène et liste d’affichage Flash

Le modèle de vidéo sur la scène permet à Flash Player de séparer la vidéo de la liste d’affichage. Flash Player divise l’affichage composite entre deux plans Z :

Plan de vidéo sur la scène
Le plan de vidéo sur la scène est situé en arrière-plan. Il n’affiche que la vidéo à accélération matérielle. Ce plan n’est de ce fait disponible que si l’accélération matérielle n’est pas prise en charge par le périphérique ou qu’elle n’est pas intégrée à ce dernier. En ActionScript, les objets StageVideo traitent les vidéos lues sur le plan de la vidéo sur la scène.

Plan associé à la liste d’affichage de Flash
Les entités qui figurent dans la liste d’affichage de Flash sont combinées sur un plan situé devant le plan de la vidéo sur la scène. Ces entités incluent tout élément rendu par le moteur d’exécution, y compris les contrôles de lecture. Si l’accélération matérielle n’est pas disponible, les vidéos sont lues sur ce plan uniquement, à l’aide de l’objet de la classe Video. La vidéo sur la scène est toujours affichée derrière les graphiques de la liste d’affichage Flash.

Afficher le graphique en taille réelle
Plans d’affichage de la vidéo

L’objet StageVideo apparaît dans une zone rectangulaire sans rotation de l’écran, alignée sur la fenêtre. Il est impossible de superposer les objets derrière le plan de la vidéo sur la scène. Le plan associé à la liste d’affichage de Flash permet toutefois de superposer d’autres graphiques au plan de la vidéo sur la scène. La vidéo sur la scène et la liste d’affichage s’exécutent simultanément. Vous pouvez de ce fait combiner les deux mécanismes pour créer un effet visuel unifié qui utilise deux plans discrets. Vous pouvez, par exemple, réserver le plan avant aux contrôles de lecture associés à la vidéo sur la scène qui s’exécute en arrière-plan.

Vidéo sur la scène et codec H.264

Dans les applications Flash Player, la mise en œuvre de l’accélération matérielle de la vidéo se compose de deux étapes :

  1. Encodage de la vidéo au format H.264

  2. Mise en œuvre de l’API StageVideo

Pour obtenir les meilleurs résultats possibles, exécutez les deux étapes. Le codec H.264 permet d’exploiter pleinement l’accélération matérielle, de la phase de décodage de la vidéo à la phase de présentation.

La vidéo sur la scène élimine la rétro-lecture du processeur graphique à l’unité centrale. En d’autres termes, le processeur graphique n’envoie plus d’images décodées à l’unité centrale en vue de leur composition avec les objets de la liste d’affichage. Il fusionne plutôt directement à l’écran les images décodées et rendues, derrière les objets issus de la liste d’affichage. Cette technique sollicite moins l’unité centrale et la mémoire tout en assurant une fidélité accrue des pixels.

Directives et restrictions

Si la vidéo est exécutée en mode Plein écran, la vidéo sur la scène est toujours disponible, sous réserve que le périphérique prenne en charge l’accélération matérielle. Flash Player s’exécute toutefois aussi au sein d’un navigateur. Dans le contexte du navigateur, le paramètre wmode affecte la disponibilité de la vidéo sur la scène. Tentez d’utiliser systématiquement le paramètre wmode="direct" si vous souhaitez faire appel à la vidéo sur la scène. La vidéo sur la scène est incompatible avec d’autres paramètres wmode si le mode Plein écran est désactivé. Cette restriction signifie qu’à l’exécution, la disponibilité continue de la vidéo sur la scène n’est pas assurée. Si, par exemple, l’utilisateur quitte le mode Plein écran alors que la vidéo sur la scène est en cours de lecture, le contexte de cette dernière correspond à nouveau au navigateur. Si le paramètre wmode du navigateur n’est pas défini sur « direct » , la vidéo sur la scène risque de n’être soudainement plus disponible. Flash Player communique les changements de contexte de lecture aux applications par le biais d’une série d’événements. Si vous mettez en œuvre l’API StageVideo, conservez un objet Video à titre d’objet de secours au cas où la vidéo de la scène ne serait plus disponible.

En raison de son lien direct avec le matériel, la vidéo sur la scène interdit certaines fonctionnalités vidéo. La vidéo sur la scène impose les contraintes suivantes :

  • Pour chaque fichier SWF, Flash Player limite à quatre le nombre d’objets StageVideo capable de visionner simultanément des vidéos. Selon les ressources matérielles dont dispose le périphérique, la limite réelle risque toutefois d’être encore inférieure.

  • La vidéo n’est pas synchronisée avec le contenu qu’affiche le moteur d’exécution.

  • La zone d’affichage vidéo ne peut être qu’un rectangle. Il est impossible d’utiliser des zones d’affichage plus avancées, telles que des formes elliptiques ou irrégulières.

  • Il est impossible de faire pivoter la vidéo.

  • Il est impossible de placer la vidéo dans le cache de bitmaps ou d’utiliser BitmapData pour y accéder.

  • Il est impossible d’appliquer des filtres à la vidéo.

  • Il est impossible d’appliquer des transformations de couleur à la vidéo.

  • Il est impossible d’appliquer une valeur alpha à la vidéo.

  • Les modes de fusion que vous appliquez aux objets de la liste d’affichage ne s’appliquent pas à la vidéo sur la scène.

  • Vous pouvez positionner la vidéo uniquement sur les limites de pixels pleines.

  • Bien que le rendu par processeur graphique soit optimisé en fonction du matériel du périphérique indiqué, il n’est pas identique « au pixel près » d’un périphérique à un autre. De légères variations risquent de survenir en raison des différences de pilotes et de plates-formes.

  • Quelques périphériques ne prennent pas en charge tous les espaces colorimétriques requis. Par exemple, certains périphériques ne prennent pas en charge BT.709, le standard H.264. Dans ce cas de figure, vous pouvez utiliser BT.601 pour assurer un affichage rapide.

  • Vous ne pouvez pas utiliser la vidéo sur la scène avec des paramètres WMODE tels que normal, opaque ou transparent. La vidéo sur la scène ne prend en charge WMODE=direct que si le mode Plein écran est désactivé. WMODE n’a aucun effet dans Safari 4 ou version ultérieure, et IE 9 ou une version ultérieure.

Dans la plupart des cas, ces restrictions n’affectent pas les lecteurs vidéo. Si vous êtes prêt à les accepter, utilisez dans la mesure du possible la vidéo sur la scène.