以下は、コンピュータネットワーク環境内でFLASHコンテンツをHTMLコンテンツに変換する方法、装置、およびシステムに関連する様々な概念ならびにそれらの方法、装置、およびシステムの実装のより詳細な説明である。上で導入され、下でより詳細に検討される様々な概念は、説明される概念が実装のいかなる特定の方法にも限定されないので、多数の方法のいずれかで実装される可能性がある。
視覚コンテンツ、ラスタグラフィックスとベクトルグラフィックスとの両方が、ShockWave(登録商標) FLASH(SWF)ムービーファイルまたはアプリケーションなどのADOBE FLASHフォーマットを使用してインターネットに基づくリソースページ(たとえば、ウェブページ)上でレンダリングされる可能性がある。各ADOBE FLASHファイルは、インターネットに基づくリソースページ上に提示するためにクライアントデバイスに提供されるコンテンツアイテム(たとえば、ウェブページ上のコンテンツ)などの視覚コンテンツに対応する可能性がある。各ADOBE FLASHファイルは、視覚コンテンツをレンダリングするための可視要素の構成を指定し得る表示リストをコンピューティングデバイスに生成させるかまたは表示リストにアクセスさせることができる命令(たとえば、コンパイルされたコード)を含み得る。表示リストは、階層木構造内で相互接続された、とりわけ、Shape、Text、MovieClip、およびBitmapなどの複数の表示オブジェクトを含み得る。ADOBE FLASHフォーマットのコンテンツを使用して視覚コンテンツをレンダリングすることは、コンピュータのリソースの多くを必要とする可能性があり、より速く電力を消費する結果となり、また、インターネットセキュリティの問題を生じる可能性がある。これらの困難の一部は、ADOBE FLASHファイルをハイパーテキストマークアップ言語(HTML)コードに変換し、HTMLコードを使用して視覚コンテンツをレンダリングすることによって対処され得る。1つの実装は、表示リストの各表示オブジェクトをHTMLグラフィックに変換し、それから、変換されたグラフィック要素の各々を別々のHTMLキャンバス要素上に直接レンダリングすることである可能性がある。しかし、この実装は、利用可能なコンピュータのリソースの多くを必要とする可能性もあり、それによって、ウェブページ上のその他の要素のロードまたはレンダリングなどのその他のプロセスを遅延させる。さらに、ヒューマンコンピュータインタラクション(HCI)の観点から見て、結果として生じるレイテンシーが、ウェブページにアクセスしている間の不都合なユーザエクスペリエンスをもたらす可能性がある。
これらのおよびその他の困難に対処するために、本開示は、HTMLに基づく命令リストを生成することによってADOBE FLASHコンテンツをHTMLコンテンツに変換するためのシステムおよび方法を提供する。トランスコーダモジュールが、ADOBE FLASHファイルの表示リストの表示オブジェクトをくまなく調べることができる。各表示オブジェクトにおいて、トランスコーダモジュールは、表示オブジェクトを解析して表示タイプのクラスタイプを特定することができる。クラスタイプの例は、とりわけ、Shape、Text、MovieClip、およびBitmapを含み得る。特定されたクラスタイプに基づいて、トランスコーダモジュールは、現在の表示オブジェクトのためのHTMLに基づく命令の組を生成することができる。命令の例は、スタック命令、クリップ命令、ブレンド命令、またはドロー命令を含み得る。スタック命令は、現在の表示オブジェクトに対応する視覚要素が、レンダリングする間に、クリップされるか、または後続の表示オブジェクトに対応する視覚要素とブレンドされるかどちらであるかを指定することができる。クリップ命令は、現在の表示オブジェクトに対応する視覚要素が、レンダリングする間に前の表示オブジェクトに対応する視覚要素をクリップするか、フィルタリングするか、または切り詰める(truncate)かを指定することができる。ブレンド命令は、現在の表示オブジェクトに対応する視覚要素が、レンダリングする間に、前の表示オブジェクトに対応する視覚要素とブレンドされることを指定することができる。ドロー命令は、現在の表示オブジェクトに対応する視覚要素が指定されたグラフィック(たとえば、シェイプ、ビットマップ、テキスト、またはビデオ)を用いてレンダリングされることを指定することができる。表示リストをくまなく調べる間に、トランスコーダモジュールは、HTMLに基づく命令のそれぞれの生成された組を視覚コンテンツをレンダリングするための命令リストに挿入することができる。
加えて、実行ポリシージェネレータが、予め定義された順序およびタイミングに従って命令リストの命令を処理するためにウェブアプリケーションを指定するための実行ポリシーを生成することができる。たとえば、実行ポリシーは、ウェブアプリケーションが、ウェブページをロードする間にウェブアプリケーションがアイドルしているときに各命令を実行することを指定することができる。実行ポリシーは、ウェブアプリケーションが、指定されたタイムアウト中に命令の一部を周期的に実行し、それから、ウェブアプリケーションがウェブページの残りをロードすることを可能にすることを指定することもできる。
コンピュータネットワーク化された環境の文脈では、データ処理システムが、コンテンツパブリッシャコンピューティングデバイスまたはコンテンツプロバイダコンピューティングデバイスからFLASHに基づくコンテンツアイテムを受信することができる。FLASHに基づくコンテンツアイテムをHTMLに基づくコンテンツアイテムに変換する要求に応じて、データ処理システムは、FLASHに基づくコンテンツアイテムに対応する表示リストの表示オブジェクトをくまなく調べ、HTMLに基づく命令の組を生成することによってFLASHに基づくコンテンツアイテムをHTMLに基づく命令に変換することができる。加えて、クライアントデバイスからのコンテンツの要求に応じて、データ処理システムは、情報リソースページ上の視覚コンテンツをレンダリングするために、命令リストを実行ポリシーと一緒にクライアントデバイスに送信することができる。
各表示オブジェクトを個々に変換し、キャンバス上にレンダリングするのではなく命令リストを使用して視覚コンテンツをレンダリングすることによって、ウェブアプリケーションは、コンピュータリソースをさらに取っておくことができる可能性があり、それによって、コンピューティングデバイスによって消費される電力の量を削減する。さらに、実行ポリシーに従って命令リストを実行することによって、ウェブアプリケーションがその他の要素をウェブページ上により迅速にロードし得るようにウェブアプリケーションのリソースが解放される可能性があり、それによって、ウェブページによるユーザの体験を高める。
少なくとも1つの態様は、FLASHコンテンツをハイパーテキストマークアップ言語(HTML)コンテンツに変換する方法を対象とする。方法は、1つまたは複数のプロセッサ上で実行されるトランスコーダモジュールによって、第1の表示オブジェクトおよび第2の表示オブジェクトを含む表示リストをコンピューティングデバイスに生成させるかまたは表示リストにアクセスさせることができる命令を含むFLASHに基づくコンテンツアイテムを受信するステップを含み得る。方法は、表示リストをくまなく調べて第1の表示オブジェクトに関するクラスタイプを特定するステップを含み得る。方法は、トランスコーダモジュールによって、第1の表示オブジェクトに関するクラスタイプに基づいてHTMLに基づく命令の第1の組を生成するステップを含み得る。方法は、HTMLに基づく命令の生成された第1の組を命令リストに挿入するステップを含み得る。方法は、表示リストをくまなく調べて第2の表示オブジェクトに関するクラスタイプを特定するステップを含み得る。方法は、第2の表示オブジェクトに関するクラスタイプに基づいてHTMLに基づく命令の第2の組を生成するステップを含み得る。方法は、HTMLに基づく命令の生成された第2の組をHTMLに基づく命令の第1の組を含む命令リストに挿入するステップを含み得る。方法は、命令リストをデータ構造に記憶するステップを含み得る。
図1は、FLASHコンテンツをHTMLコンテンツに変換するための環境の1つの実装を示すブロック図である。環境100は、少なくとも1つのデータ処理システム110を含む。データ処理システム110は、少なくとも1つのプロセッサおよびメモリ、すなわち、処理回路を含み得る。メモリは、プロセッサによって実行されるときプロセッサに本明細書において説明される動作のうちの1つまたは複数を実行させるプロセッサが実行可能な命令を記憶する。プロセッサは、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)など、またはこれらの組合せを含む可能性がある。メモリは、プロセッサにプログラム命令を与えることができる電子、光、磁気、または任意のその他のストレージまたは送信デバイスを含む可能性があるがこれに限定されない。メモリは、フロッピーディスク、CD-ROM、DVD、磁気ディスク、メモリチップ、ASIC、FPGA、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、電気的消去可能ROM(EEPROM)、消去可能プログラマブルROM(EPROM)、フラッシュメモリ、光学式媒体、またはプロセッサが命令を読むことができる任意のその他の好適なメモリをさらに含む可能性がある。命令は、任意の好適なコンピュータプログラミング言語からのコードを含む可能性がある。データ処理システムは、様々な機能を実行することができる1つまたは複数のコンピューティングデバイスまたはサーバを含み得る。
ネットワーク105は、インターネット、ローカルエリアネットワーク、広域ネットワーク、メトロエリアネットワーク、またはその他のエリアネットワークなどのコンピュータネットワーク、イントラネット、衛星ネットワーク、音声またはデータモバイル電話通信ネットワークなどのその他のコンピュータネットワーク、およびこれらの組合せを含む可能性がある。システム100のデータ処理システム110は、ネットワーク105を介して、たとえば、少なくとも1つのコンテンツプロバイダコンピューティングデバイス115、少なくとも1つのコンテンツパブリッシャコンピューティングデバイス120、または少なくとも1つのクライアントデバイス125と通信することができる。ネットワーク105は、ユーザコンピューティングデバイス115と、データ処理システム110と、1つまたは複数のコンテンツソース、たとえば、とりわけウェブサーバ、広告サーバとの間で情報を中継する任意の形態のコンピュータネットワークである可能性がある。たとえば、ネットワーク105は、インターネット、および/またはローカルエリアネットワーク(LAN)、広域ネットワーク(WAN)、セルラーネットワーク、衛星ネットワーク、もしくはその他の種類のデータネットワークなどのその他の種類のデータネットワークを含む可能性がある。ネットワーク105は、ネットワーク105内でデータを送信および/または受信するように構成される任意の数のコンピューティングデバイス(たとえば、コンピュータ、サーバ、ルータ、ネットワークスイッチなど)も含む可能性がある。ネットワーク105は、任意の数の有線および/またはワイヤレス接続をさらに含む可能性がある。たとえば、ユーザコンピューティングデバイス115は、ネットワーク105内のその他のコンピューティングデバイスに(たとえば、光ファイバケーブル、CAT5ケーブルなどによって)結線されるトランシーバと(たとえば、WiFi、セルラー、無線などによって)ワイヤレスで通信し得る。
コンテンツプロバイダコンピューティングデバイス115は、クライアントデバイス125において情報リソース上に表示するためのコンテンツアイテムを提供するためにコンテンツプロバイダの主体によって運用されるサーバまたはその他のコンピューティングデバイスを含む可能性がある。コンテンツプロバイダコンピューティングデバイス115によって提供されるコンテンツは、主コンテンツ、たとえば、コンテンツパブリッシャコンピューティングデバイス120によって提供されるコンテンツを含むウェブサイトまたはウェブページなどの情報リソース上に表示するためのサードパーティコンテンツアイテムまたはクリエイティブ(たとえば、広告)を含み得る。コンテンツアイテムは、検索結果ウェブページ上にも表示され得る。たとえば、コンテンツプロバイダコンピューティングデバイス115は、ウェブページの主コンテンツが会社によって提供される会社のウェブページなどのコンテンツウェブページのコンテンツスロット内に表示するための、または検索エンジンによって提供される検索結果のランディングページ上に表示するための広告もしくはその他のコンテンツアイテムを提供するかまたは広告もしくはその他のコンテンツアイテムのソースである可能性がある。コンテンツプロバイダコンピューティングデバイス115に関連するコンテンツアイテムは、スマートフォンまたはその他のクライアントデバイス125上のアプリケーションの実行の一部として表示されるコンテンツなどの、ウェブページ以外の情報リソース上に表示される可能性がある。
コンテンツパブリッシャコンピューティングデバイス120は、ネットワーク105を介して表示するための主コンテンツを提供するためにコンテンツの発行主体によって運用されるサーバまたはその他のコンピューティングデバイスを含み得る。たとえば、コンテンツパブリッシャコンピューティングデバイス120は、ウェブページ上に表示するための主コンテンツを提供するウェブページの運用者を含み得る。主コンテンツは、コンテンツパブリッシャコンピューティングデバイス120によって提供されるコンテンツ以外のコンテンツを含む可能性があり、ウェブページは、コンテンツプロバイダコンピューティングデバイス115からのサードパーティコンテンツアイテム(たとえば、広告)の表示のために構成されたコンテンツスロットを含む可能性がある。たとえば、コンテンツパブリッシャコンピューティングデバイス120は、会社のウェブサイトを運用することができ、ウェブサイトのウェブページ上に表示するためのその会社についてのコンテンツを提供することができる。ウェブページは、コンテンツプロバイダコンピューティングデバイス115の広告などのサードパーティコンテンツアイテムの表示のために構成されたコンテンツスロットを含み得る。一部の実装において、コンテンツパブリッシャコンピューティングデバイス120は、検索エンジンウェブサイトを運用する検索エンジンの運用者の検索エンジンコンピューティングデバイス(たとえば、サーバ)を含む。検索エンジンウェブページ(たとえば、結果またはランディングウェブページ)の主コンテンツは、検索の結果と、コンテンツプロバイダコンピューティングデバイス115からのコンテンツアイテムなどの、コンテンツスロット内に表示されるサードパーティコンテンツアイテムとを含み得る。一部の実装において、コンテンツパブリッシャコンピューティングデバイス120は、ビデオコンテンツを提供するためのサーバを含み得る。
クライアントデバイス125は、コンテンツパブリッシャコンピューティングデバイス120によって提供されるコンテンツ(たとえば、主ウェブページコンテンツまたはその他の情報リソース)およびコンテンツプロバイダコンピューティングデバイス115によって提供されるコンテンツ(たとえば、ウェブページのコンテンツスロット内に表示するために構成された広告などのサードパーティコンテンツアイテム)などのデータを表示するためにネットワーク105を介して通信するように構成されたコンピューティングデバイスを含み得る。クライアントデバイス125、コンテンツプロバイダコンピューティングデバイス115、およびコンテンツパブリッシャコンピューティングデバイス120は、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、スマートフォン、携帯情報端末、モバイルデバイス、コンシューマコンピューティングデバイス、サーバ、クライアント、デジタルビデオレコーダ、テレビ用セットトップボックス、ビデオゲームコンソール、またはネットワーク105を介して通信するように構成された任意のその他のコンピューティングデバイスを含む可能性がある。クライアントデバイス125は、エンドユーザがコンテンツを受け取る要求を送ることができる通信デバイスである可能性がある。要求は、検索エンジンへの要求である可能性があり、要求は、検索クエリを含む可能性がある。一部の実装において、要求は、ウェブページにアクセスする要求を含む可能性がある。
コンテンツプロバイダコンピューティングデバイス115、コンテンツパブリッシャコンピューティングデバイス120、およびクライアントデバイス125は、プロセッサおよびメモリ、すなわち、処理回路を含み得る。メモリは、プロセッサによって実行されるときプロセッサに本明細書において説明される動作のうちの1つまたは複数を実行させる機械命令を記憶する。プロセッサは、マイクロプロセッサ、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)など、またはこれらの組合せを含む可能性がある。メモリは、プロセッサにプログラム命令を与えることができる電子、光、磁気、または任意のその他のストレージまたは送信デバイスを含む可能性があるがこれに限定されない。メモリは、フロッピーディスク、CD-ROM、DVD、磁気ディスク、メモリチップ、ASIC、FPGA、読み出し専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、電気的消去可能ROM(EEPROM)、消去可能プログラマブルROM(EPROM)、フラッシュメモリ、光学式媒体、またはプロセッサが命令を読むことができる任意のその他の好適なメモリをさらに含む可能性がある。命令は、任意の好適なコンピュータプログラミング言語からのコードを含む可能性がある。
コンテンツプロバイダコンピューティングデバイス115、コンテンツパブリッシャコンピューティングデバイス120、およびクライアントデバイス125は、1つまたは複数のユーザインターフェースデバイスを含む可能性もある。概して、ユーザインターフェースデバイスは、感覚情報(たとえば、ディスプレイ上の視覚化、1つもしくは複数の音など)を生成することによってユーザにデータを運び、および/またはユーザから受け取られた感覚情報を電子信号に変換する任意の電子デバイス(たとえば、キーボード、マウス、ポインティングデバイス、タッチスクリーンディスプレイ、マイクロフォンなど)を指す。1つまたは複数のユーザインターフェースデバイスは、様々な実装によれば、コンテンツプロバイダコンピューティングデバイス115、コンテンツパブリッシャコンピューティングデバイス120、およびクライアントデバイス125のハウジングの内にある(たとえば、組み込み型ディスプレイ、マイクロフォンなど)か、またはコンテンツプロバイダコンピューティングデバイス115、コンテンツパブリッシャコンピューティングデバイス120、およびクライアントデバイス125のハウジングの外にある(たとえば、ユーザコンピューティングデバイス115に接続されたモニタ、ユーザコンピューティングデバイス115に接続されたスピーカなど)可能性がある。たとえば、コンテンツプロバイダコンピューティングデバイス115、コンテンツパブリッシャコンピューティングデバイス120、およびクライアントデバイス125は、ネットワーク105を介して1つもしくは複数のコンテンツソースからおよび/またはデータ処理システム110から受信されたウェブページデータを使用してウェブページを視覚的に表示する電子ディスプレイを含み得る。一部の実装においては、コンテンツ掲載キャンペーンマネージャ、または広告主などのサードパーティコンテンツプロバイダが、コンテンツプロバイダコンピューティングデバイス115を介してデータ処理システム110と通信することができる。一部の実装において、広告主は、コンテンツプロバイダコンピューティングデバイス115のユーザインターフェースデバイス上に表示されたユーザインターフェースを介してデータ処理システム110と通信することができる。
データ処理システム110は、少なくとも1つのサーバを含み得る。たとえば、データ処理システム110は、少なくとも1つのデータセンターまたはサーバファーム内に置かれた複数のサーバを含み得る。一部の実装において、データ処理システム110は、コンテンツ掲載システム、たとえば、広告サーバまたは広告掲載システムを含む。データ処理システム110は、少なくとも1つのトランスコーダモジュール130、少なくとも1つのポリシージェネレータモジュール135、および少なくとも1つのデータベース140を含み得る。コンテンツアイテムの選択130およびポリシージェネレータモジュール135は、それぞれ、ネットワーク105を介してデータベース140およびその他のコンピューティングデバイス(たとえば、コンテンツプロバイダコンピューティングデバイス115、コンテンツパブリッシャコンピューティングデバイス120、またはクライアントデバイス125)と通信するように構成された少なくとも1つの処理ユニット、サーバ、仮想サーバ、回路、エンジン、エージェント、器具、またはプログラマブル論理アレイなどのその他の論理デバイスを含み得る。
トランスコーダモジュール130およびポリシージェネレータモジュール135は、少なくとも1つのコンピュータプログラムまたは少なくとも1つのスクリプトを含むかまたは実行することができる。トランスコーダモジュール130およびポリシージェネレータモジュール135は、別々の構成要素であるか、単一の構成要素であるか、またはデータ処理システム110、コンテンツプロバイダコンピューティングデバイス115、コンテンツパブリッシャコンピューティングデバイス120、もしくはクライアントデバイス125の一部である可能性がある。トランスコーダモジュール130およびポリシージェネレータモジュール135は、1つまたは複数のスクリプトを実行するように構成された1つまたは複数のプロセッサなどのソフトウェアとハードウェアとの組合せを含み得る。
また、データ処理システム110は、1つまたは複数のコンテンツリポジトリまたはデータベース140を含み得る。データベース140は、データ処理システム110のローカルにある可能性がある。一部の実装において、データベース140は、データ処理システム110の遠隔にある可能性があるが、ネットワーク105を介してデータ処理システム110と通信する可能性がある。データベース140は、クライアントデバイス125にサービスを提供するために、とりわけ、ウェブページ、FLASHフォーマットの視覚コンテンツ、およびHTMLに基づく視覚コンテンツをレンダリングするための命令リストを含み得る。一部の実装において、ウェブページ、ウェブページの一部、およびコンテンツアイテムは、図2に図示されるウェブページ、ウェブページの一部、およびコンテンツアイテムを含む。データベース140のコンテンツのさらなる詳細が、以下で与えられる。
トランスコーダモジュール130は、表示リストをコンピューティングデバイスに生成させるかまたは表示リストにアクセスさせるための命令を含むFLASHに基づくコンテンツアイテムを受信することができる。一部の実装において、トランスコーダモジュール130は、ファイルまたは1つもしくは複数のパケットの形態でFLASHに基づくコンテンツアイテムを受信することができる。一部の実装において、トランスコーダモジュール130は、コンテンツプロバイダコンピューティングデバイス115、コンテンツパブリッシャコンピューティングデバイス120、クライアントデバイス125、またはデータ処理システム110に接続された入力デバイスからFLASHに基づくコンテンツアイテムを受信することができる。FLASHに基づくコンテンツアイテムは、たとえば、SHOCKWAVE FLASH(SWF)ファイルフォーマット、FLASH VIDEO(FLV、F4V、F4P、F4A、F4P、もしくはSWC)ファイルフォーマット、FLASHACTIONSCRIPT(AS、ASC、ABC、ASO)ファイルフォーマット、ACTION MESSAGE(AMF)ファイルフォーマット、または視覚コンテンツをレンダリングするために使用される任意のその他のFLASHファイルフォーマットなどである可能性がある。
表示リストは、木構造などで階層的に構成された1つまたは複数の表示オブジェクトを含み得る。たとえば、表示リストは、第1の表示オブジェクトおよび第2の表示オブジェクトを含む可能性がある。この例において、第2の表示オブジェクトは、第1の表示オブジェクトの子である可能性がある。1つまたは複数の表示オブジェクトの各々は、FLASHに基づくコンテンツアイテムを使用してレンダリングされる視覚コンテンツの視覚要素または構成要素を表し得る。表示リストに含まれる1つまたは複数の表示オブジェクトのすべては、DisplayObjectクラスから継承され得る。DisplayObjectクラスを使用して派生される表示オブジェクトのタイプは、ステージ(Stageクラス)、表示オブジェクトコンテナ(DisplayObjectContainerクラス)、ならびにとりわけBitmapクラス、Shapeクラス、Spriteクラス、MovieClipクラス、TextFieldクラス、TextLineクラス、StaticTextクラス、およびVideoクラスなどのその他の種類の表示オブジェクトである可能性がある。表示オブジェクトコンテナは、木構造のサブセットなどの表示リスト内の階層的に構成された1つまたは複数のその他の表示オブジェクト(たとえば、子表示オブジェクト)を含み得る。派生表示オブジェクトの一部は、表示オブジェクトコンテナである可能性もあることを理解されたい。たとえば、MovieClipおよびSprite表示オブジェクトは、1つまたは複数のその他の子表示オブジェクトを含む表示オブジェクトコンテナである可能性がある。
トランスコーダモジュール130は、表示リストをくまなく調べて表示オブジェクトのクラスタイプを特定することができる。一部の実装において、トランスコーダモジュール130は、前順(pre-order)(たとえば、根、左部分木、それから右部分木)、中順(in-order)(たとえば、左部分木、根、それから右部分木)、または後順(post-order)(左部分木、右部分木、それから根)のうちの1つで表示リストをくまなく調べることができる。たとえば、トランスコーダモジュール130は、表示リストをくまなく調べて現在の表示オブジェクトのクラスタイプを特定することができる。そのとき、トランスコーダモジュール130は、「getChildAt(i)」関数を呼び出し、インデックス「i」を繰り返しインクリメントして、表示リストの表示オブジェクトを取り出して現在の表示オブジェクトの子表示オブジェクトのクラスタイプを特定することによって表示リストをくまなく調べることができる。表示リストの子表示オブジェクトが取り出されると、トランスコーダモジュール130は、「trace()」関数を呼び出すことによって現在の表示オブジェクトが特定のクラスタイプであるかどうかを判定することができる。この例においては、表示オブジェクトがTextField表示オブジェクトであるかどうかを判定するために、トランスコーダモジュール130は、「trace(cur_object is TextField)」を呼び出して、現在の表示オブジェクトがTextField表示オブジェクトであるかどうかを示すブール値を得ることができる。一部の実装において、トランスコーダモジュール130は、表示オブジェクトのクラスタイプを、とりわけ、Bitmap、Shape、Sprite、MovieClip、TextField、TextLine、StaticTextクラス、およびVideoクラスのうちの1つとして特定することができる。
一部の実装において、トランスコーダモジュール130は、表示オブジェクトが表示オブジェクトコンテナであるかどうかを判定することができる。たとえば、トランスコーダモジュール130は、「trace()」関数を呼び出して、現在の表示オブジェクトが表示オブジェクトコンテナであるかどうかを判定することができる。表示オブジェクトコンテナである可能性があるクラスタイプは、とりわけ、MovieClipクラス、TextLineクラス、およびSpriteクラスを含む。一部の実装において、トランスコーダモジュール130は、表示オブジェクトが表示オブジェクトコンテナであると判定することに応じて、表示オブジェクトコンテナが1つまたは複数の子表示オブジェクトを含むかどうかを判定することができる。一部の実装において、トランスコーダモジュール130は、表示オブジェクトコンテナの1つまたは複数の子表示オブジェクトの各々に関するクラスタイプを特定することができる。一部の実装において、トランスコーダモジュール130は、表示オブジェクトがMovieClip表示オブジェクトコンテナであるかまたはSprite表示オブジェクトコンテナであるかを判定することができる。MovieClip表示オブジェクトコンテナは、タイムラインに構成された1つまたは複数の子表示オブジェクトを含み得る。Sprite表示オブジェクトコンテナは、1つまたは複数の子表示オブジェクトを含み得る。TextLine表示オブジェクトコンテナは、1つまたは複数の子表示オブジェクトを含み得る。一部の実装において、トランスコーダモジュール130は、MovieClip表示オブジェクトコンテナの1つまたは複数の子表示オブジェクトの各々に関するクラスタイプを特定することができる。一部の実装において、トランスコーダモジュール130は、MovieClip表示オブジェクトコンテナによって参照される外部FLASHコンテンツアイテムを特定することができる。一部の実装において、トランスコーダモジュール130は、Sprite表示オブジェクトコンテナの1つまたは複数の子表示オブジェクトの各々に関するクラスタイプを特定することができる。
トランスコーダモジュール130は、表示オブジェクトに関するクラスタイプに基づいてHTMLに基づく命令の組を生成することができる。一部の実装において、トランスコーダモジュール130は、表示オブジェクトが表示オブジェクトコンテナであると判定することに応じて、または表示オブジェクトが表示オブジェクトコンテナであると判定した後、表示オブジェクトの子表示オブジェクトの各々に関するクラスタイプに基づいてHTMLに基づく命令の別の組を生成することができる。HTMLに基づく命令の組は、とりわけ、ドロービットマップ命令の組、ドローテキスト命令の組、ドローシェイプ命令の組、スタック命令の組、ブレンド命令の組、クリップ命令の組、フィルタ命令の組、およびドロービデオ命令の組のうちの少なくとも1つである可能性がある。ドロービットマップ命令の組は、表示オブジェクトに対応する視覚要素が表示オブジェクトによって指定されたグラフィックを用いて描かれることを指定することができる。ドローテキスト命令の組は、表示オブジェクトに対応する視覚要素が表示オブジェクトによって指定されたテキスト文字列を用いて描かれることを指定することができる。一部の実装において、ドロー命令の組は、ドローエディットテキスト命令(draw edit-text instruction)の組およびドロースタティックテキスト命令の組を含み得る。ドローシェイプ命令の組は、表示オブジェクトに対応する視覚要素が表示オブジェクトによって指定されたシェイプを用いて描かれることを指定することができる。スタック命令の組は、表示オブジェクトに対応する視覚要素が、レンダリングする間に描かれ(たとえば、ビットマップ、テキスト、もしくはシェイプ)、クリップされ、または別の表示オブジェクトに対応する別の視覚要素とブレンドされることを指定することができる。ブレンド命令の組は、表示オブジェクトに対応する視覚要素が、レンダリングする間に、表示オブジェクトに対応する別の視覚要素とブレンドされることを指定することができる。クリップ命令の組は、表示オブジェクトに対応する視覚要素が、レンダリングする間に、別の表示オブジェクトに対応する別の視覚要素をクリップするかまたは切り詰めることを指定することができる。一部の実装において、クリップ命令の組は、クリップ開始命令の組、クリップ適用命令の組、およびクリップ終了命令の組を含み得る。フィルタ命令の組は、表示オブジェクトに対応する視覚要素が、レンダリングする間にフィルタリングされることを指定することができる。ドロービデオ命令の組は、表示オブジェクトに対応するビデオ視覚要素が、表示オブジェクトのビデオデータの仕様に従って描かれるか、レンダリングされるか、またはそれ以外の方法で再生されることを指定することができる。
HTMLに基づく命令の組は、HTMLコード(たとえば、HTML5マークアップ)を含み得る。一部の実装において、HTMLに基づく命令の組は、(たとえば、「<script> ... </script>」タグを使用して)JavaScript(登録商標)コードを含み、カスケーディングスタイルシート(CSS)マークアップを含む可能性がある。HTMLに基づく命令の組は、アプリケーション(たとえば、ウェブブラウザ)にFLASHに基づくコンテンツアイテムと同じ視覚コンテンツをレンダリングさせることができる。HTMLに基づく命令の組を実行して視覚コンテンツをレンダリングすることは、FLASHに基づくコンテンツアイテムを実行して同じ視覚コンテンツをレンダリングすることに比べてコンピュータリソース(たとえば、CPUおよびメモリの使用)を節約する可能性があることを理解されたい。したがって、HTMLに基づく命令の組を実行することは、電力消費を少なくし、コンピューティングデバイスがその他のプロセスのために利用可能であることを可能にし得る。さらに、複数のコンピューティングデバイスの間で視覚コンテンツをレンダリングするためのHTMLに基づく命令の単一の生成された組を共有することは、コンピュータリソースおよび電力消費をより一層節約することにつながる可能性がある。
一部の実装においては、表示オブジェクトのクラスタイプがBitmapクラスであると特定することに応じて、トランスコーダモジュール130が、ドロービットマップ命令の組を生成することができる。一部の実装において、トランスコーダモジュール130は、表示オブジェクトに対応するBitmapデータを特定することができる。Bitmapデータは、とりわけ、ビットマップ(BMP)フォーマットファイル、ポータブルネットワークグラフィックス(PNG)フォーマットファイル、タグ付き画像ファイルフォーマット(TIFF:Tagged Image File Format)フォーマットファイル、ジョイントフォトグラフィックエキスパートグループ(JPEG:Joint Photographic Experts Group)フォーマットファイル、およびグラフィックス交換フォーマット(GIF:Graphics Interchange Format)などの任意のラスタグラフィックスフォーマットの外部画像ファイルまたはソースからのラスタグラフィックスデータを含み得る。一部の実装において、トランスコーダモジュール130は、外部画像ファイルまたはソースに関する位置を特定することができる。外部画像ファイルまたはソースに関する位置は、コンピューティングデバイスのストレージ(たとえば、コンピュータシステム400のストレージ)上のファイルパス名、またはコンピュータネットワークの位置を特定するユニフォームリソースロケータ(URL)(たとえば、「https://www.example.com/example.BMP」)を含み得る。一部の実装において、トランスコーダモジュール130は、Bitmapデータに対する1つまたは複数の改変を特定することができる。1つまたは複数の改変は、外部画像ファイルの外の表示オブジェクトによって指定され得る。1つまたは複数の改変は、たとえば、とりわけ、Bitmapデータの寸法または解像度をスキューすること(skewing)、Bitmapデータのピクセルを操作すること、Bitmapデータの透明度を指定すること、およびBitmapデータの配色(color scheme)を変更することを含み得る。一部の実装において、トランスコーダモジュール130は、「<img>」タグ、Bitmapデータのソースを指定する「src」タグ、およびBitmapデータに関する代替名またはテキストを指定する「alt」タグを含むBitmapデータに関するドローシェイプ命令の組を生成することができる。一部の実装において、トランスコーダモジュール130は、1つまたは複数の改変と同等のHTMLに基づくコードを使用してBitmapデータに対する1つまたは複数の改変に関するドローシェイプ命令を生成することができる。たとえば、表示オブジェクトがBitmapデータのアルファ(たとえば、不透明度)が50%であることを指定する場合、トランスコーダモジュール130は、「bmp.globalAlpha=0.5」を含むHTMLに基づくコードを生成することができる。
一部の実装においては、表示オブジェクトのクラスタイプがTextField、TextLine、またはStaticTextクラスであると特定することに応じて、トランスコーダモジュール130が、ドローテキスト命令の組を生成することができる。一部の実装においては、表示オブジェクトのクラスタイプがTextFieldまたはTextLineクラスであると特定することに応じて、トランスコーダモジュール130が、ドローエディットテキスト命令の組を生成することができる。一部の実装においては、表示オブジェクトのクラスタイプがTextField、TextLine、またはStaticTextクラスであると特定することに応じて、トランスコーダモジュール130が、ドロースタティックテキスト命令の組を生成することができる。一部の実装において、トランスコーダモジュール130は、表示オブジェクトに対応するテキストデータを特定することができる。テキストデータは、表示オブジェクトのテキストフィールドに含まれる任意の文字列を含み得る。一部の実装において、トランスコーダモジュール130は、表示オブジェクトのテキストフィールドに含まれる文字列を使用してテキストデータに関するドロースタティックテキスト命令の組を生成することができる。たとえば、表示オブジェクトのテキストフィールドが文字列「XYZ」を含む場合、トランスコーダモジュール130は、コード「txt.filltext("XYZ")」を含めるようにドロースタティックテキスト命令の組を生成することができる。一部の実装において、トランスコーダモジュール130は、テキストデータの1つまたは複数のプロパティを特定することができる。たとえば、テキストフィールドの1つまたは複数のプロパティは、とりわけ、フォント、サイズ、色、回転、スケール、および背景色を含み得る。一部の実装において、トランスコーダモジュール130は、1つまたは複数の改変と同等のHTMLに基づくコードを使用してテキストデータに対する1つまたは複数の改変に関するドローエディットテキスト命令の組を生成することができる。たとえば、表示オブジェクトがテキストのフォントが「Comic Sans」であり、サイズ20ピクセルであり、要素の中心に揃えられることを指定する場合、トランスコーダモジュール130は、コード「txt.font="20px Comic Sans MS"」および「txt.textAlign="center"」を含めるようにエディットテキスト命令の組を生成することができる。
一部の実装においては、表示オブジェクトのクラスタイプがShapeクラスであると特定することに応じて、トランスコーダモジュール130が、ドローシェイプ命令の組を生成することができる。一部の実装において、トランスコーダモジュール130は、表示オブジェクトに対応するShapeデータを特定することができる。Shapeデータは、とりわけ、シェイプ(たとえば、長方形、円、および直線)、1つまたは複数の参照点(たとえば、端点、アンカーポイント、端点、および座標)、色、塗りつぶし、グラデーション(gradient)、不透明度、回転、スケール、ならびに曲線(curve)を含み得る。一部の実装において、トランスコーダモジュール130は、Shapeデータと同等のHTMLに基づくコードを使用してShapeデータに関するドローシェイプ命令の組を生成することができる。たとえば、表示オブジェクトが、FLASHに基づくコード「shape.graphics.drawRect(30, 40, 60, 20)」を使用して、シェイプがピクセル位置(30, 40)にあるピクセルサイズ(60 x 20)の長方形であることを指定する場合、トランスコーダモジュール130は、「shp.fillRect(30, 40, 60, 20)」を含むドローシェイプ命令の組のためのHTMLに基づくコードを生成することができる。この例においては、表示オブジェクトが長方形が青から白まで線形の放射状グラデーションによって塗りつぶされることを指定する場合、トランスコーダモジュール130が、それぞれの色の範囲を指定する「createLinearGradient()」関数を含むHTMLに基づくコードを用いてドローシェイプ命令を生成することができる。
一部の実装において、表示オブジェクトのクラスタイプがMovieClipクラスまたはSpriteクラスであると特定することに応じて、トランスコーダモジュール130は、MovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナの1つまたは複数の子表示オブジェクトの各々のためのHTMLに基づく命令の組を生成することができる。MovieClipクラスは、同じプロパティおよび関数の多くを含む、Spriteクラスの派生クラスである可能性があることを理解されたい。一部の実装において、トランスコーダモジュール130は、MovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナのステージ表示オブジェクトに対応するスタック命令を生成することができる。1つまたは複数の子表示オブジェクトは、Bitmapクラス、Shapeクラス、TextFieldクラス、TextLineクラス、およびStaticTextクラスなどのその他の表示オブジェクトクラスの表示オブジェクトを含み得る。1つまたは複数の子表示オブジェクトのうちの少なくとも1つは、第1の子表示オブジェクトである可能性があり、1つまたは複数の子表示オブジェクトのうちの少なくとも1つのその他の子表示オブジェクトは、第2の子表示オブジェクトである可能性がある。上で検討されたように、トランスコーダモジュール130は、MovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナの1つまたは複数の子表示オブジェクトの各々に関するクラスタイプを特定することができる。一部の実装において、トランスコーダモジュール130は、それぞれのフレーム表示オブジェクトに関して特定されたクラスタイプに基づいて1つまたは複数の子表示オブジェクトの各々のためのHTMLに基づく命令の組を生成することができる。たとえば、トランスコーダモジュール130は、上述の機能を使用してそれぞれのフレーム表示オブジェクトのためのHTMLに基づく命令の組を生成することができる。
一部の実装において、トランスコーダモジュール130は、MovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナのためのブレンド命令の組を生成することができる。一部の実装において、トランスコーダモジュール130は、MovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナの1つまたは複数の子表示オブジェクトからブレンドモードを特定することができる。一部の実装において、トランスコーダモジュール130は、1つもしくは複数の子表示オブジェクトの各々または1つもしくは複数の子表示オブジェクトの各々のためのHTMLに基づく命令の組を生成することに応じてあるいはHTMLに基づく命令の組を生成した後、ブレンドモードを特定することができる。ブレンドモードの例は、とりわけ、通常(BlendMode.NORMAL)、レイヤー(BlendMode.LAYER)、乗算(BlendMode.MULTIPLY)、スクリーン(BlendMode.SCREEN)、比較(明)(lighten)(BlendMode.LIGHTEN)、比較(暗)(darken)(BlendMode.DARKEN)、差の絶対値(difference)(BlendMode.DIFFERENCE)、加算(BlendMode.ADD)、減算(BlendMode.SUBTRACT)、反転(BlendMode.INVERT)、アルファ(BlendMode.ALPHA)、消去(BlendMode.ERASE)、オーバーレイ(BlendMode.OVERLAY)、ハードライト(BlendMode.HARDLIGHT)、およびシェーダー(BlendMode.SHADER)を含み得る。一部の実装において、トランスコーダモジュール130は、MovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナから特定されたブレンドモードと同等のHTMLに基づくコードを含むようにブレンド命令の組を生成することができる。たとえば、ブレンドモードがMovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナに関連する2つの子表示オブジェクトにそれぞれ対応する視覚要素のうちの2つが反転され、乗算され、再び反転された色値を有することを指定する場合(たとえば、BlendMode.screen)、トランスコーダモジュール130は、「cur_canvas.globalCompositeOperation=screen」を含むようにブレンド命令の組を生成することができる。この例において、2つの子表示オブジェクトは、MovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナの子表示オブジェクトである可能性があり、トランスコーダモジュール130は、ブレンド命令の組を生成する前にHTMLに基づく命令の組を生成した可能性がある。
一部の実装において、トランスコーダモジュール130は、MovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナのためのクリップ命令の組を生成することができる。一部の実装において、トランスコーダモジュール130は、MovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナから子表示オブジェクトのうちの少なくとも2つを特定する可能性がある。一部の実装においては、少なくとも3つの子表示オブジェクトが、第1の子表示オブジェクト、第2の子表示オブジェクト、および第3の子表示オブジェクトに対応する可能性がある。一部の実装において、トランスコーダモジュール130は、第1の子表示オブジェクトに対応する視覚要素が第2の子表示オブジェクトに対応する視覚要素を切り詰めるかまたはマスクすることを特定することができる。一部の実装において、トランスコーダモジュール130は、第1の子表示オブジェクトに対応する視覚要素が第2の子表示オブジェクトに対応する視覚要素を切り詰めるかまたはマスクすることを特定することができる。一部の実装において、トランスコーダモジュール130は、第3の子表示オブジェクトに対応する視覚要素が第2の子表示オブジェクトに対応する視覚要素の切り詰めを解除する(un-truncate)かまたはマスクを解除する(de-mask)ことを特定することができる。一部の実装において、トランスコーダモジュール130は、第1の子表示オブジェクトに対応するクリップ開始命令の組を生成することができる。一部の実装において、トランスコーダモジュール130は、第2の子表示オブジェクトに対応するクリップ適用命令の組を生成することができる。一部の実装において、トランスコーダモジュール130は、第3の子表示オブジェクトに対応するクリップ終了命令の組を生成することができる。
一部の実装において、トランスコーダモジュール130は、MovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナの1つまたは複数の子表示オブジェクトからフィルタを特定することができる。一部の実装において、トランスコーダモジュール130は、1つもしくは複数の子表示オブジェクトの各々のためのHTMLに基づく命令の組を生成することに応じてあるいはHTMLに基づく命令の組を生成した後、フィルタを特定することができる。フィルタの例は、とりわけ、ベベル(BevelFilter)、ぼかし(BlurFilter)、ドロップシャドウ(DropShadowFilter)、グロー(GlowFilter)、グラデーションベベル(GrandientBevelFilter)、グラデーショングロー(GradientGlowFilter)、カラーマトリックス(ColorMatrixFilter)、畳み込み(ConvolutionFilter)、置き換え(DisplacementMapFilter)、およびシェーダー(ShaderFilter)を含み得る。一部の実装において、トランスコーダモジュール130は、MovieClip表示オブジェクトコンテナから特定されたフィルタと同等のHTMLに基づくコードを含むようにクリップ命令の組を生成することができる。一部の実装において、トランスコーダモジュール130は、MovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナから特定されたフィルタと同等のHTMLに基づくコードを特定するためにデータベース140のHTMLに基づくコードのフィルタのライブラリにアクセスすることができる。たとえば、MovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナから特定されたフィルタがドロップシャドウフィルタである場合、トランスコーダモジュール130は、HTMLに基づくコード(たとえば、JavaScript(登録商標)、CSS、またはHTML)で書かれたドロップシャドウフィルタに関してデータベース140を検索することができる。
一部の実装においては、表示オブジェクトのクラスタイプがVideoクラスであると特定することに応じて、トランスコーダモジュール130が、ドロービデオ命令の組を生成することができる。一部の実装において、トランスコーダモジュール130は、表示オブジェクトに対応するVideoデータを特定することができる。ビデオデータは、とりわけ、解像度、キューポイント(cue point)、符号化の種類、フレーム情報、およびキーフレーム情報を含み得る。解像度は、表示オブジェクトに対応するビデオ視覚コンテンツの幅および高さを含み得る。キューポイントは、その他のアクションをトリガする時間またはフレームを含み得る。符号化の種類は、たとえば、ビデオフォーマット(たとえば、H.264、SPARK)およびコンテナ(たとえば、FLV、MP4、MP3、またはF4V)を含み得る。フレーム情報は、表示オブジェクトに対応するビデオ視覚コンテンツの各フレームのための視覚コンテンツデータを含み得る。キーフレーム情報は、ビデオ視覚コンテンツ内の特定のフレームの後のフレームの各々に関する処理データを含み得る。一部の実装において、トランスコーダモジュール130は、ドロービデオ命令の組に含める外部ビデオファイルまたはソースに関する位置を特定することができる。一部の実装において、トランスコーダモジュール130は、ドロービデオ命令の組に含める外部ビデオストリームソースに関する位置を特定することができる。一部の実装において、トランスコーダモジュール130は、ドロービデオ命令の組に含めるフレーム情報およびキー情報と同等のHTMLに基づくコードを生成することができる。たとえば、ビデオクラス表示オブジェクトがビデオ視覚コンテンツ内のフレームが補間によって滑らかにされることを指定する場合、トランスコーダモジュール130は、ビデオ表示オブジェクト内で指定された補間と同等のHTMLに基づくコードを検索し、ドロービデオ命令の組に含めるために、視覚コンテンツを処理するためのHTMLに基づくコードのライブラリにアクセスすることができる。
トランスコーダモジュール130は、HTMLに基づく命令の組を命令リストに挿入することができる。命令リストは、任意のデータ構造である可能性がある。データ構造は、たとえば、とりわけ、配列、行列、グラフ、木、キュー、スタック、連結リスト、スキップリスト、および構造体(struct)である可能性がある。一部の実装において、トランスコーダモジュール130は、HTMLに基づく命令の組を命令リストのスタックに積むことができる。一部の実装において、トランスコーダモジュール130は、HTMLに基づく命令の組を命令リストの最後に付け加えることができる。一部の実装において、トランスコーダモジュール130は、HTMLに基づく命令の組を命令リストの最後に付け加えるか、追加するか、またはそうでなければ入れることができる。一部の実装において、トランスコーダモジュール130は、子表示オブジェクトに対応するHTMLに基づく命令の別の組を命令リストに挿入した後、HTMLに基づく命令の組を命令リストに挿入する可能性がある。たとえば、トランスコーダモジュール130は、表示オブジェクトコンテナに対応するHTMLに基づく命令の第1の組を生成し、命令リストに挿入し、それから、左の子表示オブジェクトに対応するHTMLに基づく命令の第2の組を生成し、命令リストに挿入し、最後に、右の子表示オブジェクトに対応するHTMLに基づく命令の第3の組を生成し、命令リストに挿入することができる。
トランスコーダモジュール130は、表示リスト内の別の表示オブジェクトを特定することができる。トランスコーダモジュール130は、表示リスト内で特定されたその他の表示オブジェクトの各々に関して、上で詳述された機能を繰り返すことができる。たとえば、表示リストの第1の表示オブジェクトのためのHTMLに基づく命令の組を命令リストに挿入した後、トランスコーダモジュール130は、第2の表示オブジェクトに関するクラスタイプを特定し、第2の表示オブジェクトに関する特定されたクラスタイプに基づいてHTMLに基づく命令の第2の組を生成し、HTMLに基づく命令の第2の組を命令リストに挿入することができる。そのとき、トランスコーダモジュール130は、表示リスト内にさらなる表示オブジェクトがあるかどうかを再び判定し、上で詳述された機能を繰り返すことができる。この機能は、トランスコーダモジュール130によって、表示リスト内の表示オブジェクトの各々に関して複数回繰り返される可能性があることを理解されたい。
トランスコーダモジュール130は、データ構造内の命令リストをデータベース140に記憶することができる。一部の実装において、トランスコーダモジュール130は、表示リストをくまなく調べながら命令リストをデータベース140に記憶することができる。たとえば、トランスコーダモジュール130は、HTMLに基づく命令の組の各々を生成するときに命令リストをデータベース140に記憶することができる。一部の実装において、トランスコーダモジュール130は、HTMLに基づくコンテンツアイテムを生成するかまたはインスタンス化することができる。一部の実装において、トランスコーダモジュール130は、HTMLに基づくコンテンツアイテムに書き込むために命令リストのHTMLに基づく命令の組に基づいてHTMLコードを生成することができる。たとえば、トランスコーダモジュール130は、HTMLに基づくコンテンツアイテムに対応するHTMLファイルを生成し、HTMLに基づく命令の組に基づくHTMLコードをHTMLファイルに書き込むことができる。
ポリシージェネレータ135は、視覚コンテンツをレンダリングするための実行ポリシーを生成することができる。実行ポリシーは、トリガ条件に基づいて命令リスト内のHTMLに基づく命令の組を実行するためのアプリケーション(たとえば、クライアントデバイス125上で実行されるウェブブラウザまたはプログラム)を指定することができる。一部の実装において、ポリシージェネレータ135は、HTMLに基づく命令の組を生成するのと同時に、HTMLに基づく命令の組を生成するのとは独立に、HTMLに基づく命令の組を生成する前に、またはHTMLに基づく命令の組を生成した後に実行ポリシーを生成することができる。一部の実装において、ポリシージェネレータ135は、命令リストを含むHTMLに基づくコンテンツアイテムに実行ポリシーを挿入することができる。一部の実装において、ポリシージェネレータ135は、命令リストに実行ポリシーを挿入することができる。一部の実装において、ポリシージェネレータ135は、実行ポリシーをデータベース140に記憶することができる。
一部の実装において、トリガ条件は、アプリケーションがアイドルしていると判定することに応じて、アプリケーションがHTMLに基づく命令の組のうちの少なくとも1つを実行することを指定することができる。一部の実装において、トリガ条件は、アプリケーションがアイドルしていると判定した後、アプリケーションが所定の時間枠内にHTMLに基づく命令の組のうちの少なくとも1つを実行することを指定することができる。一部の実装において、トリガ条件は、アプリケーションが、HTMLに基づく命令の組のうちの少なくとも1つを実行するために残りのアイドル時間期間を監視し、アプリケーションが残りのアイドル時間期間が所定の閾値未満であることを検出するときにHTMLに基づく命令の組の実行を停止することを指定することができる。たとえば、命令リストがHTMLに基づく命令の第1の組およびHTMLに基づく命令の第2の組を含む場合、命令リストを使用して視覚コンテンツをレンダリングするアプリケーションは、その他のプロセス(たとえば、ウェブページ上のその他の要素)を実行している間にHTMLに基づく命令の第1の組を実行することができる。アプリケーションは、それから、その他のプロセスの実行を完了するまで待つことができる。アプリケーションは、そのアプリケーションがアイドルしていると判定すると、命令リスト内のHTMLに基づく命令の第2の組を実行することができる。この例において、アプリケーションは、「requestIdleCallback()」関数を呼び出すことによってアプリケーションがアイドルしていると判定することができる。それから、アプリケーションは、所定の時間枠の間か、またはアプリケーションがもはやアイドルしていないと再び判定するまでかのどちらかで、命令リスト内のHTMLに基づく命令の組の一部を実行することができる。
一部の実装において、トリガ条件は、HTMLに基づく命令の組のうちの少なくとも1つを実行する継続時間が予め定義された時間遅延を超えると判定することに応じて、アプリケーションがHTMLに基づく命令の組のうちの少なくとも1つを実行することを指定することができる。たとえば、命令リストがHTMLに基づく命令の第1の組およびHTMLに基づく命令の第2の組を含む場合、命令リストを使用して視覚コンテンツをレンダリングするアプリケーションは、第1の継続時間にHTMLに基づく命令の第1の組を実行し、その後、第2の継続時間にHTMLに基づく命令の第2の組を実行することができる。この例においては、第1の継続時間と第2の継続時間との両方が、「setTimeout()」関数を呼び出すことによって指定され得る。
一部の実装において、ポリシージェネレータ135は、HTMLに基づく命令の組の各々に関する重みに基づいて命令リスト内のHTMLに基づく命令をグループ分けすることができる。HTMLに基づく命令の組に関する重みの各々は、レンダリングの優先度に基づいて予め決定され得る。たとえば、ドローテキスト命令の組に関する重みは、ドローシェイプ命令の組に関する重みよりも大きく設定される可能性があり、視覚コンテンツをレンダリングする間にテキストを描画するより高い優先度を示す。一部の実装において、HTMLに基づく命令の組の各々に関する重みは、HTMLに基づく命令の1つまたは複数の組の実行をグループ分けするかまたはその他の方法で区分けするために使用され得る。たとえば、フィルタ命令の組に関する重みがブレンド命令の組と同じであるが、ドローテキスト命令の組とは異なる場合、命令を実行するコンピューティングデバイスは、ドローテキスト命令とは別にフィルタ命令およびブレンド命令を実行することができる。
一部の実装において、データ処理システム110は、命令リストおよび実行ポリシーをコンテンツプロバイダコンピューティングデバイス115、コンテンツパブリッシャコンピューティングデバイス120、またはクライアントデバイス125に送信することができる。一部の実装において、データ処理システム110は、データベース140の命令リストおよび実行ポリシーにアクセスすることができる。一部の実装において、データ処理システム110は、コンテンツの要求を受信することに応じて、命令リストを送信することができる。一部の実装において、データ処理システム110は、情報リソース(たとえば、ウェブページ)上に提示するためのHTMLに基づくコンテンツアイテム内の命令リストを送信することができる。一部の実装において、HTMLに基づく命令は、コンピューティングデバイス(たとえば、コンテンツプロバイダコンピューティングデバイス115、コンテンツパブリッシャコンピューティングデバイス120、またはクライアントデバイス125)に実行ポリシーに従って視覚コンテンツをレンダリングするための命令リストを実行させることができる。実行ポリシーは、命令リスト内の命令がコンピューティングデバイスによって実行され得る1つまたは複数の規則または命令を含む。たとえば、データ処理システム110は、クライアントデバイス125からコンテンツの要求を受信することに応じて、命令リストを送信することができる。要求は、視覚コンテンツを含むウェブページをロードしながらクライアントデバイス125によって送信された可能性がある。命令リストを受信した後、クライアントデバイス125は、HTMLに基づく命令の組を実行することによって視覚コンテンツをレンダリングすることができる。クライアントデバイス125は、実行ポリシーに従ってHTMLに基づく命令の組を実行することができる。
一部の実装において、トランスコーダモジュール130は、以下の擬似コードを使用して実装され得る。
InstructionGenerator {
var instructions = [];
function visitBitmap(bitmap) {
enqueueInstruction(DRAW_BITMAP, bitmap);
}
function visitText(text) {
enqueueInstruction(DRAW_TEXT, bitmap);
}
function visitMovieClip(displayObject) {
if (displayObject.isLayer()) {
enqueueInstruction(STACK_LAYER);
processList(displayObject.getDisplayList());
enqueueInstruction(CLIP_LAYER, displayObject.getMasks);
enqueueInstruction(FILTER_LAYER, displayObject.getFilters());
enqueueInstruction(BLEND_LAYER, displayObject.getBlends()); }
else {
processList(displayObject.getDisplayList());
}
}
function visitShape(shape) {
enqueueInstruction(DRAW_SHAPE, bitmap);
}
function processList(displayList) {
var activeMask = [];
for (child : displayList) {
while (activeMask.length > 0 &&
child.depth > activeMask.top()) {
activeMask.pop();
enqueueInstruction(APPLY_CLIP);
}
if (child.isClip()) {
activeMask.push(child.depth);
enqueueInstruction(START_CLIP);
child.accept(this);
enqueueInstruction(END_CLIP); }
else {
child.accept(this);
}
}
}
}
一部の実装において、ポリシージェネレータモジュール135は、以下の擬似コードを使用して実装され得る。
Renderer {
// Process instructions while available and before timeout
function processInstructions(instructions, timeout) {
while (currentTime < timeout &&
instructions.length){
var instruction = instructions.dequeue();
// Do actual instruction work }
}
// Trigger the processing of instructions for a time, and the schedules the next batch and returns to the browser time out
function doInstructions(instructions, renderer) {
renderer.processInstructions(instructions, currentTime + CHUNK_TIME);
while (instructions.length) {
window.setTimeout(doInstructions.bind(instructions, renderer)); }
else {
// Finished. Copy the backbuffer to the canvas
canvas.copy(renderer.canvas);
}
}
}
一部の実装において、データ処理システム110は、以下の擬似コードを使用することによってトランスコーダモジュール130およびポリシージェネレータモジュール135の機能を呼び出し、生成された命令リストおよび実行ポリシーをレンダリングすることができる。
var instructionGenerator = new InstructionGenerator();
// generates the instructions
stage.accept(instructionGenerator);
// The first layer is a back buffer
var renderer = Renderer(new canvas);
doInstructions(instructionGenerator.instructions, renderer);
ここで、図1に関連して説明されたシステム100の文脈で図2を参照すると、図2は、FLASHコンテンツをHTMLコンテンツに変換する1つの実装を示すプロセス図である。この例において、FLASH表示リスト200は、視覚コンテンツを構成する視覚要素にそれぞれが対応する5つの表示オブジェクト205A〜Eを含み得る。表示オブジェクト205Aは、表示オブジェクト205Bおよび205Cのための表示オブジェクトコンテナである可能性がある。そしてさらに、表示オブジェクト205Cは、表示オブジェクト205Dおよび205Eのための表示オブジェクトコンテナである可能性がある。表示オブジェクト205Aは、Bitmap表示オブジェクトである可能性があり、表示オブジェクト205Aに対応する視覚要素は、点々のある背景を含む可能性がある。表示オブジェクト205Bは、StaticText表示オブジェクトである可能性があり、表示オブジェクト205Bに対応する視覚要素は、視覚コンテンツの概して左上の角に表示される文字列「XYZ」を含む可能性がある。表示オブジェクト205Cは、子表示オブジェクト205Dおよび205Eが消去(たとえば、BlendMode.ERASE)によって一緒にブレンドされることを指定するMovieClip表示オブジェクトである可能性がある。表示オブジェクト205Dは、Shape表示オブジェクトである可能性があり、表示オブジェクト205Cに対応する視覚要素は、タイル状のパターンによって埋められた楕円形を含む可能性がある。表示オブジェクト205Eは、Bitmap表示オブジェクトである可能性があり、表示オブジェクト205Dに対応する視覚要素は、塗りつぶされた五角形を含む可能性がある。
図2の文脈で、トランスコーダモジュール130は、表示リスト200をくまなく調べることができる。表示リスト200内の各表示オブジェクト205A〜Eに関して、トランスコーダモジュール130は、クラスタイプを特定することができる。この例において、トランスコーダモジュール130は、表示オブジェクト205AがBitmap表示オブジェクトであり、表示オブジェクト205BがStaticText表示オブジェクトであり、表示オブジェクト205CがMovieClip表示オブジェクトであり、表示オブジェクト205DがShape表示オブジェクトであり、表示オブジェクト205EがBitmap表示オブジェクトであることを特定することができる。トランスコーダモジュール130は、データをあるフォーマットから別のフォーマットに変換することができる。表示オブジェクト205A〜Eの各々の特定されたクラスタイプを使用して、トランスコーダモジュール130は、表示リスト200に対応するFLASHコンテンツをHTMLに基づく命令リスト210に対応するHTMLに基づくコンテンツ(たとえば、HTML5、JavaScript(登録商標)、およびCSS)に変換することができる。トランスコーダモジュール130は、それぞれのクラスタイプに基づいて表示オブジェクト205A〜Eの各々のためのHTMLに基づく命令のそれぞれの組215A〜Eを生成することができる。それから、トランスコーダモジュール130は、HTMLに基づく命令の組215A〜EをHTMLに基づく命令リスト210に挿入することができる。この例において、トランスコーダモジュール130は、表示オブジェクト205Aのためのドロービットマップ命令の組215A、表示オブジェクト205Bのためのドローテキスト命令の組215B、表示オブジェクト205Cのためのブレンド命令の組215C、表示オブジェクト205Dのためのドローシェイプ命令の組215D、表示オブジェクト205Eのためのドロービットマップ命令の組215Eを生成することができる。FLASHコンテンツがHTMLに基づくコンテンツに変換されるようにして、トランスコーダモジュール130は、それから、HTMLに基づく命令リスト210をデータベース140に記憶することができる。ポリシージェネレータ135は、HTMLに基づく命令リスト210に関する実行ポリシーを生成し、実行ポリシーをやはりデータベース140に記憶することができる。データ処理システム100は、クライアントデバイス125からの要求を受信することに応じて、HTMLに基づく命令リスト210を送信することができる。
HTMLに基づく命令リスト210を受信した後、クライアントデバイス125上で実行されるアプリケーション(たとえば、ウェブブラウザまたはモバイルアプリケーション)が、HTMLに基づく命令リスト210のHTMLに基づく命令の組215A〜Eを実行してウェブページ上で視覚コンテンツをレンダリングすることができる。この例において、クライアントデバイス125は、HTMLに基づく命令の組215A〜Eの各々をHTMLキャンバス220上に順にレンダリングすることができる。HTMLに基づく命令の組215A〜Eの各々は、視覚要素225A〜Eに対応する可能性がある。アプリケーションは、HTMLに基づく命令の第1の組215Aに対応する点々のある背景を含む第1の視覚要素225Aをレンダリングすることができる。それから、アプリケーションは、HTMLに基づく命令の第2の組215Bに対応する、キャンバス220の概して左上の角に文字列「XYZ」を含む第2の視覚要素225Bをレンダリングすることができる。そして、アプリケーションは、HTMLに基づく命令の第3の組215Cを処理して次の2つの視覚要素225Cをブレンドすることができる。それから、アプリケーションは、HTMLに基づく命令の第4の組215Dに対応する、タイル状のパターンによって埋められた楕円形を含む第4の視覚要素225Dをレンダリングすることができる。そして、アプリケーションは、HTMLに基づく命令の第3の組215Cによって指定されたブレンドを適用しながら、HTMLに基づく命令の第5の組215Eに対応する五角形を含む第5の視覚要素225Eをレンダリングすることができる。視覚要素225A〜Eが、同じHTMLキャンバス220上にレンダリングされ得ることを理解されたい。最後に、アプリケーションは、結果として得られるHTMLキャンバス220'にすべての視覚コンテンツをレンダリングした可能性がある。
図3を参照すると、図3は、FLASHコンテンツをHTMLコンテンツに変換する方法300を示す流れ図である。方法400に関連して本明細書において説明される機能は、図1に示されたデータ処理システム110のトランスコーダモジュール130およびポリシージェネレータモジュール135、コンテンツプロバイダコンピューティングデバイス115、またはコンテンツパブリッシャコンピューティングデバイス120、またはクライアントデバイス125、または図4に示されたコンピュータシステム400、またはこれらの任意の組合せによって行われるかまたはそうでなければ実行される可能性がある。簡潔にまとめると、コンピューティングシステムが、FLASHに基づくコンテンツアイテムを受信し得る(ブロック305)。コンピューティングシステムは、表示オブジェクトのクラスタイプを特定し得る(ブロック310)。コンピューティングシステムは、HTMLに基づく命令の組を生成し得る(ブロック315)。コンピューティングシステムは、HTMLに基づく命令の組を挿入し得る(ブロック320)。コンピューティングシステムは、表示リスト内にさらなる表示オブジェクトがあるかどうかを判定し得る(ブロック325)。コンピューティングシステムは、表示リスト内の次の表示オブジェクトを特定し得る(ブロック330)。コンピューティングシステムは、実行ポリシーを生成し得る(ブロック335)。コンピューティングシステムは、命令リストをデータベースに記憶し得る(ブロック340)。
さらに詳細に言えば、コンピューティングシステムは、FLASHに基づくコンテンツアイテムを受信し得る(ブロック305)。一部の実装において、コンピューティングシステムは、表示リストをコンピューティングデバイスに生成させるかまたは表示リストにアクセスさせるための命令を含むFLASHに基づくコンテンツアイテムを受信し得る。一部の実装において、コンピューティングシステムは、ファイルまたは1つもしくは複数のパケットの形態でFLASHに基づくコンテンツアイテムを受信し得る。一部の実装において、コンピューティングシステムは、コンテンツプロバイダコンピューティングデバイス、コンテンツパブリッシャコンピューティングデバイス、クライアントデバイス、またはコンピューティングシステムに接続された入力デバイスからFLASHに基づくコンテンツアイテムを受信し得る。FLASHに基づくコンテンツアイテムは、たとえば、SHOCKWAVE FLASH(SWF)ファイルフォーマット、FLASH VIDEO(FLV、F4V、F4P、F4A、F4P、もしくはSWC)ファイルフォーマット、FLASHACTIONSCRIPT(AS、ASC、ABC、ASO)ファイルフォーマット、ACTION MESSAGE(AMF)ファイルフォーマット、または視覚コンテンツをレンダリングするために使用される任意のその他のFLASHファイルフォーマットなどである可能性がある。
表示リストは、木構造などで階層的に構成された1つまたは複数の表示オブジェクトを含み得る。たとえば、表示リストは、第1の表示オブジェクトおよび第2の表示オブジェクトを含む可能性がある。この例において、第2の表示オブジェクトは、第1の表示オブジェクトの子である可能性がある。1つまたは複数の表示オブジェクトの各々は、FLASHに基づくコンテンツアイテムを使用してレンダリングされる視覚コンテンツの視覚要素または構成要素を表し得る。表示リストに含まれる1つまたは複数の表示オブジェクトのすべては、DisplayObjectクラスから継承され得る。DisplayObjectクラスを使用して派生される表示オブジェクトのタイプは、ステージ(Stageクラス)、表示オブジェクトコンテナ(DisplayObjectContainerクラス)、ならびにとりわけBitmapクラス、Shapeクラス、Spriteクラス、MovieClipクラス、TextFieldクラス、TextLineクラス、StaticTextクラス、およびVideoクラスなどのその他の種類の表示オブジェクトである可能性がある。表示オブジェクトコンテナは、木構造のサブセットなどの表示リスト内の階層的に構成された1つまたは複数のその他の表示オブジェクト(たとえば、子表示オブジェクト)を含み得る。派生表示オブジェクトの一部は、表示オブジェクトコンテナである可能性もあることを理解されたい。たとえば、MovieClipおよびSprite表示オブジェクトは、1つまたは複数のその他の表示オブジェクトを含む表示オブジェクトコンテナである可能性がある。
コンピューティングシステムは、表示オブジェクトのクラスタイプを特定し得る(ブロック310)。一部の実装において、コンピューティングシステムは、前順(たとえば、根、左部分木、それから右部分木)、中順(たとえば、左部分木、根、それから右部分木)、または後順(左部分木、右部分木、それから根)のうちの1つで表示リストをくまなく調べ得る。たとえば、コンピューティングシステムは、表示リストをくまなく調べて現在の表示オブジェクトのクラスタイプを特定し得る。そのとき、コンピューティングシステムは、「getChildAt(i)」関数を呼び出し、インデックス「i」を繰り返しインクリメントして、表示リストの表示オブジェクトを取り出して現在の表示オブジェクトの子表示オブジェクトのクラスタイプを特定することによって表示リストをくまなく調べ得る。表示リストの子表示オブジェクトが取り出されると、コンピューティングシステムは、「trace()」関数を呼び出すことによって現在の表示オブジェクトが特定のクラスタイプであるかどうかを判定し得る。この例においては、表示オブジェクトがTextField表示オブジェクトであるかどうかを判定するために、コンピューティングシステムは、「trace(cur_object is TextField)」を呼び出して、現在の表示オブジェクトがTextField表示オブジェクトであるかどうかを示すブール値を取得し得る。一部の実装において、コンピューティングシステムは、表示オブジェクトのクラスタイプを、とりわけ、Bitmap、Shape、Sprite、MovieClip、TextField、TextLine、StaticTextクラス、およびVideoクラスのうちの1つとして特定し得る。
一部の実装において、コンピューティングシステムは、表示オブジェクトが表示オブジェクトコンテナであるかどうかを判定し得る。たとえば、コンピューティングシステムは、「trace()」関数を呼び出して、現在の表示オブジェクトが表示オブジェクトコンテナであるかどうかを判定し得る。表示オブジェクトコンテナである可能性があるクラスタイプは、とりわけ、MovieClipクラス、TextLineクラス、およびSpriteクラスを含む。一部の実装において、コンピューティングシステムは、表示オブジェクトが表示オブジェクトコンテナであると判定することに応じて、表示オブジェクトコンテナが1つまたは複数の子表示オブジェクトを含むかどうかを判定し得る。一部の実装において、コンピューティングシステムは、表示オブジェクトコンテナの1つまたは複数の子表示オブジェクトの各々に関するクラスタイプを特定し得る。一部の実装において、コンピューティングシステムは、表示オブジェクトがMovieClip表示オブジェクトコンテナであるかまたはSprite表示オブジェクトコンテナであるかを判定し得る。MovieClip表示オブジェクトコンテナは、タイムラインに構成された1つまたは複数の子表示オブジェクトを含み得る。Sprite表示オブジェクトコンテナは、1つまたは複数の子表示オブジェクトを含み得る。TextLine表示オブジェクトコンテナは、1つまたは複数の子表示オブジェクトを含み得る。一部の実装において、コンピューティングシステムは、MovieClip表示オブジェクトコンテナの1つまたは複数の子表示オブジェクトの各々に関するクラスタイプを特定し得る。一部の実装において、コンピューティングシステムは、MovieClip表示オブジェクトコンテナによって参照される外部FLASHコンテンツアイテムを特定し得る。一部の実装において、コンピューティングシステムは、Sprite表示オブジェクトコンテナの1つまたは複数の子表示オブジェクトの各々に関するクラスタイプを特定し得る。
コンピューティングシステムは、HTMLに基づく命令の組を生成し得る(ブロック315)。一部の実装において、コンピューティングシステムは、表示オブジェクトに関するクラスタイプに基づいてHTMLに基づく命令の組を生成し得る。一部の実装において、コンピューティングシステムは、表示オブジェクトが表示オブジェクトコンテナであると判定することに応じて、または表示オブジェクトが表示オブジェクトコンテナであると判定した後、表示オブジェクトの子表示オブジェクトの各々に関するクラスタイプに基づいてHTMLに基づく命令の別の組を生成し得る。HTMLに基づく命令の組は、とりわけ、ドロービットマップ命令の組、ドローテキスト命令の組、ドローシェイプ命令の組、スタック命令の組、ブレンド命令の組、クリップ命令の組、フィルタ命令の組、およびドロービデオ命令の組のうちの少なくとも1つである可能性がある。ドロービットマップ命令の組は、表示オブジェクトに対応する視覚要素が表示オブジェクトによって指定されたグラフィックを用いて描かれることを指定し得る。ドローテキスト命令の組は、表示オブジェクトに対応する視覚要素が表示オブジェクトによって指定されたテキスト文字列を用いて描かれることを指定し得る。一部の実装において、ドロー命令の組は、ドローエディットテキスト命令の組およびドロースタティックテキスト命令の組を含み得る。ドローシェイプ命令の組は、表示オブジェクトに対応する視覚要素が表示オブジェクトによって指定されたシェイプを用いて描かれることを指定し得る。スタック命令の組は、表示オブジェクトに対応する視覚要素が、レンダリングする間に描かれ(たとえば、ビットマップ、テキスト、もしくはシェイプ)、クリップされ、または別の表示オブジェクトに対応する別の視覚要素とブレンドされることを指定し得る。ブレンド命令の組は、表示オブジェクトに対応する視覚要素が、レンダリングする間に、表示オブジェクトに対応する別の視覚要素とブレンドされることを指定し得る。クリップ命令の組は、表示オブジェクトに対応する視覚要素が、レンダリングする間に、別の表示オブジェクトに対応する別の視覚要素をクリップするかまたは切り詰めることを指定し得る。一部の実装において、クリップ命令の組は、クリップ開始命令の組、クリップ適用命令の組、およびクリップ終了命令の組を含み得る。フィルタ命令の組は、表示オブジェクトに対応する視覚要素が、レンダリングする間にフィルタリングされることを指定し得る。ドロービデオ命令の組は、表示オブジェクトに対応するビデオ視覚要素が、表示オブジェクトのビデオデータの仕様に従って描かれるか、レンダリングされるか、またはそれ以外の方法で再生されることを指定し得る。
HTMLに基づく命令の組は、HTMLコード(たとえば、HTML5マークアップ)を含み得る。一部の実装において、HTMLに基づく命令の組は、(たとえば、「<script> ... </script>」タグを使用して)JavaScript(登録商標)コードを含み、カスケーディングスタイルシート(CSS)マークアップを含む可能性もある。HTMLに基づく命令の組は、アプリケーション(たとえば、ウェブブラウザ)にFLASHに基づくコンテンツアイテムと同じ視覚コンテンツをレンダリングさせ得る。HTMLに基づく命令の組を実行して視覚コンテンツをレンダリングすることは、FLASHに基づくコンテンツアイテムを実行して同じ視覚コンテンツをレンダリングすることに比べてコンピュータリソース(たとえば、CPUおよびメモリの使用)を節約する可能性があることを理解されたい。したがって、HTMLに基づく命令の組を実行することは、電力消費を少なくし、コンピューティングデバイスがその他のプロセスのために利用可能であることを可能にし得る。さらに、複数のコンピューティングデバイスの間で視覚コンテンツをレンダリングするためのHTMLに基づく命令の単一の生成された組を共有することは、コンピュータリソースおよび電力消費をより一層節約することにつながる可能性がある。
一部の実装においては、表示オブジェクトのクラスタイプがBitmapクラスであると特定することに応じて、コンピューティングシステムが、ドロービットマップ命令の組を生成し得る。一部の実装において、コンピューティングシステムは、表示オブジェクトに対応するBitmapデータを特定し得る。Bitmapデータは、とりわけ、ビットマップ(BMP)フォーマットファイル、ポータブルネットワークグラフィックス(PNG)フォーマットファイル、タグ付き画像ファイルフォーマット(TIFF)フォーマットファイル、ジョイントフォトグラフィックエキスパートグループ(JPEG)フォーマットファイル、およびグラフィックス交換フォーマット(GIF)などの任意のラスタグラフィックスフォーマットの外部画像ファイルまたはソースからのラスタグラフィックスデータを含み得る。一部の実装において、コンピューティングシステムは、外部画像ファイルまたはソースに関する位置を特定し得る。外部画像ファイルまたはソースに関する位置は、コンピューティングデバイスのストレージ(たとえば、コンピュータシステム400のストレージ)上のファイルパス名、またはコンピュータネットワークの位置を特定するユニフォームリソースロケータ(URL)(たとえば、「https://www.example.com/example.BMP」)を含み得る。一部の実装において、コンピューティングシステムは、Bitmapデータに対する1つまたは複数の改変を特定し得る。1つまたは複数の改変は、外部画像ファイルの外の表示オブジェクトによって指定され得る。1つまたは複数の改変は、たとえば、とりわけ、Bitmapデータの寸法または解像度をスキューすること、Bitmapデータのピクセルを操作すること、Bitmapデータの透明度を指定すること、およびBitmapデータの配色を変更することを含み得る。一部の実装において、コンピューティングシステムは、「<img>」タグ、Bitmapデータのソースを指定する「src」タグ、およびBitmapデータに関する代替名またはテキストを指定する「alt」タグを含むBitmapデータに関するドローシェイプ命令の組を生成し得る。一部の実装において、コンピューティングシステムは、1つまたは複数の改変と同等のHTMLに基づくコードを使用してBitmapデータに対する1つまたは複数の改変に関するドローシェイプ命令を生成し得る。たとえば、表示オブジェクトがBitmapデータのアルファ(たとえば、不透明度)が50%であることを指定する場合、コンピューティングシステムは、「bmp.globalAlpha=0.5」を含むHTMLに基づくコードを生成し得る。
一部の実装においては、表示オブジェクトのクラスタイプがTextField、TextLine、またはStaticTextクラスであると特定することに応じて、コンピューティングシステムが、ドローテキスト命令の組を生成し得る。一部の実装においては、表示オブジェクトのクラスタイプがTextFieldまたはTextLineクラスであると特定することに応じて、コンピューティングシステムが、ドローエディットテキスト命令の組を生成し得る。一部の実装においては、表示オブジェクトのクラスタイプがTextField、TextLine、またはStaticTextクラスであると特定することに応じて、コンピューティングシステムが、ドロースタティックテキスト命令の組を生成し得る。一部の実装において、コンピューティングシステムは、表示オブジェクトに対応するテキストデータを特定し得る。テキストデータは、表示オブジェクトのテキストフィールドに含まれる任意の文字列を含み得る。一部の実装において、コンピューティングシステムは、表示オブジェクトのテキストフィールドに含まれる文字列を使用してテキストデータに関するドロースタティックテキスト命令の組を生成し得る。たとえば、表示オブジェクトのテキストフィールドが文字列「XYZ」を含む場合、コンピューティングシステムは、コード「txt.filltext("XYZ")」を含めるようにドロースタティックテキスト命令の組を生成し得る。一部の実装において、コンピューティングシステムは、テキストデータの1つまたは複数のプロパティを特定し得る。たとえば、テキストフィールドの1つまたは複数のプロパティは、とりわけ、フォント、サイズ、色、回転、スケール、および背景色を含み得る。一部の実装において、コンピューティングシステムは、1つまたは複数の改変と同等のHTMLに基づくコードを使用してテキストデータに対する1つまたは複数の改変に関するドローエディットテキスト命令の組を生成し得る。たとえば、表示オブジェクトがテキストのフォントが「Comic Sans」であり、サイズ20ピクセルであり、要素の中心に揃えられることを指定する場合、コンピューティングシステムは、コード「txt.font="20px Comic Sans MS"」および「txt.textAlign="center"」を含めるようにエディットテキスト命令の組を生成し得る。
一部の実装においては、表示オブジェクトのクラスタイプがShapeクラスであると特定することに応じて、コンピューティングシステムが、ドローシェイプ命令の組を生成し得る。一部の実装において、コンピューティングシステムは、表示オブジェクトに対応するShapeデータを特定し得る。Shapeデータは、とりわけ、シェイプ(たとえば、長方形、円、および直線)、1つまたは複数の参照点(たとえば、端点、アンカーポイント、端点、および座標)、色、塗りつぶし、グラデーション、不透明度、回転、スケール、ならびに曲線を含み得る。一部の実装において、コンピューティングシステムは、Shapeデータと同等のHTMLに基づくコードを使用してShapeデータに関するドローシェイプ命令の組を生成し得る。たとえば、表示オブジェクトが、FLASHに基づくコード「shape.graphics.drawRect(30, 40, 60, 20)」を使用して、シェイプがピクセル位置(30, 40)にあるピクセルサイズ(60 x 20)の長方形であることを指定する場合、コンピューティングシステムは、「shp.fillRect(30, 40, 60, 20)」を含むドローシェイプ命令の組のためのHTMLに基づくコードを生成し得る。この例においては、表示オブジェクトが長方形が青から白まで線形の放射状グラデーションによって塗りつぶされることを指定する場合、コンピューティングシステムが、それぞれの色の範囲を指定する「createLinearGradient()」関数を含むHTMLに基づくコードを用いてドローシェイプ命令を生成し得る。
一部の実装において、表示オブジェクトのクラスタイプがMovieClipクラスまたはSpriteクラスであると特定することに応じて、コンピューティングシステムは、MovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナの1つまたは複数の子表示オブジェクトの各々のためのHTMLに基づく命令の組を生成し得る。MovieClipクラスは、同じプロパティおよび関数の多くを含む、Spriteクラスの派生クラスである可能性があることを理解されたい。一部の実装において、コンピューティングシステムは、MovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナのステージ表示オブジェクトに対応するスタック命令を生成し得る。1つまたは複数の子表示オブジェクトは、Bitmapクラス、Shapeクラス、TextFieldクラス、TextLineクラス、およびStaticTextクラスなどのその他の表示オブジェクトクラスの表示オブジェクトを含み得る。1つまたは複数の子表示オブジェクトのうちの少なくとも1つは、第1の子表示オブジェクトである可能性があり、1つまたは複数の子表示オブジェクトのうちの少なくとも1つのその他の子表示オブジェクトは、第2の子表示オブジェクトである可能性がある。上で検討されたように、コンピューティングシステムは、MovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナの1つまたは複数の子表示オブジェクトの各々に関するクラスタイプを特定し得る。一部の実装において、コンピューティングシステムは、それぞれのフレーム表示オブジェクトに関して特定されたクラスタイプに基づいて1つまたは複数の子表示オブジェクトの各々のためのHTMLに基づく命令の組を生成し得る。たとえば、コンピューティングシステムは、上述の機能を使用してそれぞれのフレーム表示オブジェクトのためのHTMLに基づく命令の組を生成し得る。
一部の実装において、コンピューティングシステムは、MovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナのためのブレンド命令の組を生成し得る。一部の実装において、コンピューティングシステムは、MovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナの1つまたは複数の子表示オブジェクトからブレンドモードを特定し得る。一部の実装において、コンピューティングシステムは、1つもしくは複数の子表示オブジェクトの各々または1つもしくは複数の子表示オブジェクトの各々のためのHTMLに基づく命令の組を生成することに応じてあるいはHTMLに基づく命令の組を生成した後、ブレンドモードを特定し得る。ブレンドモードの例は、とりわけ、通常(BlendMode.NORMAL)、レイヤー(BlendMode.LAYER)、乗算(BlendMode.MULTIPLY)、スクリーン(BlendMode.SCREEN)、比較(明)(BlendMode.LIGHTEN)、比較(暗)(BlendMode.DARKEN)、差の絶対値(BlendMode.DIFFERENCE)、加算(BlendMode.ADD)、減算(BlendMode.SUBTRACT)、反転(BlendMode.INVERT)、アルファ(BlendMode.ALPHA)、消去(BlendMode.ERASE)、オーバーレイ(BlendMode.OVERLAY)、ハードライト(BlendMode.HARDLIGHT)、およびシェーダー(BlendMode.SHADER)を含み得る。一部の実装において、コンピューティングシステムは、MovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナから特定されたブレンドモードと同等のHTMLに基づくコードを含むようにブレンド命令の組を生成し得る。たとえば、ブレンドモードがMovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナに関連する2つの子表示オブジェクトにそれぞれ対応する視覚要素のうちの2つが反転され、乗算され、再び反転された色値を有することを指定する場合(たとえば、BlendMode.screen)、コンピューティングシステムは、「cur_canvas.globalCompositeOperation=screen」を含むようにブレンド命令の組を生成し得る。この例において、2つの子表示オブジェクトは、MovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナの子表示オブジェクトである可能性があり、コンピューティングシステムは、ブレンド命令の組を生成する前にHTMLに基づく命令の組を生成した可能性がある。
一部の実装において、コンピューティングシステムは、MovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナのためのクリップ命令の組を生成し得る。一部の実装において、コンピューティングシステムは、MovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナから子表示オブジェクトのうちの少なくとも2つを特定し得る。一部の実装においては、少なくとも3つの子表示オブジェクトが、第1の子表示オブジェクト、第2の子表示オブジェクト、および第3の子表示オブジェクトに対応する可能性がある。一部の実装において、コンピューティングシステムは、第1の子表示オブジェクトに対応する視覚要素が第2の子表示オブジェクトに対応する視覚要素を切り詰めるかまたはマスクすることを特定し得る。一部の実装において、コンピューティングシステムは、第1の子表示オブジェクトに対応する視覚要素が第2の子表示オブジェクトに対応する視覚要素を切り詰めるかまたはマスクすることを特定し得る。一部の実装において、コンピューティングシステムは、第3の子表示オブジェクトに対応する視覚要素が第2の子表示オブジェクトに対応する視覚要素の切り詰めを解除するかまたはマスクを解除することを特定し得る。一部の実装において、コンピューティングシステムは、第1の子表示オブジェクトに対応するクリップ開始命令の組を生成し得る。一部の実装において、コンピューティングシステムは、第2の子表示オブジェクトに対応するクリップ適用命令の組を生成し得る。一部の実装において、コンピューティングシステムは、第3の子表示オブジェクトに対応するクリップ終了命令の組を生成し得る。
一部の実装において、コンピューティングシステムは、MovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナの1つまたは複数の子表示オブジェクトからフィルタを特定し得る。一部の実装において、コンピューティングシステムは、1つもしくは複数の子表示オブジェクトの各々のためのHTMLに基づく命令の組を生成することに応じてあるいはHTMLに基づく命令の組を生成した後、フィルタを特定し得る。フィルタの例は、とりわけ、ベベル(BevelFilter)、ぼかし(BlurFilter)、ドロップシャドウ(DropShadowFilter)、グロー(GlowFilter)、グラデーションベベル(GrandientBevelFilter)、グラデーショングロー(GradientGlowFilter)、カラーマトリックス(ColorMatrixFilter)、畳み込み(ConvolutionFilter)、置き換え(DisplacementMapFilter)、およびシェーダー(ShaderFilter)を含み得る。一部の実装において、コンピューティングシステムは、MovieClip表示オブジェクトコンテナから特定されたフィルタと同等のHTMLに基づくコードを含むようにクリップ命令の組を生成し得る。一部の実装において、コンピューティングシステムは、MovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナから特定されたフィルタと同等のHTMLに基づくコードを特定するためにデータベースのHTMLに基づくコードのフィルタのライブラリにアクセスし得る。たとえば、MovieClip表示オブジェクトコンテナまたはSprite表示オブジェクトコンテナから特定されたフィルタがドロップシャドウフィルタである場合、コンピューティングシステムは、HTMLに基づくコード(たとえば、JavaScript(登録商標)、CSS、またはHTML)で書かれたドロップシャドウフィルタに関してデータベースを検索し得る。
一部の実装においては、表示オブジェクトのクラスタイプがVideoクラスであると特定することに応じて、コンピューティングシステムが、ドロービデオ命令の組を生成し得る。一部の実装において、コンピューティングシステムは、表示オブジェクトに対応するビデオデータを特定し得る。ビデオデータは、とりわけ、解像度、キューポイント、符号化の種類、フレーム情報、およびキーフレーム情報を含み得る。解像度は、表示オブジェクトに対応するビデオ視覚コンテンツの幅および高さを含み得る。キューポイントは、その他のアクションをトリガする時間またはフレームを含み得る。符号化の種類は、たとえば、ビデオフォーマット(たとえば、H.264、SPARK)およびコンテナ(たとえば、FLV、MP4、MP3、またはF4V)を含み得る。フレーム情報は、表示オブジェクトに対応するビデオ視覚コンテンツの各フレームのための視覚コンテンツデータを含み得る。キーフレーム情報は、ビデオ視覚コンテンツ内の特定のフレームの後のフレームの各々に関する処理データを含み得る。一部の実装において、コンピューティングシステムは、ドロービデオ命令の組に含める外部ビデオファイルまたはソースに関する位置を特定し得る。一部の実装において、コンピューティングシステムは、ドロービデオ命令の組に含める外部ビデオストリームソースに関する位置を特定し得る。一部の実装において、コンピューティングシステムは、ドロービデオ命令の組に含めるフレーム情報およびキー情報と同等のHTMLに基づくコードを生成し得る。たとえば、ビデオクラス表示オブジェクトがビデオ視覚コンテンツ内のフレームが補間によって滑らかにされることを指定する場合、コンピューティングシステムは、ビデオ表示オブジェクト内で指定された補間と同等のHTMLに基づくコードを検索し、ドロービデオ命令の組に含めるために、視覚コンテンツを処理するためのHTMLに基づくコードのライブラリにアクセスし得る。
コンピューティングシステムは、HTMLに基づく命令の組を挿入し得る(ブロック320)。コンピューティングシステムは、HTMLに基づく命令の組を命令リストに挿入し得る。命令リストは、任意のデータ構造である可能性がある。データ構造は、たとえば、とりわけ、配列、行列、グラフ、木、キュー、スタック、連結リスト、スキップリスト、および構造体である可能性がある。一部の実装において、コンピューティングシステムは、命令リストのスタックにHTMLに基づく命令の組を積み得る。一部の実装において、コンピューティングシステムは、HTMLに基づく命令の組を命令リストの最後に付け加えることができる。一部の実装において、コンピューティングシステムは、HTMLに基づく命令の組を命令リストの最後に付け加えるか、追加するか、またはそうでなければ入れることができる。一部の実装において、コンピューティングシステムは、子表示オブジェクトに対応するHTMLに基づく命令の別の組を命令リストに挿入した後、HTMLに基づく命令の組を命令リストに挿入する可能性がある。たとえば、コンピューティングシステムは、表示オブジェクトコンテナに対応するHTMLに基づく命令の第1の組を生成し、命令リストに挿入し、それから、左の子表示オブジェクトに対応するHTMLに基づく命令の第2の組を生成し、命令リストに挿入し、最後に、右の子表示オブジェクトに対応するHTMLに基づく命令の第3の組を生成し、命令リストに挿入することができる。
コンピューティングシステムは、表示リスト内にさらなる表示オブジェクトがあるかどうかを判定し得る(ブロック325)。たとえば、コンピューティングシステムは、現在の表示オブジェクトに関するインデックスが表示リストの長さであるかどうかを判定し得る。インデックスが表示リストの長さ未満である場合、コンピューティングデバイスは、表示リスト内にさらなる表示オブジェクトがあると判定し得る。
コンピューティングシステムは、表示リスト内の次の表示オブジェクトを特定し得る(ブロック330)。その後、コンピューティングシステムは、表示リスト内で特定されたその他の表示オブジェクトの各々に関して、ブロック310〜325で詳述された機能を繰り返すことができる。たとえば、表示リストの第1の表示オブジェクトのためのHTMLに基づく命令の組を命令リストに挿入した後、コンピューティングシステムは、第2の表示オブジェクトに関するクラスタイプを特定し、第2の表示オブジェクトに関する特定されたクラスタイプに基づいてHTMLに基づく命令の第2の組を生成し、HTMLに基づく命令の第2の組を命令リストに挿入し得る。そのとき、コンピューティングシステムは、表示リスト内にさらなる表示オブジェクトがあるかどうかを再び判定し、ブロック310〜325で詳述された機能を繰り返すことができる。
コンピューティングシステムは、実行ポリシーを生成し得る(ブロック335)。実行ポリシーは、トリガ条件に基づいて命令リスト内のHTMLに基づく命令の組を実行するためのアプリケーション(たとえば、クライアントデバイス上で実行されるウェブブラウザまたはプログラム)を指定し得る。一部の実装において、コンピューティングシステムは、HTMLに基づく命令の組を生成するのと同時に、HTMLに基づく命令の組を生成するのとは独立に、HTMLに基づく命令の組を生成する前に、またはHTMLに基づく命令の組を生成した後に実行ポリシーを生成し得る。一部の実装において、コンピューティングシステムは、命令リストを含むHTMLに基づくコンテンツアイテムに実行ポリシーを挿入し得る。一部の実装において、コンピューティングシステムは、命令リストに実行ポリシーを挿入し得る。一部の実装において、コンピューティングシステムは、実行ポリシーをデータベースに記憶し得る。
一部の実装において、トリガ条件は、アプリケーションがアイドルしていると判定することに応じて、アプリケーションがHTMLに基づく命令の組のうちの少なくとも1つを実行することを指定することができる。一部の実装において、トリガ条件は、アプリケーションがアイドルしていると判定した後、アプリケーションが所定の時間枠内にHTMLに基づく命令の組のうちの少なくとも1つを実行することを指定することができる。一部の実装において、トリガ条件は、アプリケーションが、HTMLに基づく命令の組のうちの少なくとも1つを実行するために残りのアイドル時間期間を監視し、アプリケーションが残りのアイドル時間期間が所定の閾値未満であることを検出するときにHTMLに基づく命令の組の実行を停止することを指定することができる。たとえば、命令リストがHTMLに基づく命令の第1の組およびHTMLに基づく命令の第2の組を含む場合、命令リストを使用して視覚コンテンツをレンダリングするアプリケーションは、その他のプロセス(たとえば、ウェブページ上のその他の要素)を実行している間にHTMLに基づく命令の第1の組を実行し得る。アプリケーションは、それから、その他のプロセスの実行を完了するまで待つことができる。アプリケーションは、そのアプリケーションがアイドルしていると判定すると、命令リスト内のHTMLに基づく命令の第2の組を実行し得る。この例において、アプリケーションは、「requestIdleCallback()」関数を呼び出すことによってアプリケーションがアイドルしていると判定し得る。それから、アプリケーションは、所定の時間枠の間か、またはアプリケーションがもはやアイドルしていないと再び判定するまでかのどちらかで、命令リスト内のHTMLに基づく命令の組の一部を実行し得る。
一部の実装において、トリガ条件は、HTMLに基づく命令の組のうちの少なくとも1つを実行する継続時間が予め定義された時間遅延を超えると判定することに応じて、アプリケーションがHTMLに基づく命令の組のうちの少なくとも1つを実行することを指定することができる。たとえば、命令リストがHTMLに基づく命令の第1の組およびHTMLに基づく命令の第2の組を含む場合、命令リストを使用して視覚コンテンツをレンダリングするアプリケーションは、第1の継続時間にHTMLに基づく命令の第1の組を実行し、その後、第2の継続時間にHTMLに基づく命令の第2の組を実行し得る。この例においては、第1の継続時間と第2の継続時間との両方が、「setTimeout()」関数を呼び出すことによって指定され得る。
コンピューティングシステムは、命令リストをデータベースに記憶し得る(ブロック340)。一部の実装において、コンピューティングシステムは、データ構造内の命令リストおよび実行ポリシーをデータベースに記憶し得る。一部の実装において、コンピューティングシステムは、表示リストをくまなく調べながら命令リストをデータベースに記憶し得る。たとえば、コンピューティングシステムは、HTMLに基づく命令の組の各々を生成するときに命令リストをデータベースに記憶し得る。一部の実装において、コンピューティングシステムは、HTMLに基づくコンテンツアイテムを生成するかまたはインスタンス化することができる。一部の実装において、コンピューティングシステムは、HTMLに基づくコンテンツアイテムに書き込むために命令リストのHTMLに基づく命令の組に基づいてHTMLコードを生成し得る。たとえば、コンピューティングシステムは、HTMLに基づくコンテンツアイテムに対応するHTMLファイルを生成し、HTMLに基づく命令の組に基づくHTMLコードをHTMLファイルに書き込み得る。
一部の実装において、コンピューティングシステムは、HTMLに基づく命令の組の各々に関する重みに基づいて命令リスト内のHTMLに基づく命令をグループ分けし得る。HTMLに基づく命令の組に関する重みの各々は、レンダリングの優先度に基づいて予め決定され得る。たとえば、ドローテキスト命令の組に関する重みは、ドローシェイプ命令の組に関する重みよりも大きく設定される可能性があり、視覚コンテンツをレンダリングする間にテキストを描画するより高い優先度を示す。一部の実装において、HTMLに基づく命令の組の各々に関する重みは、HTMLに基づく命令の1つまたは複数の組の実行をグループ分けするかまたはその他の方法で区分けするために使用され得る。たとえば、フィルタ命令の組に関する重みがブレンド命令の組と同じであるが、ドローテキスト命令の組とは異なる場合、命令を実行するコンピューティングデバイスは、ドローテキスト命令とは別にフィルタ命令およびブレンド命令を実行し得る。
一部の実装において、コンピューティングシステムは、コンテンツプロバイダコンピューティングシステム、コンテンツパブリッシャコンピューティングシステム、またはクライアントデバイスに命令リストおよび実行ポリシーを送信し得る。一部の実装において、コンピューティングシステムは、データベースの命令リストおよび実行ポリシーにアクセスし得る。一部の実装において、コンピューティングシステムは、コンテンツの要求を受信することに応じて、命令リストを送信し得る。一部の実装において、コンピューティングシステムは、情報リソース(たとえば、ウェブページ)上に提示するためのHTMLに基づくコンテンツアイテム内の命令リストを送信し得る。一部の実装において、HTMLに基づく命令は、コンピューティングシステム(たとえば、コンテンツプロバイダコンピューティングシステム、コンテンツパブリッシャコンピューティングシステム、またはクライアントデバイス)に実行ポリシーに従って視覚コンテンツをレンダリングするための命令リストを実行させ得る。たとえば、コンピューティングシステムは、クライアントデバイスからコンテンツの要求を受信することに応じて、命令リストを送信し得る。要求は、視覚コンテンツを含むウェブページをロードしながらクライアントデバイスによって送信された可能性がある。命令リストを受信した後、クライアントデバイスは、HTMLに基づく命令の組を実行することによって視覚コンテンツをレンダリングし得る。クライアントデバイスは、実行ポリシーに従ってHTMLに基づく命令の組を実行し得る。
図4は、一部の実装によって(システム110ならびにトランスコーダモジュール130およびポリシージェネレータモジュール135などのその構成要素を含む)本明細書において検討されたコンピュータシステムのいずれかを実装するために使用され得る例示的なコンピュータシステム400の全体的なアーキテクチャを示す。コンピュータシステム400は、表示するためにネットワーク105を介して情報を与えるために使用され得る。図4のコンピュータシステム400は、メモリ425、1つまたは複数の通信インターフェース405、ならびに1つまたは複数の出力デバイス410(たとえば、1つまたは複数のディスプレイユニット)および1つまたは複数の入力デバイス415に通信可能なように結合された1つまたは複数のプロセッサ420を含む。プロセッサ420は、データ処理システム110、またはとりわけトランスコーダモジュール130およびポリシージェネレータモジュール135などのシステム110のその他の構成要素に含まれる可能性がある。
図4のコンピュータシステム400において、メモリ425は、任意のコンピュータ可読ストレージ媒体を含む可能性があり、それぞれのシステムのための本明細書において説明された様々な機能を実装するためのプロセッサが実行可能な命令などのコンピュータ命令と、それらのシステムに関連する、それらのシステムによって生成される、または通信インターフェースもしくは入力デバイスを介して受信される任意のデータ(もしあれば)とを記憶する可能性がある。図1のシステム110を再び参照すると、データ処理システム110は、とりわけ、1つまたは複数のコンテンツユニットのインベントリの可用性、1つまたは複数のコンテンツユニットの予約に関連する情報を記憶するためのメモリ425を含む可能性がある。メモリ425は、データベース140を含む可能性がある。図4に示されたプロセッサは、メモリ425に記憶された命令を実行するために使用される可能性があり、そのようにする際に、命令の実行によって処理および/または生成された様々な情報をメモリから読むかまたはメモリに書き込む可能性もある。
図4に示されたコンピュータシステム400のプロセッサ420は、命令の実行によって様々な情報を送信または受信するための通信インターフェース405に通信可能なように結合されるかまたは通信インターフェース405を制御する可能性もある。たとえば、通信インターフェース405は、有線もしくはワイヤレスネットワーク、バス、またはその他の通信手段に結合される可能性があり、したがって、コンピュータシステム400がその他のデバイス(たとえば、その他のコンピュータシステム)に情報を送信するかまたはその他のデバイス(たとえば、その他のコンピュータシステム)から情報を受信することを可能にし得る。図1のシステムに明示されていないが、1つまたは複数の通信インターフェースが、システム400の構成要素の間の情報の流れを促進する。一部の実装において、通信インターフェースは、コンピュータシステム400の少なくとも一部の態様にウェブサイトをアクセスポータルとして提供するように(たとえば、様々なハードウェア構成要素またはソフトウェア構成要素によって)構成され得る。通信インターフェース405の例は、ユーザがデータ処理システム110と通信し得るユーザインターフェース(たとえば、ウェブページ)を含む。
図4に示されたコンピュータシステム400の出力デバイス410は、たとえば、命令の実行に関連して様々な情報が見られるかまたはその他の方法で知覚されることを可能にするために提供され得る。入力デバイス415は、たとえば、ユーザが命令の実行中に手動の調整を行うか、選択を行うか、データを入力するか、またはプロセッサと様々な方法のいずれかでインタラクションすることを可能にするために提供され得る。本明細書において検討された様々なシステムのために使用され得る通常のコンピュータシステムのアーキテクチャに関連する追加的な情報が、本明細書においてさらに提供される。
本明細書に記載の対象の実装および動作は、本明細書で開示された構造およびそれらの構造的均等物を含むデジタル電子回路、または有形の媒体上に具現化されたコンピュータソフトウェア、ファームウェア、もしくはハードウェア、またはそれらのうちの1つもしくは複数の組合せで実装され得る。本明細書に記載の対象の実装は、1つまたは複数のコンピュータプログラム、すなわち、データ処理装置による実行のために、またはデータ処理装置の動作を制御するためにコンピュータストレージ媒体上に符号化されたコンピュータプログラム命令の1つまたは複数のモジュールとして実装され得る。プログラム命令は、データ処理装置による実行のために好適な受信機装置に送信するために情報を符号化するように生成される人為的に生成された伝播信号、たとえば、機械によって生成された電気的信号、光学的信号、または電磁的信号上に符号化され得る。コンピュータストレージ媒体は、コンピュータ可読ストレージデバイス、コンピュータ可読ストレージ基板、ランダムもしくはシリアルアクセスメモリアレイもしくはデバイス、またはそれらのうちの1つもしくは複数の組合せであるか、あるいはそれらに含まれる可能性がある。さらに、コンピュータストレージ媒体は、伝播信号ではないが、人為的に生成された伝播信号に符号化されたコンピュータプログラム命令の送信元または送信先を含む可能性がある。コンピュータストレージ媒体は、1つまたは複数の別個の物理的構成要素または媒体(たとえば、複数のCD、ディスク、もしくはその他のストレージデバイス)であるか、またはそれらに含まれる可能性もある。
本明細書において開示された特徴は、インターネット接続性を(たとえば、ケーブル、衛星、電波、またはその他の信号によって受信される)より旧来型のテレビ番組のソースと統合するように構成された処理回路を含み得るスマートテレビモジュール(またはコネクテッドテレビモジュール(connected television module)、ハイブリッドテレビモジュールなど)上に実装される可能性がある。スマートテレビモジュールは、テレビセットに物理的に組み込まれる可能性があり、またはセットトップボックス、ブルーレイもしくはその他のデジタルメディアプレイヤー、ゲームコンソール、ホテルのテレビシステム、およびその他のコンパニオンデバイス(companion device)などの別個のデバイスを含む可能性がある。スマートテレビモジュールは、ウェブ、ローカルケーブルTVチャンネル、衛星TVチャンネルの、またはローカルのハードドライブに記憶されたビデオ、ムービー、写真、およびその他のコンテンツを視聴者が検索し、見つけることを可能にするように構成される可能性がある。セットトップボックス(STB)またはセットトップユニット(STU)は、チューナを含み、テレビセットおよび信号の外部ソースに接続する情報家電デバイスを含む可能性があり、信号をコンテンツに変換し、そして、そのコンテンツが、テレビのスクリーンまたはその他のディスプレイデバイス上に表示される。スマートテレビモジュールは、ウェブブラウザなどの複数の異なるアプリケーション、および複数のストリーミングメディアサービス、接続されたケーブルまたは衛星媒体のソース、その他のウェブ「チャンネル」などに関するアイコンを含むホーム画面または最上位の画面を提供するように構成され得る。スマートテレビモジュールは、ユーザに電子番組ガイドを提供するようにさらに構成され得る。スマートテレビモジュールに対するコンパニオンアプリケーション(companion application)は、利用可能な番組についての追加的な情報をユーザに提供すること、ユーザがスマートテレビモジュールを制御することを可能にすることなどのためにモバイルコンピューティングデバイス上で動作し得る可能性がある。代替的な実装において、特徴は、ラップトップコンピュータもしくはその他のパーソナルコンピュータ、スマートフォン、その他のモバイル電話、ハンドヘルドコンピュータ、タブレットPC、またはその他のコンピューティングデバイス上に実装される可能性がある。
本明細書に記載の動作は、1つもしくは複数のコンピュータ可読ストレージデバイスに記憶された、またはその他のソースから受信されたデータに対してデータ処理装置によって実行される動作として実装され得る。
用語「データ処理装置」、「データ処理システム」、「ユーザデバイス」、または「コンピューティングデバイス」は、例として、1つのプログラミング可能なプロセッサ、1台のコンピュータ、1つのシステムオンチップ、またはそれらの複数もしくは組合せを含む、データを処理するためのすべての種類の装置、デバイス、および機械を包含する。装置は、専用の論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含み得る。装置は、ハードウェアに加えて、問題にしているコンピュータプログラムのための実行環境を生成するコード、たとえば、プロセッサのファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、クロスプラットフォームランタイム環境、仮想マシン、またはそれらのうちの1つもしくは複数の組合せを構成するコードも含み得る。装置および実行環境は、ウェブサービスインフラストラクチャ、分散コンピューティングインフラストラクチャ、およびグリッドコンピューティングインフラストラクチャなどの、様々な異なるコンピューティングモデルインフラストラクチャを実現することができる。トランスコーダモジュール130およびポリシージェネレータモジュール135は、1つまたは複数のデータ処理装置、コンピューティングデバイス、またはプロセッサを含むかまたは共有する可能性がある。
コンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、スクリプト、またはコードとしても知られる)は、コンパイラ型言語もしくはインタープリタ型言語、宣言型言語もしくは手続き型言語を含む任意の形態のプログラミング言語で記述可能であり、独立型プログラムとしての形態、またはモジュール、コンポーネント、サブルーチン、オブジェクト、もしくはコンピューティング環境での使用に適したその他のユニットとしての形態を含む任意の形態で配置され得る。コンピュータプログラムは、ファイルシステム内のファイルに対応する可能性があるが、必ずそうであるとは限らない。プログラムは、その他のプログラムもしくはデータを保持するファイルの一部(たとえば、マークアップ言語のドキュメントに記憶された1つもしくは複数のスクリプト)、問題にしているプログラムに専用の単一のファイル、または複数の組織されたファイル(たとえば、1つもしくは複数のモジュール、サブプログラム、もしくはコードの一部を記憶するファイル)に記憶され得る。コンピュータプログラムは、1つのコンピュータ上で、または1つの場所に置かれるか、もしくは複数の場所に分散され、通信ネットワークによって相互に接続される複数のコンピュータ上で実行されるように配置され得る。
本明細書に記載のプロセスおよび論理フローは、入力データに対して演算を行い、出力を生成することによってアクションを行うために1つまたは複数のコンピュータプログラムを1つまたは複数のプログラミング可能なプロセッサが実行することによって実行され得る。また、プロセスおよび論理フローは、専用の論理回路、たとえば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実行される可能性があり、さらに、装置は、それらの専用の論理回路として実装される可能性がある。
コンピュータプログラムの実行に好適なプロセッサは、例として、汎用マイクロプロセッサと専用マイクロプロセッサとの両方、および任意の種類のデジタルコンピュータの任意の1つまたは複数のプロセッサを含む。概して、プロセッサは、読み出し専用メモリ、またはランダムアクセスメモリ、またはそれらの両方から命令およびデータを受け取る。コンピュータの必須の要素は、命令に従ってアクションを実行するためのプロセッサ、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。また、概してコンピュータは、データを記憶するための1つまたは複数の大容量ストレージデバイス、たとえば、磁気ディスク、光磁気ディスク、もしくは光ディスクを含むか、またはそれらの大容量ストレージデバイスからデータを受信するか、もしくはそれらの大容量ストレージデバイスにデータを転送するか、もしくはその両方を行うために動作可能なように結合される。しかし、コンピュータは、そのようなデバイスを備えていなくてもよい。さらに、たとえば、コンピュータは、別のデバイス、たとえば、モバイル電話、携帯情報端末(PDA)、モバイルオーディオもしくはビデオプレイヤー、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブルストレージデバイス(たとえば、ユニバーサルシリアルバス(USB)フラッシュドライブ)に組み込まれる可能性がある。コンピュータプログラム命令およびデータを記憶するのに適したデバイスは、例として、半導体メモリデバイス、たとえば、EPROM、EEPROM、およびフラッシュメモリデバイス、磁気ディスク、たとえば、内蔵ハードディスクまたはリムーバブルディスク、光磁気ディスク、ならびにCD-ROMディスクおよびDVD-ROMディスクを含む、すべての形態の不揮発性メモリ、媒体、およびメモリデバイスを含む。プロセッサおよびメモリは、専用の論理回路によって補完されるか、または専用の論理回路に組み込まれる可能性がある。
ユーザとのインタラクションを行うために、本明細書に記載の対象の実装は、ユーザに対して情報を表示するためのディスプレイデバイス、たとえば、CRT(ブラウン管)、プラズマ、またはLCD(液晶ディスプレイ)モニタ、ならびにユーザがコンピュータに入力を与えることができるキーボードおよびポインティングデバイス、たとえば、マウスまたはトラックボールを有するコンピュータ上に実装され得る。その他の種類のデバイスが、ユーザとのインタラクションを行うためにやはり使用される可能性があり、たとえば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、たとえば、視覚的フィードバック、聴覚的フィードバック、または触覚的フィードバックを含む可能性があり、ユーザからの入力は、音響、発話、または触覚による入力を含む任意の形態で受け取られる可能性がある。加えて、コンピュータは、ユーザによって使用されるデバイスに文書を送信し、そのデバイスから文書を受信することによって、たとえば、ウェブブラウザから受信された要求に応答してユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することによってユーザとインタラクションすることができる。
本明細書に記載の対象の実装は、バックエンドコンポーネントを、たとえば、データサーバとして含むか、またはミドルウェアコンポーネント、たとえば、アプリケーションサーバを含むか、またはフロントエンドコンポーネント、たとえば、それによってユーザが本明細書に記載の対象の実装とインタラクションすることができるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを含むか、または1つもしくは複数のそのようなバックエンドコンポーネント、ミドルウェアコンポーネント、もしくはフロントエンドコンポーネントの任意の組合せを含むコンピューティングシステムに実装され得る。システムの構成要素は、任意の形態または媒体のデジタルデータ通信、たとえば、通信ネットワークによって相互に接続され得る。通信ネットワークの例は、ローカルエリアネットワーク(「LAN」)および広域ネットワーク(「WAN」)、インターネットワーク(たとえば、インターネット)、ならびにピアツーピアネットワーク(たとえば、アドホックピアツーピアネットワーク)を含む。
システム400またはシステム110などのコンピューティングシステムは、クライアントおよびサーバを含み得る。たとえば、データ処理システム110は、1つまたは複数のデータセンターまたはサーバファーム内の1つまたは複数のサーバを含み得る。クライアントおよびサーバは、概して互いに離れており、通常は通信ネットワークを通じてインタラクションする。クライアントとサーバとの関係は、それぞれのコンピュータ上で実行されており、互いにクライアント-サーバの関係にあるコンピュータプログラムによって生じる。一部の実装において、サーバは、(たとえば、クライアントデバイスとインタラクションするユーザに対してデータを表示し、そのようなユーザからユーザ入力を受信する目的で)クライアントデバイスにデータ(たとえば、HTMLページ)を送信する。クライアントデバイスにおいて生成されたデータ(たとえば、ユーザのインタラクションの結果)が、サーバにおいてクライアントデバイスから受信される可能性がある。
本明細書は多くの特定の実装の詳細を含むが、これらは、いかなる発明の範囲または特許請求され得るものの範囲に対する限定とも見なされるべきでなく、むしろ、本明細書において説明されたシステムおよび方法の特定の実装に固有の特徴の説明と見なされるべきである。別々の実装に関連して本明細書に記載されている特定の特徴が、単一の実装で組み合わせて実装される可能性もある。反対に、単一の実装に関連して説明されている様々な特徴が、複数の実装に別々に、または任意の適切な部分的組合せで実装される可能性もある。さらに、特徴は、特定の組合せで動作するものとして上で説明されている可能性があり、最初にそのように主張されてさえいる可能性があるが、主張された組合せの1つまたは複数の特徴は、場合によっては組合せから削除される可能性があり、主張された組合せは、部分的組合せ、または部分的組合せの変形を対象とする可能性がある。
同様に、動作が図中に特定の順序で示されているが、これは、そのような動作が示された特定の順序でもしくは逐次的順序で実行されること、または所望の結果を達成するために示されたすべての動作が実行されることを必要とするものと理解されるべきでない。場合によっては、請求項に挙げられたアクションは、異なる順序で実行され、それでも所望の結果を達成し得る。加えて、添付の図面に示されたプロセスは、所望の結果を達成するために、必ずしも、示された特定の順序または逐次的順序である必要はない。
特定の状況においては、マルチタスクおよび並列処理が有利である可能性がある。さらに、上述の実装における様々なシステム構成要素の分割は、すべての実装においてそのような分割を必要とするものと理解されるべきでなく、説明されたプログラム構成要素およびシステムは、概して、単一のソフトウェア製品に一緒に統合されるか、または複数のソフトウェア製品にパッケージングされる可能性があることが理解されるべきである。たとえば、トランスコーダモジュール130およびポリシージェネレータモジュール135は、データ処理システム110の一部、単一のモジュール、1つもしくは複数の処理モジュールを有する論理デバイス、1つまたは複数のサーバ、または検索エンジンの一部である可能性がある。
今やいくつかの例示的な実装および実装を説明したので、以上は例示的であり、限定的でなく、例として提示されたことは明らかである。特に、本明細書において提示された例の多くは方法の行為またはシステムの要素の特定の組合せを含むが、それらの行為およびそれらの要素は、同じ目的を達成するためにその他の方法で組み合わされる可能性がある。1つの実装にのみ関連して検討された行為、要素、および特徴は、その他の実装または実装の同様の役割から除外されるように意図されていない。
本明細書において使用された言葉遣いおよび用語は、説明を目的としており、限定と見なされるべきでない。本明細書における「〜を含む(including)」、「〜を含む(comprising)」、「〜を有する」、「〜を含む(containing)」、「〜を含む(involving)」、「〜によって特徴付けられる(characterized by)」、「〜ことを特徴とする(characterized in that)」、およびこれらの変化形の使用は、その後に列挙された項目、それらの項目の均等物、および追加的な項目、ならびにその後に列挙された項目だけからなる代替的な実装を包含するように意図される。1つの実装において、本明細書において説明されたシステムおよび方法は、説明された要素、行為、または構成要素のうちの1つ、2つ以上のそれぞれの組合せ、またはすべてからなる。
本明細書において単数形で言及されたシステムおよび方法の実装または要素または行為へのすべての言及は、複数のこれらの要素を含む実装も包含する可能性があり、本明細書における任意の実装または要素または行為への複数形のすべての言及は、単一の要素のみを含む実装も包含する可能性がある。単数形または複数形の言及は、今開示されたシステムもしくは方法、それらの構成要素、行為、または要素を単一のまたは複数の構成に限定するように意図されていない。任意の情報、行為、または要素に基づいている任意の行為または要素への言及は、行為または要素が任意の情報、行為、または要素に少なくとも部分的に基づく実装を含み得る。
本明細書において開示された任意の実装は、任意のその他の実装と組み合わされる可能性があり、「実装」、「いくつかの実装」、「代替的な実装」、「様々な実装」、「1つの実装」との言及は、必ずしも相互排他的ではなく、実装に関連して説明された特定の特徴、構造、または特色が少なくとも1つの実装に含まれる可能性があることを示すように意図される。本明細書において使用されるそのような用語は、必ずしもすべてが同じ実装に言及していない。任意の実装は、本明細書において開示された態様および実装に合致する任意の方法で包括的または排他的に任意のその他の実装と組み合わされる可能性がある。
「または(or)」との言及は、「または(or)」を使用して記載された任意の用語が、記載された用語のうちの1つ、2つ以上、およびすべてのいずれかを示す可能性があるように包括的であると見なされ得る。
図面、詳細な説明、または任意の請求項の技術的な特徴が後に参照符号が付されている場合、参照番号は、図面、詳細な説明、および請求項の理解しやすさを高めることのみを目的として含められた。したがって、参照符号があることもないことも、いかなる請求項の要素の範囲に対しても限定的な効果をまったく持たない。
本明細書において説明されたシステムおよび方法は、それらの特徴を逸脱することなくその他の特定の形態で具現化される可能性がある。本明細書において提供された例はFLASHコンテンツをHTMLコンテンツに変換することに関するが、本明細書において説明されたシステムおよび方法は、その他の環境に適用され得る。上述の実装は、説明されたシステムおよび方法の限定ではなく、例示的である。したがって、本明細書において説明されたシステムおよび方法の範囲は、上述の説明ではなく添付の請求項によって示され、請求項の均等の意味および範囲内に入る変更は、それに包含される。