以下、図面を参照しながら発明の実施の形態を説明する。本発明は、ビット・ストリーム情報の表示と、該ビット・ストリーム情報に多重化されて与えられるプログラムの実行との同期を実現する仕組みを提供するものである。例えば、動画像ビット・ストリームとプログラムとが混在するマルチメディア・データが、放送により提供される場合あるいはディスクに蓄積されている場合を考える。
本実施形態に係るビット・ストリーム情報表示装置は、パケット化等されてビット・ストリーム情報に埋め込まれたプログラム・ユニットを、実行可能プログラム・ユニットとして保持する。実行可能プログラム・ユニットの実行の制御は、当該プログラム・ユニット保持後に入力されるビット・ストリーム情報中に埋め込まれた指示に基づいて行う。
本実施形態によれば、ビット・ストリームの再生とプログラムの実行とを、自然に同期させることができる。さらに、プログラム・ユニットに対する指示として、当該プログラム・ユニットの実行待機状態解除の指示や、プログラム・ユニットのコードのデータ蓄積メディアへの保存の指示を与えることが可能である。例えば、実行待機状態解除の指示を受けたプログラム・ユニットは、自分自身のコードを主記憶から消去する等して、ビット・ストリーム情報表示装置のリソースを解放する。これによって、ビット・ストリーム情報表示装置のリソースの消費を小さくすることが可能である。また、プログラム・ユニット・コードをデータ蓄積メディアに保存することにより、ビット・ストリーム情報表示装置のリソースを一時的に解放し、しかも後の必要に備えることができる。
このように、本実施形態によれば、ビット・ストリーム情報の再生とプログラムの同期とを自然に実現することができる。さらに、ビット・ストリーム情報表示装置の動作を、プログラムからきめ細かく制御することが可能である。
まず、本発明の第1の実施形態について説明する。図1に、本実施形態に係るビット・ストリーム情報表示装置の構成を示す。本実施形態では、例えば、放送受信装置のように放送により与えられるビット・ストリーム情報を表示する場合を例にとって説明する。
図1に示すように、本実施形態に係るビット・ストリーム情報表示装置20は、受信部22、プログラム・ユニット抽出部24、プログラム・ユニット格納部26、指示抽出部28、プログラム実行部30、データ合成部32、動画像再生部36を備えている。また、本ビット・ストリーム情報表示装置20には、表示部(表示装置)38が接続されている。なお、ここでは、図1に示されているディスク装置34は任意に設けるものとする。
受信部22は、ディジタル放送波を受信し、D/Aコンバートを行い、予め定められた適当な大きさのビット・ストリームをプログラム・ユニット抽出部24に転送する。プログラム・ユニット抽出部24は、受信部22が受信したビット・ストリームを次々と受け取ることになる。
プログラム・ユニット抽出部24は、プログラム・ユニットを抽出して、プログラム・ユニット格納部26に転送し、プログラム・ユニットに属しないビット列を指示抽出部28に次々と転送する。
プログラム・ユニット格納部26は、プログラム・ユニットを格納する。指示抽出部28は、プログラム・ユニットに対する指示を抽出して、プログラム実行部30に転送し、それ以外のビット列を動画像再生部36に次々と転送する。
プログラム実行部30は、指示抽出部30から転送されたプログラム・ユニットに対する指示に従い、該当するプログラム・ユニットを読み出して実行する。動画像再生部36は、指示抽出部28を介して転送された動画像ビット・ストリームをデコードするなどして再生する。例えば、動画像ビット・ストリームがMPEGの方式により符号化されている場合には、これに対応する手順でデコードする。
データ合成部32は、プログラム実行部30によるプログラム・ユニット実行に伴って生成された表示データを、動画像再生部36から出力された動画像に合成して出力する。合成する表示データが与えられなければ、動画像再生部36から出力された動画像を出力する。
表示部38は、入力された動画像を表示する。図2に、本実施形態のビット・ストリーム情報表示装置の基本動作を示す。受信部22によりディジタル放送波が受信され、プログラム・ユニット抽出部24にビット・ストリームが入力されると(ステップS11)、プログラム・ユニット抽出部24は、ビット・ストリームからプログラムユニットを抽出し(ステップS12)、これをプログラム・ユニット格納部26に転送する(ステップS13)。また、プログラム・ユニットに属しないビット列を指示抽出部28に次々と転送する(ステップS14)。
指示抽出部28にてビット・ストリームからプログラム・ユニットに対する指示が抽出されない間は、ビット・ストリームは動画像再生部36に転送され(ステップS20)、動画像再生部36にて再生され(ステップS22)、データ合成部32を介して(ステップS23)、表示部38に転送され(ステップS24)、画面表示される。
一方、指示抽出部28がビット・ストリームからプログラム・ユニットに対する指示を抽出すると(ステップS15)、以降の制御は並列に動作する二つの流れaとbとに別れる。bの流れは上記の動画情報ストリームの再生に関するものであるが、aの流れは後述するように該指示に従ってプログラム・ユニットのメソッドの実行に関するものである。また、プログラム・ユニットのメソッドの実行によって表示すべき画像データが生成された場合には、データ合成部32にて動画情報ストリームに合成された後に画面表示される。
図3に、放送局から放送されたディジタル放送波により伝えられる情報(受信部22からプログラム・ユニット抽出部24に送られる情報)の構成例を示す。図3において、同一時間帯に複数の情報が表現されているが、これは、それらの情報が時分割で多重化されて送られていることを意味している。図3(a)はビット・ストリーム情報(動画情報ストリーム)の帯域が可変の場合であり、図3(b)はビット・ストリーム情報(動画情報ストリーム)の帯域幅が一定の場合である。なお、図3中の100はプログラム・ユニットに対する指示を表す。
プログラム・ユニットとは、プログラム実行部30が実行するプログラムの一単位である。各プログラム・ユニットはプログラム・ユニット毎に一意に定められた名前(例えばユニット識別子)を有しているものとする。各プログラム・ユニットは少なくとも一つのメソッド(プログラム・ユニットの動作記述)を含んでおり、各メソッドは名前(例えばメソッド識別子)によって識別されるものとする。また、各プログラム・ユニットのビット列は、プログラム・ユニットの開始および終了を示すビット列に挟まれて送られて来るものとする。
図4に、プログラム・ユニット抽出部24の動作の一例を示す。受信部22からプログラム・ユニット抽出部24に送られるビット・ストリームは短いパケットに分割されており、各パケットは以下の三種類のビット列のいずれか一種類しかも唯一種類のみを含む。
・プログラム・ユニットIDとプログラム・ユニットのコードの一部
・プログラム・ユニットに対する指示
・動画像データであることを示すフラグと動画像データの一部
プログラム・ユニット抽出部24は、受け取ったビット・ストリームを検査し(ステップS31,S32)、プログラム・ユニットの開始・終了を示すビット列を検出することにより、プログラム・ユニットのコードおよびデータを抽出し、それをプログラム・ユニット格納部26に転送する(ステップS33,S34)。プログラム・ユニット抽出部24は、プログラム・ユニットに属しないビット列のみを、指示抽出部28に次々と転送する(ステップS33,S35)。
図5に、プログラム・ユニット格納部26の構成例を示す。また、図6に、プログラム・ユニット格納部26のプログラム・ユニット格納時の動作の一例を示す。
この構成例では、プログラム・ユニット格納部26は、プログラム・ユニット登録部261、バッファ262、プログラム・ユニット保持部263、プログラム・ユニット検索部264を有する。
プログラム・ユニット格納部26では、受け取ったパケットをプログラム・ユニット登録部261にてプログラム・ユニットIDによって分類し(ステップS41,S42)、到着順にバッファ262に格納して行く(ステップS43,S44)。プログラム・ユニットIDを含むパケットで、プログラム・ユニットのコードの終わりを示す記号を含むものが存在するが、プログラム・ユニット格納部26(のプログラム・ユニット登録部261)は、この記号を含むパケットを受け取ると(ステップS43)、当該プログラム・ユニットをバッファ262から読み出し(ステップS45)、プログラム・ユニット保持部263に転送して(ステップS46)、使用可能プログラム・ユニットとして保持する。
なお、同じ名前を持つプログラム・ユニットが繰り返し転送されてくる場合が存在する。この場合、プログラム・ユニット格納部26のプログラム・ユニット保持部263は、同じ名前を持つ新しいプログラム・ユニットで、以前に保持していたプログラム・ユニットを上書きする。あるいは、新しく転送されてきた同じ名前を持つプログラム・ユニットを無視する。従って、プログラム・ユニット格納部26に保持されているプログラム・ユニットは、名前に関して一意的に定まる。
図7に、指示抽出部28の動作の一例を示す。指示抽出部28は、受け取ったビット・ストリームを調べ(ステップS51,S52)、プログラム・ユニットに対する指示が含まれているならば(ステップS53)、それをプログラム実行部30に転送する(ステップS54)。指示抽出部28は、それ以外のビット・ストリームを動画像再生部36に次々と転送する(ステップS53,S55)。
プログラム・ユニットに対する指示は、受信済みのプログラム・ユニットの名前、そのプログラム・ユニットのメソッド、およびメソッドに対する引数を含んでいる。引数は空であって良い。
プログラム実行部30は、プログラム・ユニットに対する指示を受け取ると(ステップS16)、該当するプログラム・ユニットのコードを、プログラム・ユニット格納部26から読み出し(ステップS17)、与えられた引数で指定されたメソッドを実行する(ステップS18)。
メソッドの実行により得られる機能としては、種々のものが考えられる。例えば、ビット・ストリーム情報の表示に関する制御を行うもの、ビット・ストリーム情報の記録に関する制御を行うもの、プログラム・ユニットの扱いに関するものなど、ユーザ・インタフェースに関する機能を提供するものなど、種々のものが考えられる。
図8に、プログラム実行部30がプログラム・ユニット格納部26に対してプログラム・ユニットの読み出しを要求する際の、プログラム・ユニット格納部26側の動作の一例を示す。
図8では、プログラム実行部30は、プログラムユニット格納部26に対してプログラム・ユニットIDを転送することによって、当該プログラム・ユニットの読み出しを要求する(ステップS61)。
要求を受けたプログラム・ユニット格納部26では、プログラム・ユニット検索部264がプログラム・ユニット保持部263から当該IDを有するプログラム・ユニットを検索する(ステップS62)。該当するプログラム・ユニットが存在する場合(ステップS63)、プログラム・ユニット保持部263からプログラム・ユニット検索部264へ当該プログラム・ユニットのコードを転送し(ステップS64)、これをプログラム・ユニット検索部264からプログラム実行部30へ転送する。一方、該当するプログラム・ユニットが存在しない場合(ステップS63)、プログラム実行部30にプログラム・ユニット不存在を通知する(ステップS66)。
なお、該当するプログラム・ユニットが存在せず、プログラム実行部30がプログラム・ユニット不存在の通知を受け取った場合、プログラム実行部30は、当該プログラム・ユニットに関する指示を実行しない。
例えば、ビット・ストリーム情報を途中から受信し始めた場合(例えば番組を途中から見始めた場合)に、該当するプログラム・ユニットの送信が済んでしまっていたようなケースが考えられ、このようなケースにおいて上記のようにすることにより、システムが途中で異常な状態に陥ることを防ぐことができる。
また、上記のようなケースを想定して、同じプログラム・ユニットを複数回送信するようにしても効果的である。ところで、プログラム・ユニット実行に伴って、画面への画像やテキストの表示が必要な場合がある。この場合、表示データは、データ合成部32に送られ(ステップS19)、動画像再生部36から出力される動画像と合成される(ステップS23)。例えば、プログラム実行部30からデータ合成部32にはテキストと当該テキストの表示位置とが送られる。
データ合成部32は、画面上で当該テキストが指定された表示位置にオーバーレイ表示されるようにデータ合成する(ステップS23)。プログラム・ユニットが、そのデータ領域に動画像ビット・ストリームを含んでいる場合も想定可能である。この場合、図1において、プログラム実行部30とデータ合成部32との間に、動画像再生部が介在することになる(動画像再生部を設けることになる)。この動画像再生部が、プログラム実行部30から送られてきた動画像ビット・ストリームを表示可能な動画像に変換して、データ合成部32に送る。
データ合成部32の出力は表示部38に転送され(ステップS24)、画面表示される。以上のような構成と各部の動作によって、動画像とプログラム・ユニットの実行との同期を実現することができる。
さて、プログラム・ユニットに対する指示は、メソッドの実行であるから、プログラム実行部30は様々な動作が可能である。例えば、プログラム・ユニットに対する指示として、プログラム・ユニットの消滅を指示することも可能である。その場合、プログラム実行部30は、プログラム・ユニット格納部26に対して、プログラム・ユニットIDと消滅コマンドを転送する。プログラム・ユニット格納部26のプログラム・ユニット検索部264は、プログラム・ユニット保持部263を検索し、当該IDを有するプログラム・ユニットのコードを削除する。これによって、使用済みのプログラム・ユニットを消去し、プログラム・ユニット格納部26(のプログラム・ユニット保持部263)のリソースを節約することができる。
なお、プログラム・ユニットの消去は、必ずしも消去メソッドの実行にのみ因る訳ではない。プログラム・ユニットは、自分自身の寿命を持つことも可能である。そのようなプログラム・ユニットは、プログラム実行部30内のスレッド(並列実行されるプログラム単位)またはタスク(定期的に実行されるプログラム単位)として、実行されている。プログラム・ユニットは一定時間毎に時刻をチェックし、予め定められた日時を過ぎた場合、終了処理を行って、自分自身のリソースをシステムに解放する。
プログラム・ユニットに対する指示として、当該プログラム・ユニットのコードの保存を指示する場合もある。プログラム実行部30は、プログラム・ユニット格納部26からプログラム・ユニットのコードを読み出し、プログラム・ユニットの保存メソッドを実行する。保存メソッドは、プログラム・ユニットのコードをディスク装置34に格納する(図1の丸数字の8)。
プログラム・ユニット・コードのディスク装置34からの読み出しは、プログラム・ユニット格納部26からの読み出しに準じた動作で行われる。すなわち、プログラム実行部30は、指示抽出部28からプログラム・ユニットに対する指示を受け取ると、当該指示に示されるプログラム・ユニットのコードをプログラム・ユニット格納部26から取得しようとする。当該プログラム・ユニットが既にプログラム・ユニット格納部26から消去されている場合、プログラム・ユニット格納部26は、プログラム実行部30にプログラム・ユニットが見つからない旨を通知する。その場合、プログラム実行部30は、ディスク装置34を検索して、当該プログラム・ユニットのコードを見出し、読み出す(図1の丸数字の6´)。
プログラム・ユニットに対する指示によって、本ビット・ストリーム情報表示装置20の各部の動作を指示することも可能である。一例として、ビット・ストリーム情報のディスク装置34への保存を挙げる。プログラム・ユニット格納部26は、動画像再生部26に対する制御用のプログラム・ユニットのコードを、常に格納しているプログラム・ユニットの一つとして、保持しているものとする。当該プログラム・ユニットは、ビット・ストリーム・データのディスク装置34への保存開始メソッドを有しているものと仮定する。
ビット・ストリーム中のパケットに、当該メソッドの呼び出しが含まれていると、プログラム実行部30は、前述したように、当該プログラム・ユニットをプログラム・ユニット格納部26から読み込み、保存開始メソッドを実行する。その結果、プログラム実行部30から動画像再生部36にビット・ストリーム情報保存開始指示が発行される(図1の丸数字の9)。動画像再生部36は、当該指示を受け取ると、入力されるビット・ストリームを次々とディスク装置34に書き込む(図1の丸数字の12)。
この書き込みを中止する際の動作も同様である。このような方法によって、例えば、デジタル放送波を用いて受信端末の録画機能を操作することも可能である。
デジタル蓄積メディア(例えばDVD)に含まれるビット・ストリーム情報から当該メディアの再生装置を制御する一例を挙げる。プログラム・ユニット格納部26は、常に格納しているプログラム・ユニットの一つとして、再生装置の制御プログラムを保持しているものとする。制御プログラムは、その一つのメソッドとしてデータ・ブロックのスキップ機能を有すると共に、スキップ機能無効化機能およびスキップ機能有効化機能をメソッドとして有しているものと仮定する。メディアに格納されたビット・ストリームは、利用者に視聴の確実を期したい情報(広告や著作権に関する注意等)を記録したデータ・ブロックを含んでいるものとする。
図9のこのような場合における再生装置の動作の一例を示す。当該データ・ブロックの直前に、制御プログラムのスキップ無効化メソッドを呼び出す指示が含まれていると、この指示は指示抽出部28からプログラム実行部30に転送され(ステップS71,S72)、プログラム実行部30では、制御プログラムをプログラム・ユニット格納部26から読み出し(ステップS73)、スキップ機能無効化メソッドを実行する(ステップS74)。当該データ・ブロックを再生(ステップS75)した後、データ・ブロックの直後に記録されたスキップ機能有効化メソッド呼び出し指示によって、スキップ機能は再び有効になる(ステップS76〜S79)。
このようにして、視聴の確実を期したい情報を、利用者の操作によってスキップされることなく再生することが可能となる。なお、本実施形態では、ディジタル放送波を受信するものとしたが、本発明は有線放送により情報を受信する場合および記録媒体から情報を読み取る場合にも適用可能である。
また、以上の説明では、本ビット・ストリーム情報表示装置の外部に表示部(表示装置)38を接続するものとして説明したが、表示部38を含めてビット・ストリーム情報表示装置として構成してもよい。
次に、第2の実施形態について説明する。第1の実施形態では、プログラム実行部30がプログラム・ユニットのコードを取得するのは、ビット・ストリーム中から(つまりプログラム・ユニット格納部26から)またはディスク装置34からであった。本実施形態は、プログラム・ユニットのコードを、ネットワークを介して取得できるようにしたものである。
図10に、本実施形態に係るビット・ストリーム情報表示装置の構成を示す。第1の実施形態では、ディジタル放送波を受信する場合を主として説明したが、本実施形態では、例えば、DVD等のディスク・プレーヤ装置のように記録媒体から情報を読み取る場合を例にとって説明する。
図10に示すように、本実施形態に係るビット・ストリーム情報表示装置120は、読み取り装置123、プログラム・ユニット抽出部124、プログラム・ユニット格納部126、指示抽出部128、プログラム実行部130、データ合成部132、ネットワーク・アクセス装置135、動画像再生部136、時計137を備えている。また、本ビット・ストリーム情報表示装置120には、表示部138が接続されている。
本実施形態のビット・ストリーム情報表示装置は、インターネット経由でプログラム・ユニットのコードを取得可能とした場合の構成であり、ネットワーク・アクセス装置135および時計137以外の基本的な構成は図1と同じである。つまり、本実施形態のプログラム・ユニット抽出部124、プログラム・ユニット格納部126、指示抽出部128、プログラム実行部130、データ合成部132、動画像再生部136、表示部138は、それぞれ第1の実施形態のプログラム・ユニット抽出部24、プログラム・ユニット格納部26、指示抽出部28、プログラム実行部30、データ合成部32、動画像再生部36、表示部38と同様の基本機能を持つ。また、図2に、本実施形態のビット・ストリーム情報表示装置の動作も、基本的には第1の実施形態と同様である。
第1の実施形態では受信部22を備えている代わりに、本実施形態ではディスク装置100から情報を読み取る読み取り装置123を備えているが、プログラム・ユニット抽出部124に与えられる情報は、第1の実施形態においてプログラム・ユニット抽出部24に与えられる情報と同様である。
以下では、第1の実施形態と相違する点を主として説明する。プログラム・ユニット格納部126には、ビット・ストリーム情報から読み取られたプログラム・ユニットAが格納されているものとする。プログラム・ユニットAは広告情報の一部を保持しており、プログラム・ユニットAの表示メソッドを実行すると、時計137から日時を取得し、時刻が午前であるか午後であるかによって異なったテキストを広告の中に表示するものとする。また、プログラム・ユニットAは、プログラム・ユニットA自身の有効期限情報を保持しているものとする。また、プログラム・ユニットAは、有効期限が過ぎた場合に、プログラム・ユニットAをアップデートする際に必要となる情報も保持している。すなわち、プログラム・ユニットAの新しいバージョンを提供するサーバーの名前(あるいはアドレス情報)等を保持しているものとする。
また、プログラム・ユニット格納部126には、ネットワーク・アクセス機能を実現するプログラム・ユニットが常駐しているものとする。図11に、本実施形態のビット・ストリーム情報表示装置において、広告情報をインターネット経由でアップデートする動作の一例を示す。図11には、指示抽出部128がプログラム・ユニットAの表示メソッドに対する呼び出し指示をプログラム実行部130に送って以降の動作が示されている。ネットワーク・アクセスに要する時間を考慮し、プログラム・ユニットAの有効期限の確認は、プログラム・ユニットAの表示メソッド呼び出しの充分前に行われるものとする。
指示抽出部128によりビット・ストリームからプログラム・ユニットAの表示メソッドに対する呼び出し指示が抽出されると、この指示はプログラム実行部130に転送される(ステップS81)。
プログラム実行部130は、プログラム・ユニットAをロードし(ステップS82)、プログラム・ユニットAの有効期限確認メソッドを実行して(ステップS83)、時計137から日時を取得しする(ステップS84)。
日時がプログラム・ユニットAの有効期限前でないならば(ステップS85)、プログラム実行部130は、ネットワーク・アクセス装置135に所定のサーバーへのアクセスを指示する(ステップS86)。ネットワーク・アクセス装置135は、この指示に応答して指定されたサーバーからプログラム・ユニットAを取得し(ステップS87)、これをプログラム実行部130に転送する(ステップS88)。さらに、プログラム・ユニットAは、プログラム実行部130からプログラム・ユニット格納部126に転送され格納される(ステップS89)。なお、日時がプログラム・ユニットAの有効期限前ならば(ステップS85)、上記のようなプログラム・ユニットAのアップデートの処理は不要である。
その後、指示抽出部128によりビット・ストリームからプログラム・ユニットAの表示メソッドに対する呼び出し指示が抽出され、これがプログラム実行部130に転送されると(ステップS90)、プログラム実行部130はプログラム・ユニット格納部126からプログラム・ユニットAをロードし、プログラム・ユニットAの表示メソッドを実行する(ステップS91)。
なお、本実施形態では、記録媒体から情報を読み取るものとしたが、本発明は無線放送や有線放送により情報を受信する場合および場合にも適用可能である。また、以上の説明では、本ビット・ストリーム情報表示装置の外部に表示部(表示装置)38を接続するものとして説明したが、表示部38を含めてビット・ストリーム情報表示装置として構成してもよい。
次に、第3の実施形態について説明する。本実施形態では、第1、第2の実施形態のビット・ストリーム情報表示装置によって表示されるビット・ストリーム情報を作成・編集するビット・ストリーム情報作成装置について説明する。
図12は、ビット・ストリーム情報作成画面の一例である。この例では、動画像ストリームの特定のフレームで動画視聴者にメッセージを表示する等のイベントを追加する編集作業を行っている。編集者は動画を再生し、イベントを開始するフレーム101で再生を一時停止する。図12で、手前に表示されているのは、プログラム作成画面102である。編集者は、プログラム作成画面120上で、発生させるイベントを記述する。
上記の例は、プログラム・ユニットを直接作成する例であるが、よりビジュアルな編集作業も可能である。例えば、予め別のツールによってCG動画を作成しておく。この場合、先の例と同様、イベント発生フレーム(すなわち、CG動画再生開始フレーム)101で再生を一時停止し、CG動画を格納したファイルを、この編集画面上にドラッグ・アンド・ドロップすることで、例えば図13に示されるようにCG動画の初期状態が画面上にオーバーラップして表示される(図13の右下部分の画像)、などのインタフェースが考えられる。
上記の操作等により作成・編集されたデータは、ファイルに格納される。このファイルは、例えば、図14に示すような形式を持っている。図14(a)は、動画像ストリームに、プログラム・ユニットに対する指示(プログラム・ユニットのメソッド呼び出し)300が埋め込まれたデータであり、図14(b)は、使用されるプログラム・ユニットからなるデータである。あるいは、図14(a)のデータ中にプログラム・ユニットが1または複数ずつ散在的に挿入される場合もある。
本実施形態に係るビット・ストリーム情報作成装置は、上記のようなファイルに格納された中間的なデータを、リリース・配布可能な状態にするために、図3に示すような形式に変換するものである。
図15に、本実施形態に係るビット・ストリーム情報作成装置(のデータ変換機能の部分)の構成を示す。また、図16に、本実施形態のビット・ストリーム情報作成装置の動作の一例を示す。
図15に示すように、本ビット・ストリーム情報作成装置は、プログラム・ユニット抽出部212、プログラム・ユニット使用状態抽出部214、配置決定部216、プログラム・ユニット・データベース218、記録部220を備えている。上記にて例示したようなファイルは、ディスク装置200に格納されているものとする。
まず、図14(a)のデータ中にプログラム・ユニットが1または複数ずつ散在的に挿入された形式が取られる場合には、プログラム・ユニット抽出部212は、ディスク装置200上のファイルから、使用されているプログラム・ユニットを取り出し、プログラム・ユニット・データベース218に登録する(ステップS101,S102)。図14(b)のように使用されるプログラム・ユニットがまとめられているような形式が取られる場合には、プログラム・ユニット抽出部212は、ディスク装置200上のファイルから、そのプログラム・ユニット群を取り出し、プログラム・ユニット・データベース218に登録する(ステップS102)。
プログラム・ユニットを取り除いたデータあるいは図14(a)のデータは、次段のプログラム・ユニット使用状態抽出部214に転送される(ステップS103)。プログラム・ユニット使用状態抽出部214は、プログラム・ユニットのメソッド呼び出しを抽出し(ステップS104)、そのビット・ストリーム・データ上の位置(例えば、先頭からの時刻)をプログラム・ユニット・データベース218に登録する(ステップS105)。
以上の動作により、プログラム・ユニット・データベース218には、ファイル中で使用されている全てのプログラム・ユニットと、各メソッド呼び出しの位置が記録される。
プログラム・ユニット使用状態抽出部214は、残りのデータ(すなわち、動画ビット・ストリームのデータ)をディスク装置200に記録する(ステップS106)。
次いで、配置決定部216が、プログラム・ユニット・データベースを参照して、データの配置を決定する(ステップS107,S108)。つまり、プログラム・ユニットやメソッド呼び出しを適当なサイズのパケットに分割して動画像ストリームのパケットにマージする、その仕方を決定する。
以下、配置決定アルゴリズムについて説明する。仮に帯域幅を1000とする。すなわち、単位時間当り最大1000パケットを伝送可能とする(パケット・サイズは一定と仮定する)。また、動画ストリームデータは帯域幅を固定で900と仮定する。プログラム・ユニット・データベースに登録されているプログラム・ユニットを添え字jの範囲が1からn迄の配列{Pj }j=1 n とする。また、プログラム・ユニットPj が最初に呼び出される位置をT(Pj )、最後の呼び出し位置をt(Pj )とし、Pj の(パケット単位で計った)サイズをS(Pj )とする。
図17に、配置決定部216の動作の一例を示す。配置決定部216は、添え字kの範囲が1からTe 迄の正整数の配列{R(k)}k=1 Teを保持している。ただし、Te は動画ストリームの終了位置である。配列の各要素は、動画ストリームの帯域幅900で初期化されているものとする。
ステップS111にて配列{R(k)}を900で初期化し、ステップS112で{Pj }をS(Pj )の降順にソートし、ステップS113でソートの結果を{Oj }として格納し、ステップS114でj=1と設定する。
そして、ステップS125でj≦nならばステップS126に移り、j≦nでないならば終了する。ステップS126に移ったならば、k=1とし、ステップS115にてk≦T{Oj }ならばステップS116に移り、k≦T{Oj }でないならばステップS119に移る。
ステップS116に移った場合、R(k)+S(Oj )/T{Oj }≦1000ならばステップS117に移り、kを1増加して、ステップS115に戻る。ステップS116にてR(k)+S(Oj )/T{Oj }≦1000でないならば、ステップS118に移り、Oj は先頭に配置することを決定して、ステップS123に移る。
ステップS115にてNoとなりテップS119に移った場合、k=1とし、ステップS120にてk≦T{Oj }ならばステップS121に移り、R(k)をS(Oj )/T{Oj }増加し、ステップS122でkを1増加して、ステップS120に戻る。
ステップS120にてk≦T{Oj }でないならば、ステップS123に移る。ステップS116にてNoとなったことによりステップS118を経て、またはステップS120にてNoとなったことにより、ステップS123に移った場合、t(Oj )の直後の位置にOj の消去メソッド呼び出しを追加することを決定し、ステップS124にてjを1増加し、ステップS125に戻る。
このようにして図17のステップS111〜S114の処理を行い、ステップS125,S126,S115〜S124の繰り返し処理を、ステップS125でNoになるまで実行することにより、図18に示すような配置が得られる。
次に、先頭への配置が決定されたプログラム・ユニット(図18ではプログラム・ユニットO3 とプログラム・ユニットO5 )の配置を定める。まず、先頭でプログラム・ユニットのパケットのみを記録する(単位時間で計った)時間を定める。これは、充分大きく定められている。然らば、プログラム・ユニットO3とプログラム・ユニットO5 のパケットを先頭に均等に配置する。
図19に配置決定部216によって定められる配置を示す。なお、上述の配置決定部216の動作は一例であり、例えば、プログラム・ユニットのメソッドの最後の呼び出し指示迄、プログラム・ユニットを動画ストリームに多重化して、繰り返し記録するような配置決定を行うこともできる。このような配置は、特に記録されたビット・ストリームを、放送などの手段で配布する際には、有効である。放送の場合、視聴者が番組の途中から視聴する場合が考えられる。繰り返しプログラム・ユニットを送信することで、途中から視聴を開始した利用者も必要なプログラム・ユニットを取得することが可能になる。
さて、配置決定部216は、決定した配置指示を記録部220に転送する(ステップS109)。記録部220は、配置決定部216の決定した配置指示に基づき、プログラム・ユニット、その呼び出し指示、動画ストリームを記録する(ステップS110)。具体的には、例えば、図19に定められた比率で各時刻のパケットを混合し、ディスク装置200に記録する。
ところで、必要なプログラム・ユニットの送信は、図18に例示するように、そのプログラム・ユニットが最初に呼び出される位置(対応するプログラム・ユニットに対する指示が最初に多重化された位置)より所定時間τ1 だけ前の位置以前に完了するように、配置決定するのが望ましい。言い換えると、プログラム・ユニットの最後尾の位置と、そのプログラム・ユニットが最初に呼び出される位置との間に所定時間τ1 以上の余裕を設けるようにプログラム・ユニットを配置決定するのが望ましい。これは、プログラム・ユニットのデータがシステム内に取り込まれてから、実行に供されることが可能になるまでのタイムラグを考慮してのことである。
このタイムラグは、システムの持つCPUの動作速度や、プログラム・ユニットのデータ長等の複数の要素に依存して変化するものである。そこで、所定時間τ1 については、予め一定値に定めておく方法、プログラム・ユニットのデータ長のみをパラメータとして考慮した所定の数式あるいはテーブルによりその都度設定する方法等が考えられる。
あるプログラム・ユニットが最後に呼び出される位置と、その直後に挿入する消去メソッド呼び出しの位置との間の時間τ2 については、特に制約はない。あるプログラム・ユニットの有効範囲は、例えば、プログラム・ユニットの最後尾からτ1 経過した時点からそのプログラム・ユニットが最後に呼び出される時点までの範囲とすることができる。例えば、この範囲内であれば、図18のように記録完了したデータに対して、このプログラム・ユニットに対する指示を新たに挿入し得る場合がある。また、例えば、この範囲内に、同じプログラム・ユニットを挿入すれば(ただし、それが可能な場合)、途中からビット・ストリームを入力し始めた場合でも、プログラム・ユニットを得ることができる。
なお、以上の各機能は、全部またはその一部をソフトウェアとしても実現可能である。また、上記した各手順あるいは手段をコンピュータに実行させるためのプログラムを記録した機械読取り可能な媒体として実施することもできる。本発明は、上述した実施の形態に限定されるものではなく、その技術的範囲において種々変形して実施することができる。