Informazioni sull'accelerazione hardware utilizzando StageVideo

La presentazione con accelerazione hardware, che include il ridimensionamento video, la conversione colore e il blitting, consente di migliorare i vantaggi in termini di prestazione della decodifica con accelerazione hardware. Su dispositivi che offrono accelerazione GPU (hardware), potete utilizzare un oggetto flash.media.StageVideo per elaborare i video direttamente sull'hardware del dispositivo. L'elaborazione diretta libera la CPU per eseguire altre attività mentre la GPU gestisce il video. La classe Video precedente, d'altro canto, utilizza in genere la presentazione software. La presentazione software viene eseguita nella CPU e può richiedere una porzione significativa delle risorse di sistema.

Attualmente, pochi dispositivi forniscono l'accelerazione GPU completa. Tuttavia, video sullo stage consente alle applicazioni di sfruttare al massimo l'eventuale accelerazione hardware disponibile.

La classe StageVideo non rende obsoleta la classe Video. Se utilizzate insieme, queste due classi forniscono l'esperienza di visualizzazione video ottimale consentita dalle risorse dispositivo disponibili in qualsiasi momento. L'applicazione sfrutta l'accelerazione hardware intercettando gli eventi appropriati e passando da StageVideo a Video, e viceversa, come necessario.

La classe StageVideo impone alcune restrizioni sull'utilizzo del video. Prima di implementare StageVideo, rivedete le linee guida e accertatevi che possano essere accettate dall'applicazione. Se accettate le restrizioni, utilizzate la classe StageVideo ogni volta che Flash Player rileva che la presentazione con accelerazione hardware è disponibile. Vedete Linee guida e limitazioni .

Piani paralleli: video sullo stage e l'elenco di visualizzazione di Flash

Grazie al modello video sullo stage, Flash Player può separare i video dall'elenco di visualizzazione. Flash Player divide la visualizzazione composita tra due piani ordinati z:

Piano video sullo stage
Il piano video sullo stage si trova sullo sfondo. Visualizza solo i video con accelerazione hardware. A causa di questa progettazione, il piano non è disponibile se l'accelerazione hardware non è supportata o non è disponibile sul dispositivo. In ActionScript, gli oggetti StageVideo gestiscono video riprodotti sul piano video sullo stage.

Piano elenco di visualizzazione di Flash
Le entità dell'elenco di visualizzazione di Flash sono composte su un piano davanti al piano video sullo stage. Le entità dell'elenco di visualizzazione includono tutti gli elementi di cui il runtime esegue il rendering, compresi i controlli di riproduzione. Quando l'accelerazione hardware non è disponibile, è possibile riprodurre video solo su questo piano utilizzando l'oggetto della classe Video. Video sullo stage viene sempre visualizzato dietro la grafica dell'elenco di visualizzazione di Flash.

L'oggetto StageVideo appare in una regione rettangolare allineata alla finestra, non ruotata, dello schermo. Non potete creare livelli di oggetti dietro il piano video sullo stage. Tuttavia, potete utilizzare il piano elenco di visualizzazione di Flash per creare altri livelli di grafica sopra l'oggetto StageVideo. Video sullo stage viene eseguito contemporaneamente all'elenco di visualizzazione. Pertanto, potete utilizzare i due meccanismi insieme per creare un effetto visivo unificato che utilizza due piani distinti. Ad esempio, potete utilizzare il piano anteriore per i controlli di riproduzione che operano sul video sullo stage eseguito in background.

Video sullo stage e codec H.264

Nelle applicazioni Flash Player, l'implementazione dell'accelerazione hardware video comporta due passaggi:

  1. Codifica del video come H.264

  2. Implementazione dell'API StageVideo

Per risultati ottimali, eseguite entrambi i passaggi. Il codec H.264 consente di sfruttare al massimo l'accelerazione hardware, dalla decodifica alla presentazione video.

Video sullo stage elimina il read-back (invio dei dati dalla GPU alla CPU). In altre parole, la GPU non restituisce frame decodificati alla CPU per la composizione con gli oggetti dell'elenco di visualizzazione. Piuttosto, la GPU riporta frame decodificati e sottoposti a rendering direttamente sullo schermo, dietro gli oggetti dell'elenco di visualizzazione. Questa tecnica riduce l'uso della CPU e della memoria e fornisce una migliore fedeltà di pixel.

Linee guida e limitazioni

Quando si esegue un video in modalità a schermo intero, video sullo stage è sempre disponibile se il dispositivo supporta l'accelerazione hardware. Flash Player, tuttavia, viene anche eseguito all'interno di un browser. Nel contesto di un browser, l'impostazione wmode influenza la disponibilità di video sullo stage. Provate a utilizzare sempre wmode="direct" se desiderate utilizzare video sullo stage. Video sullo stage non è compatibile con altre impostazioni wmode quando non è in modalità a schermo intero. Questa restrizione significa che, in fase di esecuzione, video sullo stage può vacillare in maniera imprevedibile tra lo stato di disponibilità e di non disponibilità. Ad esempio, se l'utente esce dalla modalità a schermo intero mentre video sullo stage è in esecuzione, il contesto del video si ritrasforma nel browser. Se il parametro wmode del browser non è impostato su "direct" , video sullo stage può improvvisamente diventare non disponibile. Flash Player comunica modifiche del contesto di riproduzione alle applicazioni tramite un insieme di eventi. Se implementate l'API StageVideo, mantenete un oggetto Video come un backup quando video sullo stage non è più disponibile.

A causa della sua relazione diretta con hardware, video sullo stage limita alcune funzioni video. Video sullo stage applica i vincoli seguenti:

  • Per ogni file SWF, Flash Player limita a quattro il numero di oggetti StageVideo che possono visualizzare simultaneamente video. Tuttavia, il limite effettivo può essere inferiore in base alle risorse hardware del dispositivo.

  • La temporizzazione video non è sincronizzata con la temporizzazione del contenuto visualizzato dal runtime.

  • L'area di visualizzazione del video può essere soltanto un rettangolo. Non è possibile utilizzare aree di visualizzazione più avanzate, ad esempio ellittiche o irregolari.

  • Non è possibile ruotare il video.

  • Non è possibile memorizzare il video nella cache delle bitmap o utilizzare l'oggetto BitmapData per eseguire l'accesso.

  • Non è possibile applicare filtri al video.

  • Non è possibile applicare trasformazioni di colore al video.

  • Non è possibile applicare un valore alfa al video.

  • Metodi di fusione applicati agli oggetti nel piano elenco di visualizzazione non si applicano al video sullo stage.

  • Potete collocare il video solo su limiti di pixel pieni.

  • Sebbene il rendering GPU sia il migliore disponibile per l'hardware dispositivo specificato, i pixel non sono identici al 100% tra i dispositivi. Leggere variazioni possono verificarsi a causa di differenze nel driver e nella piattaforma.

  • Alcuni dispositivi non supportano tutti gli spazi colore richiesti. Ad esempio, alcuni dispositivi non supportano BT.709, lo standard H.264. In questi casi, potete utilizzare BT.601 per la visualizzazione rapida.

  • Non potete utilizzare video sullo stage con le impostazioni WMODE, ad esempio normale, opaco o trasparente. Video sullo stage supporta solo WMODE=direct quando non si trova nella modalità a schermo intero. WMODE non ha alcun effetto in Safari 4 o versioni successive e in IE 9 o versioni successive.

Nella maggior parte dei casi, queste limitazioni non influiscono sulle applicazioni lettore video. Se potete accettare queste limitazioni, utilizzate video sullo stage quando possibile.