Sobre aceleração por hardware usando StageVideo

A apresentação acelerada por hardware – que inclui dimensionamento de vídeo, conversão de cor e blitting – aumenta os benefícios de desempenho da codificação acelerada por hardware. Em dispositivos que oferecem aceleração da GPU (hardware), você pode usar um objeto flash.media.StageVideo para processar vídeo diretamente no hardware do dispositivo. O processamento direto libera a CPU para executar outras tarefas enquanto a GPU lida com o vídeo. A classe herdada Video, por outro lado, normalmente usa a apresentação por software. A apresentação por software ocorre na CPU e pode consumir uma parcela significativa dos recursos do sistema.

Atualmente poucos dispositivos oferecem aceleração completa de GPU. Contudo, o vídeo do palco permite aos aplicativos aproveitar ao máximo qualquer aceleração por hardware disponível.

A classe StageVideo não torna a classe Video obsoleta. Funcionando juntas, essas duas classes proporcionam a experiência de exibição de vídeo otimizada permitida pelos recursos do dispositivo a qualquer momento específico. Seu aplicativo aproveita a aceleração de hardware ouvindo os eventos apropriados e alternando entre StageVideo e Video, conforme necessário.

A classe StageVideo impõe certas restrições sobre o uso de vídeo. Antes de implementar StageVideo, reveja as orientações e verifique se sua aplicação pode aceitá-lo. Se você aceitar as restrições, use a classe StageVideo sempre que o Flash Player detectar que a apresentação acelerada por hardware está disponível. Consulte Orientações e limitações .

Planos paralelos: lista de exibição do Flash e Stage Video

Com o modelo de vídeo do palco, o Flash Player pode separar o vídeo da lista de exibição. O Flash Player divide o visor composto entre dois planos ordenados Z:

Plano do vídeo do palco
O plano do vídeo do palco fica em segundo plano. Exibe somente vídeo acelerado por hardware. Devido a esse design, esse plano não fica disponível se a aceleração por hardware não for compatível ou não estiver disponível no dispositivo. No ActionScript, objetos StageVideo manipulam vídeos reproduzidos no plano de vídeo do palco.

Plano de lista de exibição Flash
As entidades da lista de exibição Flash são compostas em um plano na frente do plano do vídeo do palco. As entidades da lista de exibição incluem qualquer coisa que o tempo de execução renderizar, inclusive controles de reprodução. Quando a aceleração de hardware não está disponível, vídeos podem ser reproduzidos somente nesse plano, usando o objeto da classe Video. O vídeo do palco é sempre exibido atrás dos gráficos da lista de exibição Flash.

Exibir gráfico inteiro
Planos de exibição de vídeo

O objeto StageVideo é exibido em uma região não rotacionada e retangular da tela alinhada com a janela. Você não pode estender em camadas objetos atrás do plano de vídeo do palco. Contudo, é possível usar o plano de lista de exibição do Flash para criar camadas com outros gráficos sobre o objeto de vídeo do palco. O vídeo do palco é executado simultaneamente com a lista de exibição do Assim, você pode usar os dois mecanismos juntos para criar um efeito visual unificado que usa dois planos discretos. Por exemplo, pode usar o plano frontal para os controles de reprodução que operam no vídeo do palco em execução em segundo plano.

Vídeo do palco e codec H.264

Em aplicativos Flash Player, a implementação da aceleração por hardware de vídeo envolve duas etapas:

  1. Codificação do vídeo como H.264

  2. Implementação da API StageVideo

Para melhores resultados, realize as duas etapas. O codec H.264 permite que você aproveite ao máximo a aceleração por hardware, desde a decodificação de vídeo até a apresentação.

O vídeo do palco elimina a releitura de GPU para GPU. Em outras palavras, a GPU não envia frames decodificados de volta para a CPU para composição com objetos da lista de exibição. Em vez disso, a GPU imprime diretamente na tela frames decodificados e renderizados, trás dos objetos da lista de exibição. Esta técnica reduz o uso de memória e CPU e também proporciona uma melhor fidelidade de pixel.

Orientações e limitações

Quando o vídeo é executado no modo de tela cheia, o vídeo do palco está sempre disponível se o dispositivo for compatível com aceleração por hardware. O Flash Player, no entanto, também é executado dentro de um navegador. No contexto de navegador, a configuração wmode afeta a disponibilidade do vídeo do palco. Tente usar sempre wmode="direct" se desejar usar o vídeo do palco. O vídeo do palco não é compatível com outras configurações wmode quando o modo de tela cheia não é usado. Essa restrição significa que, no tempo de execução, o vídeo do palco pode vacilar de maneira imprevisível entre estar ou não disponível. Por exemplo, se o usuário sair do modo de tela cheia enquanto o vídeo estiver em execução, o contexto de vídeo inverterá para o navegador. Se o parâmetro wmode do navegador não for definido como "direct" , o vídeo do palco pode ficar indisponível subitamente. O Flash Player comunica alterações de contexto de reprodução para aplicativos através de um conjunto de eventos. Se você implementar a API StageVideo, mantenha um objeto de vídeo como backup quando o vídeo do palco ficar indisponível.

Por causa dessa relação direta com o hardware, o vídeo do palco restringe alguns recursos de vídeo. O vídeo do palco reforça as seguintes restrições:

  • Para cada arquivo SWF, o Flash Player limita a quatro o número de objetos StageVideo que podem exibir vídeo simultaneamente. Entretanto, o limite real pode ser mais baixo, dependendo dos recursos de hardware no dispositivo.

  • A temporização do vídeo não é sincronizada com a temporização do conteúdo exibido pelo tempo de execução.

  • A área de exibição de vídeo pode ser somente um retângulo. Não é possível usar áreas de exibição mais avançadas, como formas elípticas ou irregulares.

  • Não é possível girar o vídeo.

  • Não é possível armazenar o vídeo no cache de bitmap nem usar um objeto BitmapData para acessá-lo.

  • Não é possível aplicar filtros ao vídeo.

  • Não é possível aplicar transformações de cores ao vídeo.

  • Não é possível aplicar um valor alfa ao vídeo.

  • Os modos de combinação que você aplica a objetos no plano da lista de exibição não se aplicam ao vídeo do palco.

  • É possível posicionar o vídeo somente em limites de pixel cheios.

  • Embora a renderização da GPU seja a melhor disponível para o hardware de dispositivo específico, ela não é 100% idêntica em termos de pixel em todos os dispositivos. Ligeiras variações ocorrem devido a diferenças de driver e de plataforma.

  • Alguns dispositivos não oferecem suporte a todos os espaços de cor necessários. Por exemplo, alguns dispositivos não oferecem suporte a BT.709, o padrão H.264. Nesses casos, você pode usar o BT.601 para acelerar a exibição.

  • Não é possível usar o vídeo do palco com configurações WMODE, como normal, opaque ou transparent. O vídeo do palco oferece suporte apenas a WMODE=direct quando não está no modo de tela cheia. WMODE não funciona no Safari 4 ou posterior e no IE 9 ou superior.

Na maioria dos casos, essas limitações não afetam aplicativos de player de vídeo. Se puder aceitar estas limitações, use o vídeo do palco sempre que possível.