Adobe Labs に Flash Player 17 と AIR 17 のベータ版が公開されています。 (AIR & Flash Player@Labs)
現時点での新機能は以下の 3 つです。全て AIR 関連の機能です。
- Stage3D でビデオテクスチャをサポート
- Stage3D の新しいプロファイル Standard Extended と AGAL3 (モバイル環境のみ)
- iOS アプリのパッケージング速度の改善
最後の iOS アプリパッケージングの件は、32bit 版と 64bit 版を同時にコンパイル処理することで、最大 50% の処理時間短縮が見込めるというものです。
Stage3D - ビデオテクスチャのサポート
Windows, Mac, iOS 環境の AIR アプリで、ビデオを Stage3D のテクスチャとして使用できる機能が追加されます。バージョン 15 のときからベータ版としてはお試しできるようになっていたものが、ようやく正式にサポートされることになりそうです。 (Android 環境については、次以降のバージョンでの対応となるとのこと)
さて、ビデオをテクスチャとして利用するために追加されたクラスは、名前もそのまま VideoTexture です。
VideoTexture は TextureBase のサブクラスで、NetStream もしくは Camera のストリームから直接テクスチャを取り出せます。Video から取り出したフレームをビットマップ化して表示するよりずっと簡単です。
また、VideoTexture は GPU を利用するため処理が高速です。
環境に依存する機能のため、Context3D の supportsVideoTexture 属性を使って、ビデオテクスチャが利用できるかを確認します。値が true なら利用可能です。
if (Context3D.supportsVideoTexture) { // VideoTextureオブジェクトが利用できる }
VideoTexture のインスタンスは、Context3D クラスの createVideoTexture() メソッドから取得できます。VideoTexture オブジェクトと入力ビデオストリームを関連付けるには、下のように attachNetStream() か attachCamera() を使います。
var ns:NetStream; var context3D:Context3D; var texture:VideoTexture; texture = context3D.createVideoTexture(); texture.attachNetstream(ns); ...
テクスチャが利用可能になると VideoTexture オブジェクトから Event.TEXTURE_READY イベントが発行されます。
Event.TEXTURE_READY イベントのリスナーは NetStream.play() を呼ぶ前に登録しておきます。これは、描画するテクスチャの用意ができたのに呼び出す処理が無い、という状態を避けるためです。
texture.addEventListener(Event.TEXTURE_READY, renderFrame); ns.play("myVideo.3gp"); ... function renderFrame(e:Event):void
{ // ここでテクスチャの描画処理 }
イベントで取得するフレームは、オーディオの再生と同期されます。再生中の音声のタイミングより前のフレームは自動的に飛ばされることになっています。
StageVideo と同様に、再生中のハードウェアリソースの状態変化を知らせるイベント VideoTextureEvent が利用できます。
イベントの使い方、通知される状態、共に StageVideoEvent とおんなじです。
texture.addEventListener(VideoTextureEvent.RENDER_STATE, onRenderState); function onRenderState (event:VideoTextureEvent) { // event.statusは以下のどれかになる // // VideoStatus.SOFTWARE // VideoStatus.ACCELERATED // VideoStatus.UNAVAILABLE }
Stage3D - Standard Extended プロファイル
Flash ランタイムのバージョン 16 では、Standard と Standard Constrained が利用可能になりました。 (Flash Player 16 と Adobe AIR 16 の新機能と 64 bit iOS アプリ)
バージョン 17 では、さらに、OpenGL ES 3.0 対応のモバイルデバイス用の Standard Extended プロファイルが追加されるようです。
Standard Extended プロファイルでは AGAL3 を利用できます。以下の表のように、AGAL3 は AGAL2 よりもたくさんのレジスターが使えます。
AGAL1 | AGAL2 | AGAL3 | |
---|---|---|---|
VA | 8 | 8 | 16 |
V | 8 | 10 | 10 |
VT | 8 | 26 | 26 |
VC | 28 | 64 | 200 |
FT | 8 | 26 | 26 |
VC | 128 | 250 | 250 |
AGAL3 対応の新しい AGALMiniAssembler は https://github.com/adobe-flash/graphicscorelib/ から入手できます。
OpenGL ES 3.0 が前提となるため、iPhone 5S 以降で利用可能な機能ということになります。デスクトップ環境への実装は将来のバージョンで、ということです。
コメントする