(57)【要約】【課題】必要なプログラムを一部分だけ受信した状態でも実行開始することができるプログラム受信装置を提供する。【解決手段】プログラム送信装置から１つのプログラムが複数の部分プログラムに分割されて送られた場合に、必要な部分プログラムを受信していれば当該部分プログラムを実行をし、当該部分プログラムから他の部分プログラムへの実行継続が必要となることを検出した場合に、当該他の部分プログラムを受信していれば当該他の部分プログラムを実行する。【選択図】図１５
2008135037.tif 000002
【特許請求の範囲】
【請求項１】
複数の部分プログラムに分割されたプログラムであって、前記複数の部分プログラムに含まれる一の部分プログラムは、前記一の部分プログラムの実行に続けて実行すべき部分プログラムが前記複数の部分プログラムの中の何れであるかを示す次実行部分情報を含むプログラムを受信して当該プログラムを実行するプログラム受信実行装置であって、
プログラム記憶領域を有する記憶手段と、
前記複数の部分プログラムに含まれる部分プログラムを受信して前記記憶手段に記憶する受信手段と、
前記記憶手段に記憶している部分プログラムの実行を制御する実行制御手段とを備え、
前記一の部分プログラムに含まれる次実行部分情報は前記一の部分プログラムに続けて実行すべき部分プログラムを識別するための識別子を含み、
前記受信手段は、前記識別子を用いて前記続けて実行すべき部分プログラムを受信信号から分離抽出して前記記憶手段に記憶する分離抽出部を有し、
前記実行制御手段は、
前記続けて実行すべき部分プログラムが前記記憶手段に記憶されているかを判断するプログラム存否判断部と、
実行中の前記一の部分プログラムに続けて実行すべき部分プログラムを前記一の部分プログラムに含まれる次実行部分情報を参照して特定して前記続けて実行すべき部分プログラムが前記記憶手段に記憶されているかをプログラム存否判断部に判断させ、前記プログラム存否判断部により前記続けて実行すべき部分プログラムが記憶されていないと判断された場合には、前記プログラム存否判断部により前記続けて実行すべき部分プログラムが記憶されていると判断される時点まで前記続けて実行すべき部分プログラムの実行を待機するプログラム準備部と、
前記プログラム存否判断部により前記記憶手段に前記続けて実行すべき部分プログラムが記憶されていないと判断された場合には前記分離抽出部に前記続けて実行すべき部分プログラムを分離抽出して前記記憶手段に記憶するよう指示するプログラム抽出指示部と、
前記プログラム準備部を起動するとともに、前記プログラム準備部により準備された部分プログラムの命令を実行するプログラム実行部とを備え、
前記プログラム受信実行装置はさらに、
前記部分プログラムの実行に際して発生するエラーと当該エラーに対応して実行すべきとなるエラー処理を示すエラーコードとの対応表を保持するエラー処理情報管理手段と、
前記エラーの発生に応じて前記エラー処理情報管理手段から実行すべきエラー処理を示すエラーコードを得て、当該エラーコードが部分プログラムを起動すべき旨を示すものであれば、前記分離抽出部に当該エラーコードが示す部分プログラムを分離抽出して前記記憶手段に格納するよう指示するエラー処理手段とを備える
ことを特徴とするプログラム受信実行装置。
【請求項２】
複数の部分プログラムに分割されたプログラムであって、前記複数の部分プログラムに含まれる一の部分プログラムは、前記一の部分プログラムの実行に続けて実行すべき部分プログラムが前記複数の部分プログラムの中の何れであるかを示す次実行部分情報を含むプログラムを受信して当該プログラムを実行するプログラム受信実行装置であって、
プログラム記憶領域を有する記憶手段と、
前記複数の部分プログラムに含まれる部分プログラムを受信して前記記憶手段に記憶する受信手段と、
前記記憶手段に記憶している部分プログラムの実行を制御する実行制御手段とを備え、
前記一の部分プログラムに含まれる次実行部分情報は前記一の部分プログラムに続けて実行すべき部分プログラムを識別するための識別子を含み、
前記受信手段は、前記識別子を用いて前記続けて実行すべき部分プログラムを受信信号から分離抽出して前記記憶手段に記憶する分離抽出部を有し、
前記実行制御手段は、
前記続けて実行すべき部分プログラムが前記記憶手段に記憶されているかを判断するプログラム存否判断部と、
実行中の前記一の部分プログラムに続けて実行すべき部分プログラムを前記一の部分プログラムに含まれる次実行部分情報を参照して特定して前記続けて実行すべき部分プログラムが前記記憶手段に記憶されているかをプログラム存否判断部に判断させ、前記プログラム存否判断部により前記続けて実行すべき部分プログラムが記憶されていないと判断された場合には、前記プログラム存否判断部により前記続けて実行すべき部分プログラムが記憶されていると判断される時点まで前記続けて実行すべき部分プログラムの実行を待機するプログラム準備部と、
前記プログラム存否判断部により前記記憶手段に前記続けて実行すべき部分プログラムが記憶されていないと判断された場合には前記分離抽出部に前記続けて実行すべき部分プログラムを分離抽出して前記記憶手段に記憶するよう指示するプログラム抽出指示部と、
前記プログラム準備部を起動するとともに、前記プログラム準備部により準備された部分プログラムの命令を実行するプログラム実行部と備え、
前記プログラム受信実行装置はさらに、
前記プログラム存否判断部により前記記憶手段に前記部分プログラムが記憶されていないと判断された場合に前記部分プログラムを送信するプログラム送信装置に前記続けて実行すべき部分プログラムを送信するよう要求を送出する送信要求送出部を有し、
前記プログラム抽出指示部が前記分離抽出部に前記続けて実行すべき部分プログラムを分離抽出して前記記憶手段に記憶するよう指示するのは、前記送信要求送出部から前記要求を送出した後となるように構成した
ことを特徴とするプログラム受信実行装置。
【請求項３】
複数の部分プログラムに分割されたプログラムであって、前記複数の部分プログラムに含まれる一の部分プログラムは、前記一の部分プログラムの実行に続けて実行すべき部分プログラムが前記複数の部分プログラムの中の何れであるかを示す次実行部分情報を含むプログラムを受信して当該プログラムを実行するプログラム受信実行装置であって、
プログラム記憶領域を有する記憶手段と、
前記複数の部分プログラムに含まれる部分プログラムを受信して前記記憶手段に記憶する受信手段と、
前記記憶手段に記憶している部分プログラムの実行を制御する実行制御手段とを備え、
前記一の部分プログラムに含まれる次実行部分情報は前記一の部分プログラムに続けて実行すべき部分プログラムを識別するための識別子を含み、
前記受信手段は、前記識別子を用いて前記続けて実行すべき部分プログラムを受信信号から分離抽出して前記記憶手段に記憶する分離抽出部を有し、
前記実行制御手段は、
前記続けて実行すべき部分プログラムが前記記憶手段に記憶されているかを判断するプログラム存否判断部と、
実行中の前記一の部分プログラムに続けて実行すべき部分プログラムを前記一の部分プログラムに含まれる次実行部分情報を参照して特定して前記続けて実行すべき部分プログラムが前記記憶手段に記憶されているかをプログラム存否判断部に判断させ、前記プログラム存否判断部により前記続けて実行すべき部分プログラムが記憶されていないと判断された場合には、前記分離抽出部に前記続けて実行すべき部分プログラムを分離抽出して前記記憶手段に記憶するよう指示し、前記プログラム存否判断部により前記続けて実行すべき部分プログラムが記憶されていると判断される時点まで前記続けて実行すべき部分プログラムの実行を待機するプログラム準備部と、
前記プログラム準備部を起動するとともに、前記プログラム準備部により準備された部分プログラムの命令を実行するプログラム実行部とを備え、
前記プログラム受信実行装置はさらに、
前記部分プログラムの実行に際して発生するエラーと当該エラーに対応して実行すべきとなるエラー処理を示すエラーコードとの対応表を保持するエラー処理情報管理手段と、
前記エラーの発生に応じて前記エラー処理情報管理手段から実行すべきエラー処理を示すエラーコードを得て、当該エラーコードが部分プログラムを起動すべき旨を示すものであれば、前記分離抽出部に当該エラーコードが示す部分プログラムを分離抽出して前記記憶手段に格納するよう指示するエラー処理手段とを備える
ことを特徴とするプログラム受信実行装置。
【請求項４】
複数の部分プログラムに分割されたプログラムであって、前記複数の部分プログラムに含まれる一の部分プログラムは、前記一の部分プログラムの実行に続けて実行すべき部分プログラムが前記複数の部分プログラムの中の何れであるかを示す次実行部分情報を含むプログラムを受信して当該プログラムを実行するプログラム受信実行装置であって、
プログラム記憶領域を有する記憶手段と、
前記複数の部分プログラムに含まれる部分プログラムを受信して前記記憶手段に記憶する受信手段と、
前記記憶手段に記憶している部分プログラムの実行を制御する実行制御手段とを備え、
前記一の部分プログラムに含まれる次実行部分情報は前記一の部分プログラムに続けて実行すべき部分プログラムを識別するための識別子を含み、
前記受信手段は、前記識別子を用いて前記続けて実行すべき部分プログラムを受信信号から分離抽出して前記記憶手段に記憶する分離抽出部を有し、
前記実行制御手段は、
前記続けて実行すべき部分プログラムが前記記憶手段に記憶されているかを判断するプログラム存否判断部と、
実行中の前記一の部分プログラムに続けて実行すべき部分プログラムを前記一の部分プログラムに含まれる次実行部分情報を参照して特定して前記続けて実行すべき部分プログラムが前記記憶手段に記憶されているかをプログラム存否判断部に判断させ、前記プログラム存否判断部により前記続けて実行すべき部分プログラムが記憶されていないと判断された場合には、前記分離抽出部に前記続けて実行すべき部分プログラムを分離抽出して前記記憶手段に記憶するよう指示し、前記プログラム存否判断部により前記続けて実行すべき部分プログラムが記憶されていると判断される時点まで前記続けて実行すべき部分プログラムの実行を待機するプログラム準備部と、
前記プログラム準備部を起動するとともに、前記プログラム準備部により準備された部分プログラムの命令を実行するプログラム実行部とを備え、
前記プログラム受信実行装置はさらに、
前記プログラム存否判断部により前記記憶手段に前記部分プログラムが記憶されていないと判断された場合に前記部分プログラムを送信するプログラム送信装置に前記続けて実行すべき部分プログラムを送信するよう要求を送出する送信要求送出部を有し、
前記プログラム準備部が前記分離抽出部に前記続けて実行すべき部分プログラムを分離抽出して前記記憶手段に記憶するよう指示するのは、前記送信要求送出部から前記要求を送出した後となるように構成した
ことを特徴とするプログラム受信実行装置。
【請求項５】
プログラム送信装置から一の部分プログラムの次に実行すべき部分プログラムは何れであるかを示す次実行部分情報を含んだ部分プログラム複数に分割され送られるプログラムを受信して当該プログラムを実行するプログラム受信実行装置であって、
プログラム記憶領域を有する記憶手段と、
前記の複数の部分プログラムを受信して前記記憶手段に格納する受信手段と、
前記記憶手段に記憶している前記の複数の部分プログラムを実行する実行制御手段とを備え、
前記実行制御手段は、
指定された部分プログラムが前記記憶手段に記憶されているかを判断するプログラム存否判断部と、
実行中である第１の部分プログラムに続けて実行すべき第２の部分プログラムを前記次実行部分情報を参照して特定して当該第２の部分プログラムが前記記憶手段に記憶されているかをプログラム存否判断部に判断させ、前記プログラム存否判断部により第２の部分プログラムが記憶されていると判断された場合には第２の部分プログラムの実行の準備をして、前記プログラム存否判断部により第２の部分プログラムが記憶されていないと判断された場合にはプログラムの実行を進めず待機しその後前記プログラム存否判断部により第２の部分プログラムが記憶されていると判断された時点で第２の部分プログラムの実行の準備をするプログラム準備部と、
前記プログラム準備部により準備された部分プログラムの命令複数を実行し、前記プログラム準備部を起動するプログラム実行部とを有する
ことを特徴とするプログラム受信実行装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、送信されたプログラムを受信して実行するプログラム受信実行装置及び当該プログラムを送信するプログラム送信装置に関し、特にデジタル放送システムにおいて番組に関連した制御を行うプログラムを受信して実行するプログラム受信実行装置及び当該プログラムを送信するプログラム送信装置に関する。
【背景技術】
【０００２】
近年、映像や音声等の各種情報信号をデジタル化して信号処理する技術が急速に進歩し、これに伴ないデジタル放送システムやデジタル放送とデジタル通信との融合システム等の実現に向けて、世界各国でデジタル放送システムの開発が盛んに行なわれるようになってきている。
このようなデジタル放送システムを開発するにあたり、最も重要となる要素の１つとして、デジタル化された映像信号・音声信号を圧縮処理する技術があげられる。データ圧縮処理技術の規格としては、Moving Picture Image Coding Experts Group （ＭＰＥＧ）、Joint Phot ographic Coding Experts Group（ＪＰＥＧ）及びＨ．２６１等が主流であったが、現在、国際標準化機構（ＩＳＯ）、国際電気標準会議（ＩＥＣ）により提案されているＩＳＯ／ＩＥＣ１３８１８［ISO/IEC JTC(Joint Technical Committee)1/SC(Subcommittee)29/WG(Working Group)11］は、放送、通信、蓄積メディア等の幅広い技術分野に渡る世界的な標準化に向けて検討を施しているものである。
【０００３】
このＩＳＯ／ＩＥＣ１３８１８では、上述したデータ圧縮方法を規定するだけでなく、放送局側で、番組を構成するデジタル映像・音声データ及びその他の情報データ毎に圧縮処理を施したビットストリームを多重して放送し、受信機側で所望の番組を受信するというようなデジタル放送システムのための制御部分についても方式を固めている。
以下、図１、図２、図３を用いてＩＳＯ／ＩＥＣ１３８１８の規定に基づいて、デジタル映像・音声データをそれぞれ圧縮処理してなる放送用及び通信用のビットストリームを多重化する手段を説明する。
【０００４】
図１は、デジタル映像・音声データを圧縮処理してなるビットストリームを多重化する手段を示す概略図である。
デジタル映像データは、映像エンコード回路１３１１により圧縮処理されて映像Elementary Stream （ＥＳ）となされた後、パケット化回路１３１２に供給されて１フレームなるパケット単位に区切られた映像Packetized Elementary Stream（ＰＥＳ）となされて、多重化回路１３１３に供給される。また、デジタル音声データは、音声エンコード回路１３１４により圧縮処理されて音声ＥＳとなされた後、パケット化回路１３１５に供給されて１フレームなるパケット単位に区切られた音声ＰＥＳとなされて、多重化回路１３１３に供給される。そして、この多重化回路１３１３で、映像ＰＥＳと音声ＰＥＳとが時分割多重されることにより、Transport Stream（ＴＳ）なる方法の１８８バイトでなるパケット単位で多重信号が生成される。
【０００５】
この多重信号は、映像・音声ともに１フレーム毎の単位に区切られ、それにヘッダが付されてＰＥＳを構成している。
図２は、ＰＥＳの構成を示す図である。
このＰＥＳは可変長である。このように生成されたＰＥＳは、映像と音声とを時分割多重するために、基本的に１８４バイト毎に区切ってパケット化され、それぞれに４バイトのヘッダが付されることで１８８バイトのTransport Packet（ＴＰ）を形成している。
【０００６】
図３は、放送用としてのビットストリームを構成する手段を示す図である。
図３において、プログラム１は１つの番組を示しており、多重化回路１５１６１により、映像データ２系統、音声データ２系統、その他の情報データ１系統及びProgram Map Table （ＰＭＴ）１系統が多重される。このＰＭＴには、映像データ、音声データ及び情報データを識別するためのPacket Identify （ＰＩＤ）や、番組に関する記述等が載せられている。図３に示すように、ｎ個の多重化回路１５１６１、１５１６２、……、１５１６ｎを用意することにより、ｎ個のプログラム１、２、……、ｎを設定することができる。このようにｎ個設定された番組は、多重化回路１５１７によりそれぞれのデータが時分割多重される。
【０００７】
多重化回路１５１７では、各番組のＰＭＴを抽出するための総合的な番組情報としてのProgram Association Table （ＰＡＴ）や、スクランブルをコントロールするためのConditional Access Table（ＣＡＴ）及び使用しているネットワークの情報等を示すNetwork Information Table （ＮＩＴ）等も時分割多重している。このように、ＩＳＯ／ＩＥＣ１３８１８の規格によれば、番組情報に関してＰＭＴ、ＰＡＴ、ＣＡＴ及びＮＩＴなる４種類のテーブルが設定されている。これらのテーブルのＰＩＤは、ＰＡＴが“００”、ＣＡＴが“０１”で、ＰＭＴとＮＩＴは自由に指定できることになっている。
【０００８】
なお、図１では、映像と音声との多重化について説明したが、実際には番組の付加情報データや番組情報等の各種情報データも、ＴＰ化されて映像や音声とともに時分割多重されることになる。この各種情報データを、各種番組毎のオブジェクトとして構成し、配送することによって、より変化に富んだ番組を提供するデジタル放送システムもある（例えば、特開平７−２３１３０８号公報参照）。
【０００９】
以下、従来のデジタル放送システムにおけるデータ処理方法について説明する。
図４は、従来のデジタル放送システムにおけるデジタル放送受信装置の構成例を示す図である。
受信アンテナ１６０１１で受信した信号（パッケージオブジェクト）が放送受信サブシステム１６１００に入力され、復調された後、データ蓄積管理部１６１０１を介して、磁気ディスク（ハードディスク）１６０１４ａ、光磁気ディスク１６０１４ｂなどよりなる記録媒体１６０１４を有する二次記憶装置１６１０２に記憶される。また、この二次記憶装置１６１０２には、外部入出力管理部１６１０３を介して、適宜データやプログラムが記憶され、また、読み出されるようになされている。
【００１０】
再生サブシステム１６１０４は、仮想機械と称される共通化可能な処理系であり、通常ソフトウエアにより構成される部分であり、便宜上、ローダ１６１２２、基本クラスライブラリ１６１２１、資源・安全性管理部１６１２３、プロセス（スレッド）管理部１６１２４、中間コードインタープリタ１６１２５、および同期管理部１６１２６の機能ブロックにより表されている。
【００１１】
基本クラスライブラリ１６１２１には、当該再生サブシステム１６１０４の基本機能、様々な番組オブジェクトやその他のオブジェクトに共通に利用されるクラスが集められ、中間コードで記述されている。この基本クラスライブラリ１６１２１に記述されているクラスに属するオブジェクトを使う場合、そのクラス定義を送信する必要はなく、そのクラスＩＤを指定するだけでよい。番組オブジェクトやパッケージオブジェクト自体のクラス定義も、ここに記述されている。即ち、この基本クラスライブラリ１６１２１は、プログラムのうち、基本的プログラムオブジェクトが予め記憶されている部分である。この基本的プログラムオブジェクトは、例えばフロッピィディスク等の記録媒体に記録し、各家庭に予め配送し、記憶させたり、あるいは、放送センタとの契約が成立した直後において、放送センタから当該デジタル放送受信装置に対して配信しておくようにすることが可能で
ある。
【００１２】
ローダ１６１２２は、二次記憶装置１６１０２に記憶されたパッケージオブジェクトのプログラム（中間コード）を、資源・安全性管理部１６１２３と記憶管理部１６１０６を介して主記憶１６１０７にロードするためのものであり、このとき、主記憶１６１０７に、既にローディングされているコード（例えば、基本クラスライブラリ１６１２１に記憶されている基本クラスのコードや、ユーザが作成したユーザオブジェクトのコード）が存在する場合、そのコードと中間コードとの間の対応関係を表すテーブルを作成する。
【００１３】
資源・安全性管理部１６１２３は、二次記憶装置１６１０２に記憶されているデータが破壊されたり、あるいは、許可を得ていない者が二次記憶装置１６１０２、主記憶１６１０７などに記憶されているデータにアクセスすることや、プロセス管理部１６１２４にリクエストを出すことを禁止する処理などを実行する部分である。また、所定のオブジェクトによるデータ破壊、改変、ＣＰＵタイマの占有を防ぐ。
【００１４】
また、プロセス管理部１６１２４は、主記憶１６１０７に記憶されたプログラムに従って、メインプロセス、タイマプロセス、再生プロセス等の各種のプロセスを実行、管理せしめる部分である。
中間コードインタープリタ１６１２５は、基本クラスライブラリ１６１２１に記憶されているプログラム、あるいはローダ１６１２２よりロードされたプログラムの中間コードを、逐次的に、解釈、実行する部分である。
【００１５】
また、同期管理部１６１２６は、音声データと動画像データなどのように、時間的に同期して出力することが必要なデータを管理する部分であり、中間コードインタープリタ１６１２５からの要求に応じて、時間経過に従った複数メディアオブジェクトの同期スケジューリングを事前に行い、システムクロックを基に、各メディアオブジェクトへ再生開始、停止、スロー、倍速などのメッセージを送り、同期制御を行う。
【００１６】
尚、資源・安全性管理部１６１２３、プロセス管理部１６１２４、および同期管理部１６１２６が、ハードウエア毎に異なる構成となる部分であり、基本クラスライブラリ１６１２１、ローダ１６１２２、および中間コードインタープリタ１６１２５は、ハードウエアの種類にかかわりなく、共通に構成することができる部分である。
通信サブシステム１６１０５は、資源・安全性管理部１６１２３の管理下にあり、所定の伝送路を介して、他のデジタル放送受信装置あるいは放送センタと各種のデータを授受するとき用いられる。
【００１７】
システムクロック発生回路１６１０９は、システムクロックを発生し、プロセス管理部１６１２４と同期管理部１６１２６に供給している。
また、表示／再生管理部１６１１０は、同期管理部１６１２６あるいは中間コードインタープリタ１６１２５より供給されるデータのうち、画像データを表示装置１６０１３に出力し、音声データをスピーカ１６１１１に出力するようになされている。
【００１８】
このように、データとプログラムのフォーマット化（図７）を行うとともに、プログラムを中間コードとして、その処理系を仮想機械とすることで、専用の受信装置に限らず、パソコン、その他の情報端末を、デジタル放送受信装置として用いることが可能となる。
パッケージオブジェクトは、視聴者が実時間で視聴すると、１日分のデータを含んでいるが、圧縮されて伝送されるため、伝送に必要な時間は、例えば１０数分等、極めて短い時間となる。番組データおよびプログラムはオブジェクト化され、任意の数のオブジェクトにより構成される。
【００１９】
図５は、番組オブジェクトの構成を概念的に示した図である。
即ち、いま、例えば番組オブジェクトＰがインタラクティブドラマの番組であるとすると、この番組オブジェクトＰは、ストーリオブジェクトＳと、ＣＭオブジェクトｘとにより構成されている。このストーリオブジェクトＳは、シーンオブジェクトＡ乃至ＥおよびＣＭオブジェクトｙにより構成されている。そして、例えばシーンオブジェクトＡは、ビデオオブジェクトＡとメッセージオブジェクトＡから構成されており、メッセージオブジェクトＡは、ナレーションオブジェクトＡとテキストオブジェクトＡにより構成されている。また、ＣＭオブジェクトｘは、ビデオオブジェクトｘと商品選択オブジェクトにより構成されており、商品選択オブジェクトは、関係番組検索オブジェクトｌ、ｍ、ｎを有している。
【００２０】
図６は、このような番組オブジェクトを再生するプログラムオブジェクトの概念図である。
同図に示すように、基本的プログラムオブジェクトとして、プレーヤオブジェクトがデジタル放送受信装置側に予め用意されている（正確には、後述するように、必要に応じて生成される）。このプレーヤオブジェクトは、各種の番組オブジェクトのうち、例えば、番組オブジェクト１あるいは番組オブジェクト２の再生が指令されると、記憶管理部１８２１、プロセス管理部１８２２、データ蓄積管理部１８２３、通信サブシステム１８２４等のうち、必要な部分を制御し、再生処理を実行する。その詳細については、図８のフローチャートを参照して後述する。
【００２１】
図７は、このようにして再生される番組オブジェクトのフォーマットを示す図である。
同図に示すように、番組オブジェクトは、ヘッダ部、クラス定義部、およびオブジェクトデータ部により構成される。ヘッダ部は、オブジェクトヘッダ、番組ＩＤ、番組名、バージョン、オブジェクト辞書により構成される。オブジェクトヘッダは、番組オブジェクトのオブジェクトＩＤ、オブジェクト名、クラスＩＤ、プライオリティ、容量により構成される。番組ＩＤは、この番組オブジェクトを特定するＩＤであり、番組名は、その名称である。バージョンは、この番組オブジェクトを変更したような場合、いつの時点のものであるのかを表す。また、オブジェクト辞書は、オブジェクトデータ部に配置されている所定のオブジェクトにアクセスするためのデータが配されている。
【００２２】
各オブジェクトは、１つのクラスに属し、クラス定義は、オブジェクトの枠組を与えている。具体的には、そのクラスに属する全てのオブジェクトが共通に有する変数とメソッド（プログラム）がクラス定義部に配される。即ち、クラス定義部は、任意の数のクラス定義から構成される。クラス定義は、クラスＩＤ、クラス名、スーパクラスＩＤ、変数定義、メソッド辞書、およびメソッドより構成される。クラスＩＤとクラス名は、そのクラスを特定するＩＤと名称を表している。また、スーパクラスＩＤは、このクラスの上位のクラスを表している。スーパクラス（上位のクラス）から見た下のクラスは、サブクラスと称される。変数定義は、このクラス定義中のメソッド（プログラム）において用いられる変数を定義するものである。また、メソッドには、プログラムが中間コード（文字列データからなるソースプログラムから生成した中間コード）として記録されている。このように、中間コードにすることで、実行時の処理効率の向上と、データ量の圧縮が可能となる。メソッド辞書は、メソッドに配置されている各メソッド（プログラム）にアクセスするためのデータが配置される。このクラス定義部には、その番組オブジェクトに含まれる拡張されたクラスの定義がまとめて記述される。基本クラスライブラリ１６１２１に存在するクラス定義は、ここに記述する必要がない。従って、その番組オブジェクトに含まれるオブジェクトが、全て基本クラスのインスタンスであれば、クラス定義部は不要となる。
【００２３】
オブジェクトデータ部は、任意の数のオブジェクトにより構成される。各オブジェクト
は、オブジェクトヘッダと変数値とにより構成される。オブジェクトヘッダは、オブジェクトＩＤ、オブジェクト名、クラスＩＤ、プライオリティ、容量により構成される。オブジェクトＩＤとオブジェクト名は、このオブジェクトを特定するＩＤと名称を表す。クラスＩＤは、このオブジェクトが属するクラスを表している。また、プライオリティは、再生の順位を表しており、０乃至３のいずれかの数値が与えられる。数値が大きいほど、優先度が高いことを表している。また、容量は、そのオブジェクトが有するデータの容量を表している。変数値は、素材データ自体である。また、この変数値には、制御データも含まれる。
【００２４】
さらに、任意の数の番組オブジェクトによりパッケージオブジェクトが構成される。３つの番組オブジェクトにより、１つのパッケージオブジェクトが構成されている。パッケージオブジェクトは、ヘッダ部、クラス定義部、および番組オブジェクトデータ部により構成される。ヘッダ部の先頭には、オブジェクトヘッダが配置される。このオブジェクトヘッダにも、オブジェクトＩＤ、オブジェクト名、クラスＩＤ、プライオリティ、容量がそれぞれ配置される。また、オブジェクトヘッダの次には、パッケージＩＤとパッケージ名が配置される。これらは、このパッケージオブジェクトのＩＤと名称を表すものである。また、その次には、このパッケージオブジェクトが生成された日付とバージョンが配置される。さらにその次には、番組インデックスが配置される。この番組インデックスは、番組オブジェクトデータ部に配置されている３つの番組オブジェクトのオブジェクトデータ部にアクセスするためのデータが配置されている。クラス定義部には、このパッケージオブジェクトにまとめられた３つの番組オブジェクトのクラス定義部に記述されているクラス定義が記録される。各番組オブジェクトのクラス定義部において、重複する部分は適宜省略される。そして、このクラス定義部は、上述したように、中間コードで記述される。さらに、番組オブジェクトデータ部は、このパッケージオブジェクトにまとめられる番組オブジェクトのヘッダ部とオブジェクトデータ部が配置される。
【００２５】
次に、図８を参照して、メインプロセスの処理について説明する。
図８は、メインプロセスの処理を示すフローチャートである。
最初にステップＳ２０２１において、中間コードインタープリタ１６１２５は、ローダ１６１２２を制御し、受信アンテナ１６０１１で受信し、二次記憶装置１６１０２に記憶したパッケージオブジェクトのヘッダ部とクラス定義部（図７）をローダ１６１２２により読み出させ、資源・安全性管理部１６１２３、記憶管理部１６１０６を介して主記憶１６１０７にロードさせる。次にステップＳ２０２２に進み、パッケージオブジェクトの番組オブジェクトデータ部内の１つの番組オブジェクトのヘッダ部（図７）を読み込む。パッケージオブジェクトには、プライオリティの値が大きい順に番組オブジェクトが格納されており、各番組オブジェクトのヘッダ部は、格納順に読み出される。そしてステップＳ２０２３に進み、ステップＳ２０２２において読み込んだヘッダ部から、プライオリティを読み込む。上述したように、このプライオリティには、０、１、２または３のいずれかの値が配されている。プライオリティが３のデータは、緊急時における番組、あるいは放送センタが各視聴者に対して確実に視聴してもらいたい番組に対して付与されているものである。
【００２６】
ステップＳ２０２４において、ステップＳ２０２３で読み込んだプライオリティが３であるか否かが判定され、３ではないと判定されたとき、ステップＳ２０２５に進み、そのパッケージオブジェクトを構成する他の番組オブジェクトのヘッダ部の読み込みが終了したか否かが判定され、まだ読み込んでいない番組オブジェクトが存在する場合は、ステップＳ２０２２に戻り、それ以降の処理が同様に繰り返される。
【００２７】
ステップＳ２０２４において、読み込んだプライオリティが３であると判定された場合、ステップＳ２０２６に進み、優先プレーヤオブジェクトを生成する。これにより、メイ
ンプロセスから優先再生プロセスの基礎となる優先プレーヤオブジェクト（そのクラスは、基本クラスライブラリ１６１２１に含まれている）が生成される。即ち、優先プレーヤオブジェクトのクラス定義に従って、主記憶１６１０７上の必要な領域が確保され、その中に、各変数領域を配置し、それぞれの変数値に当たる実データを二次記憶装置１６１０２より読み出し、主記憶１６１０７にロードして、インスタンシェートを行う。また、同時に、初期化メソッドなど、必要な処理が行われる。尚、大量で、表示／再生時においてのみ必要な各メディアの内容データは、インスタンシェート時ではなく、その後の表示／再生メソッドの起動時に、二次記憶装置１６１０２から読み出される。次にステップＳ２０２７に進み、タイマプロセスにセットメッセージを出力する。プライオリティ３の番組は、後述するように、所定時間毎に自動的に表示させるようにする。タイマプロセスは、メインプロセスからこのセットメッセージを受信したとき、プライオリティ３の番組を自動的に表示する時間間隔の設定処理を行う。次にステップＳ２０２８に進み、再生プロセス生成処理を実行する。次に、ステップＳ２０２８からステップＳ２０２５に進む。
【００２８】
ステップＳ２０２５において、パッケージオブジェクトの番組オブジェクトデータ部に、まだヘッダ部を読み取っていない番組オブジェクトがあるか否かを判定し、読み取っていない番組オブジェクトがまだ存在する場合においては、ステップＳ２０２２に戻り、同様の処理を実行して、その番組オブジェクトのヘッダ部を読み込む。
以上のようにして、パッケージオブジェクトに含まれる全ての番組オブジェクトのヘッダ部の読み込みが完了したとステップＳ２０２５において判定された場合、ステップＳ２０２９に進み、番組選択メニュー表示処理を実行する。即ち、中間コードインタープリタ１６１２５は、表示／再生管理部１６１１０を制御し、表示装置１６０１３に番組選択メニューを表示させる。この番組選択メニューは、デフォルトのプログラムに従って番組を選択するか、あるいは、ユーザが定義した番組選択方法（ユーザオブジェクト）に従って番組を選択するかの選択のための表示である。使用者は、インタラクティブ機能を果たす入力デバイス１６０１５を操作して、そのいずれかを選択して、デフォルトまたはユーザ定義のいずれか一方の番組選択方法に応じて、番組を選択することができるようになされている。デフォルトを選択すると、プライオリティに従って各番組オブジェクトが順次再生されることになる。これに対して、ユーザ定義を選択すると、そのユーザが、例えばドラマを指定していれば、受信した番組オブジェクトのうち、ドラマの番組だけが選択され、表示されることになる。
【００２９】
次にステップＳ２０３０に進み、再生キューが空であるか否かが判定される。再生キューが空でない場合、例えば、上述したように、プライオリティ３の番組オブジェクトが存在する場合、ステップＳ２０２８の再生プロセス生成処理において実行した再生キューセット処理により、再生キューに所定の再生プロセスＩＤがセットされているため、再生キューは空ではないことになる。このような場合、ステップＳ２０３７において、再生キュー評価処理が実行されることになる。最初に、再生中の再生プロセスが存在するか否かが判定される。現在再生中の再生プロセスが存在する場合においては、再生キューの先頭の再生プロセス（次に再生予定の再生プロセス）のプライオリティが、いま再生中の再生プロセスのプライオリティより高いか否かが判定される。上述したように、プライオリティ３の番組が存在する場合においては、再生キューの先頭にはプライオリティ３の再生プロセスのＩＤがセットされている。従って、現在再生中の再生プロセスが、２以下のプライオリティを有するものである場合、再生中の再生プロセスに中断メッセージが出力される。再生プロセスは、メインプロセスからこの中断メッセージを受信したとき、表示のための処理時間の割当を、ここでは１／２０にすることになる。次に、再生キューセット処理を実行する。即ち、現在再生中の再生プロセスのプライオリティを評価し、その評価に対応する適切なキューに、現在再生中の再生プロセスのＩＤをセットする。再生プロセスの処理を実行（再生）するには、この再生キューに、再生プロセスのＩＤをセットする必要があるのであるが、再生処理が開始されると、その再生プロセスのＩＤは、再生キューか
ら除去される。このため、中断した（表示処理時間の割当を減少させた）再生プロセスを再度実行できるようにする（通常の表示処理時間の割当に戻す）ために、現在再生中（遅い表示速度で表示中）の再生プロセスのＩＤを、再び再生キューにセットするようにするのである。このように、再生キューセット処理が終了した後、あるいはまた、現在再生中の再生プロセスが存在しないと判定された場合、再生キューの先頭の再生プロセスに起動メッセーシを出力する。
【００３０】
再生プロセスは、この起動メッセージを受信したとき、未表示または遅い速度で表示中の再生プロセスを、通常の速度の表示にし、起動メッセージを出力した再生プロセスのＩＤを、再生キューから除去する。再生キューの先頭の再生プロセスのプライオリティが、再生中の再生プロセスのプライオリティと等しいか、それより小さいと判定された場合においては、再生中の再生プロセスを優先すべきであるので、特別の処理を実行しない。
【００３１】
ステップＳ２０３０において、再生キューが空であると判定された場合、あるいはまた、ステップＳ２０３７において、再生キュー評価処理が完了した後、ステップＳ２０３１に進み、タイマからアラームが発生されたか否かが判定される。即ち、上述したように、ステップＳ２０２７において、メインプロセスからタイマプロセスにセットメッセージを出力すると、タイマプロセスは、所定の時間を計時したとき、メインプロセスへアラームメッセージを出力する。これにより、タイマプロセスからメインプロセスへアラームメッセージが出力される。このことは、プライオリティ３の番組を、周期的（定期的）に表示すべき時間になったことを表している。従って、この場合においては、ステップＳ２０３１からステップＳ２０３８に進み、アラームのあった再生プロセスＩＤについて、再生キューセット処理が行われる。アラームのあった再生プロセスＩＤ（プライオリティが３の再生プロセスＩＤ）を評価し、適切なキュー位置に、その再生プロセスのＩＤをセットする。プライオリティが３なので、通常、より順位の早い位置にセットされる。
【００３２】
ステップＳ２０３１において、タイマからのアラームが受信していないと判定された場合、あるいは、ステップＳ２０３８における再生キューセット処理が終了した後、ステップＳ２０３２に進み、ステップＳ２０２９において表示した番組選択メニューから、ユーザが番組の選択をしたか否かが判定される。ユーザが再生を行いたい番組を選択したと判定された場合、ステップＳ２０３９に進み、プレーヤオブジェクトが生成される。そして、ステップＳ２０４０に進み、再生プロセス生成処理が実行される。即ち、ステップＳ２０３９で生成したプレーヤオブジェクトを基に、新規の再生プロセスを生成し、再生キューセット処理を実行する。生成した再生プロセスのプライオリティを評価し、そのプライオリティに対応するキュー位置に、その再生プロセスのＩＤをセットする。これにより、ユーザが選択したプレーヤオブジェクトに対応する再生プロセスのＩＤが、再生キューにセットされたことになる。
【００３３】
ステップＳ２０３２において、ユーザの番組選択指定がなされていないと判定された場合、あるいは、ステップＳ２０４０の再生プロセス生成処理が終了したとき、次にステップＳ２０３３に進み、ユーザが停止指令を発生したか否かが判定される。ユーザが停止指令を発生したとき、ステップＳ２０４１に進み、該当する再生プロセスに停止メッセージを出力する。即ち、メインプロセスから再生プロセスに停止メッセージが出力されることになる。
【００３４】
再生プロセスにおいては、この停止メッセージを受信したとき、通常速度で表示している再生処理を停止させる。番組が終了する以前に、ユーザが途中で番組を停止した場合であるから、後で再びこの番組を途中から再生することができるようにするため、次にステップＳ２０４２に進み、再生キューセット処理を実行する。即ち、いま、再生中の再生プロセスを再び再生できるように、再生キューにセットするのである。
【００３５】
ステップＳ２０３３において、ユーザが停止指令を発生していないと判定されたとき、または、ステップＳ２０４２において、再生キューセット処理が完了したとき、次にステップＳ２０３４に進み、ユーザが番組終了指令を発生したか否かが判定される。ユーザが番組終了指令を発生したとき、ステップＳ２０４３に進み、該当する再生プロセスに終了メッセージを出力する。即ち、メインプロセスから再生プロセスに終了メッセージが出力されたことになる。再生プロセスは、この終了メッセージを受信したとき、プライオリティが３であれば、再生処理を終了させる。ステップＳ２０４３の次にステップＳ２０４４に進み、再生プロセスを起動したメモリを開放するなどの必要な後処理Ａを行った後（例えば、再生プロセスがプライオリティ３の場合、メモリ開放はまだ行わない）、ステップＳ２０３６に進む。尚、ユーザが番組終了を指令した場合、番組を途中で停止するのではなく、再生処理そのものを終了させるのであるから、この場合においては、現在再生中の再生プロセスを再生キューに再度セットする処理は実行されないことになる。
【００３６】
ステップＳ２０３４において、ユーザが番組終了指令を発生していないと判定された場合、ステップＳ２０３５に進み、再生プロセスから終了メッセージが受信されたか否かが判定される。プライオリティ３の再生プロセスは、番組再生が終了したとき、終了メッセージを出力する。即ち、再生プロセスからメインプロセスに終了メッセージが出力されたことになる。メインプロセスは、ステップＳ２０３５において、この終了メッセージを受信したとき、ステップＳ２０４５に進み、必要な後処理Ｂを行った後（ここでは、プライオリティ３の再生プロセスのメモリも開放される）、ステップＳ２０３６に進む。
【００３７】
ステップＳ２０３５において、再生プロセスから終了メッセージが受信されていないと判定された場合、あるいは、ステップＳ２０４４の後処理Ａ、ステップＳ２０４５の後処理Ｂが終了したとき、ステップＳ２０３６に進み、視聴の終了が指令されているか否かが判定され、終了されていなければ、ステップＳ２０３０に戻り、それ以降の処理を繰り返し実行する。そして、視聴の終了が指令されたと判定された場合、ステップＳ２０４６に進み、終了処理を実行して、処理を終了する。
【００３８】
以上のように、従来のデジタル放送システムにおけるデータ処理は行われる。
【発明の開示】
【発明が解決しようとする課題】
【００３９】
しかしながら、デジタル放送送信装置から番組を対話的操作で利用するのに必要なプログラムを番組情報の内容として送信した場合であっても、上述したような従来のデジタル放送受信装置においては、番組を利用するために必要なプログラムを全て受信しなければ実行できない。なぜなら、プログラムを受信しながら実行すると、まだ受信していない部分を実行しようとした時点で異常動作するからである。
【００４０】
このため、利用者の操作や番組の状況等に対する即応性が悪いという問題がある。
このような即応性の悪さを解決する方法として、デジタル放送の受信装置に大容量の記憶装置を備えておき処理プログラムを前もって受信して蓄積しておく方法がある。
しかし、低機能の受信装置から高機能の受信装置までの多様なデジタル放送受信装置に対してデジタル放送を提供することを考えれば、デジタル放送受信装置に大きな記憶容量を要求するべきではない。しかも、デジタル放送で送信される内容は逐次変更されているため、前もって受信することも困難である。
【００４１】
また別の問題であるが、低機能から高機能までのデジタル放送受信装置の機能レベルに応じた処理を実行するために従来のデジタル放送の送信装置では、デジタル放送受信装置の機能レベル毎に別プログラムを作成して別個に送信するかデジタル放送受信装置の機能
レベル毎の処理を全て含んだ１つのプログラムを送信する他ない。
しかしながら、前者には複数のプログラムを作成する負担及び複数のプログラムを送信する負担が大きいという問題点があり、後者にはデジタル放送受信装置側が当該受信装置にとって不要な機能レベルに対する処理部分まで受信しなければならないため記憶装置を無駄に消費するという問題点がある。
【００４２】
そこで、本発明は、かかる問題点に鑑みてなされたものであり、必要なプログラムを一部分だけ受信した状態でも実行開始することができるデジタル放送受信装置、及びそのためのデジタル放送送信装置を提供することを第１の目的とする。
さらに本発明は、プログラム作成負担及び送信負担を増加させずかつ受信装置側の記憶装置を無駄に消費させずにデジタル放送受信装置の機能レベルに応じた処理を実現するデジタル放送受信装置、及びそのためのデジタル放送送信装置を提供することを第２の目的とする。
【課題を解決するための手段】
【００４３】
本発明に係るプログラム受信実行装置は、プログラム送信装置から一の部分プログラムの次に実行すべき部分プログラムは何れであるかを示す次実行部分情報を含んだ部分プログラム複数に分割され送られるプログラムを受信して当該プログラムを実行するプログラム受信実行装置であって、プログラム記憶領域を有する記憶手段と、前記の複数の部分プログラムを受信して前記記憶手段に格納する受信手段と、前記記憶手段に記憶している前記の複数の部分プログラムを実行する実行制御手段とを備え、前記実行制御手段は、指定された部分プログラムが前記記憶手段に記憶されているかを判断するプログラム存否判断部と、実行中である第１の部分プログラムに続けて実行すべき第２の部分プログラムを前記次実行部分情報を参照して特定して当該第２の部分プログラムが前記記憶手段に記憶されているかをプログラム存否判断部に判断させ、前記プログラム存否判断部により第２の部分プログラムが記憶されていると判断された場合には第２の部分プログラムの実行の準備をして、前記プログラム存否判断部により第２の部分プログラムが記憶されていないと判断された場合にはプログラムの実行を進めず待機しその後前記プログラム存否判断部により第２の部分プログラムが記憶されていると判断された時点で第２の部分プログラムの実行の準備をするプログラム準備部と、前記プログラム準備部により準備された部分プログラムの命令複数を実行し、前記プログラム準備部を起動するプログラム実行部とを有することを特徴とする。
【発明の効果】
【００４４】
上記構成により、１つのプログラムが複数の部分プログラムに分割されて送られた場合に、必要な部分プログラムを受信していれば当該部分プログラムを実行することができる。また、当該部分プログラムから他の部分プログラムへの実行継続が必要となった場合に、その必要となった他の部分プログラムを受信していれば当該他の部分プログラムを実行することができ、その後も同様に複数の部分プログラムを実行することができる。これにより目的のプログラム全てを受信してからでなくても実行が可能なので、迅速なプログラムの実行開始が実現される。
【００４５】
また、前記次実行部分情報はそれが含まれる部分プログラムに続けて実行すべき部分プログラムを識別するための識別子を含み、前記受信手段は、指定された部分プログラムを前記識別子を用いて受信信号から分離抽出して前記記憶手段に格納する分離抽出部を有し、前記実行制御手段はさらに、前記プログラム存否判断部により前記記憶手段に前記部分プログラムが記憶されていないと判断された場合には分離抽出部に当該部分プログラムを分離抽出して前記記憶手段に格納するよう指示するプログラム抽出指示部を有することもできる。
【００４６】
上記構成により、必要になった部分プログラムを抽出して記憶装置に取り込み実行することができるため、プログラム受信実行装置の記憶容量を無駄に消費することなくプログラムを実行することができる。
また、次実行部分情報は次に他の部分プログラムを実行する旨を示す命令であるリンク命令を含み、前記プログラム実行部は、実行すべき部分プログラム中の命令がリンク命令であるか判断するリンク命令判断部と、前記リンク命令判断部がリンク命令であると判断した時に前記プログラム準備部を起動するリンク命令処理部とを有することもできる。
【００４７】
上記構成により、部分プログラムの実行を続行するための次なる部分プログラムが必要なことを部分プログラムの実行制御部に簡単に伝えることができる。
また、次実行部分情報は次に複数の他の部分プログラムのうちいずれか１つをプログラム受信実行装置の能力に応じて実行すべき旨を示す命令である選択リンク命令と前記の１つの部分プログラムの識別子を合成する基礎となる情報である基礎識別子とを含み、前記プログラム受信実行装置はさらに、自己の機能レベルを記憶する機能レベル記憶手段を備え、前記プログラム実行部はさらに、実行すべき部分プログラム中の命令が選択リンク命令であるか判断する選択リンク命令判断部と、前記リンク命令判断部がリンク命令であると判断した時に、前記機能レベル記憶手段に記憶している機能レベルと前記基礎識別子とを参照して、実行すべき部分プログラムの識別子を合成し、前記プログラム準備部を起動する選択リンク命令処理部とを有することもできる。
【００４８】
上記構成は第２の目的をも達成するためのものであり、本構成によればプログラム受信実行装置の能力に応じた処理を行う部分プログラムの１つを選択して当該プログラム受信実行装置に最適な処理を実行することができる。
また、前記部分プログラムは実行環境非依存の中間コードであるバイトコードであり、前記プログラム実行部は、前記部分プログラムをバイトコードの１命令ごとに逐次解釈して実行することもできる。
【００４９】
上記構成により、部分プログラムの実行を続行するための次なる部分プログラムが必要なこと示す命令を解釈したときに当該次なる部分プログラムを取得すればよいため、不要な部分プログラムを記憶装置に取り込む必要がなく、プログラム受信実行装置の記憶容量を無駄に消費することなくプログラムを実行することができる。
また、前記プログラム受信実行装置はさらに、利用者による操作と当該操作に対応して実行すべきとなる最初の部分プログラムの識別子との対応表を保持するイベント情報管理手段と、利用者による操作に応じて前記イベント情報管理手段から実行すべき最初の部分プログラムの識別子を得て、前記分離抽出部に当該部分プログラムを分離抽出して前記記憶手段に格納するよう指示した後、前記プログラム存否判断部により当該部分プログラムが記憶されていると判断された時点で前記実行制御手段に当該部分プログラムを実行させるイベント処理手段とを備えることもできる。
【００５０】
上記構成により、利用者の操作により発生又は機器の動作上発生する各種イベントに対応して部分プログラムを実行することにより迅速な対応処理開始が実現される。
また、前記プログラム受信実行装置はさらに、プログラム実行に際して発生するエラーと当該エラーに対応して実行すべきとなるエラー処理を示すエラーコードとの対応表を保持するエラー処理情報管理手段と、エラーの発生に応じて前記エラー処理情報管理手段から実行すべきとなるエラー処理を示すエラーコードを得て、当該エラーコードが部分プログラムを起動すべき旨を示すものであれば、前記分離抽出部に当該エラーコードが示す部分プログラムを分離抽出して前記記憶手段に格納するよう指示した後、前記プログラム存否判断部により当該部分プログラムが記憶されていると判断された時点で前記実行制御手段に当該部分プログラムを実行させるエラー処理手段とを備えることもできる。
【００５１】
上記構成により、エラー発生に対応して部分プログラムを実行することにより迅速なエラー処理開始が実現される。
また、前記プログラム受信実行装置は、デジタル放送送信装置から複数の部分プログラムに分割され送られてくる部分プログラムを受信して当該部分プログラムを実行することもできる。
【００５２】
上記構成により、デジタル放送送信装置から送信される部分プログラムを受信して実行することができるプログラム受信実行装置が実現される。
また、前記プログラム受信実行装置は、デジタル放送送信装置から複数の部分プログラムに分割され繰り返し送られてくる部分プログラムを受信して当該部分プログラムを実行することもできる。
【００５３】
上記構成により、複数の部分プログラムが繰り返し送られてくる場合に部分プログラムを受信して当該部分プログラムを実行することができるため、１度受信した部分プログラムが不要になった時点で記憶装置上の当該部分プログラムを記憶した領域を解放することができ、当該部分プログラムが必要になった時点で再度受信して抽出し記憶装置に取り込むことができるため、記憶装置を有効に活用することができる。
【００５４】
また、前記の複数の部分プログラムは、少なくとも映像データ又は音声データのうち１つとともに多重化されて送られてくるとすることもできる。
上記構成により、映像又は音声を制御する部分プログラムの実行により、映像、音声に関連した制御処理の迅速な実行開始が実現される。
また、前記プログラム受信実行装置は、ＩＳＯ／ＩＥＣ１３８１８の規格に基づくものであり、前記の複数の部分プログラムは、該ＩＳＯ／ＩＥＣ１３８１８に規定されているＭＰＥＧ２のトランスポートストリームのプライベートセクションの全部又は一部の領域に配置されて送られてくることとすることもできる。
【００５５】
上記構成により、プログラム受信実行装置は、受信した信号からトランスポートデコーダによりＰＩＤとテーブルＩＤを利用して部分プログラムを容易に抽出することができる。
また、前記実行制御手段はさらに、前記プログラム存否判断部により前記記憶手段に前記部分プログラムが記憶されていないと判断された場合にプログラム送信装置に当該部分プログラムを送信するよう要求を送出する送信要求送出部を有することもできる。
【００５６】
上記構成により、プログラム受信実行装置は、１度受信した部分プログラムが不要になった時点で記憶装置上の当該部分プログラムを記憶した領域を解放することができ、当該部分プログラムが必要になった時点で送信要求をプログラム送信装置に送ることにより再度送られた部分プログラムを受信して抽出し記憶装置に取り込むことができるため、記憶装置を有効に活用することができる。
【００５７】
また、前記記憶手段はさらに、部分プログラムが前記プログラム記憶領域に格納される際に空き領域がない場合は、既にプログラム記憶領域に格納されているいずれかの部分プログラムを削除した後に生じた空き領域に部分プログラムが格納されるように制御するメモリ管理部を有し、前記プログラム実行部はさらに、実行すべき部分プログラム中の命令が当該部分プログラムを削除すべきでない旨のロック命令であるか判断するロック命令判断部と、前記ロック命令判断部がロック命令であると判断した時に前記メモリ管理部に当該ロック命令を含む部分プログラムを識別するための常用部分プログラム識別情報を通知するロック命令通知部とを有し、前記メモリ管理部は、前記ロック命令通知部から受けた常用部分プログラム識別情報が示す部分プログラムについては削除の対象とせず前記制御を行うこととすることもできる。
【００５８】
上記構成により、プログラム受信実行装置は、特定の部分プログラムについては、受信した部分プログラムを記憶した領域を解放することなく、当該部分プログラムを含んで構成されるプログラムの実行において当該部分プログラムを再度必要とする場合に、当該部分プログラムを迅速に実行開始することができる。
また、本発明に係るプログラム送信装置は、プログラムをプログラム受信実行装置に送信するプログラム送信装置であって、前記プログラムを予め記憶する記憶手段と、前記記憶手段により記憶しているプログラムを複数の部分プログラムに分割する分割手段と、前記分割手段により分割した部分プログラム毎にそれぞれを識別するための識別子を付加する識別子付与手段と、部分プログラム複数を送信する送信手段とを備えることを特徴とする。
【００５９】
上記構成により、プログラム受信装置側では、必要な部分プログラムを受信した時点で実行を開始することができるため、迅速なプログラムの実行開始が実現される。これは第１の目的を達成するためのものである。
また、前記プログラム送信装置はさらに、次に実行すべき部分プログラムを示す次実行部分情報（次に実行すべき部分プログラムの識別子を含む）を部分プログラムに付加する次実行部分情報付加手段を備えることもできる。
【００６０】
上記構成により、プログラム受信装置側では、識別子をもとに必要になった部分プログラムを抽出して記憶装置に取り込み実行することができるため、記憶容量を無駄に消費することなくプログラムを実行することができる。
また、次実行部分情報はさらに次に他の部分プログラムを実行する旨を示す命令であるリンク命令を含み、前記次実行部分情報付加手段はさらに、前記分割手段により分割された複数の部分プログラム中において他の部分プログラムへの処理続行が必要な位置にリンク命令を作成して挿入するリンク命令作成部を有することもできる。
【００６１】
上記構成により、プログラム受信装置側では、部分プログラム中に挿入されたリンク命令によって当該部分プログラムの実行を続行するための次なる部分プログラムが必要なことを部分プログラムの実行制御部に簡単に伝えることができる。
また、前記プログラム送信装置はさらに、プログラムの分岐構造を示すプログラム構造情報を記憶するプログラム構造情報記憶手段を備え、前記分割手段は、前記プログラム構造情報記憶手段に記憶されたプログラム構造情報を参照して分岐構造を有するプログラムを分岐構造に従って別々の部分プログラムに分割する分岐分割部を有することもできる。
【００６２】
上記構成により、プログラム送信装置がプログラムの分岐構造による複数のパスそれぞれを別の部分プログラムにして送信するため、プログラム受信実行装置ではプログラムの分岐構造による複数のパスのうち１つのパスについてのみの部分プログラムを受信して実行することができるため迅速に実行開始をすることができる。
また、前記プログラム構造情報は、前記プログラム受信装置側の能力に応じて内部処理を振り分ける構造を示す情報を含み、前記分割手段は、前記プログラム構造情報を参照してプログラムを前記の受信装置側の能力別の内部処理毎に別の部分プログラムに分割するレベル別分割部を有することもできる。
【００６３】
上記構成は第２の目的をも達成するためのものであり、本構成によれば、プログラム受信実行装置側の能力に応じた処理を行わせるためのプログラムは分岐構造をもつ１つのプログラムとして作成できるため、プログラムの作成が容易となる。
また、前記次実行部分情報付加手段はさらに、前記レベル別分割部により内部処理毎に別に分割された複数の部分プログラムに共通部分を有するが相違部分も有する選択識別子をそれぞれ付与する選択識別子付与部と、前記レベル別分割部により内部処理毎に別に分
割された複数の部分プログラムへの処理続行が必要な部分プログラムにはその処理続行が必要な位置に選択リンク命令を作成して挿入する選択リンク命令作成部とを有し、前記選択リンク命令はプログラム受信装置の能力に応じて複数の部分プログラムのうちいずれか１つに処理を続行する意味を示す命令であるとすることもできる。
【００６４】
上記構成により、プログラム受信実行装置側では、当該装置の能力に応じた処理をする複数の部分プログラムのうち１つを選択して受信して実行することができるため、記憶装置の容量を無駄に消費せずに能力に応じた最適な処理を行うことができる。
また、前記リンク命令は、必要とする他の部分プログラムを識別するための識別子を当該リンク命令のオペランドにもつとすることもできる。
【００６５】
上記構成により、プログラム受信実行装置側では、部分プログラムの実行を続行するために必要な他の部分プログラムの識別子を容易に取得することができる。
また、前記選択リンク命令は、必要とする他の部分プログラムを識別するための基礎識別子を当該選択リンク命令のオペランドにもち、前記基礎識別子は、前記のプログラム受信装置の能力に応じた処理をするために複数の部分プログラムに前記選択識別子付与部が付与した選択識別子の共通部分の情報を示す識別子であるとすることもできる。
【００６６】
上記構成により、プログラム受信実行装置側では、当該装置の能力に応じた処理をする複数の部分プログラムのうち１つを選択して受信して実行することが、受信した情報から部分プログラムの識別子を合成することにより容易にできる。
また、前記分割手段はさらに、それぞれの部分プログラムが所定の大きさ以下となるように分割するとすることもできる。
【００６７】
上記構成により、プログラム受信実行装置側では、所定のサイズ以下である部分プログラムを受信して実行できるので、迅速な実行開始が実現される。
また、前記所定の大きさは、ひとまとまりのデータを連続して送信する最小送信単位であるパケットのサイズであるとすることもできる。
上記構成により、プログラム受信実行装置側では、分離抽出可能な最小サイズである部分プログラムを受信して実行できるので、さらに迅速な実行開始が実現される。
【００６８】
また、前記送信手段は、部分プログラム複数をデジタル放送として送信するとすることもできる。
上記構成により、同時に多数のプログラム受信実行装置にプログラムを送信することができる。
また、前記送信手段はさらに、部分プログラム複数を繰り返し送信するとすることもできる。
【００６９】
上記構成により、プログラム受信実行装置では、１度受信した部分プログラムが不要になった時点で記憶装置上の当該部分プログラムを記憶した領域を解放することができ、当該部分プログラムが必要になった時点で再度受信して抽出し記憶装置に取り込むことができるため、記憶装置を有効に活用することができる。
また、前記の複数の部分プログラムは、前記プログラム中の複数のエラー処理の全部又は一部であるとすることもできる。
【００７０】
上記構成により、プログラム受信実行装置では迅速なエラー処理の開始が実現される。
また、前記プログラム送信装置はさらに、少なくとも映像データ又は音声データのうち１つを予め記憶する映像音声データ記憶手段を備え、前記送信手段はさらに、複数の部分プログラムを前記映像音声データ記憶手段から取り出した少なくとも映像データ又は音声データのうち１つとともに多重化して送信するとすることもできる。
【００７１】
上記構成により、プログラム受信実行装置では映像又は音声を制御する部分プログラムの実行により、映像、音声に関連した制御処理の迅速な実行開始が実現される。
また、前記送信手段は、前記の複数の部分プログラムを、該ＩＳＯ／ＩＥＣ１３８１８に規定されているＭＰＥＧ２のトランスポートストリームのプライベートセクションの全部又は一部の領域に配置し、ＩＳＯ／ＩＥＣ１３８１８の規格に基づいて多重化及び送信を行うとすることもできる。
【００７２】
上記構成により、プログラム送信装置は、部分プログラムの識別子としてテーブルＩＤを用いることができ、プログラム受信実行装置では、受信した信号からトランスポートデコーダによりＰＩＤとテーブルＩＤを利用して部分プログラムを容易に抽出することができる。
また、前記プログラム送信装置はさらに、プログラム受信装置から送られた部分プログラム指定情報を含む送信要求を受信する送信要求受信手段を備え、前記送信手段はさらに、前記送信要求受信手段が送信要求を受信した場合に前記部分プログラム指定情報を参照して送信要求に応じて部分プログラムを送信する要求応答送信部を有するとすることもできる。
【００７３】
上記構成により、プログラム送信装置は、部分プログラムを送信要求があってから送信することもでき、プログラム受信実行装置では、１度受信した部分プログラムが不要になった時点で記憶装置上の当該部分プログラムを記憶した領域を解放することができ、当該部分プログラムが必要になった時点で送信要求をプログラム送信装置に送ることにより再度送られた部分プログラムを受信して抽出し記憶装置に取り込むことができるため、記憶装置を有効に活用することができる。
【００７４】
また、前記プログラム送信装置はさらに、部分プログラム毎に繰り返し送信する頻度である優先度を付与する優先度付与手段を備え、前記送信手段は、前記優先度付与手段が付与した優先度に応じて対応する部分プログラムを繰り返し送信する周期を変更して部分プログラム複数をデジタル放送として繰り返し送信するとすることもできる。
上記構成により、プログラム受信装置側では、プログラムの実行に最低限必要なメインプログラムの入り口部分である部分プログラムの受信に必要とする時間が短くなるため、迅速なプログラムの実行開始が実現される。これも第１の目的を達成するためのものである。
【発明を実施するための最良の形態】
【００７５】
［第１実施例］
以下に、本発明に係るプログラム送信装置及びプログラム受信実行装置について、第１実施例を説明する。
（デジタル放送送信装置）
まず、デジタル放送送信装置について説明する。
【００７６】
本デジタル放送送信装置は、ＩＳＯ／ＩＥＣ１３８１８に準拠して放送番組を構成するデジタル映像・音声データ及び番組情報や番組制御のためのプログラム等を圧縮し多重化して送信する装置である。ここでプログラムとはコンピュータプログラムをいう。
図９は、第１実施例におけるデジタル放送送信装置の構成を示すブロック図である。
プログラム記憶部３０１０には放送番組の情報や放送番組制御等のためのプログラムを、映像データ記憶部３０２０には放送番組を構成する映像データを、音声データ記憶部３０３０には放送番組を、システム情報記憶部３０４０には映像データと音声データと放送番組の情報及びプログラムとを抽出するための情報であるシステム情報をそれぞれ記憶している。
【００７７】
プログラム分割部３０５０は、プログラムを分割する。以下、プログラムを分割した後のそれぞれの部分を部分プログラムという。
プログラム分割部３０５０は、プログラム記憶部３０１０に記憶されたプログラムを分割する分割部３０５１、分割された部分プログラム毎を識別するための情報を部分プログラムに付与する識別子付与部３０５２、部分プログラム中に他の部分プログラムへの制御移行を意味するリンク命令を書き込むリンク命令作成部３０５３を有する。
【００７８】
送信部３０６０は、プログラム記憶部３０１０中の放送番組の情報及び複数の部分プログラムと映像データ記憶部３０２０中の映像データと音声データ記憶部３０３０中の音声データとシステム情報記憶部３０４０中のシステム情報とを多重化部３０６１でＭＰＥＧ２のトランスポートストリーム化し更に多重化して送信する。
なお、プログラム記憶部３０１０、映像データ記憶部３０２０、音声データ記憶部３０３０、システム情報記憶部３０４０には、放送すべき番組に対応するデータが外部の装置等により作成されて随時格納されているため、送信部３０６０の放送内容は時間とともに変化する。ただし、デジタル放送の受信装置側において、どの時点から受信を開始しても番組の制御が可能となるように同一番組の映像及び音声のデータを送信中は放送番組制御のためのプログラム群は繰り返し送信している。すなわち、放送番組を制御するためのプログラム記憶部３０１０の内容を多重化するにあたり、所定間隔で繰り返して多重している。
【００７９】
図１０は、トランスポートストリームのイメージを示した図である。
システム情報はＰＩＤが１０のＭＰＥＧ２のトランスポートストリーム２００となり、複数の部分プログラムはそれぞれが別のテーブルＩＤのＭＰＥＧ２のプライベートセクション２１１、２１２、２１３、２１４、・・・と続くＰＩＤが１１のトランスポートストリーム２１０となり、映像データ、音声データはそれぞれＰＩＤが１２、１３のトランスポートストリーム２２０、２３０となる。なお、番組情報や番組制御のためのデータもトランスポートストリーム２１０のプライベートセクションに格納される。ここでＰＩＤ（Packet Identify ）とは映像、音声その他のトランスポートストリームを識別するための識別子である。
【００８０】
トランスポートストリーム２００、２１０、２２０、２３０は多重化部３０６１で多重化され１８８バイトのトランスポートパケットの列として送信される。
以下、プログラム分割部の動作について図９、図１１、図１２を用いて詳細に説明する。
図１１は、プログラムを分割する様子を示す図である。
【００８１】
プログラム８００はデジタル放送受信装置において専用のインタープリタにより解釈実行されるもので中間言語でかかれたバイトコードプログラムである。ただし、図１０においては、説明のために記述言語形式で表現している。
図１２は、プログラム分割部３０５０がプログラム８００を部分プログラム８０１、８０２、８０３に分割する処理手順を示すフローチャートである。
【００８２】
まず、分割部３０５１は最終的に生成する部分プログラムがトランスポートパケットに格納可能なサイズとなるようにプログラム記憶部３０１０に記憶されたプログラムを分割する（ステップＳ３１１０）。
ここで、分割とは、プログラムが複数の部分プログラムで構成されると定めて、個々の部分プログラムに該当する部分の先頭アドレス及び最終アドレスを記憶することをいう。この先頭アドレス及び最終アドレスにより各部分プログラムは識別され、以後の処理がなされることになる。
【００８３】
次に、識別子付与部３０５２は部分プログラムに識別子であるテーブルＩＤを付与する（ステップＳ３１２０）。このテーブルＩＤは各部分プログラムを識別するための識別子である。部分プログラム８０１にはテーブルＩＤとして８０１００が、部分プログラム８０２には８０２００が、部分プログラム８０３には８０３００が付与される。
次に、リンク命令作成部３０５３は、複数の部分プログラムにまたがるプログラムの実行制御を可能にするために、リンク命令を作成して部分プログラム中にリンク命令を挿入する（ステップＳ３１３０）。ここで、リンク命令とは他の部分プログラムへの制御移行を実現するための命令をいう。
【００８４】
部分プログラム８０１から部分プログラム８０２への継続実行を可能にするために部分プログラム８０１には「ＧＥＴ  ８０２００」というリンク命令が挿入され、部分プログラム８０２から部分プログラム８０３への継続実行を可能にするために部分プログラム８０２には「ＧＥＴ  ８０３００」というリンク命令が挿入される。
ここで、「ＧＥＴ  ｎ」という命令の記述は、次の実行先はテーブルＩＤがｎの部分プログラムにあるという意味をもつ。
【００８５】
このようにして、プログラム８００は部分プログラム８０１、８０２、８０３に分割される。部分プログラムは、それぞれが別のＭＰＥＧ２のプライベートセクションを構成することとなり、最終的には送信部３０６０により送信される。
（デジタル放送受信装置）
次に、デジタル放送受信装置について説明する。
【００８６】
図１３は、第１実施例におけるデジタル放送受信装置の構成を示すブロック図である。
デジタル放送受信装置１０３０は、ＩＳＯ／ＩＥＣ１３８１８に準拠してデジタル放送送信装置から衛星１０２０を介して送られてくる放送番組を受信する装置である。
デジタル放送受信装置１０３０は、受信部１０４０と、分離抽出部１０５０と、画像音声情報伸長部１０６０と、記憶部１０７０と、プログラム存否判断部１０７１と、バイトコードインタープリタ１０９０と、制御部１１００と、再生部１１１０と、表示部１１２０と、音声出力部１１３０と、信号受信部１１４０とを備える。
【００８７】
また、記憶部１０７０はイベント情報管理部１０８０と、エラー処理情報管理部１０８１とを有し、バイトコードインタープリタ１０９０はリンク命令処理部１０９１を有する。
ここで、プログラム存否判断部１０７１とバイトコードインタープリタ１０９０と制御部１１００とはメモリとメモリに格納された制御プログラムとＣＰＵによって構成される。
【００８８】
デジタル放送送信装置から送られてくる信号をデジタル放送受信装置１０３０は受信部１０４０により受信する。受信部１０４０は、受信する衛星を切り替える機能を持つ。分離抽出部１０５０は、いわゆるＴＳデコーダであり、受信したトランスポートストリームから、必要なストリームを抽出して転送する。受信する衛星の切り替えやフィルタリングの指示等といった受信部１０４０及び分離抽出部１０５０の制御は制御部１１００が行う。
【００８９】
分離抽出部１０５０は、ＰＩＤ又はＰＩＤとテーブルＩＤを用いて必要なストリームの抽出を行うものであり、ＰＩＤ＝１０を指定してトランスポートストリーム２００を抽出し記憶部１０７０に格納する。制御部１１００は、トランスポートストリーム２００として送られたシステム情報から映像、音声、他のデータのＰＩＤを得て分離抽出部に抽出指示を行うことになる。
【００９０】
分離抽出部１０５０により、映像及び音声のデータは、直接、画像音声伸長部１０６０に送られる。画像音声伸長部１０６０は、ＭＰＥＧ２デコーダであり、送られた圧縮データをリアルタイムに伸長し、伸長したデータを再生部１１１０へ送る。
再生部１１１０は、制御部１１１０の指示に従い、映像データならば表示部１１２０へ、音声データなら音声出力部１１３０に出力する。
【００９１】
分離抽出部１０５０から、映像及び音声以外のデータ、すなわち番組情報や番組制御のためのプログラムは制御部１１００の指示に従って、記憶部１０７０に送られる。これにより記憶部１０７０には、番組制御のためのデータ、欧州のDigital Video Broadcasting（ＤＶＢ）で規定されているElectric Program Guide（ＥＰＧ）のためのデータ、バイトコードインタープリタ１０９０が解釈実行するバイトコードプログラム等が格納される。
【００９２】
なお、バイトコードプログラムは部分プログラムに分割されている。
前記番組制御のためのデータには、利用者の操作により発生又は機器の動作上発生する各種イベントに対応して起動すべきバイトコードプログラムを構成する先頭の部分プログラムのテーブルＩＤがあり、このデータは制御部１１００の制御によりイベント情報管理部１０８０に格納される。
【００９３】
また、データがエラー処理情報である場合には、当該データはエラー処理情報管理部１０８１に格納される。エラー処理情報とは、エラー処理テーブル、エラー処理内エラー処理テーブルからなる。また、エラー処理情報管理部１０８１には予めデフォルトエラー処理テーブル、デフォルトエラー処理内エラー処理テーブルが格納されている。
なお、エラー処理情報の扱いについては後述する。
【００９４】
イベント情報管理部１０８０に格納された情報は、イベント発生に対して制御部１１００がバイトコードインタープリタを起動する際に、どの部分プログラムを実行するかを指示するために制御部１１００によって参照される。
エラー処理情報管理部１０８１に格納されたエラー処理情報は、エラー処理が必要な場合にバイトコードインタープリタ１０９０から参照される。
【００９５】
信号受信部１１４０は、リモコン等によるユーザからの入力信号を受信する。信号受信部１１４０が受信した信号はデータとして制御部１１００に送られ、制御部１１００は送られたデータを判断して、バイトコードインタープリタ１０９０にバイトコードプログラムの実行を指示したり、あるいは、ＥＰＧを含む他のサービス処理を行う。
なお、記憶部１０７０の領域管理を行う機構としてメモリ管理部（図示せず）がある。メモリ管理部は、例えば部分プログラムを分離抽出して記憶部１０７０に読み込もうとする場合等の記憶部１０７０へのデータ読み込み時のメモリ管理を行うものであり、記憶部１０７０に部分プログラムを読み込むだけの空き領域がない場合に、Ｌｅａｓｔ  Ｒｅａｃｅｎｔｌｙ  Ｕｓｅｄ（ＬＲＵ）方式を用いて、一部の部分プログラムをメモリから削除し、領域を空けてから読み込むべき部分プログラムを読み込む。
【００９６】
バイトコードインタープリタ１０９０はバイトコードプログラムを逐次解釈実行するインタープリタであり、バイトコードプログラム実行時にバイトコードをデジタル放送受信装置内各部のプロセッサに対するネイティブコードに翻訳して各部のプロセッサを動作させる。
バイトコードプログラムはデジタル放送送信装置側で、複数の部分プログラムに分割されて送られるものであり、複数の部分プログラムの集まりとして構成される。
【００９７】
ここで、図１１、図１３、図１４、図１５を用いて、バイトコードインタープリタ１０
９０の動作について説明する。
図１４は、バイトコードインタープリタ１０９０が行うバイトコードプログラム実行制御処理を示すフローチャートである。
このフローは利用者の操作により発生又は機器の動作上発生するイベントに対応するバイトコードプログラムを実行する処理である。
【００９８】
ここでは、バイトコードプログラムが前述の図１１で示した部分プログラム８０１、８０２、８０３から構成されており、現在部分プログラム８０１を記憶部１０７０に取り込んでおり、その実行を開始する直前の状態から説明する。
まず、読込解釈実行するためのプログラム行を表すｌｉｎｅを０に初期設定する（ステップＳ３０１）。次に、ｌｉｎｅに１を加え（ステップＳ３０２）、エラーコードを表すｅｒｒｏｒを０に初期設定する（ステップＳ３０３）。
【００９９】
次に、ｌｉｎｅ行目のコマンドが別の部分プログラムを取得するコマンドであるリンク命令かどうかを判断し（ステップＳ３０４）、もし、リンク命令であれば、部分プログラムの取得処理（ステップＳ３０５）を行い、そうでなければ、コマンド処理を実行する（ステップＳ３１０）。
これにより部分プログラム８０１の「ＰＵＳＨ  Ａ」はステップＳ３１０のコマンド処理により実行されることになる。コマンド処理（ステップＳ３１０）は、各種コマンドに応じた処理をバイトコードインタープリタ１０９０内部の変数操作や、制御部１１００によるデジタル放送受信装置内の各部及び外部接続された機器の制御によって実現される処理である。
【０１００】
コマンド処理実行後に実行結果を示すエラーコードが設定され（ステップＳ３１１）、次に、エラー処理を行い（ステップＳ３１２）、プログラムがそのコマンドで終了するのでなければ、ステップＳ３０２に戻りｌｉｎｅに１を加えて次行の処理を行う。
これにより、次は部分プログラム８０１の「ＰＵＳＨ  Ｂ」が実行される。ステップＳ３０２、Ｓ３０３、Ｓ３０４、Ｓ３１０、Ｓ３１１、Ｓ３１２、Ｓ３１３が繰り返し実行された後、「ＧＥＴ  ８０２００」が実行されることになる。
【０１０１】
この「ＧＥＴ  ８０２００」はリンク命令であるためステップＳ３０４からＹＥＳの分岐に進み部分プログラム取得処理が実行される（ステップＳ３０５）。
図１５は、部分プログラム取得処理のフローチャートである。
まず、リンク命令処理部１０９１は、エラーコードを０にする（ステップＳ４００１）。
【０１０２】
次に、プログラム存否判断部１０７１にテーブルＩＤが８０２００の部分プログラムが存在するかを問う（ステップＳ４０１０）。
もしそうであれば、ＹＥＳの分岐に進み、部分プログラム取得処理を完了する。
もし当該部分プログラムが存在しなければ、テーブルＩＤ＝８０２００を指定して、当該部分プログラムを抽出するよう制御部１１００を介して分離抽出部１０５０に指示する（ステップＳ４０２０）。
【０１０３】
次に、無限ループを防止するためのループカウンタを０にする（ステップＳ４０３０）。
その後、プログラム存否判断部１０７１にテーブルＩＤが８０２００の部分プログラムが存在するかを問い（ステップＳ４０３１）、存在する場合に限りＹＥＳの分岐に進み部分プログラム取得処理を完了する。
【０１０４】
もし存在しなければＮＯの分岐に進みループカウンタが１０より大きくなければ（ステ
ップＳ４０３２）、ループカウンタを１増加し（ステップＳ４０３３）、部分プログラムの存在チェック（ステップＳ４０３１）に戻る。
ステップＳ４０３２においてループカウンタが１０より大きい場合にはエラーコードを１と設定する（ステップＳ４０４０）。
【０１０５】
これにより、部分プログラム取得処理は完了する。
以下、図１４のフローチャートに説明を戻す。
部分プログラム取得処理が成功したかエラーコードにより判定し（ステップＳ３０６）、成功した場合にはＹＥＳの分岐に進みプログラム実行制御処理を行う（ステップＳ３０８）。すなわち、取得した部分プログラムについて図１４のフローチャート全体に示すプログラム実行制御処理を新たに行う。
【０１０６】
この時、今まで行っていた処理については、新たなプログラム実行制御処理の終了後、継続できるように必要な情報はバイトコードインタプリタ内に保存される。
これにより、部分プログラム８０２が実行されることになる（ステップＳ３０１〜Ｓ３１３）。
その後、プログラム実行制御処理におけるエラーに基づいてエラーコードを設定する（ステップＳ３０９）。
【０１０７】
また、部分プログラム取得処理（ステップＳ３０５）に失敗した場合には、ステップＳ３０６からステップＳ３０７に進みエラーコードを設定する。
次に、エラーコードに基づいてエラー処理を行う（ステップＳ３１２）。ただしエラー処理においてエラーコードが０ならば何も処理は行わない。
プログラムが終了であれば（ステップＳ３１３）処理を終了し、終了でなければ、ステップＳ３０２に戻りｌｉｎｅに１を加えて次行の処理を行う。
【０１０８】
従って、部分プログラム８０２の「ＧＥＴ  ８０３００」の実行後に部分プログラム８０３が続いて実行され、部分プログラム８０３の最後の「ＥＮＤ」をステップＳ３１３で判断した場合に図１４のフローは完了することになる。
このように、バイトコードインタープリタ１０９０によってプログラム８０１、８０２、８０３は順次実行されることになる。
【０１０９】
ここで、さらに図１４のステップＳ３１２のエラー処理について詳細に説明する。
このエラー処理はエラー処理情報管理部１０８１に格納されたエラー処理情報、すなわちエラー処理テーブル及びエラー処理内エラー処理テーブルを参照して行われる。
図１６は、エラー処理を示すフローチャートである。
以下、エラー処理テーブル及びエラー処理内エラー処理テーブルをエラーテーブルと、デフォルトエラー処理テーブル及びデフォルトエラー処理内エラー処理テーブルをデフォルトエラーテーブルという。
【０１１０】
エラー情報管理部１０８１にエラーテーブルが格納されているかのチェックを行い（ステップＳ４０１）、既に格納されていれば（ステップＳ４０２）、当該エラーテーブルの内容に従ってエラー処理を行う（ステップＳ４０６）。ステップＳ４０２においてエラーテーブルが格納されていないと判断された場合には、エラーテーブル取得処理を行う（ステップＳ４０３）。エラーテーブルのテーブルＩＤは予め定められたものであり、エラーテーブルの取得は、テーブルＩＤの指定により制御部１１００を介して分離抽出部１０５０を制御することによって行う。
【０１１１】
もし、エラーテーブルを取得できれば、エラー処理情報管理部１０８１は、当該エラーテーブルを格納する。また、エラーテーブルが受信できない等の何らかの理由により取得
できない場合には（ステップＳ４０４）、エラー処理情報管理部１０８１は予め記憶しているデフォルトエラーテーブルをエラーテーブルとして扱うよう設定する（ステップＳ４０５）。これにより、エラーテーブルが設定され、エラー処理が実施される（ステップＳ４０６）。ここで、エラーテーブルに登録されていないエラーコード、例えば０は、非エラーとして扱われ、何も処理されない。
【０１１２】
また、ステップＳ４０６におけるエラーテーブルに従ったラー処理において、エラーが起こった場合（ステップＳ４０７）、エラー処理内エラー処理テーブルを参照して、エラー処理内用のエラー処理が行われる（ステップＳ４０８）。
このように、図１４のステップＳ３１２に示すエラー処理は実行される。
ここで、上述のステップＳ４０６のエラー処理において参照されるエラー処理テーブル、エラー処理内エラー処理テーブル、デフォルトエラー処理テーブル、デフォルトエラー処理内エラーテーブルについて図１７、図１８を用いて説明する。
【０１１３】
図１７は、エラー処理テーブル、エラー処理内エラー処理テーブルの構成及びエラー処理コードの説明のための図である。
エラー処理テーブル５０１及びエラー処理内エラー処理テーブル５０２はエラーコードとエラー処理コードとを対応付けたテーブルである。エラー処理コードの説明５０３は、エラー処理テーブル５０１及びエラー処理内エラー処理テーブル５０２に格納されたエラー処理コードについての設定例である。エラー処理コードの説明５０３に示すように、エラー処理コードはエラー処理そのものを示すＣＯＤＥと、エラー処理後におかれる状態を示すＯＰを組み合わせたものである。
【０１１４】
例えばエラー処理テーブル５０１において、０による除算が行われた場合のエラーコードである００１に対するエラー処理コードは０１０２を割り振っている。エラー処理コードの０１０２は、５０３に示す様に現在のプログラムが処理されている単位であるコンテンツを破棄し、サービスのデフォルト処理を行うことを意味している。サービスのデフォルト処理とは、例えば、メニュー選択の画面を表示する等の処理である。
【０１１５】
また、スタックオーバーフローが起こった場合のエラーコードである００２に対するエラー処理コードは０３９９を割り振っている。エラー処理コードの０３９９は、テーブルＩＤが９９の部分プログラムを起動することを意味している。
また、エラー処理内エラー処理テーブル５０２の構造はエラー処理テーブルと同じである。エラー処理内エラー処理テーブル５０２は、既にエラーが起こっている場合の処理を示すものであるため、より安全な処理が行われるように設定されている。
【０１１６】
図１８は、デフォルトエラー処理テーブル、デフォルトエラー処理内エラー処理テーブルの構成を示す図である。
デフォルトエラー処理テーブル６０１及びデフォルトエラー処理内エラー処理テーブル６０２の構成は、上述のエラー処理テーブル５０１及びエラー処理内エラー処理テーブル５０２とそれぞれ同じである。
【０１１７】
このようにして、本デジタル放送受信装置は、分割されて送信されたバイトコードプログラムを必要時に取り込みながら実行することにより利用者の操作により発生又は機器の動作上発生する各種イベントに迅速に対応することができる。
［第２実施例］
以下に、本発明に係るプログラム送信装置及びプログラム受信実行装置について、第２実施例を説明する。
【０１１８】
（デジタル放送送信装置）
本デジタル放送送信装置は、ＩＳＯ／ＩＥＣ１３８１８に準拠して放送番組を構成するデジタル映像・音声データ及び番組情報や番組制御のためのプログラム等を圧縮し多重化して送信する装置である。
図１９は、第２実施例におけるデジタル放送送信装置の構成を示すブロック図である。
【０１１９】
プログラム記憶部８０１０には放送番組の情報や放送番組制御等のためのプログラムを、映像データ記憶部８０２０には放送番組を構成する映像データを、音声データ記憶部８０３０には放送番組を、システム情報記憶部８０４０には映像データと音声データと放送番組の情報及びプログラムとを抽出するための情報であるシステム情報をそれぞれ記憶している。
【０１２０】
また、プログラム構造情報記憶部８０１１には、プログラム記憶部８０１０に記憶されたプログラムの構造に関する情報が記憶されている。以下、このプログラムの構造に関する情報をプログラム構造情報という。
プログラム分割部８０５０は、プログラム記憶部８０１０に記憶されたプログラムをプログラム構造情報記憶部８０１１を参照して分割する。以下、プログラムを分割した後のそれぞれの部分を部分プログラムという。
【０１２１】
プログラム分割部８０５０は、プログラム記憶部８０１０に記憶されたプログラムを分割する分割部８０５１と、分割された部分プログラム毎を識別するための情報を部分プログラムに付与する識別子付与部８０５２と、部分プログラム中に他の部分プログラムへの制御移行を意味するリンク命令を書き込むリンク命令作成部８０５３と、部分プログラムを繰り返し送信する頻度を示す優先度を部分プログラム毎に設定する優先度付与部８０５４を有する。
【０１２２】
送信部８０６０は、プログラム記憶部８０１０中の放送番組の情報及び複数の部分プログラムと映像データ記憶部８０２０中の映像データと音声データ記憶部８０３０中の音声データとシステム情報記憶部８０４０中のシステム情報とを多重化部８０６１でＭＰＥＧ２のトランスポートストリーム化し更に多重化して送信する。多重化部８０６１は多重化を、部分プログラム毎に設定された優先度を参照して行う。なお、優先度は、優先度付与部８０５４によってプログラム記憶部８０１０中の所定領域に格納されている。
【０１２３】
このような第２実施例におけるデジタル放送送信装置が第１実施例におけるデジタル放送送信装置と異なる点は、プログラム構造情報記憶部８０１１を備えた点と、これを参照してプログラム分割部８０５０が動作する点と、さらに、部分プログラム毎に付与された優先度に応じて多重化部８０６１が多重化する点である。
以下、プログラム分割部８０５０の動作について図１２、図２０、図２１を用いて詳細に説明する。
【０１２４】
図２０は、プログラム構造を示す概念図である。
通常、プログラムはいくつかの分岐を含む。この分岐やサブプログラムの呼び出し等の構造に関する情報がプログラム構造情報であり、例えば、高級言語で記述されたソースプログラムはそれ自体プログラム構造情報を有する。また、高級言語で記述されたソースプログラムをコンパイルした後の中間言語コード等にもプログラム構造情報は存在する。
【０１２５】
第２実施例においては、プログラム構造情報記憶部８０１１には、ソースプログラムレベルのプログラム構造情報が格納されているとする。すなわち、プログラム記憶部８０１０に記憶されている分割対象となるプログラムについてのＣ言語における「ｉｆ」文とか「ｓｗｉｔｃｈ−ｃａｓｅ」文についての情報等が記憶されている。
また、さらにプログラム構造情報記憶部８０１１には、レベル別処理を示す情報も記憶
されている。ここで、レベル別処理とは、デジタル放送受信装置の能力レベルに応じた内容の処理をいい、例えば、高性能の受信装置にはレベル１用の処理を行わせ中位の性能の受信装置にはレベル２用の処理を行わせ性能の低い受信装置にはレベル３用の処理を行わせるような選択実行処理をいう。例えば、表示能力のレベルとしては、第１のレベルとして１０ミリ秒間隔で画面全体をブリンキング（点滅）させることのできるレベル、第２のレベルとして１０ミリ秒間隔で画面上に描画された枠のみをブリンキングさせることのできるレベル、第３のレベルとして１００ミリ秒間隔で画面上に描画された枠をブリンキングさせることのできるレベルを定めることができる。
【０１２６】
なお、プログラムにおいて、レベル別処理は「ｓｗｉｔｃｈ  ｌｅｖｅｌｓ」のように定まった形で記述する等を定めておけばプログラムの解析によりプログラム構造情報を作成することもできる。
プログラム分割部８０５０は第１実施例と同様に図１２のフローチャートに沿った動作をする。
【０１２７】
ステップＳ３１１０において分割部８０５１はプログラム構造情報記憶部８０１１に記憶されているプログラム構造情報を参照して、プログラム記憶部８０１０に記憶されているプログラムを分割する。
分割の第１の規則は、分割したそれぞれの部分プログラムは最終的にトランスポートパケットのサイズ以下となるように分割することである。なお第１の規則は、他の規則による分割の後に適用される。
【０１２８】
分割の第２の規則は、プログラム中の「ｉｆ」文により分岐している構造を検出すると、それを別々に分割することである。
分割の第３の規則は、プログラム中の「ｓｗｉｔｃｈ−ｃａｓｅ」文により分岐している構造を検出すると、「ｃａｓｅ」の枝それぞれを別々に分割することである。
図２１は、分割後のプログラムのイメージを示す図である。
【０１２９】
分割部８０５１は、プログラム中の判断ブロック５０２０で示す「ｉｆ」によりブロック５０３０で示す処理２とブロック５０４０で示す処理３とを分割し、さらに判断ブロック５０５０で示す「ｉｆ」によりブロック５０６０で示す処理４とブロック５０７０で示す処理５とを分割する。この結果として当該プログラムは部分プログラム５１００と５２００と５３００とに分割されることになる。なお、ここでは部分プログラム５１００、５２００、５３００はいずれもトランスポートパケットより小さいサイズである。
【０１３０】
図２２は、「ｓｗｉｔｃｈ-ｃａｓｅ」文を有する構造のプログラムの分割後のイメー
ジを示す図である。
この図２２は、レベル別処理のイメージを示すものである。
分割部８０５１は、プログラム中の判断ブロック６０２０で示す「ｓｗｉｔｃｈ−ｃａｓｅ」によりブロック６０３０で示すレベル１用処理と、ブロック６０４０で示すレベル２用処理とブロック６０５０で示すレベル３用処理を全て別々になるように分割する。
【０１３１】
この結果として当該プログラムは部分プログラム６１００と６２００と６３００と６４００と６５００とに分割されることになる。それぞれの部分プログラムはトランスポートパケットより小さい。
このように分割部８０５１はプログラムを複数の部分プログラムに分割する（ステップＳ３１１０）。
【０１３２】
次に識別子付与部３０５２は、プログラム構造情報を参照して部分プログラムにテーブルＩＤを付与する（ステップＳ３１２０）。ここで、上述のレベル別処理である部分プロ
グラム６２００、６３００、６４００には、この関係がわかるようにテーブルＩＤを付ける。従って、プログラム６２００のテーブルＩＤは６０１０１、プログラム６３００のテーブルＩＤは６０１０２、プログラム６４００のテーブルＩＤは６０１０３とされる。
【０１３３】
次にリンク命令作成部によりそれぞれの部分プログラムにリンク命令が挿入される（ステップＳ３１３０）。この場合にも、プログラム構造情報を参照して、レベル別処理の分岐前部分を含む部分プログラム６１００の最後に「ＧＥＴ  ６０１０Ｘ」というリンク命令が作成され挿入される。
これは、「テーブルＩＤが６０１０ｎ（ｎはレベル番号）の部分プログラムを取得して実行せよ」という意味の命令になる。つまり「ＧＥＴ  ｍＸ」の形式のリンク命令では、基礎識別子がｍであり、取得すべき部分プログラムの識別子は、基礎識別子とレベル番号を合成することにより生成できる。ここで、基礎識別子とは、レベル番号と合成することにより識別子を生成できるものをいう。従って、デジタル放送受信装置側のプログラムの実行を制御する部分が「ＧＥＴ  ６０１０Ｘ」を解釈して実行する場合には、基礎識別子である「６０１０」と当該デジタル放送受信装置のレベル番号とを合成して、取得すべき部分プログラムの識別子であるテーブルＩＤを生成することになる。
【０１３４】
従って、最終的にこれらの部分プログラムが送信された後は、この部分プログラム６１００を解釈実行するデジタル放送受信装置側のバイトコードインタープリタにより、部分プログラム６２００、６３００、６４００のうちいずれか１つが取り込まれ実行されることになる。
以上のようにプログラム分割部８０５０はプログラム構造情報を参照してプログラムを複数の部分プログラムに分割する。
【０１３５】
以下、プログラム分割部８０５０の優先度付与部８０５４による部分プログラムへの優先度付けの動作について図２３を用いて説明する。
図２３は、部分プログラムの優先度を示す概念図である。
同図は、上述の部分プログラム５１００と部分プログラム５２００と部分プログラム５３００との関係と、それぞれの部分プログラムに設定する優先度５１０１、５２０１、５３０１とを示している。
【０１３６】
画面イメージ５１０２は、部分プログラム５１００の動作により表示する画面のイメージ例であり、ここでは「商品１」と「商品２」と描かれたボタンを表示した通信販売の番組を画面に表示するイメージを示している。この例では、利用者が「商品１」と描かれたボタンを選択した場合に対応する処理は、部分プログラム５２００であり、利用者が「商品２」と描かれたボタンを選択した場合に対応する処理は、部分プログラム５３００である。
【０１３７】
優先度付与部８０５４は、プログラム構造情報記憶部８０１１に記憶しているプログラム構造情報を参照することにより、複数の部分プログラムについて、メインとなる部分プログラムを決定し、そのプログラムに最も高い優先度Ａを付与する。ここでは、メインプログラムの入り口部分である部分プログラム５１００に優先度Ａを付与することになる（図２１参照）。
【０１３８】
優先度付与部８０５４は、次に、優先度Ａの部分プログラムから例えば「ＩＦ」により分岐する部分プログラムを調べて、該当する部分プログラムに優先度Ａより低い優先度である優先度Ｂを付与する。ここでは、部分プログラム５２００と部分プログラム５３００とに優先度Ｂを付与することになる（図２１参照）。
優先度付与部８０５４は、次に、優先度Ｂの部分プログラムから分岐する部分プログラムを調べて、該当する部分プログラムに優先度Ｂより低い優先度である優先度Ｃを付与す
る。なお、ここでは、優先度Ｃに該当する例は示さない。
【０１３９】
このようにして、優先度付与部８０５４は、各部分プログラムに優先度を付与し、付与した優先度はプログラム記憶部８０１０中の所定領域に格納する。
なお、利用者の操作に対応する動作を記述したプログラムにおいては、利用者の操作に応じた処理を実現するために、一般に分岐構造をとる（図２１、図２３参照）。そこで、本実施例におけるデジタル放送送信装置においては、この分岐構造に基づき優先度付与部８０５４が優先度を付与する、即ち、プログラムの分岐の深さとの関係において優先度を付与するのである。但し、優先度の付与の方法はこの限りにあらず、プログラム構造情報記憶部８０１１に予め優先度を示す情報を格納しておき、これに基づいて優先度を付与してもよい。
【０１４０】
以下、多重化部８０６１における優先度に応じた部分プログラムの多重について図２４を用いて説明する。
図２４は、優先度に応じた部分プログラムの多重化の概念を示す図である。
同図は、複数の部分プログラムを多重化部８０６１で他のストリームデータと共に多重化する場合において、上述の優先度Ａの部分プログラム５１００並びに優先度Ｂの部分プログラム５２００及び部分プログラム５３００の多重化のタイミングを時間軸５００１に基づいて示したものである。
【０１４１】
多重化部８０６１は、プログラム記憶部８０１０の所定領域中に記憶している優先度を参照して、それぞれの部分プログラムを多重化する際の時間に対する頻度を定めて、多重化する。優先度が高いものほど頻度を高くする。図２４に示す例は、多重化部８０６１は、優先度Ａの部分プログラムを優先度Ｂの部分プログラムよりも高い頻度で多重化することを示している。
【０１４２】
このようにして、多重化されたプログラムは最終的には送信部８０６０により、優先度に応じた頻度で送信されることになる。
このことにより、デジタル放送受信装置側にとって、プログラムの実行に最低限必要なメインプログラムの入り口部分である部分プログラムの受信に必要とする時間が短くなるという効果が期待できる。
【０１４３】
（デジタル放送受信装置）
次に、デジタル放送受信装置について説明する。
図２５は、第２実施例におけるデジタル放送受信装置の構成を示すブロック図である。
デジタル放送受信装置７０３０は、ＩＳＯ／ＩＥＣ１３８１８に準拠してデジタル放送送信装置から衛星７０２０を介して送られてくる放送番組を受信する装置である。
【０１４４】
デジタル放送受信装置７０３０は、受信部７０４０と、分離抽出部７０５０と、画像音声情報伸長部７０６０と、記憶部７０７０と、プログラム存否判断部７０７１と、バイトコードインタープリタ７０９０と、制御部７１００と、再生部７１１０と、表示部７１２０と、音声出力部７１３０と、信号受信部７１４０と端末情報記憶部７１５０とを備える。
【０１４５】
また、記憶部７０７０はイベント情報管理部７０８０と、エラー処理情報管理部７０８１とを有し、バイトコードインタープリタ７０９０はリンク命令処理部７０９１を有する。
ここで、プログラム存否判断部７０７１とバイトコードインタープリタ７０９０と制御部７１００とはメモリとメモリに格納された制御プログラムとＣＰＵによって構成される。
【０１４６】
デジタル放送送信装置から送られてくる信号をデジタル放送受信装置７０３０は受信部７０４０により受信する。受信部７０４０は、受信する衛星を切り替える機能を持つ。分離抽出部７０５０は、いわゆるＴＳデコーダであり、受信したトランスポートストリームから、必要なストリームを抽出して転送する。受信する衛星の切り替えやフィルタリングの指示等といった受信部７０４０及び分離抽出部７０５０の制御は制御部７１００が行う。
【０１４７】
分離抽出部７０５０は、ＰＩＤ又はＰＩＤとテーブルＩＤを用いて必要なストリームの抽出を行うものであり、ＰＩＤ＝１０を指定してトランスポートストリーム２００を抽出し記憶部７０７０に格納する。制御部７１００は、トランスポートストリーム２００として送られたシステム情報から映像、音声、他のデータのＰＩＤを得て分離抽出部に抽出指示を行うことになる。
【０１４８】
分離抽出部７０５０により、映像及び音声のデータは、直接、画像音声伸長部７０６０に送られる。画像音声伸長部７０６０は、ＭＰＥＧ２デコーダであり、送られた圧縮データをリアルタイムに伸長し、伸長したデータを再生部７１１０へ送る。
再生部７１１０は、制御部７１１０の指示に従い、映像データならば表示部７１２０へ、音声データなら音声出力部７１３０に出力する。
【０１４９】
分離抽出部７０５０から、映像及び音声以外のデータ、すなわち番組情報や番組制御のためのプログラムは制御部７１００の指示に従って、記憶部７０７０に送られる。これにより記憶部７０７０には、番組制御のためのデータ、欧州のＤＶＢ（Digital Video Broadcasting）で規定されているＥＰＧ（Electric Program Guide）のためのデータ、バイトコードインタープリタ７０９０が解釈実行するバイトコードプログラム等が格納される。
【０１５０】
なお、バイトコードプログラムは部分プログラムに分割されている。
前記番組制御のためのデータには、利用者の操作により発生又は機器の動作上発生する各種イベントに対応して起動すべきバイトコードプログラムを構成する先頭の部分プログラムのテーブルＩＤがあり、このデータは制御部７１００の制御によりイベント情報管理部７０８０に格納される。
【０１５１】
また、データがエラー処理情報である場合には、当該データはエラー処理情報管理部７０８１に格納される。エラー処理情報とは、エラー処理テーブル、エラー処理内エラー処理テーブルからなる。また、エラー処理情報管理部７０８１には予めデフォルトエラー処理テーブル、デフォルトエラー処理内エラー処理テーブルが格納されている。
イベント情報管理部７０８０に格納された情報は、イベント発生に対して制御部７１００がバイトコードインタープリタを起動する際に、どの部分プログラムを実行するかを指示するために制御部７１００によって参照される。
【０１５２】
エラー処理情報管理部７０８１に格納されたエラー処理情報は、エラー処理が必要な場合にバイトコードインタープリタ７０９０から参照される。
信号受信部７１４０は、リモコン等によるユーザからの入力信号を受信する。信号受信部７１４０が受信した信号はデータとして制御部７１００に送られ、制御部７１００は送られたデータを判断して、バイトコードインタープリタ７０９０にバイトコードプログラムの実行を指示したり、あるいは、ＥＰＧを含む他のサービス処理を行う。
【０１５３】
なお、記憶部７０７０の領域管理を行う機構としてメモリ管理部（図示せず）がある。メモリ管理部は、例えば部分プログラムを分離抽出して記憶部７０７０に読み込もうとする場合等の記憶部７０７０へのデータ読み込み時のメモリ管理を行うものであり、記憶部
７０７０に部分プログラムを読み込むだけの空き領域がない場合に、Ｌｅａｓｔ  Ｒｅａｃｅｎｔｌｙ  Ｕｓｅｄ（ＬＲＵ）方式を用いて、一部の部分プログラムをメモリから削除し、領域を空けてから読み込むべき部分プログラムを読み込む。
【０１５４】
バイトコードインタープリタ７０９０はバイトコードプログラムを逐次解釈実行するインタープリタであり、バイトコードプログラム実行時にバイトコードをデジタル放送受信装置内各部のプロセッサに対するネイティブコードに翻訳して各部のプロセッサを動作させる。
バイトコードプログラムはデジタル放送送信装置側で、複数の部分プログラムに分割されて送られるものであり、複数の部分プログラムの集まりとして構成される。
【０１５５】
このような第２実施例におけるデジタル放送受信装置が第１実施例におけるデジタル放送受信装置と異なる点は、端末情報記憶部７１５０を備えたこと、これを参照してバイトコードインタープリタ７０９０が動作する点である。
従って、以下、バイトコードインタープリタ７０９０が端末情報記憶部７１５０を参照していかに動作するかについて図２６を用いて詳細に説明する。
【０１５６】
端末情報記憶部７１５０には、当該デジタル放送受信装置の処理能力レベルに関する端末情報を記憶する。
第２実施例におけるデジタル放送受信装置は、表示における性能のレベルが第２のレベルであるとする。
図２６は、バイトコードインタープリタ７０９０が行うバイトコードプログラム実行制御処理を示すフローチャートである。
【０１５７】
このフローは利用者の操作により発生又は機器の動作上発生するイベントに対応するバイトコードプログラムを実行する処理である。
まず、読込解釈実行するためのプログラム行を表すｌｉｎｅを０に初期設定する（ステップＳ１２０１）。次に、ｌｉｎｅに１を加え（ステップＳ１２０２）、エラーコードを表すｅｒｒｏｒを０に初期設定する（ステップＳ１２０３）。
【０１５８】
次に、ｌｉｎｅ行目のコマンドが別の部分プログラムを取得するコマンドであるリンク命令かどうかを判断し（ステップＳ１２０４）、もし、リンク命令でなければ、コマンド処理を実行する（ステップＳ１２０５）。
ここで現在、「ＧＥＴ  ６０１０Ｘ」の意味を表すバイトコードであるリンク命令を実行しようとしている状態として以下を説明する。
【０１５９】
「ＧＥＴ  ６０１０Ｘ」の意味を表すバイトコードはリンク命令であるので、ステップＳ１２０４からステップＳ１２０９に進む。
レベル付きリンク命令かどうかを判定すると（ステップＳ１２０９）、レベル付きリンク命令なので、端末情報記憶部７１５０からバイトコードインタープリタ７０９０は端末情報を得る（ステップＳ１２１０）。レベル２を得たバイトコードインタープリタ７０９０は次にテーブルＩＤを生成する（ステップＳ１２１１）。これにより、テーブルＩＤ＝６０１０２が生成される。
【０１６０】
従って、次に部分プログラム取得処理においては、テーブルＩＤが６０１０２の部分プログラムを取得することになる（ステップＳ１２１３）。
以下のステップＳ１２１４からステップＳ１２０８は、前述の第１実施例で説明した図１４のステップＳ３０６からステップＳ３１３と全く同様なので、説明を省略する。
このようにして、レベル別処理を含んだプログラムが分割されて送信された場合に、本デジタル放送受信装置によれば、当該デジタル放送受信装置の性能レベルに応じた部分プ
ログラムを取得して実行することができ、他のレベルの部分プログラムは記憶部７０７０中に取り込まれることもない。従って、デジタル放送受信装置は無駄に記憶容量を消費することなく受信装置の能力レベルに応じた処理を行うことができる。
【０１６１】
以下、第２実施例についての変形例として、受信装置側で一度受信し分離抽出して記憶装置に格納して使用した部分プログラムのうち特定のものについては、複数の部分プログラムで構成する一連のプログラム処理を終了するまでは、記憶装置から削除しないこととし、当該部分プログラムの再使用時に高速に実行開始ができるようにした例について説明する。
【０１６２】
（デジタル放送送信装置の変形例）
デジタル放送送信装置の構成については、本変形例においても第２実施例のデジタル放送送信装置の構成と変わりないため（図１９参照）、各部については第２実施例と同じ名称及び符号を用いて説明する。本変形例が第２実施例と異なる部分は、プログラム分割部８０５０の動作である。
【０１６３】
以下、プログラム分割部８０５０の動作について説明する。
プログラム分割部８０５０は第２実施例と同様に図１２のフローチャートに沿った動作をするが、第２実施例と異なるのは、ステップＳ３１３０の後にプログラム構造情報記憶部８０１１を参照して特定の部分プログラムに「ＬＯＣＫ」というロック命令を挿入するという動作をする点である。
【０１６４】
この特定の部分プログラムを識別するための情報は、予めプログラム構造情報記憶部８０１１に格納されている。
即ち、プログラムは、その実行に際して一の部分が他の部分から２度以上呼び出される可能性を有するプログラム構造を持っている場合、例えば、当該一の部分とは共通モジュールであって他の複数のプログラムモジュールから呼び出されるようなプログラム構造を持っている場合があるため、プログラム構造情報記憶部８０１１には当該一の部分を識別するための情報が記憶されている。以下、当該一の部分を部分プログラムとした場合に、これを常用部分プログラムという。
【０１６５】
従って、プログラム分割部８０５０は、プログラム構造情報記憶部８０１１を参照して、プログラムを部分プログラムに分割する際に常用部分プログラムについては、その常用部分プログラムの命令列中のいずれかの場所に「ＬＯＣＫ」というロック命令を挿入する。
このようにして、プログラム分割部８０５０はプログラムを分割し、必要に応じてロック命令を挿入し、プログラム分割部８０５０によって分割されたプログラムは、最終的には送信部８０６０により送信されることになる。
【０１６６】
このことにより、デジタル放送受信装置側は、記憶装置から削除すべきでない常用部分プログラムを認識するための情報であるロック命令を得ることができる。
（デジタル放送受信装置の変形例）
次に、デジタル放送受信装置の変形例について説明する。
デジタル放送受信装置の構成については、本変形例においても第２実施例のデジタル放送受信装置の構成と変わりないため（図２５参照）、各部については第２実施例と同じ名称及び符号を用いて説明する。第２実施例と本変形例が異なる点は、メモリ管理部の動作とバイトコードインタープリタ７０９０の動作とである。
【０１６７】
本変形例におけるバイトコードインタープリタ７０９０は、デジタル放送送信装置から送信された部分プログラムを実行すべく図２６のフローチャートに沿った動作をするが、
ステップＳ１２０５のコマンド処理において、「ＬＯＣＫ」というロック命令についての処理のみが第２実施例の動作と異なる。
バイトコードインタプリタ７０９０はロック命令については、当該ロック命令を含む部分プログラムが常用部分プログラムである旨を、メモリ管理部に通知する。
【０１６８】
メモリ管理部は、部分プログラムを分離抽出して記憶部７０７０に読み込む場合のメモリ管理を行うものであり、記憶部７０７０に部分プログラムを読み込むだけの空き領域がない場合に、Ｌｅａｓｔ  Ｒｅａｃｅｎｔｌｙ  Ｕｓｅｄ（ＬＲＵ）方式を用いて、一部の部分プログラムを記憶装置内から削除し、領域を空けてから読み込むべき部分プログラムを読み込むのだが、常用部分プログラムについては、一連の部分プログラムの集まりであるプログラムが終了するまで記憶装置内から削除しない。
【０１６９】
従って、このようなメモリ管理部により、デジタル放送受信装置は、プログラムの実行にあたり常用部分プログラムを複数回呼び出す必要がある場合に、２回目からは当該常用部分プログラムを新たに受信して分離抽出しなくても、必ず当該常用部分プログラムは記憶部７０７０に格納されたまま削除されていないので迅速に当該常用部分プログラムを実行することができる。
【０１７０】
以上、本発明に係るプログラム送信装置及びプログラム受信装置について、第１及び第２の実施例（変形例を含む）に基づいて説明したが、本発明はこれらの実施例の形態に限られないことは勿論である。即ち、
（１）両実施例では、プログラム受信装置であるデジタル放送受信装置は必ずエラー処理を行うようにしているが、エラーが起こったときのみエラー処理を行うようにしてもよい。
（２）両実施例では、エラー処理テーブルと、エラー処理内エラー処理テーブルを別のテーブルとしたが、割り振るコードを融合させることによって１つのテーブルにしてもよい。
（３）両実施例では、デフォルトのエラー処理についても、テーブル化するようにしているが、デフォルトのエラー処理については、バイトコードインタープリタ内にハードコーディングしてもよい。
（４）両実施例では、プログラム送信装置であるデジタル放送送信装置がエラーテーブルをＭＰＥＧ２のトランスポートストリームのプライベートセクションのデータとして送信しているが、エラーテーブルを作成するようなバイトコードプログラムを送信して、プログラム受信装置であるデジタル放送受信装置側でエラーテーブルを作成するようにしてもよい。
（５）両実施例では、プログラム受信装置であるデジタル放送受信装置は、プログラム送信装置であるデジタル放送送信装置から出力されたデータを衛星を経由して受信しているが、直接受信したり、あるいは、ケーブルを通して受信するようにしてもよい。
（６）両実施例では、プログラム受信装置であるデジタル放送受信装置は、プログラム送信装置であるデジタル放送送信装置から送信されるデータを受信しているが、ＣＤ−ＲＯＭ等の記録媒体からデータを読み出すようにしてもよい。
（７）両実施例では、プログラム送信装置であるデジタル放送送信装置はプログラムを部分プログラムに分割する際にトランスポートパケットに格納できるサイズに分割しているが、この限りではなく、分割されたそれぞれの部分プログラムがトランスポートパケットより大きいサイズであっても差し支えない。この場合でもプログラム受信装置であるデジタル放送受信装置は分離抽出部にＰＩＤとテーブルＩＤを指示することにより目的とする部分プログラムを抽出することができる。なぜなら、分離抽出部は、いわゆるＴＳデコーダであるが、同じＰＩＤで同じテーブルＩＤのトランスポートパケットを全て接続して抽出するからである。
（８）両実施例では、システム情報のＰＩＤは１０、部分プログラム群のＰＩＤは１１、映像データのＰＩＤは１２、音声データのＰＩＤは１３としているが、ＰＩＤはこの値に限定されるものではなく、それぞれを識別できるものであればよい。
（９）両実施例では、分割した部分プログラムを取得して実行するためのリンク命令として「ＧＥＴ  ｎ」、「ＧＥＴ  ｎＸ」を用いたが、プログラム受信装置であるデジタル放送受信装置のバイトコードインタープリタが「分割した部分プログラムを取得して実行する」意味に解釈するよう取り決めたものであれば、いかなるコードでもよい。また、「ｎ」として部分プログラムのテーブルＩＤを直接指定したが、別のテーブルを介して間接的に部分プログラムのテーブルＩＤを示すようなＩＤを指定することにしてもよい。
（１０）両実施例では、部分プログラムは先頭から実行するものとしていたが、部分プログラム中の指定行からも実行できるようにしてもよい。このためには、上述の「ＧＥＴ  ｎ」に代えて、「ＧＥＴ  ｎ，ｌ」といった２変数のリンク命令を定め、ｎはテーブルＩＤを意味し、ｌは部分プログラムの入口の行番号を意味することとして、プログラム受信装置であるデジタル放送受信装置では、その旨を解釈実行するようにすればよい。
（１１）両実施例では、プログラム受信装置であるデジタル放送受信装置のバイトコードインタープリタは部分プログラム中のリンク命令を読み込んだ時点で必要となる部分プログラムを取得しているが、バイトコードインタープリタが部分プログラムの実行を開始する時点又はその後にリンク命令を先読みして、次に必要となる可能性のある部分プログラムの取得処理を行うこともできる。
（１２）両実施例では、プログラム存否判断部とバイトコードインタープリタと制御部とはメモリとメモリに格納された制御プログラムとＣＰＵによって構成されるとしたが、その一部又は全部をハードウェアで構成してもよい。
（１３）両実施例では、プログラム受信実行装置であるデジタル放送受信装置の部分プログラム取得処理において、部分プログラムが存在しなければ当該部分プログラムを抽出するよう制御部を介して分離抽出部に指示しているが、プログラム送信装置側に当該部分プログラムの識別子を指定して当該部分プログラムを送信するよう要求を出すこととしてもよい。送信要求の送信は一般的な送信技術によればよい。
（１４）両実施例では、プログラム送信装置であるデジタル放送送信装置は部分プログラムを一方的に送信しているが、プログラム受信装置側から部分プログラムの識別子を指定して部分プログラムの送信要求がされた場合にも当該部分プログラムを送信することとしてもよい。
（１５）両実施例では、プログラム受信装置であるデジタル放送受信装置のメモリ管理部は部分プログラムの記憶装置への格納に際してＬＲＵ方式を用いて削除する部分プログラムを定めているが、これに限定されることはなく、他の方式によってもよい。
【０１７１】
また、記憶装置を空けるために部分プログラムを削除せず、補助記憶装置等に部分プログラムを追い出すようにしてもよい。この場合、補助記憶装置等に追い出されている部分プログラムは、図１５のフローチャートのステップＳ４０１０で示すプログラム存否判断部による部分プログラムの存在チェックがなされたときに、再度記憶装置内に読み込まれ、存在チェックの結果としては「当該部分プログラムは存在する」としてもよい。但し、当該部分プログラムが補助記憶装置等に追い出された後に当該部分プログラムを含んだ複数の部分プログラムより構成される１つのプログラムが終了した後は、補助記憶装置等に追い出されている当該部分プログラムは、存在しないものとして扱う。
（１６）第２実施例（変形例）では、ロック命令として「ＬＯＣＫ」という命令を用いたが、これに限定されることはなく、常用部分プログラムであることを示す命令であればよい。また、命令でなくても、常用部分プログラムであること示す識別情報をプログラム送信装置であるデジタル放送送信装置から送信し、これを受けたプログラム受信装置であるデジタル放送受信装置のメモリ管理部が常用部分プログラムであるか否かを認識して、部分プログラムの記憶装置内への読み込み処理を行うようにしてもよい。
（１７）第２実施例では、端末情報はあらかじめ端末情報記憶部７１５０が保持している
としたが、プログラム受信装置であるデジタル放送受信装置の起動時あるいは、デジタル放送のサービスの開始時等に当該受信装置の性能レベルを調べるバイトコードプログラムをデジタル放送送信装置側から送ることとし、当該受信装置は前記バイトコードプログラムを実行し、その結果を端末情報記憶部７１５０に格納するようにしてもよい。
（１８）第２実施例では、プログラム受信装置であるデジタル放送受信装置の性能レベルを３段階に区分したが、何段階に別けても、また、表示機能、音声再生機能その他の機能毎にレベルを別けるなど自由に定めてよい。
（１９）第２実施例では、プログラム送信装置であるデジタル放送送信装置は送信すべきプログラムの分岐構造の深さに応じて別の優先度を付与し送信する頻度を切り分けているが、分岐の深さ１段毎に全て別の優先度を付与して送信頻度の切り分けをしなくても差し支えなく、分岐の深さが２段毎や３段毎に別の優先度を付与してもよく、また、優先度の付与の仕方についてのアルゴリズムはいかなるものであってもよい。
（２０）両実施例におけるデジタル放送受信装置の処理手順（図１４、図１５、図１６、図２６のフローチャートの手順）等を機械語プログラムにより実現し、これを記録媒体に記録して流通・販売の対象にしても良い。このような記録媒体には、ＩＣカードや光ディスク、フレキシブルディスク、ＲＯＭ等があるが、これらに記録された機械語プログラムは汎用のハードウェアにインストールされることにより利用に供される。ここでいう汎用ハードウェアは、一般のパーソナルコンピュータ等であり、インストールした上記機械語プログラムを逐次実行して、両実施例に示したプログラム受信実行装置であるデジタル放送受信装置の機能を実現する。
【産業上の利用可能性】
【０１７２】
本発明に係るプログラム受信実行装置及びプログラム送信装置は、ゲーム等の大容量のプログラムをコンピュータネットワークを介して送信又は受信するパーソナルコンピュータに適用でき、また、高速なレスポンスが要求されるような対話性のある番組を送信又は受信するデジタル放送における送信装置又は受信装置にも適用できる。
【図面の簡単な説明】
【０１７３】
【図１】デジタル映像・音声データを圧縮処理してなるビットストリームを多重化する手段を示す概略図である。
【図２】ＰＥＳの構成を示す図である。
【図３】放送用としてのビットストリームを構成する手段を示す図である。
【図４】従来のデジタル放送システムにおけるデジタル放送受信装置の構成例を示す図である。
【図５】番組オブジェクトの構成を概念的に示した図である。
【図６】このような番組オブジェクトを再生するプログラムオブジェクトの概念図である。
【図７】番組オブジェクトのフォーマットを示す図である。
【図８】従来のデジタル放送受信装置のメインプロセスの処理を示すフローチャートである。
【図９】本発明に係るデジタル放送送信装置の第１実施例における構成を示すブロック図である。
【図１０】トランスポートストリームのイメージを示した図である。
【図１１】プログラムを分割する様子を示す図である。
【図１２】プログラム分割部３０５０がプログラム８００を部分プログラム８０１、８０２、８０３に分割する処理手順を示すフローチャートである。
【図１３】第１実施例におけるデジタル放送受信装置の構成を示すブロック図である。
【図１４】バイトコードインタープリタ１０９０が行うバイトコードプログラム実行制御処理を示すフローチャートである。
【図１５】部分プログラム取得処理のフローチャートである。
【図１６】エラー処理を示すフローチャートである。
【図１７】エラー処理テーブル、エラー処理内エラー処理テーブルの構成及びエラー処理コードの説明のための図である。
【図１８】デフォルトエラー処理テーブル、デフォルトエラー処理内エラー処理テーブルの構成を示す図である。
【図１９】第２実施例におけるデジタル放送送信装置の構成を示すブロック図である。
【図２０】プログラム構造を示す概念図である。
【図２１】分割後のプログラムのイメージを示す図である。
【図２２】「ｓｗｉｔｃｈ-ｃａｓｅ」文を有する構造のプログラムの分割後のイメージを示す図である。
【図２３】部分プログラムの優先度を示す概念図である。
【図２４】優先度に応じた部分プログラムの多重化の概念を示す図である。
【図２５】第２実施例におけるデジタル放送受信装置の構成を示すブロック図である。
【図２６】バイトコードインタープリタ７０９０が行うバイトコードプログラム実行制御処理を示すフローチャートである。
【図１】
2008135037.tif 000003
【図２】
2008135037.tif 000004
【図３】
2008135037.tif 000005
【図４】
2008135037.tif 000006
【図５】
2008135037.tif 000007
【図６】
2008135037.tif 000008
【図７】
2008135037.tif 000009
【図８】
2008135037.tif 000010
【図９】
2008135037.tif 000011
【図１０】
2008135037.tif 000012
【図１１】
2008135037.tif 000013
【図１２】
2008135037.tif 000014
【図１３】
2008135037.tif 000015
【図１４】
2008135037.tif 000016
【図１５】
2008135037.tif 000017
【図１６】
2008135037.tif 000018
【図１７】
2008135037.tif 000019
【図１８】
2008135037.tif 000020
【図１９】
2008135037.tif 000021
【図２０】
2008135037.tif 000022
【図２１】
2008135037.tif 000023
【図２２】
2008135037.tif 000024
【図２３】
2008135037.tif 000025
【図２４】
2008135037.tif 000026
【図２５】
2008135037.tif 000027
【図２６】
2008135037.tif 000028