(57)【特許請求の範囲】
【請求項１】
データパケットを取得する取得手段と、
前記データパケットの誤り訂正用の冗長パケットを生成する生成手段であって、
Ｋ個のデータパケットに対してＭ個の冗長パケットを生成する場合において、
第ｋ番目（１≦ｋ≦Ｋ）のデータパケットを８ビット以上のサイズのシンボルに分割した場合の第ｉ番目のシンボルをシンボルＳｋ，ｉとし、当該シンボルＳｋ，ｉをＤ等分した場合の第ｄ番目の分割データをＳｋ，ｉ（ｄ）と表し、
第ｍ番目（１≦ｍ≦Ｍ）の冗長パケットを８ビット以上の前記サイズのシンボルに分割した場合の第ｉ番目のシンボルを冗長シンボルＲｍ，ｉとし、当該冗長シンボルＲｍ，ｉをＤ等分した場合の第ｄ番目の分割冗長データをＲｍ，ｉ（ｄ）と表す場合に、
前記分割データＳ１，ｉ（ｄ），…，ＳＫ，ｉ（ｄ）のうちＤ個ずつを連結して、（Ｋ／Ｄ）個の連結データＴ１，ｉ（ｄ），…，ＴＫ／Ｄ，ｉ（ｄ）を生成し、
前記連結データＴ１，ｉ（ｄ），…，ＴＫ／Ｄ，ｉ（ｄ）から、（Ｍ／Ｄ）個の冗長データＵ１，ｉ（ｄ），…，ＵＭ／Ｄ，ｉ（ｄ）を生成し、
前記冗長データＵ１，ｉ（ｄ），…，ＵＭ／Ｄ，ｉ（ｄ）のそれぞれをＤ個ずつに分割して得られる分割冗長データＲ１，ｉ（ｄ），…，ＲＭ，ｉ（ｄ）を組み合わせることで前記冗長パケットを生成する生成手段と、
前記生成手段により生成された前記冗長パケットを前記データパケットと共に出力する出力手段とを有することを特徴とする情報処理装置。
【請求項２】
前記Ｍの値は、前記情報処理装置がパケットを単位としてデータを送信する際の最大バーストエラー長以上であり、
前記Ｍ／Ｋの値は前記情報処理装置がデータを送信する際のエラーレート以上であり、
前記Ｋ／Ｄの値が前記情報処理装置の処理能力を示す所定値以下であるように、前記Ｍ、Ｋ及びＤの値を決定する決定手段をさらに有することを特徴とする、請求項１に記載の情報処理装置。
【請求項３】
前記決定手段は、前記情報処理装置によるデータの送信先であるクライアントからの通知に基づいて、前記最大バーストエラー長及び前記エラーレートを取得することを特徴とする、請求項２に記載の情報処理装置。
【請求項４】
情報処理装置が行う情報処理方法であって、
前記情報処理装置の取得手段が、データパケットを取得する取得工程と、
前記情報処理装置の生成手段が、前記データパケットの誤り訂正用の冗長パケットを生成する生成工程であって、
Ｋ個のデータパケットに対してＭ個の冗長パケットを生成する場合において、
第ｋ番目（１≦ｋ≦Ｋ）のデータパケットを８ビット以上のサイズのシンボルに分割した場合の第ｉ番目のシンボルをシンボルＳｋ，ｉとし、当該シンボルＳｋ，ｉをＤ等分した場合の第ｄ番目の分割データをＳｋ，ｉ（ｄ）と表し、
第ｍ番目（１≦ｍ≦Ｍ）の冗長パケットを８ビット以上の前記サイズのシンボルに分割した場合の第ｉ番目のシンボルを冗長シンボルＲｍ，ｉとし、当該冗長シンボルＲｍ，ｉをＤ等分した場合の第ｄ番目の分割冗長データをＲｍ，ｉ（ｄ）と表す場合に、
前記分割データＳ１，ｉ（ｄ），…，ＳＫ，ｉ（ｄ）のうちＤ個ずつを連結して、（Ｋ／Ｄ）個の連結データＴ１，ｉ（ｄ），…，ＴＫ／Ｄ，ｉ（ｄ）を生成し、
前記連結データＴ１，ｉ（ｄ），…，ＴＫ／Ｄ，ｉ（ｄ）から、（Ｍ／Ｄ）個の冗長データＵ１，ｉ（ｄ），…，ＵＭ／Ｄ，ｉ（ｄ）を生成し、
前記冗長データＵ１，ｉ（ｄ），…，ＵＭ／Ｄ，ｉ（ｄ）のそれぞれをＤ個ずつに分割して得られる分割冗長データＲ１，ｉ（ｄ），…，ＲＭ，ｉ（ｄ）を組み合わせることで前記冗長パケットを生成する生成工程と、
前記情報処理装置の出力手段が、前記生成工程により生成された前記冗長パケットを前記データパケットと共に出力する出力工程とを有することを特徴とする情報処理方法。
【請求項５】
前記Ｍの値は、前記情報処理装置がパケットを単位としてデータを送信する際の最大バーストエラー長以上であり、
前記Ｍ／Ｋの値は前記情報処理装置がデータを送信する際のエラーレート以上であり、
前記Ｋ／Ｄの値が前記情報処理装置の処理能力を示す所定値以下であるように、前記Ｍ、Ｋ及びＤの値を決定する決定工程をさらに有することを特徴とする、請求項４に記載の情報処理方法。
【請求項６】
コンピュータを、請求項１乃至３の何れか１項に記載の情報処理装置が有する各手段として機能させるための、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、誤り訂正データを生成する情報処理技術に関する。
【背景技術】
【０００２】
近年、インターネット等の通信網の発達により、動画像データのような比較的大きなデータを、通信回線を介して送信することが一般的になっている。通信回線を介してデータを送信する際には、伝送エラーが発生する可能性があるため、従来よりエラー訂正技術が用いられている。エラーへの対処方法としては、たとえば再送制御やＦＥＣ(Forward Error Correction)といった方法が知られている。特に、リアルタイム性を重視したシステムやアプリケーションプログラムでは、ＦＥＣが一般的に使われている。ＦＥＣは、保護対象データから予め冗長データを生成しておき、それを保護対象データと一緒に送信することでエラー耐性を高める技術である。ＦＥＣの例としては例えば、リード・ソロモン符号ＦＥＣと呼ばれる方法がある（非特許文献１参照）。
【０００３】
とりわけ、特にライブ映像等のリアルタイム性を必要とするデータの送信のためには、ＲＴＰ(A Transport Protocol for Real-Time Applications, RFC 3550, IETF)と呼ばれるプロトコルを用いるのが一般的である。ＲＴＰは、高速かつ軽量な伝送プロトコルであるＵＤＰ／ＩＰ(User Datagram Protocol/Internet Protocol)上に実装されることを想定している。ＵＤＰでは、高速、軽量である代わりにパケットロス等に対するエラー耐性が低い。従って、上位層においてエラー訂正を行うことがより重要となる。
【０００４】
特許文献１の方法では、複数のシンボルで構成されるデータブロックから、複数の冗長シンボルが生成される。各シンボルは別々のデータパケットに格納され、各冗長シンボルは別々のＦＥＣパケットに格納される。そして、データパケットと冗長パケットとが別々に送信される。この方法によれば、それぞれのデータブロックについて、ＦＥＣパケットの数分だけのロスパケットを回復することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平１１−１３６２２０号公報
【非特許文献】
【０００６】
【非特許文献１】IETF-RFC5510 “Reed-Solomon Forward Error Correction (FEC) Schemes”
【発明の概要】
【発明が解決しようとする課題】
【０００７】
特許文献１の方法によれば、誤り訂正データの生成にかかる処理負荷が大きくなってしまう可能性がある。すなわち、通信においては、連続的なパケットロスであるバーストエラーが発生しやすい。バーストエラー耐性を高めるためにはＦＥＣパケットの数を増やす必要がある。特許文献１の方法によれば、１つのデータブロックについての冗長シンボルが別々のＦＥＣパケットに格納される。すなわち、ＦＥＣパケットの数を増やすと、１つのデータブロックについての冗長シンボルの数も増えることとなる。
【０００８】
一方で冗長度が高いと送信データ量が増えるため、輻輳エラーが発生しやすくなる。冗長度を抑えるためには、ＦＥＣパケットの数に対するデータパケットの数を増やす必要がある。ところで、特許文献１の方法によれば１つのデータブロックについてのシンボルは別々のデータパケットに格納される。したがって、冗長度を抑える場合には、１つのデータブロックについてのシンボルの数は増加する。このように、シンボルの数及び冗長シンボルの数が増加すると、シンボルから冗長シンボルを計算するための処理負荷が大きくなってしまうことがある。
【０００９】
本発明は、誤り訂正データの生成に必要な処理負荷を低減することを目的とする。
【課題を解決するための手段】
【００１０】
本発明の目的を達成するために、例えば、本発明の情報処理装置は以下の構成を備える。すなわち、
データパケットを取得する取得手段と、
前記データパケットの誤り訂正用の冗長パケットを生成する生成手段であって、
Ｋ個のデータパケットに対してＭ個の冗長パケットを生成する場合において、
第ｋ番目（１≦ｋ≦Ｋ）のデータパケットを８ビット以上のサイズのシンボルに分割した場合の第ｉ番目のシンボルをシンボルＳｋ，ｉとし、当該シンボルＳｋ，ｉをＤ等分した場合の第ｄ番目の分割データをＳｋ，ｉ（ｄ）と表し、
第ｍ番目（１≦ｍ≦Ｍ）の冗長パケットを８ビット以上の前記サイズのシンボルに分割した場合の第ｉ番目のシンボルを冗長シンボルＲｍ，ｉとし、当該冗長シンボルＲｍ，ｉをＤ等分した場合の第ｄ番目の分割冗長データをＲｍ，ｉ（ｄ）と表す場合に、
前記分割データＳ１，ｉ（ｄ），…，ＳＫ，ｉ（ｄ）のうちＤ個ずつを連結して、（Ｋ／Ｄ）個の連結データＴ１，ｉ（ｄ），…，ＴＫ／Ｄ，ｉ（ｄ）を生成し、
前記連結データＴ１，ｉ（ｄ），…，ＴＫ／Ｄ，ｉ（ｄ）から、（Ｍ／Ｄ）個の冗長データＵ１，ｉ（ｄ），…，ＵＭ／Ｄ，ｉ（ｄ）を生成し、
前記冗長データＵ１，ｉ（ｄ），…，ＵＭ／Ｄ，ｉ（ｄ）のそれぞれをＤ個ずつに分割して得られる分割冗長データＲ１，ｉ（ｄ），…，ＲＭ，ｉ（ｄ）を組み合わせることで前記冗長パケットを生成する生成手段と、
前記生成手段により生成された前記冗長パケットを前記データパケットと共に出力する出力手段とを有することを特徴とする。
【発明の効果】
【００１１】
誤り訂正データの生成に必要な処理負荷を低減できる。
【図面の簡単な説明】
【００１２】
【図１】実施例１に係るサーバ１００及びクライアント１２０のブロック図。
【図２】各実施例に係る処理を実行可能なコンピュータの構成例を示す図。
【図３】ＦＥＣパケット生成部１０４が行う処理のフローチャート。
【図４】実施例１に係るＦＥＣパケット生成方法を示す図。
【図５】ＦＥＣヘッダの構造例を示す図。
【図６】実施例２に係る処理のフローチャート。
【図７】リード・ソロモン符号ＦＥＣの生成方法を示す図。
【図８】従来技術に係るＦＥＣパケット生成方法を示す図。
【発明を実施するための形態】
【００１３】
以下、添付の図面を参照して、本発明をその好適な実施形態に基づいて詳細に説明する。なお、以下の実施例において示す構成は一例に過ぎず、本発明は図示された構成に限定されるものではない。以下の実施例においてデータシンボル、冗長シンボル、部分シンボル、連結シンボル、冗長部分シンボル、冗長データ、及び分割冗長データのビット長は２Ｚ１（Ｚ１は０以上の整数）で表される。また、分割数Ｄも２Ｚ２（Ｚ２は０以上の整数）で表される。しかしながらビット長及び分割数Ｄが２Ｚ１ではない場合にも、以下の実施例を修正して適用できることは、当業者には明らかであろう。また、以下の実施例では映像データパケットに対する冗長データパケットを生成する場合について説明する。しかしながらデータの種類は映像データに限られず、文書データ、音声データなどでもよい。
【００１４】
［実施例１］
実施例１では、ＦＥＣとして、リード・ソロモン符号ＦＥＣを用いる場合について説明する。リード・ソロモン符号ＦＥＣは、ＣＤやＤＶＤなどの記憶装置や、衛星通信、地上デジタル放送等の通信分野でも使われている誤り訂正方法で、ガロア体の元を使って符合語（冗長シンボル）を生成するのが特徴である。まず、従来技術におけるリード・ソロモン符号化を図７を用いて説明する。
【００１５】
図７（Ａ）におけるＭ１〜Ｍ４０は保護対象データを４０個のシンボルに分割したものである。シンボルとは、複数のビットからなるビット列である。リード・ソロモン符号ＦＥＣにおいては、以下で説明するように複数のシンボルから冗長シンボルが生成される。リード・ソロモン符号化における１シンボルのビット数は規定されていないが、コンピュータの仕様上、８ビットの倍数であることが多い。本実施例においては、１シンボルは８ビットであるものとして説明する。また、４０個のシンボルの集合をブロックと呼ぶ。各ブロックごとに、冗長シンボルを生成するための計算が行われる。すなわち、各ブロックごとに、以下で説明する生成シンドロームに従う冗長データの算出が行われる。
【００１６】
Ｆ１〜Ｆ８は冗長シンボルを表す。すなわち、４０個のシンボルＭ１〜Ｍ４０から冗長シンボルＦ１〜Ｆ８が生成される。従来技術においては、４０個のシンボルＭ１〜Ｍ４０と冗長シンボルＦ１〜Ｆ８とが、１つのパケットとして送信される。冗長シンボルＦ１〜Ｆ８は生成シンドロームと呼ばれる多項式から生成する。図７（Ｂ）において、Ｓ１〜Ｓ８は生成シンドロームを表す。αのべき乗はガロア体の元を表している。また、生成シンドロームはＳ１〜Ｓ８で構成される。Ｓ１は各シンボルの排他的論理和であり、Ｓ２〜Ｓ８は、各シンボルとαのべき乗との積の、排他的論理和である。
【００１７】
冗長シンボルＦ１〜Ｆ８は、生成シンドロームＳ１〜Ｓ８が０になるように生成される。また、冗長シンボル数の半分の値が、誤り訂正可能なシンボル数となる。図７（Ａ）の例では、４０個の保護対象データシンボルのうち、任意の４シンボルのエラーを訂正することができる。誤りがあるシンボルが特定できている場合には、最大８シンボルまで訂正することができる。
【００１８】
特許文献１の方法によれば、４０個のシンボルＭ１〜Ｍ４０と冗長シンボルＦ１〜Ｆ８とが、４８個のパケットのそれぞれに含められる。図８に特許文献１の方法について示す。図８において、１ブロックを構成するシンボルＭ１〜Ｍ４０は、別々のパケット１〜４０に含められている。また、８個の冗長シンボルＦ１〜Ｆ８も、別々のＦＥＣパケット１〜８に含められている。すなわち、保護対象パケットのヘッダを除くペイロード部分が１４００バイトである場合、１シンボルは８ビット（１バイト）だから、１つの保護対象パケットは１４００個のシンボルを含む。
【００１９】
以下に、図面を参照しながら、実施例１について説明する。図１に示されるように、本実施例に係る情報処理装置であるサーバ１００は、映像入力部１０１、映像符号化部１０２、映像パケット生成部１０３、ＦＥＣパケット生成部１０４、及びパケット送信部１０５とを備える。以下、サーバ１００はネットワークカメラであるものとして説明する。しかしながら他の実施例において、サーバ１００は、通信を行うことができる一般的なコンピュータであってもよい。なお、本実施例のサーバ１００は、データパケットを復元するための復元パケットを生成する、生成装置として動作する。本実施例のサーバ１００は、データパケットと、データパケットから生成された復元パケットとを送信する。これらのパケットを受信したクライアントは、データパケットが破損又は欠損している場合に、復元パケットを用いてデータパケットを修復することができる。
【００２０】
映像入力部１０１は、映像データを取得する。例えば映像入力部１０１は撮像部を備えてもよく、映像入力部１０１は、この撮像部が撮像した映像データを取得しうる。もっとも、映像入力部１０１が取得するデータは映像データには限られず、音声データやテキストデータなどを入力してもよい。
【００２１】
映像符号化部１０２は、映像入力部１０１が取得した映像データを符号化する。例えば映像符号化部１０２は、映像データに対して離散コサイン変換及び量子化処理を行うことにより、映像データを圧縮符号化しうる。符号化方式は任意の方法でよく、例えばＪＰＥＧ符号化、ＭＰＥＧ−２符号化、又はＭＰＥＧ−４符号化などを用いることができる。また映像符号化部１０２は、映像入力部１０１が取得した映像データがアナログデータである場合には、Ａ／Ｄ変換処理によって映像データをデジタル化することができる。もっとも、映像符号化部１０２による符号化は本実施例において必須ではない。例えば後述する映像パケット生成部１０３は、映像入力部１０１が取得した映像データをパケット化してもよい。
【００２２】
映像パケット生成部１０３は、映像符号化部１０２が符号化した映像データをパケット化する。例えば映像パケット生成部１０３は、通信に適したサイズへと、映像データをパケット化しうる。映像パケット生成部１０３が生成するパケットは、通常、複数のシンボルを含む。ＦＥＣパケット生成部１０４は、映像パケット生成部１０３で生成されたＫ個（通常はＫ≧２）の映像パケットを用いて、冗長パケットで構成されるＭ個（Ｍ≧１、通常はＭ≧２）のＦＥＣパケット（冗長パケット）を生成する。以下で、Ｎ＝Ｋ＋Ｍとする。ＦＥＣパケット生成部１０４が行う処理の詳細については後述する。
【００２３】
パケット送信部１０５は、映像パケット生成部１０３が生成した映像パケット及びＦＥＣパケット生成部１０４が生成したＦＥＣパケットを、クライアントに送信する。本実施例においてパケット送信部１０５は、インターネット１１０を経由してパケットを送信する。しかしながら、送信経路はインターネットに限られず、パケット送信部１０５は例えば無線通信路のような任意の送信経路を介してパケットを送信することができる。
【００２４】
クライアント１２０は、パケット受信部１２１、誤り訂正部１２２、映像復号化部１２３、及び映像再生部１２４を備える。本実施例においてクライアント１２０は、サーバ１００より送信された映像データを受信するための通信機能を備えたクライアントである。例えばクライアント１２０は、一般のコンピュータ、テレビ、ストレージ装置などでありうる。
【００２５】
パケット受信部１２１は、サーバ１００のパケット送信部１０５から送信された映像パケット及びＦＥＣパケットを受信する。誤り訂正部１２２は、パケット受信部１２１が受信した映像パケットに、破損又は欠損があるか否かを判定する。映像パケットに破損又は欠損が見つかった場合、誤り訂正部１２２は、ＦＥＣパケットを用いて映像パケットを回復することが可能か否かを判定する。回復が可能である場合誤り訂正部１２２は、ＦＥＣパケットを用いて映像パケットを回復する。誤り訂正部１２２が行う処理は、既知の誤り訂正技術に従って行うことができる。
【００２６】
映像復号化部１２３は、パケット受信部１２１が受信した映像パケット又は、誤り訂正部１２２が回復した映像パケットを、復号化する。映像復号化部１２３は、映像符号化部１０２が行った符号化処理に対応する復号化処理を行う。例えば映像符号化部１０２が離散コサイン変換及び量子化を行っている場合、映像復号化部１２３は逆量子化及び逆離散コサイン変換処理を行う。映像復号化部１２３は、Ｄ／Ａ変換によってデジタルデータをアナログデータに変換してもよい。映像再生部１２４は、映像復号化部１２３が復号化した映像データを再生する。映像再生部１２４は例えば、ディスプレイ機能を持つ表示デバイスなどでありうる。
【００２７】
次に、ＦＥＣパケット生成部１０４についてより詳しく説明をする。図３は、ＦＥＣパケット生成部１０４が行う処理のフローチャートである。まず、ステップＳ３０１においてＦＥＣパケット生成部１０４は、通信情報３０８を取得し、この通信情報に従って冗長度及び最大バーストエラー訂正能力を決定する。ここでいう通信情報とは、サーバ１００が行う通信の状況を示す情報である。通信情報とは例えば、利用可能帯域幅や過去の最大バーストエラー長等である。この通信情報は、サーバ１００とクライアント１２０とが行う通信の状況を示す情報であってもよい。
【００２８】
利用可能帯域幅の取得方法としては、どのような方法でも用いることができる。利用可能帯域幅の取得方法の例としては、ＴＦＲＣ(TCP Friendly Rate Control)のスループット方程式が挙げられる。ＴＦＲＣのスループット方程式は、ＲＴＴやエラーレート等の情報から、セッションが利用可能な帯域幅を算出するための方程式であり、一般的に広く知られている。その他にも、主にＴＣＰで用いられるＡＩＭＤ(Additive Increase Multiplicative Decrease)と呼ばれる取得方法などもある。
【００２９】
過去の最大バーストエラー長を取得する方法についても、どのような方法でも用いることができる。例えば、映像パケットを受信するクライアント１２０は、エラーパケット解析を行い、過去のある一定期間の最大バーストエラー長を計測しうる。クライアント１２０が計測結果をサーバ１００に通知することで、サーバ１００は過去の最大バーストエラー長を取得することができる。その他にも、クライアントからのＲＲ(Receiver Report)に含まれるエラーパケット数等から、過去の最大バーストエラー長を推測することもできる。この場合ＲＲは、非常に短い期間についてのＲＲであってもよい。
【００３０】
冗長度の算出方法としては、どのような方法でも用いることができる。通常は、利用可能帯域幅が大きいほど冗長度が大きくなるように、冗長度は計算される。また、通信のエラーレートが大きいほど冗長度が大きくなるように、冗長度は計算される。本実施例においては、Ｋ個のパケットからＭ個の冗長パケットが生成されるが、この場合冗長度はＭ／Ｋで表される。したがって一例として、Ｍ／Ｋがエラーレート以上となるように、Ｍ及びＫの値は定められうる。この場合、例えばクライアント１２０からのＲＲから、サーバ１００はエラーレートを知ることができる。別の具体的な例としては、映像のビットレートと冗長データのビットレートとの合計が利用可能帯域幅よりも小さくなるように、冗長度が決定されてもよい。
【００３１】
最大バーストエラー訂正能力は、過去の最大バーストエラー長に従って計算されうる。例えば最大バーストエラー訂正能力は過去の最大バーストエラー長に一致してもよいし、過去の最大バーストエラー長に所定の係数を乗じて得られる値に一致してもよい。本実施例においては、Ｋ個のパケットからＭ個の冗長パケットが生成されるが、この場合バーストエラー訂正能力はＭ（パケット）となる。したがって通常Ｍは、サーバ１００がデータを送信する際の、パケットを単位とした場合の最大バーストエラー長以上となるように定められる。
【００３２】
ステップＳ３０２でＦＥＣパケット生成部１０４は、ブロック長を算出する。本実施例においては、ブロック長を算出する前に、１つの連結シンボルがいくつのパケットから抽出されるのかが決定されている。１つの連結シンボルがＤ個のパケットから抽出される場合、分割数がＤであるものとする。分割数は例えば、ユーザによって予め設定されていてもよい。
【００３３】
分割数Ｄと、ステップＳ３０１で算出された冗長度及び最大バーストエラー訂正能力とに従って、ＦＥＣパケット生成部１０４はブロック長を算出する。具体的には以下の式（３）に従って、ＦＥＣパケット生成部１０４はブロック長Ｋ（単位：パケット）を算出しうる。
Ｋ  ＝  （Ｍ×（１００／ｒ））／Ｄ  …（２）
式（２）において、Ｄは分割数を、ｒは冗長度を（％）を、Ｍは最大バーストエラー訂正能力（単位：パケット）を、それぞれ示す。
【００３４】
次にステップＳ３０３でＦＥＣパケット生成部１０４は、映像パケット生成部１０３（入力手段）が入力したＫ個の映像パケット３０９を取得し、Ｋ個の映像パケット３０９から部分シンボルを抽出する。さらにステップＳ３０４においてＦＥＣパケット生成部１０４が備える連結部（不図示）は、部分シンボルを結合して連結シンボルを生成する（連結手段）。具体的には、第ｋ番目（１≦ｋ≦Ｋ）の映像パケットの第ｉ番目のシンボルをシンボルＳｋ，ｉとする場合に、ＦＥＣパケット生成部１０４はシンボルＳｋ，ｉのそれぞれをＤ等分して、部分シンボルＳｋ，ｉ（１），…．Ｓｋ，ｉ（Ｄ）を抽出する。そしてＦＥＣパケット生成部１０４は部分シンボルＳ１，ｉ（ｄ），…，ＳＫ，ｉ（ｄ）のうちＤ個ずつを連結して、（Ｋ／Ｄ）個の連結シンボルＴ１，ｉ（ｄ），…，ＴＫ／Ｄ，ｉ（ｄ）を生成する。
【００３５】
より具体的な一例としては、ＦＥＣパケット生成部１０４は、部分シンボルＳＤ（ｘ−１）＋１，ｉ，…，ＳＤｘ，ｉ（ｄ）（１≦ｘ≦Ｋ／Ｄ）を連結して連結シンボルＴｘ，ｉ（ｄ）を生成してもよい。
【００３６】
ステップＳ３０５でＦＥＣパケット生成部１０４は、１ブロックに含まれる全ての部分シンボルが抽出されたか否かを判定する。まだ抽出されていない部分シンボルがある場合には、処理はステップＳ３０３に戻る。全ての部分シンボルが抽出されている場合には、処理はステップＳ３０６に進む。映像パケットが可変長パケットである場合には、それぞれの映像パケットの長さは互いに異なるかもしれない。この場合、それぞれの映像パケットの長さが等しくなるように、短い映像パケットに対してパディングを行ってもよい。
【００３７】
ステップＳ３０６でＦＥＣパケット生成部１０４は、以上のように生成された連結シンボルを用いて生成シンドロームを算出する。ステップＳ３０７においてＦＥＣパケット生成部１０４が備える生成部（不図示）は、生成シンドロームを用いて冗長データを生成する（生成手段）。さらにＦＥＣパケット生成部１０４が備える組立部（不図示）は、冗長データを分割して分割冗長データを生成し、分割冗長データを有するＦＥＣパケット３１０を生成する（組立手段）。
【００３８】
具体的にはＦＥＣパケット生成部１０４は、連結シンボルＴ１，ｉ（ｄ），…，ＴＫ／Ｄ，ｉ（ｄ）から、（Ｍ／Ｄ）個の冗長データＵ１，ｉ（ｄ），…，ＵＭ／Ｄ，ｉ（ｄ）を生成する。この生成処理は、図７に示されるような生成シンドロームに従って行えばよい。そしてＦＥＣパケット生成部１０４は、冗長データＵ１，ｉ（ｄ），…，ＵＭ／Ｄ，ｉ（ｄ）のそれぞれをＤ個ずつに分割して、分割冗長データを生成する。さらにＦＥＣパケット生成部１０４は、部分冗長シンボルＲ１，ｉ（ｄ），…，ＲＭ，ｉ（ｄ）のそれぞれが生成された分割冗長データとなるように、ＦＥＣパケットを組み立てる。ここで、第ｍ番目（１≦ｍ≦Ｍ）のＦＥＣパケットの第ｉ番目のシンボルを冗長シンボルＲｍ，ｉと表し、冗長シンボルＲｍ，ｉをＤ等分した場合の第ｄ番目の部分冗長シンボルをＲｍ，ｉ（ｄ）と表す。こうして生成されたＦＥＣパケットは、パケット送信部１０５（出力手段）によって冗長パケットとして出力される。
【００３９】
より具体的な一例としては、ＦＥＣパケット生成部１０４は、部分冗長シンボルＲＤ（ｙ−１）＋１，ｉ（ｄ），…，ＲＤｙ，ｉ（ｄ）（１≦ｙ≦Ｍ／Ｄ）のそれぞれが分割冗長データＵｙ，ｉ（ｄ）（１），…，Ｕｙ，ｉ（ｄ）（Ｄ）となるように、ＦＥＣパケットを組み立ててもよい。ここで、冗長データＵｙ，ｉ（ｄ）をＤ等分して得られる分割冗長データをＵｙ，ｉ（ｄ）（１），…，Ｕｙ，ｉ（ｄ）（Ｄ）と表すものとする。
【００４０】
次に、ステップＳ３０３〜Ｓ３０７において複数のデータパケットからＦＥＣパケットを生成する方法について、図４を参照して詳しく説明する。図４においては説明のために１シンボルが８ビットで構成されているが、１シンボルを構成するビット数は任意でありうる。
【００４１】
図４（Ａ）は、従来のＦＥＣパケット生成方法を示す。この例では、１シンボルが１パケットから抽出される。具体的にはＦＥＣパケット生成部１０４は、映像パケット生成部１０３が生成した映像パケットを受け取る。そしてＦＥＣパケット生成部１０４は、それぞれの映像パケットのペイロード部分を８ビット毎に分割することにより、ペイロードデータを複数のシンボルに変換する。すなわち１つの映像パケットのペイロードは、１番目のシンボルからｘ番目のシンボルまでの、ｘ個のシンボルに分割される。
【００４２】
図４（Ａ）の例では、ＦＥＣパケット生成部１０４は、映像パケット生成部１０３からｙ個の映像パケットを連続して受け取る。そしてＦＥＣパケット生成部１０４は、ｙ個の映像パケットから、ｚ個のＦＥＣパケットを生成する。具体的にはＦＥＣパケット生成部１０４は、以下のようにＦＥＣパケットを生成しうる。
【００４３】
まずＦＥＣパケット生成部１０４は、ｙ個の映像パケットのそれぞれについての１番目のシンボルを用いて、ｚ個のＦＥＣパケットのシンボルを生成する。ＦＥＣパケット生成部１０４は、図７に示される生成シンドロームに従って、ｙ個のシンボルからｚ個の冗長データを生成しうる。生成されたｚ個の冗長データのそれぞれは、１番目の冗長シンボルとして、ｚ個のＦＥＣパケットのそれぞれに格納される。同様にＦＥＣパケット生成部１０４は、ｙ個の映像パケットのそれぞれについての２番目のシンボルを用いて、ｚ個の冗長データを生成する。生成されたｚ個の冗長データのそれぞれは、２番目の冗長シンボルとして、ｚ個のＦＥＣパケットのそれぞれに格納される。同じようにＦＥＣパケット生成部は、３番目〜ｘ番目のシンボルから冗長データを生成し、生成された冗長データを３番目〜ｘ番目の冗長シンボルとして、ＦＥＣパケットのそれぞれに格納する。
【００４４】
図４（Ａ）の例において、１つのブロックは、ｙ個のシンボルで構成される。すなわちｙ個の映像パケットには、ｘ個のブロックが含まれる。１ブロックからは上述のように、ｚ個の冗長データが生成される。冗長データの数は、要求される訂正能力に応じて設定されうる。上述のようの冗長データのそれぞれは別々のＦＥＣパケットに含まれるため、ｚ個のＦＥＣパケットが生成されることになる。
【００４５】
図４（Ｂ）は、本実施例におけるＦＥＣパケット生成方法のうちの１つを示す。この例では、１つの連結シンボルは２つの映像パケットから抽出される。すなわち、ＦＥＣパケット生成部１０４は、ｙ個の映像パケットのそれぞれのペイロード部分を４ビット毎に分割する。説明のためにここでは、分割された４ビットのデータを部分シンボルと呼ぶ。すなわち、１個の映像パケットは２ｘ個の部分シンボルに分割される。
【００４６】
続けてＦＥＣパケット生成部１０４は、ｙ個の映像パケットのそれぞれについての１番目の部分シンボルを用いて、ｚ／２個の冗長データを生成する。具体的にはまずＦＥＣパケット生成部１０４は、ｙ個の部分シンボルからｙ／２個の連結シンボルを生成する。すなわち、２つの部分シンボルを連結して１つの連結シンボルを生成する。例えば１番目の映像パケットの部分シンボルと２番目の映像パケットの部分シンボルとを連結して、１つの連結シンボルを生成することができる。また、３番目の映像パケットの部分シンボルと４番目の映像パケットの部分シンボルとを連結して１つの連結シンボルを生成することができる。こうしてＦＥＣパケット生成部１０４は、ｙ／２個の連結シンボルを生成する。上述のように、１つのシンボルは８ビットであり、１つの部分シンボルは４ビットであり、１つの連結シンボルは８ビットである。
【００４７】
そしてＦＥＣパケット生成部１０４は、図７に示される生成シンドロームに従って、生成されたｙ／２個の連結シンボルから、ｚ／２個の冗長データを生成する。１つの冗長データは８ビットである。さらにＦＥＣパケット生成部１０４は、生成されたｚ／２個の冗長データを、ｚ個の分割冗長データに分割する。具体的には、８ビットの冗長データのそれぞれを２つに分割し、４ビットの分割冗長データとすればよい。ｚ個の分割冗長データのそれぞれは、１番目の部分冗長シンボルとして、ｚ個のＦＥＣパケットのそれぞれに格納される。
【００４８】
ｙ個の映像パケットのそれぞれについての２番目以降の部分シンボルからも、同様に分割冗長データが生成される。このようにして、ｙ個の映像パケットから、ｚ個のＦＥＣパケットが生成される。図４（Ｂ）の例において１つのブロックは、ｙ／２個の連結シンボルで、すなわちｙ個の部分シンボルで構成される。またｙ個の映像パケットには、２ｘ個のブロックが含まれる。１ブロックからは上述のように、ｚ／２個の冗長データが、すなわちｚ個の分割冗長データが生成される。
【００４９】
図４（Ｃ）は、本実施例におけるＦＥＣパケット生成方法のうちの１つを示す。この例では、１つの連結シンボルは４つの映像パケットから抽出される。すなわち、ＦＥＣパケット生成部１０４は、ｙ個の映像パケットのそれぞれのペイロード部分を２ビット毎に分割する。この例では、分割された２ビットのデータを部分シンボルと呼ぶ。すなわち、１個の映像パケットは４ｘ個の部分シンボルに分割される。
【００５０】
その後ＦＥＣパケット生成部１０４は、図４（Ｂ）に示される場合と同様に、ＦＥＣパケットを生成する。すなわちＦＥＣパケット生成部１０４は、ｙ個の映像パケットのそれぞれについての１番目の部分シンボルを用いて、ｚ／４個の冗長データを生成する。具体的にはＦＥＣパケット生成部１０４は、ｙ個の部分シンボルからｙ／４個の連結シンボルを生成し、生成されたｙ／４個の連結シンボルから、ｚ／４個の冗長データを生成する。さらにＦＥＣパケット生成部１０４は、生成されたｚ／４個の冗長データを、ｚ個の分割冗長データに分割する。ｚ個の分割冗長データのそれぞれは、１番目の部分冗長シンボルとして、ｚ個のＦＥＣパケットのそれぞれに格納される。
【００５１】
ｙ個の映像パケットのそれぞれについての２番目以降の部分シンボルからも、同様に分割冗長データが生成される。このようにして、ｙ個の映像パケットから、ｚ個のＦＥＣパケットが生成される。図４（Ｃ）の例において１つのブロックは、ｙ／４個の連結シンボルで、すなわちｙ個の部分シンボルで構成される。またｙ個の映像パケットには、４ｘ個のブロックが含まれる。１ブロックからは上述のように、ｚ／４個の冗長データが、すなわち４個の分割冗長データが生成される。
【００５２】
ここで、冗長度と最大バーストエラー訂正能力が同条件である場合の、冗長データを計算するための計算量を、図４（Ａ）〜（Ｃ）に示される例について比較してみる。以下では、冗長度が２０％、最大バーストエラー訂正能力が８パケットとなるように、冗長データを生成するものとする。
【００５３】
ところで、リード・ソロモン符号化における計算量は以下のようになる。
エンコード・デコード時の計算量：Ｏ（ｋ０・ｍ０・ｌｏｇ２（ｎ０））…（１）
デコード時の逆行列の計算量：Ｏ（ｋ０３）…（２）
ここで、ｋ０は生成シンドロームにおける保護対象データのシンボル数であり、ｍ０は生成シンドロームにおける冗長データのシンボル数である。また、ｎ０はｋ０とｍ０との和である。以後、リード・ソロモン符号化のパラメータを（ｎ０，ｋ０）で表現する。この場合ｎ０＝Ｎ／Ｄ、ｋ０＝Ｋ／Ｄとなるが、このことを具体例を挙げて以下で説明する。
【００５４】
まず図４（Ａ）に示される例（Ｄ＝１）では、最大バーストエラー訂正能力が８パケットであるから、１つの映像パケット群に対して、ＦＥＣパケットは８パケット必要である。冗長度が２０％なので、４０個の映像パケットに対して８個のＦＥＣパケットが生成される。また、上述のように１ブロックについて生成された冗長シンボルのそれぞれは異なる１つのＦＥＣパケットに配置されるため、１ブロックから８個の冗長シンボルを生成することになる。また、冗長度が２０％なので、１ブロックには４０個のシンボルが含まれる。すなわち式（１）において、ｎ０＝４８、ｋ０＝４０、ｍ０＝８である。したがって、計算量Ｏ＝３２０×（４＋ｌｏｇ３）となる。対数ｌｏｇの底は２であり、以下でもｌｏｇの底は２である。
【００５５】
次に図４（Ｂ）に示される例（Ｄ＝２）では、最大バーストエラー訂正能力が８パケットであるから、１つの映像パケット群に対して、ＦＥＣパケットは８パケット必要である。冗長度が２０％なので、４０個の映像パケットに対して８個のＦＥＣパケットが生成される。上述のように、それぞれのＦＥＣパケットには１つの分割冗長データが配置される。すなわち、１ブロックからは８つの分割冗長データが生成される。分割冗長データは４ビット、冗長データは８ビットであるから、１ブロックから４個の冗長データを生成することになる。また、冗長度が２０％なので、１ブロックには２０個のシンボルが含まれる。すなわち式（１）において、ｎ０＝２４、ｋ０＝２０、ｍ０＝４である。また、上述のように図４（Ｂ）に示される例では、図４（Ａ）に示される例と比べて、４０個の映像パケットに含まれるブロックの数は２倍である。式（１）は１つのブロックについての計算量であるから、このことを考慮すると、計算量Ｏ＝２×８０×（３＋ｌｏｇ３）となる。
【００５６】
最後に図４（Ｃ）に示される例（Ｄ＝４）では、最大バーストエラー訂正能力が８パケットであるから、１つの映像パケット群に対して、ＦＥＣパケットは８パケット必要である。冗長度が２０％なので、４０個の映像パケットに対して８個のＦＥＣパケットが生成される。上述のように、それぞれのＦＥＣパケットには１つの分割冗長データが配置される。すなわち、１ブロックからは８つの分割冗長データが生成される。分割冗長データは２ビット、冗長シンボルは８ビットであるから、１ブロックから２個の冗長データを生成することになる。また、冗長度が２０％なので、１ブロックには１０個のシンボルが含まれる。すなわち式（１）において、ｎ０＝１２、ｋ０＝１０、ｍ０＝２である。また上述のように図４（Ｂ）に示される例では、図４（Ａ）に示される例と比べて、４０個の映像パケットに含まれるブロックの数は４倍である。また、式（１）は１つのブロックについての計算量であるから、このことを考慮すると、計算量Ｏ＝４×２０×（２＋ｌｏｇ３）となる。
【００５７】
図４（Ａ）に示される例の計算量Ｏと、図４（Ｂ）に示される例の計算量Ｏとを比べると、ＦＥＣパケットを算出する際の計算量は４分の１以下になっていることが分かる。デコード時の計算量も含めると、その差はさらに大きくなる。
【００５８】
最後に、ＦＥＣパケットのヘッダ例を図５に示す。５０１のＳＮｂａｓｅには、対応する映像パケット群のうち、最も小さいパケットについてのシーケンス番号が格納される。５０２のｍａには、１シンボルを構成するビット数が格納される。５０３のｄａには、シンボルの分割数が格納される。５０４のｆには、ＦＥＣパケット群に含まれる各パケットの順番を識別するための番号が格納される。５０５のｎａには、対応する映像パケット群に含まれるシンボル数と冗長シンボル数との和が格納される。５０６のｋａには、対応する映像パケット群に含まれるシンボル数が格納される。なお、図５に示されるヘッダは一例に過ぎず、本実施例に係るＦＥＣパケットは異なるヘッダを有してもよい。
【００５９】
以上説明してきたように、本実施例によれば、ＦＥＣパケットを算出する際に、従来より少ない計算量で、同等の冗長度及び同等のバーストエラー耐性を実現することができる。
【００６０】
＜実施例２＞
実施例１では、分割数Ｄはユーザによって予め設定されていた。しかしながらこの分割数Ｄは、さまざまな方法で決定することができる。例えば、１フレームに含まれるパケット数から分割数Ｄを決定することができる。また、ＲＴＴやクライアント側におけるバッファリング時間等があらかじめ分かっている、あるいはある程度予測できる場合には、それらの情報を利用して決定してもよい。もっとも、分割数Ｄの決定方法は特に限定されない。実施例２では、分割数Ｄを決定する方法の一例について、図６のフローチャートを参照して説明する。本実施例では、受信クライアント側から送信されるフィードバック情報を用いて、分割数Ｄが動的に変更される。
【００６１】
ステップＳ６０１においてサーバ１００のパケット受信部（不図示）は、クライアント１２０からフィードバック情報を受信したかどうかを確認する。フィードバック情報は例えば、ＲＴＣＰパケットとして送信されることができる。このＲＴＣＰパケットは例えば、ＡＶＰ(Audio-Visual Profile)を拡張したＡＶＰＦ（ＩＥＴＦ−ＲＦＣ４５８５）でありうる。ＡＶＰＦは、ＡＶＰと比べてより迅速な統計的フィードバックを提供することができる。パケット受信部がフィードバック情報を受信していない場合、処理はステップＳ６０２に進む。パケット受信部がフィードバック情報を受信している場合、処理はステップＳ６０３に進む。
【００６２】
ステップＳ６０２〜ステップＳ６０８で、上述のｎ０，ｋ０、及び分割数Ｄが決定される。以下の処理で、分割数Ｄの初期値は１であるものとする。ステップＳ６０２でサーバ１００のパケット受信部は、フィードバック情報が受信されるのを待つか否かを判定する。例えばサーバ１００のパケット送信部１０５による情報送信が行われている間、パケット受信部はフィードバック情報を待ってもよい。また、サーバ１００のパケット送信部１０５による情報送信が終了してから所定の時間、パケット受信部はフィードバック情報を待ってもよい。パケット受信部がフィードバック情報を待つ場合、処理はステップＳ６０１に戻る。パケット受信部がフィードバック情報を待たない場合、処理は終了する。
【００６３】
Ｓ６０３においてサーバ１００の制御部（不図示、制御手段）は、ステップＳ６０１で受信したフィードバック情報から、エラーレート及び最大バーストエラー長を取得する。これらは、クライアント１２０が受信データについてエラー解析を行うことにより得られた情報である。
【００６４】
Ｓ６０４においてサーバ１００の制御部は、ステップＳ６０３で取得されエラーレートから冗長度を決定する。この冗長度は、クライアント１２０におけるエラー回復のために必要な最小限の値でありうる。冗長度の決定は、周知の技術に従って行うことができる。例えば、Ａ（％）のデータに誤りが存在する場合には、制御部は、冗長度をＡ（％）以上にすればよい。
【００６５】
Ｓ６０５においてサーバ１００の制御部は、最大バーストエラー長及び冗長度から、リード・ソロモン符号化におけるパラメータｎ０（データシンボル数と冗長シンボル数との和）及びｋ０（データシンボル数）を仮決定する。ｎ０及びｋ０の決定は実施例１で説明した通りに行えばよい。例えば最大バーストエラー長がＢ（パケット）の場合、冗長シンボル数（ｎ０−ｋ０）をＢ以上にすればよい。また、冗長度がＡ（％）の場合、１００（ｎ０−ｋ０）／ｋ０をＡ以上にすればよい。
【００６６】
Ｓ６０６においてサーバ１００の制御部は、ステップＳ６０５又はステップＳ６０７で仮決定されたｎ０及びｋ０を、予め定められた閾値Ｎｍａｘ及びＫｍａｘと比較する。閾値Ｎｍａｘ及びＫｍａｘは、サーバ１００の処理能力を示す値でありうる。すなわち、サーバ１００の処理能力がより大きい場合には、閾値Ｎｍａｘ及びＫｍａｘはより大きく設定されうる。もっとも、比較はｎ０とＮｍａｘとの間でのみ行われてもよいし、ｋ０とＫｍａｘとの間でのみ行われてもよい。ここで、ｎ０＝Ｎ／Ｄであり、ｋ０＝ｋ０／Ｄである。そして、ｎ０≦Ｎｍａｘかつｋ０≦Ｋｍａｘである場合、制御部は値（ｎ０，ｋ０，Ｄ）の組をＦＥＣパケット生成部１０４に送信する。その後処理はステップＳ６０１に戻り、ステップＳ６０１でサーバ１００のパケット受信部は次のフィードバック情報を待つ。
【００６７】
ステップＳ６０６においてｎ０＞Ｎｍａｘまたはｋ０＞Ｋｍａｘである場合、処理はステップＳ６０７に進む。ステップＳ６０７でサーバ１００の制御部は、部分シンボル長が所定値（又は所定値以下）であるか否かを判定する。この所定値とは部分シンボル長の最低値であり、例えば１ビットでありうる。部分シンボル長は、（シンボル長／Ｄ）である。部分シンボル長が所定値（以下）ではない場合、処理はステップＳ６０８に進む。部分シンボル長が所定値（以下）である場合、制御部は値（ｎ０，ｋ０，Ｄ）の組をＦＥＣパケット生成部１０４に送信する。その後処理はステップＳ６０１に戻り、ステップＳ６０１でサーバ１００のパケット受信部は次のフィードバック情報を待つ。もっとも、部分シンボル長が所定値（以下）である場合、制御部は、ｎ０≦Ｎｍａｘかつｋ０≦Ｋｍａｘである（ｎ０，ｋ０，Ｄ）の組が発見できないことを示すエラーを出力してもよい。
【００６８】
ステップＳ６０８でサーバ１００の制御部は、分割数Ｄを２倍にする。この場合、実施例１で説明したように、ｎ０は半分になり、ｋ０も半分になる。その後、処理はステップＳ６０６に戻る。
【００６９】
本実施例の方法によれば、通信状態やクライアント１２０の処理能力等に応じて、適応的にシンボルの分割数を決定することができる。本実施例では、エラーレート及び最大バーストエラー長がフィードバック情報に含まれていた。しかしながらクライアント１２０が、求められる冗長度を計算し、フィードバック情報としてサーバ１００に送信してもよい。またサーバ１００は、エラーレートに基づいて冗長度を決定する代わりに、冗長データと映像データの合計が利用可能帯域幅を超えないように、冗長度を決定しても良い。
【００７０】
＜その他の実施例＞
以上、実施例を詳述したが、本発明は例えば、システム、装置、方法、プログラム若しくは記録媒体（記憶媒体）等として実現されうる。例えば、複数の機器（例えば、ホストコンピュータ、インタフェース機器、撮像装置、及びｗｅｂアプリケーション等）から構成されるシステムに本発明を適用してもよい。また、一つの機器からなる装置に本発明を適用してもよい。
【００７１】
図２に、上述の実施例に係る処理を実現しうるコンピュータの構成例を示す。図２においてＣＰＵ９０１は、コンピュータ全体の動作をコントロールする。例えばＣＰＵ９０１は、一次記憶９０２に格納されたプログラムの実行等を行う。一次記憶９０２は、主にＲＡＭ等のメモリであり、二次記憶９０３に記憶されたプログラム等を読み込んで格納する。二次記憶９０３は、例えばハードディスク、ＣＤ−ＲＯＭ等がこれに該当する。本実施形態では、実施形態の処理手順を実現するプログラムは二次記憶９０３に格納し、プログラム実行時に一次記憶９０２に読み込んで、ＣＰＵ９０１が実行処理を行う。
【００７２】
入力デバイス９０４とはコンピュータに情報を入力するデバイスであって、例えばマウスやキーボード等がこれに該当する。入力デバイス９０４を用いることにより、ユーザがコンピュータに情報を入力することが可能であってもよい。出力デバイス９０５とはコンピュータが情報を出力するデバイスであって、モニタ及びプリンタを含む。読込デバイス９０６は、外部の情報を取得するためのデバイスである。読込デバイス９０６は、メモリカードリーダ及びネットワークカードを含む。バス９０８は、上述の各部を接続し、データのやりとりを可能とする。
【００７３】
また本発明は、以下のようにしても実現されうる。すなわち、前述した実施例の機能を実現するソフトウェアのプログラムを、システムあるいは装置に直接あるいは遠隔から供給する。そしてそのシステムあるいは装置のコンピュータが、供給されたプログラムコードを読み出して実行すればよい。この場合のプログラムとは、コンピュータが読み取り可能なプログラムであり、以上の実施例について図示したフローチャートに対応している。
【００７４】
従って、本発明の処理をコンピュータで実現するために、コンピュータにインストールされるプログラムコード自体も本発明を実現する。つまり、本発明には、本発明の処理を実現するためのコンピュータプログラム自体も含まれる。この場合プログラムは、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ、等の形態をとってもよい。
【００７５】
プログラムを供給するための記録媒体としては、以下に示す媒体がある。例えば、フロッピー（登録商標）ディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などである。
【００７６】
プログラムの供給方法としては、以下に示す方法も可能である。すなわち、クライアントコンピュータのブラウザからインターネットのホームページに接続する。そして、本発明のコンピュータプログラムそのもの（又は圧縮され自動インストール機能を含むファイル）をハードディスク等の記録媒体にダウンロードしてもよい。また、本発明のプログラムを構成するプログラムコードが複数のファイルに分割されている場合に、それぞれのファイルを異なるホームページからダウンロードしてもよい。つまり、本発明の処理をコンピュータで実現するためのプログラムファイルをユーザに提供するＷＷＷサーバも、本発明に含まれるものである。
【００７７】
また、本発明のプログラムを暗号化し、ＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布することもできる。この場合、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせてもよい。すなわちユーザは、この鍵情報を使用することによって暗号化されたプログラムをコンピュータにインストールすることができる。
【００７８】
またコンピュータが読み出したプログラムを実行することによって、前述した実施例の機能が実現される。さらにこのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行ってもよい。ＯＳの処理によっても、前述した実施例の機能が実現されうる。
【００７９】
さらに、記録媒体から読み出されたプログラムは、コンピュータに挿入された機能拡張ボード又はコンピュータに接続された機能拡張ユニットが備えるメモリに書き込まれてもよい。メモリに書き込まれたプログラムが実行されることによっても、前述した実施例の機能が実現されうる。すなわち、このプログラムの指示に基づき、機能拡張ボード又は機能拡張ユニットが備えるＣＰＵなどが実際の処理の一部または全部を行ってもよい。
【００８０】
（他の実施形態）
本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）をネットワーク又は各種記憶媒体を介してシステム或いは装置に供給する。そして、そのシステム或いは装置のコンピュータ（又はＣＰＵやＭＰＵ等）がプログラムコードを読み出して実行する。この場合、そのプログラム、及び該プログラムを記憶した記憶媒体は本発明を構成することになる。
【図１】
0005744554.tif 000002
【図２】
0005744554.tif 000003
【図３】
0005744554.tif 000004
【図４】
0005744554.tif 000005
【図５】
0005744554.tif 000006
【図６】
0005744554.tif 000007
【図７】
0005744554.tif 000008
【図８】
0005744554.tif 000009