quarta-feira, 19 de novembro de 2008

Alchemy Flash C++

20080330_atoms_and_alchemy

A imagem ao lado não se refere ao logo do projeto que a Adobe anunciou no MAX 2007 e que disponibilizou para testes e avaliação da comunidade no MAX 2008 que ocorre esta semana.

A imagem refere-se a capa de um livro que pode se conhecido neste link. Simplesmente achei o logo do mesmo interessante e resolvi usar a imagem para ilustrar o post.

OK! Justificativas feitas, vamos ao que realmente interessa!

No MAX 2007, este projeto originalmente chamado de FLACC foi apresentado, anunciando a possibilidade de compilação de código escrito em C/C++ em uma biblioteca com bytecode possível de ser consumido e rodado em uma “futura” versão do FlashPlayer.

Pois bem. Essa semana, no MAX 2008 que ocorre em San Francisco/CA/USA, o projeto foi aberto ao público e encontra-se disponível no Adobe Labs afim de que programadores C/C++ possam efetivamente testá-lo, bem como sugerir implementações, ou simplesmente dar a sua opinião. O “futuro” FlashPlayer traduz-se no recém disponibilizado FlashPlayer10 e extende-se ao Adobe AIR 1.5 disponibilizado paralelamente ao anúncio do Alchemy.

A pergunta é: Qual o objetivo prático do Alchemy?

Inicialmente, e confesso que eu fui uma dessas pessoas, me pareceu que esta sería a declaração de liberdade de recursos do FlashPlayer, abrindo ai a possibilidade de valer-se de bibliotecas C/C++ destinadas até mesmo co controle de hardware (impressoras fiscais, equipamentos de biometria, joysticks, etc.), mas infelizmente não é do que se trata.
O principal objetivo do Alchemy é expandir a capacidade do FlashPlayer no que se refere a processamento de dados. Ou seja, algoritimos de criptografia; leitura, análise e processamento de áudio e vídeo; leitura, escrita de renderização dos mais diversos tipos de formatos de arquivos e coisas do tipo. Ao invés de portar/reescrever um código originalmente escrito em C/C++, o mesmo pode ser simplesmente  compilado em um SWF/SWC e consumido por um código AS3 (Flash/Flex/AIR).
Ou seja, os recursos capazes de serem explorados em C/C++ no FlashPlayer10/AIR 1.5, são limitados exatamente aos recursos presentes nos respectivos players, o que acaba soando óbvio mas que não precisaria ser necessariamente assim. Porém, de qualquer maneira é um avanço impressionante nas capacidades que o Adobe Flash Platform passa a oferecer. Aliás, gostei deste termo ter sido resgatado pela Adobe para referenciar toda a linha de produtos relacionados à produção ou a execução/controle de conteúdo utilizando ActionScript.

Então o que muda? O que poderá surgir a partir disso?

Mais uma vez as possibilidades estão apenas limitadas à critividade, mas com ainda mais opções. Pense numa formula tipo “infinito² - direct_hardware_access”.
Primeiro a gente tem que pensar que a maioria das possibilidades de uso desses recursos que serão implementados daqui por diante já estavam disponíveis e eram possíveis por causa do recurso de “ByteArray” (Classe ByteArray) introduzida no FlashPlayer9/AIR 1.0, porém sendo necessário um esforço muito maior do que será necessário agora, vez que para alcança-los era necessário reinventar a roda reescrevendo tudo o que já existia antes para tal. Hoje, com o Alchemy, bastará compilar um código pré-existente que tenha a base da funcionalidade deseja e implementá-la com AS3. Alguns recursos, como os relacionados diretamente a som (Dynamic Sound Sampplig) e alguns em relação a formato de vídeo (H.264 por exemplo) só serão possíveis pela disponibilidade do recurso internamente no FlashPlayer10/AIR 1.5, assim como também a aceleração de vídeo por software e por hardware.
Dentre as possibilidades práticas que podemos imaginar estão desde as já apresentadas como exemplo pela própria Adobe no MAX 2007/2008 como jogos famosos sendo disponibilizados para rodar com o FlashPlayer/AIR onde o jogo Quake I foi utilizando como exemplo, players de vários formatos de audio/video (não apenas MP3/FLV), conversores de arquivos, serviços de criptografia/descriptografia de dados, implementação de protocolos de comunicação cliente-servidor e até mesmo um maior avanço no uso desses players de maneira mais abrangente em dispositivos como celulares, set-top-boxes (tv-digital), pocketPCs, console de games, etc.

E você? O que você acha que pode ser possível a partir do Alchemy?

Lembre-se, se você quiser começar a portar um eventual código C/C++, na página dedicada ao Alchemy no Adobe Labs, você encontra além dos binaries do projeto, exemplos e instruções de como preparar o ambiente e usar o compilador no Windows, MacOS e Linux.

Nenhum comentário: