(57)【要約】【課題】  ネットワークの遅延揺らぎを極限まで吸収し、多重化されたチャンネルでの各パケットの同期を受信側で確実に取ることができる受信装置、通信システム、受信方法及びそのプログラムを提供すること。【解決手段】  受信装置６０には、もともとＰＣＲを含まないパケットのＰＣＲを推定するためにタイムスタンプ補正部５１が設けられている。これにより、受信装置６０が受信するパケットがＰＣＲを含まないパケットであっても、そのパケットの推定されたＰＣＲを参照してジッタを低減しつつ同期を取ることができる。つまり、全パケットのＰＣＲを得ることができるようになり、例えば１ｓに何千、何万ものＰＣＲを得ることができるようになる。これにより、早期に同期を取ることが可能となる。また、パケットごとにＰＣＲを伝送する必要がないので、使用するネットワーク帯域を節約することができる。【選択図】図１
2006014089.tif 000002
【特許請求の範囲】
【請求項１】
第１のクロックを生成し、該第１のクロックをカウントする第１のクロック手段と、符号化されたデータがパケット化された複数の連続するパケットを取得する手段と、前記取得された各パケットのうち所定のパケットに含まれる第１のタイムスタンプを読み取る手段と、前記読み取られた第１のタイムスタンプと前記第１のタイムスタンプが読み取られるタイミングでカウントされる前記第１のクロックのカウント値との誤差情報である同期情報を、前記第１のクロックの所定のクロック数ごとに生成する手段と、前記所定のクロック数に相当する時間ごとに、前記生成された同期情報を前記所定のパケットに付加する手段と、前記各パケットが取得されるタイミングでカウントされた前記第１のクロックのカウント値を前記取得された各パケットに第２のタイムスタンプとして付加する手段と、前記所定のパケットと前記同期情報が付加されたパケットとを含む前記第２のタイムスタンプが付加された前記各パケットを送信する送信手段とを有する送信装置から、ネットワークを介して前記送信手段により送信された前記各パケットを受信する手段と、
前記受信された各パケットのうち前記第１のタイムスタンプ及び前記同期情報を含む第１のパケットから、当該第１のタイムスタンプ及び当該同期情報を読み取る第１の読み取り手段と、
前記受信された各パケットから前記第２のタイムスタンプを読み取る第２の読み取り手段と、
前記第１の読み取り手段により読み取られた前記同期情報と、前記受信された各パケットのうち前記第１のタイムスタンプを含まない第２のパケットから前記第２の読み取り手段により読み取られた第２のタイムスタンプとに基づき、前記第２のパケットの時刻参照値を推定する推定手段と
を具備することを特徴とする受信装置。
【請求項２】
請求項１に記載の受信装置であって、
前記推定手段は、
前記受信された各パケットのうち少なくとも前記同期情報を含む第３のパケットから、前記第２の読み取り手段により読み取られた前記第２のタイムスタンプの値を基準値として設定する手段と、
前記設定された基準値を含む基準パケットが受信された後に受信された前記第２のパケットに含まれる前記第２のタイムスタンプの値と前記基準値との差と、前記所定のクロック数分のカウント値との比率を、前記同期情報に乗じた値を用いて、当該基準パケットが受信された後に受信された前記第２のパケットの前記時刻参照値を算出する算出手段と
を有することを特徴とする受信装置。
【請求項３】
請求項２に記載の受信装置であって、
前記算出手段は、前記基準パケットを受信してから、前記所定のクロック数に相当する時間が経過した後に受信した前記第２のパケットの時刻参照値を、当該基準パケットに含まれる前記同期情報を用いて算出する手段を有することを特徴とする受信装置。
【請求項４】
請求項１に記載の受信装置であって、
前記推定手段は、
前記受信された各パケットのうち前記同期情報及び前記第１のタイムスタンプが含まれるパケットから、前記第１及び第２の読み取り手段によりそれぞれ読み取られた前記第１のタイムスタンプと前記第２のタイムスタンプとの差をオフセット値として設定する手段と、
前記オフセット値を含めて前記時刻参照値を算出する手段と
を有することを特徴とする受信装置。
【請求項５】
請求項１に記載の受信装置であって、
第２のクロックを生成し、該第２のクロックをカウントする第２のクロック手段と、
前記第１の読み取り手段により読み取られた前記第１のタイムスタンプと、前記推定手段により推定された前記時刻参照値とをそれぞれ補正タイムスタンプとして出力する手段と、
前記補正タイムスタンプが出力されるタイミングで前記第２のクロック手段によりカウントされた前記第２のクロックのカウント値と、前記出力される補正タイムスタンプの値とを比較することで、前記第２のクロックのカウント値が前記補正タイムスタンプの値と同じになるように該カウント値を補正する手段と、
マスタークロックを生成し、該マスタークロックをカウントするマスタークロック手段と、
前記出力される補正タイムスタンプの値と、当該補正タイムスタンプが出力されるタイミングで前記マスタークロック手段によりカウントされた前記マスタークロックのカウント値とに基づき、前記マスタークロック手段で生成される前記マスタークロックの周波数と、前記第２のクロック手段で生成される前記第２のクロックの周波数との差が所定の誤差の範囲内となるように制御する制御手段と、
前記補正されたカウント値であって、前記所定の誤差の範囲内の周波数に制御された前記第２のクロック手段によるカウント値を用いて、前記受信された各パケットのうちユーザにより選択されたパケットのデータを復号する手段と
をさらに具備することを特徴とする受信装置。
【請求項６】
請求項５に記載の受信装置であって、
前記制御手段は、
前記マスタークロックのカウント値と該カウント値の次の前記マスタークロックのカウント値との差分を、前記出力された補正タイムスタンプと、該補正タイムスタンプが出力されるタイミングで前記マスタークロック手段によりカウントされた前記マスタークロックのカウント値との差分で除した値を算出する第１の算出手段と、
前記第２のクロックの周波数を前記所定の誤差で除した値を算出する第２の算出手段と、
前記１及び第２の算出手段で算出されたそれぞれの値の相対的な関係に基づき、前記マスタークロックの周波数と前記第２のクロックの周波数との差が前記所定の誤差の範囲内となるように制御する手段と
を有することを特徴とする受信装置。
【請求項７】
クロックを生成し、該クロックをカウントするクロック手段と、符号化されたデータがパケット化された複数の連続するパケットを取得する手段と、前記取得された各パケットのうち所定のパケットに含まれる第１のタイムスタンプを読み取る手段と、前記読み取られた第１のタイムスタンプと前記第１のタイムスタンプが読み取られるタイミングでカウントされる前記クロックのカウント値との誤差情報である同期情報を、前記クロックの所定のクロック数ごとに生成する手段と、前記所定のクロック数に相当する時間ごとに、前記生成された同期情報を前記所定のパケットに付加する手段と、前記各パケットが取得されるタイミングでカウントされた前記クロックのカウント値を前記取得された各パケットに第２のタイムスタンプとして付加する手段と、前記所定のパケットと前記同期情報が付加されたパケットとを含む前記第２のタイムスタンプが付加された前記各パケットを送信する送信手段とを有する送信装置と、
前記送信装置からネットワークを介して前記送信手段により送信された前記各パケットを受信する手段と、前記受信された各パケットのうち前記第１のタイムスタンプ及び前記同期情報を含む第１のパケットから、当該第１のタイムスタンプ及び当該同期情報を読み取る第１の読み取り手段と、前記受信された各パケットから前記第２のタイムスタンプを読み取る第２の読み取り手段と、前記第１の読み取り手段により読み取られた前記同期情報と、前記受信された各パケットのうち前記第１のタイムスタンプを含まない第２のパケットから前記第２の読み取り手段により読み取られた第２のタイムスタンプとに基づき、前記第２のパケットの時刻参照値を推定する推定手段とを有する受信装置と
を具備することを特徴とする通信システム。
【請求項８】
クロックを生成し、該クロックをカウントするクロック手段と、符号化されたデータがパケット化された複数の連続するパケットを取得する手段と、前記取得された各パケットのうち所定のパケットに含まれる第１のタイムスタンプを読み取る手段と、前記読み取られた第１のタイムスタンプと前記第１のタイムスタンプが読み取られるタイミングでカウントされる前記クロックのカウント値との誤差情報である同期情報を、前記クロックの所定のクロック数ごとに生成する手段と、前記所定のクロック数に相当する時間ごとに、前記生成された同期情報を前記所定のパケットに付加する手段と、前記各パケットが取得されるタイミングでカウントされた前記クロックのカウント値を前記取得された各パケットに第２のタイムスタンプとして付加する手段と、前記所定のパケットと前記同期情報が付加されたパケットとを含む前記第２のタイムスタンプが付加された前記各パケットを送信する送信手段とを有する送信装置から、ネットワークを介して前記送信手段により送信された前記各パケットを受信するステップと、
前記受信された各パケットのうち前記第１のタイムスタンプ及び前記同期情報を含む第１のパケットから、当該第１のタイムスタンプ及び当該同期情報を読み取るステップと、
前記受信された各パケットから前記第２のタイムスタンプを読み取るステップと、
前記読み取られた同期情報と、前記受信された各パケットのうち前記第１のタイムスタンプを含まない第２のパケットから読み取られた前記第２のタイムスタンプとに基づき、前記第２のパケットの時刻参照値を推定するステップと
を具備することを特徴とする受信方法。
【請求項９】
コンピュータに、
クロックを生成し、該クロックをカウントするクロック手段と、符号化されたデータがパケット化された複数の連続するパケットを取得する手段と、前記取得された各パケットのうち所定のパケットに含まれる第１のタイムスタンプを読み取る手段と、前記読み取られた第１のタイムスタンプと前記第１のタイムスタンプが読み取られるタイミングでカウントされる前記クロックのカウント値との誤差情報である同期情報を、前記クロックの所定のクロック数ごとに生成する手段と、前記所定のクロック数に相当する時間ごとに、前記生成された同期情報を前記所定のパケットに付加する手段と、前記各パケットが取得されるタイミングでカウントされた前記クロックのカウント値を前記取得された各パケットに第２のタイムスタンプとして付加する手段と、前記所定のパケットと前記同期情報が付加されたパケットとを含む前記第２のタイムスタンプが付加された前記各パケットを送信する送信手段とを有する送信装置から、ネットワークを介して前記送信手段により送信された前記各パケットを受信するステップと、
前記受信された各パケットのうち前記第１のタイムスタンプ及び前記同期情報を含む第１のパケットから、当該第１のタイムスタンプ及び当該同期情報を読み取るステップと、
前記受信された各パケットから前記第２のタイムスタンプを読み取るステップと、
前記読み取られた同期情報と、前記受信された各パケットのうち前記第１のタイムスタンプを含まない第２のパケットから読み取られた前記第２のタイムスタンプとに基づき、前記第２のパケットの時刻参照値を推定するステップと
を実行させる受信プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、パケット化されたデータを受信する受信装置、この受信装置を用いた通信システム、受信方法及び受信プログラムに関する。
【背景技術】
【０００２】
ＭＰＥＧ（Moving Picture Experts Group）の規格でエンコードされたビデオデータやオーディオデータ等のＴＳ（Transport Stream）の伝送を行う場合、送信側と受信側とでの同期をとるために、ＰＣＲ(Program Clock Reference)データをストリームの中で伝送している。ＰＣＲは全42ビットで、9ビットのＰＣＲ−extensionと33ビットのＰＣＲ−baseの２つからなっている。ＰＣＲは、ＭＰＥＧ２規格により、0.1秒間に少なくとも１つ、送信側から出力されるように、ＴＳに組み込まれている。ＰＣＲ−extensionでは0〜299がカウントされ、そのキャリーでＰＣＲ−baseが1インクリメントされる。ＭＰＥＧ２でのシステムクロックは27MHzであり、この42ビットのカウンタで２４時間分の時間を27MHzクロック単位でカウントすることができる。つまり、ＰＣＲはシステムクロックでカウントされるＰＣＲカウンタの値(ＰＣＲ値)ということになる。
【０００３】
具体的には、次のようにして送信側と受信側で同期を取る。送信側のシステムクロックでカウントされるＰＣＲ値がＴＳ中のデータとしてパケット伝送され、受信側では、そのパケットが到着した時間が、伝送されてきたＰＣＲ値と同じとなるように受信側のシステムクロックをＰＬＬ(Phase Locked Loop)でロックする。これにより同期が確立される。
【０００４】
しかし、この同期のシステムはあくまでも伝送路による遅延が一定であることを前提としている。例えば、ディジタルＣＳ（Communications Satellite）放送、ディジタルＢＳ（Broadcasting Satellite）放送、または地上波ディジタル放送のように伝送方法に衛星や地上波を使用する場合は、遅延が一定であるので問題はない。しかし、ネットワークとして例えばＡＴＭ（Asynchronous Transfer Mode）が利用される場合、遅延に揺らぎが生じ、上述した同期システムでは、その遅延ゆらぎが吸収されず、結局、遅延の大きさがＭＰＥＧ２の規格の±５００nsの範囲を大きく超えてしまい、データが適切に再生されない。
【０００５】
そこで、ＳＲＴＳ（Synchronous Residual Time Stamp）法やアダプティブクロック法を用いてデータを伝送する技術がある。
【０００６】
まず、ＳＲＴＳ法について説明する。ＳＲＴＳ法では、一般的に、送信側において、伝送クロックのクロック速度とＡＴＭネットワークのクロック速度に基づいて差分データを算出し、当該算出した差分データをＡＴＭセルに付加する。このようにして差分データが付加されたＡＴＭセルは、伝送クロックに同期してＡＴＭネットワークで伝送される。受信側では上記差分データを抽出し、抽出した差分データを基にクロックを再生し、これによりＭＰＥＧ−ＴＳ（ＭＰＥＧトランスポートストリーム）の同期を確立する。この送信側のクロックは上記伝送クロックに同期するので、ＭＰＥＧ−ＴＳは、遅延ゆらぎの影響を受けずに正確に再生される。
【０００７】
ところで、ＳＲＴＳ法を用いる場合、伝送されるデータは、上述したようにそのデータレートが一定である必要がある。データレートが一定でないデータを伝送する場合においてはＳＲＴＳ法を利用できない。そこで、データレートが一定でない場合でも、送信される各ＭＰＥＧ−ＴＳパケットの間にダミーパケットを挿入することにより、各パケットが一定のレートを保って送出されることになる。この結果、ＳＲＴＳ法を用いることができるようになる（例えば、特許文献１参照。）。
【０００８】
次に、アダプティブクロック法について説明する。アダプティブクロック法では、受信側において、ある程度データをＦＩＦＯ（First In First Out）に蓄積しておき、そのＦＩＦＯ内でのデータ量の占有量が一定になるように出力データの速度、つまりデータの出力されるタイミングを制御する。具体的には、ＦＩＦＯ内でのデータ量の占有量の変動に対してローパスフィルタによるフィードバック制御をかける。このローパスフィルタにより、ネットワークでの上記遅延揺らぎによるＰＣＲのジッタをある程度吸収できる。ただし、この方式は同期データ等の制御がなく簡単であるが、その反面、ジッタを完全に取り除くことができず、精度はあまり良くないことが知られている。
【０００９】
仮にＰＣＲジッタを含むＭＰＥＧ−ＴＳをデコードしようとすると、ＰＬＬの応答を遅くすればよいが、ジッタ成分をアナログ的にシェイピングしているだけなので、長い時間でみるとジッタ成分が残る。本発明者の実験によると、１ms〜２msのジッタを３μｓ程度にしか低減できない。したがって、ＰＣＲジッタを含むＭＰＥＧ−ＴＳをデコードしてＶＴＲ（Video Tape Recorder）に記録したり、モニターで映像を見たりするのにはＰＬＬの応答を遅くしているので大きな問題とならない。しかし、ＡＴＭやＩＰ（Internet Protocol）ネットワークで伝送されたストリームを地域配信等によりそのままＭＰＥＧ−ＴＳで再配信しようとする場合、ＭＰＥＧ規格においてＰＣＲジッタ値を満足させることができず大きな障害となる。
【００１０】
一方、アダプティブクロック法を応用した技術がある。これは、アダプティブクロック法でＰＣＲのジッタをある程度吸収した後、ＭＰＥＧ−ＴＳのパケット内にあるＰＣＲを、そのＰＣＲと、受信側に設けられた水晶発振器（２７MHz）で作り出されたクロックのカウント値とに基づいて算出された値に書き換えるものである。例えば、この方法では、もともとあるＰＣＲジッタに対してローパスフィルタをかけてＰＣＲ値を追従させている。つまり、ＰＣＲジッタの変動がゆっくりとなるので、ＰＬＬの応答を極端に遅くした特別なデコーダ等を用意する必要がない。また、同期データ等の伝送も必要なくネットワークからの参照クロックも必要ない。そして、単純なアダプティブクロック法と比べＰＣＲの変動がゆっくりとなるのでデコーダにとっては好適となる。そして、ディジタル的にＰＣＲが追従するので複数のＰＣＲクロックに対応することができる（例えば、特許文献２参照。）。
【００１１】
他にも、従来から、例えばＡＴＭネットワークでの遅延揺らぎによるＰＣＲジッタを低減させる方法が提案されている（例えば、特許文献３参照。）。  
【特許文献１】特開２００１−２４６５６号公報（段落[００３６]、図９）
【特許文献２】特開２００１−１６２１０号公報（段落[００４０]等、図１１）
【特許文献３】特開２０００−３５８００６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
上記では、データの伝送遅延が一定でないネットワークとしてＡＴＭの場合について説明したが、ＩＰ（Internet Protocol）ネットワークも同様に、伝送路の遅延が一定でないため問題となる。ＩＰネットワークでのジッタは最大数十ms〜数百msであるので、これでは、上述のようにＭＰＥＧの規格である±５００nsを大きく上回ってしまう。
【００１３】
また、特許文献１に記載された、ＳＲＴＳ法を応用した技術ではダミーパケットを挿入してデータレートを一定にすることができるが、ダミーパケットの分だけデータの伝送容量が必要以上に大きくなる、という問題がある。
【００１４】
一方、特許文献２に記載された、アダプティブクロック法を応用した技術では、ジッタを吸収することは出来るが、可能な限り極限までジッタを吸収することは困難であった。すなわち、単純な遅延時間への応答特性のためネットワークの状態によっては長い時間で見ると大きなＰＣＲジッタ成分を持つことになる。
【００１５】
また、例えばアダプティブクロック法をそのままＩＰネットワークに適用したのでは、ＲＴＰ（Real Time Transport Protocol）ヘッダ内のタイムスタンプに同期させ、次に、ユーザが視聴するチャンネルに応じてＰＣＲに同期させるといった二重の手間がかかる。さらに、ＲＴＰヘッダ内のタイムスタンプはＩＰパケットごとに存在するが、ＰＣＲはＭＰＥＧ規格により0.1秒に１つ以上となっているので、最悪0.1秒に１つのＰＣＲとなる。つまり、同期させる系のフィードバック制御が0.1秒に１回となるので、精度の良い同期とは言えなかった。言い換えれば、クロック再生時のジッタ成分が多く存在することになる。
【００１６】
従来のようなナローバンドでは多重化して伝送するといったニーズが低かったと考えられるが、ブロードバンドのネットワークでは複数のコンテンツをチャンネル多重化して伝送するといったニーズはますます高まると考えられる。さらにチャンネルを多重化した場合、チャンネルごとにＰＣＲの値や周波数が異なるのが一般的で、受信側での同期アルゴリズムはますます難しくなる。
【００１７】
以上のような事情に鑑み、本発明の目的は、ネットワークの遅延揺らぎを極限まで吸収し、多重化されたチャンネルでの各パケットの同期を受信側で確実に取ることができる受信装置、通信システム、受信方法及びそのプログラムを提供することにある。
【課題を解決するための手段】
【００１８】
上記目的を達成するため、本発明に係る受信装置は、第１のクロックを生成し、該第１のクロックをカウントする第１のクロック手段と、符号化されたデータがパケット化された複数の連続するパケットを取得する手段と、前記取得された各パケットのうち所定のパケットに含まれる第１のタイムスタンプを読み取る手段と、前記読み取られた第１のタイムスタンプと前記第１のタイムスタンプが読み取られるタイミングでカウントされる前記第１のクロックのカウント値との誤差情報である同期情報を、前記第１のクロックの所定のクロック数ごとに生成する手段と、前記所定のクロック数に相当する時間ごとに、前記生成された同期情報を前記所定のパケットに付加する手段と、前記各パケットが取得されるタイミングでカウントされた前記第１のクロックのカウント値を前記取得された各パケットに第２のタイムスタンプとして付加する手段と、前記所定のパケットと前記同期情報が付加されたパケットとを含む前記第２のタイムスタンプが付加された前記各パケットを送信する送信手段とを有する送信装置から、ネットワークを介して前記送信手段により送信された前記各パケットを受信する手段と、前記受信された各パケットのうち前記第１のタイムスタンプ及び前記同期情報を含む第１のパケットから、当該第１のタイムスタンプ及び当該同期情報を読み取る第１の読み取り手段と、前記受信された各パケットから前記第２のタイムスタンプを読み取る第２の読み取り手段と、前記第１の読み取り手段により読み取られた前記同期情報と、前記受信された各パケットのうち前記第１のタイムスタンプを含まない第２のパケットから前記第２の読み取り手段により読み取られた第２のタイムスタンプとに基づき、前記第２のパケットの時刻参照値を推定する推定手段とを具備する。
【００１９】
本発明では、第１のタイムスタンプを含まない第２のパケットの時刻参照値を推定する推定手段が設けられている。このため、受信装置が受信するパケットが第１のタイムスタンプを含まないパケット（第２のパケット）であっても、その第２のパケットの時刻参照値を参照してジッタを低減しつつ同期を取ることができる。特に、例えばデータがＭＰＥＧのコーデックで符号化されたものであれば、規格上第１のタイムスタンプ（ＰＣＲ）が含まれたパケットの伝送間隔は0.1ｓであるので、ネットワークでの遅延揺らぎを極力吸収するために第１のタイムスタンプを何千も集めようとすると、時間がかかりすぎてしまい現実的ではない。特に、リアルタイム性が要求される場合には多数のＰＣＲを集めることは不可能である。しかしながら、本発明では、全てのパケットに付加された第２のタイムスタンプを用いて第２のパケットの時刻参照値を推定しているので、結果的に、上記第１のタイムスタンプも含めて全パケットのタイムスタンプを得ることができる。言い換えれば、全パケットのＰＣＲを得ることができるようになり、例えば１ｓに何千、何万ものＰＣＲを得ることができるようになる。これにより、早期に同期を取ることが可能となる。また、パケットごとに第１のタイムスタンプを伝送する必要がないので、使用するネットワーク帯域を節約することができる。
【００２０】
さらに、通常ＭＰＥＧ−ＴＳに複数のチャンネルが多重化されていると、各チャンネルのＰＣＲの周波数は異なるのが一般的である。この場合において、例えばＲＴＰヘッダのタイムスタンプ（第２のタイムスタンプ）で同期を取ろうとすると、まずこのタイムスタンプでパケットの同期をとり、その次に選択されたチャンネルのＰＣＲを抜き取ってＰＣＲ同期を取るので２段階の手間がかかる。これに対し、本発明では計算でＰＣＲの値が計算できるので、ハードウェアのリソースを少なく抑えることができる。
【００２１】
ここで、上記データがＭＰＥＧ−ＴＳデータである場合、ＭＰＥＧの規格上、第１のタイムスタンプが含まれる所定のパケットが伝送される間隔は0.1ｓである。所定のクロック数とは、例えば第１のクロックの周波数が27MHzである場合、3240000クロックであり、したがって0.12ｓごとに同期情報が生成される。
【００２２】
本発明の一の形態によれば、前記推定手段は、前記受信された各パケットのうち少なくとも前記同期情報を含む第３のパケットから、前記第２の読み取り手段により読み取られた前記第２のタイムスタンプの値を基準値として設定する手段と、前記設定された基準値を含む基準パケットが受信された後に受信された前記第２のパケットに含まれる前記第２のタイムスタンプの値と前記基準値との差と、前記所定のクロック数分のカウント値との比率を、前記同期情報に乗じた値を用いて、当該基準パケットが受信された後に受信された前記第２のパケットの前記時刻参照値を算出する算出手段とを有する。すなわち、基準値からの上記カウント値（第１のクロック手段が第１のクロックを上記所定のクロック数分カウントするときのカウント値）と、基準値から当該第３のパケットの第２のタイムスタンプ値との比率を用いている。同期情報にその比率を乗じることにより、当該第３のパケットにおける同期情報が算出される。この同期情報を用いてその第３のパケットの第２のタイムスタンプから上記時刻参照値を算出することができる。
【００２３】
本発明の一の形態によれば、前記算出手段は、前記基準パケットを受信してから、前記所定のクロック数に相当する時間が経過した後に受信した前記第２のパケットの時刻参照値を、当該基準パケットに含まれる前記同期情報を用いて算出する手段を有する。ネットワークの遅延ゆらぎや、ネットワークの負荷状況等が原因で、最初の（基準パケットより前の）第３のパケットが受信されてから、予定通りの時間内、つまり第１のクロック手段による上記所定のクロック数分の時間までに次の第３のパケット（基準パケット）が受信されない場合がある。また、例えばＲＴＣＰ等が用いられる場合、第３のパケットが予定通り受信されず、受信装置が再送要求した後にその第３のパケットを受信する場合もある。そこで、本発明では、基準パケットを受信してから上記所定のクロック数に相当する時間が経過した後に受信した第２のパケットの時刻参照値を算出する際に、当該基準パケットに含まれる同期情報を用いる。これにより、ネットワークの遅延揺らぎや負荷状況に影響されずに、確実に第２のパケットの時刻参照値を確実に算出することができる。
【００２４】
本発明の一の形態によれば、前記推定手段は、前記受信された各パケットのうち前記同期情報及び前記第１のタイムスタンプが含まれるパケットから、前記第１及び第２の読み取り手段によりそれぞれ読み取られた前記第１のタイムスタンプと前記第２のタイムスタンプとの差をオフセット値として設定する手段と、前記オフセット値を含めて前記時刻参照値を算出する手段とを有する。オフセット値を考慮することにより、送信装置で生じた第１のタイムスタンプと第２のタイムスタンプとの差を考慮することとなり、より高精度にジッタを低減することができる。
【００２５】
本発明の一の形態によれば、第２のクロックを生成し、該第２のクロックをカウントする第２のクロック手段と、前記第１の読み取り手段により読み取られた前記第１のタイムスタンプと、前記推定手段により推定された前記時刻参照値とをそれぞれ補正タイムスタンプとして出力する手段と、前記補正タイムスタンプが出力されるタイミングで前記第２のクロック手段によりカウントされた前記第２のクロックのカウント値と、前記出力される補正タイムスタンプの値とを比較することで、前記第２のクロックのカウント値が前記補正タイムスタンプの値と同じになるように該カウント値を補正する手段と、マスタークロックを生成し、該マスタークロックをカウントするマスタークロック手段と、前記出力される補正タイムスタンプの値と、当該補正タイムスタンプが出力されるタイミングで前記マスタークロック手段によりカウントされた前記マスタークロックのカウント値とに基づき、前記マスタークロック手段で生成される前記マスタークロックの周波数と、前記第２のクロック手段で生成される前記第２のクロックの周波数との差が所定の誤差の範囲内となるように制御する制御手段と、前記補正されたカウント値であって、前記所定の誤差の範囲内の周波数に制御された前記第２のクロック手段によるカウント値を用いて、前記受信された各パケットのうちユーザにより選択されたパケットのデータを復号する手段とをさらに具備する。本発明では、第２のクロックのカウント値が補正タイムスタンプの値と同じになるように制御した上で、マスタークロックと第２のクロックのそれぞれの周波数の差を所定の範囲内に抑えているので、遅延揺らぎによるジッタを極力低減させた状態でデータを復号することができる。復号手段は、前記所定の誤差の範囲内の周波数に制御された第２のクロック手段によるカウント値に基づき、パケットの出力タイミングが制御されるバッファを有していてもよい。
【００２６】
本発明の一の形態によれば、前記制御手段は、前記マスタークロックのカウント値と該カウント値の次の前記マスタークロックのカウント値との差分を、前記出力された補正タイムスタンプと、該補正タイムスタンプが出力されるタイミングで前記マスタークロック手段によりカウントされた前記マスタークロックのカウント値との差分で除した値を算出する第１の算出手段と、前記第２のクロックの周波数を前記所定の誤差で除した値を算出する第２の算出手段と、前記１及び第２の算出手段で算出されたそれぞれの値の相対的な関係に基づき、前記マスタークロックの周波数と前記第２のクロックの周波数との差が前記所定の誤差の範囲内となるように制御する手段とを有する。所定の誤差の範囲内とは、例えばＭＰＥＧ規格上、第２のクロックの周波数に対して±３０ｐｐｍである。
【００２７】
本発明に係る通信システムは、クロックを生成し、該クロックをカウントするクロック手段と、符号化されたデータがパケット化された複数の連続するパケットを取得する手段と、前記取得された各パケットのうち所定のパケットに含まれる第１のタイムスタンプを読み取る手段と、前記読み取られた第１のタイムスタンプと前記第１のタイムスタンプが読み取られるタイミングでカウントされる前記クロックのカウント値との誤差情報である同期情報を、前記クロックの所定のクロック数ごとに生成する手段と、前記所定のクロック数に相当する時間ごとに、前記生成された同期情報を前記所定のパケットに付加する手段と、前記各パケットが取得されるタイミングでカウントされた前記クロックのカウント値を前記取得された各パケットに第２のタイムスタンプとして付加する手段と、前記所定のパケットと前記同期情報が付加されたパケットとを含む前記第２のタイムスタンプが付加された前記各パケットを送信する送信手段とを有する送信装置と、前記送信装置からネットワークを介して前記送信手段により送信された前記各パケットを受信する手段と、前記受信された各パケットのうち前記第１のタイムスタンプ及び前記同期情報を含む第１のパケットから、当該第１のタイムスタンプ及び当該同期情報を読み取る第１の読み取り手段と、前記受信された各パケットから前記第２のタイムスタンプを読み取る第２の読み取り手段と、前記第１の読み取り手段により読み取られた前記同期情報と、前記受信された各パケットのうち前記第１のタイムスタンプを含まない第２のパケットから前記第２の読み取り手段により読み取られた第２のタイムスタンプとに基づき、前記第２のパケットの時刻参照値を推定する推定手段とを有する受信装置とを具備する。
【００２８】
本発明では、受信装置が受信するパケットが第２のパケットであっても、その第２のパケットの時刻参照値を参照してジッタを低減しつつ同期を取ることができる。その上、各パケットのタイムスタンプを得ることができるため、チャンネル多重化されたパケットであってもユーザにより選択されたパケットごとのタイムスタンプを取得でき、確実に同期を取ることができる。パケットごとに第１のタイムスタンプを伝送する必要がないので、使用するネットワーク帯域を節約することができる。
【００２９】
本発明に係る受信方法は、クロックを生成し、該クロックをカウントするクロック手段と、符号化されたデータがパケット化された複数の連続するパケットを取得する手段と、前記取得された各パケットのうち所定のパケットに含まれる第１のタイムスタンプを読み取る手段と、前記読み取られた第１のタイムスタンプと前記第１のタイムスタンプが読み取られるタイミングでカウントされる前記クロックのカウント値との誤差情報である同期情報を、前記クロックの所定のクロック数ごとに生成する手段と、前記所定のクロック数に相当する時間ごとに、前記生成された同期情報を前記所定のパケットに付加する手段と、前記各パケットが取得されるタイミングでカウントされた前記クロックのカウント値を前記取得された各パケットに第２のタイムスタンプとして付加する手段と、前記所定のパケットと前記同期情報が付加されたパケットとを含む前記第２のタイムスタンプが付加された前記各パケットを送信する送信手段とを有する送信装置から、ネットワークを介して前記送信手段により送信された前記各パケットを受信するステップと、前記受信された各パケットのうち前記第１のタイムスタンプ及び前記同期情報を含む第１のパケットから、当該第１のタイムスタンプ及び当該同期情報を読み取るステップと、前記受信された各パケットから前記第２のタイムスタンプを読み取るステップと、前記読み取られた同期情報と、前記受信された各パケットのうち前記第１のタイムスタンプを含まない第２のパケットから読み取られた前記第２のタイムスタンプとに基づき、前記第２のパケットの時刻参照値を推定するステップとを具備する。
【００３０】
本発明に係る受信プログラムは、コンピュータに、クロックを生成し、該クロックをカウントするクロック手段と、符号化されたデータがパケット化された複数の連続するパケットを取得する手段と、前記取得された各パケットのうち所定のパケットに含まれる第１のタイムスタンプを読み取る手段と、前記読み取られた第１のタイムスタンプと前記第１のタイムスタンプが読み取られるタイミングでカウントされる前記クロックのカウント値との誤差情報である同期情報を、前記クロックの所定のクロック数ごとに生成する手段と、前記所定のクロック数に相当する時間ごとに、前記生成された同期情報を前記所定のパケットに付加する手段と、前記各パケットが取得されるタイミングでカウントされた前記クロックのカウント値を前記取得された各パケットに第２のタイムスタンプとして付加する手段と、前記所定のパケットと前記同期情報が付加されたパケットとを含む前記第２のタイムスタンプが付加された前記各パケットを送信する送信手段とを有する送信装置から、ネットワークを介して前記送信手段により送信された前記各パケットを受信するステップと、前記受信された各パケットのうち前記第１のタイムスタンプ及び前記同期情報を含む第１のパケットから、当該第１のタイムスタンプ及び当該同期情報を読み取るステップと、前記受信された各パケットから前記第２のタイムスタンプを読み取るステップと、前記読み取られた同期情報と、前記受信された各パケットのうち前記第１のタイムスタンプを含まない第２のパケットから読み取られた前記第２のタイムスタンプとに基づき、前記第２のパケットの時刻参照値を推定するステップとを実行させる。
【発明の効果】
【００３１】
以上のように、本発明によれば、ネットワークの遅延揺らぎを極限まで吸収し、多重化されたチャンネルでの各パケットの同期を受信側で確実に取ることができる。
【発明を実施するための最良の形態】
【００３２】
以下、本発明の実施の形態を図面に基づき説明する。
【００３３】
図１は、本発明の一実施の形態に係る通信システムの構成を示すブロック図である。
【００３４】
通信システム２００は、送信装置５０と受信側１００とがネットワーク９に接続されて構成されている。受信側１００は例えば構内を想定しており、受信側１００では、ネットワーク１０に、複数の受信装置６０、７０等が接続されている。受信装置６０、７０は同様の構成を有しているので、図１では受信装置６０の構成のみを示し、受信装置７０の構成は図示を省略している。ネットワーク９はＷＡＮ（Wide Area Network）である。ネットワーク１０はＬＡＮ（Local Area Network）であり、受信装置６０及び７０は、例えば、同じ建物内の違う部屋等（リビングルームやベッドルーム）にそれぞれ配設されている。例えば両ネットワーク９及び１０は、ネットワーク層では例えばＩＰが適用され、データリンク層では例えばイーサネット（登録商標）等が適用される。
【００３５】
この通信システム２００は、遠隔地で送信装置５０が受信したディジタル放送と、後述する外部記憶装置３３内のコンテンツを同時にリアルタイムにネットワーク９上に伝送して受信側１００内のそれぞれの場所で違うコンテンツまたは同じコンテンツを視聴する。ディジタル放送はもともと４〜５チャンネル分、時分割で多重化されている。したがって、外部記憶装置３３から取得されるストリームがパーシャルＴＳとすると、ネットワーク９、１０上に流れるコンテンツの合計は５〜６チャンネルになる。
【００３６】
送信装置５０は、例えばチューナーユニット３２を介してディジタル放送電波６９に含まれるＭＰＥＧ−ＴＳパケット（以下、単にＴＳパケットという場合もある。）を取得し、また、外部記憶装置３３に記憶されたＭＰＥＧ−ＴＳパケットを取得することが可能に構成されている。チューナーユニット３２や外部記憶装置３３は、送信装置５０に搭載されていてもよい。チューナーユニット３２は、例えばＢＳデジタル放送、ＣＳディジタル放送、地上ディジタル放送等を受信することが可能に構成されている。
【００３７】
送信装置５０は、外部記憶装置コントロール部３０、ＭＵＸ（Multiplexer）３４、ＭＵＸコントローラ３５、パケット検出部３６、ＲＴＰパケット生成部３７、ＵＤＰパケット生成部３８、ＩＰパケット生成部３９、同期情報算出部４２、メモリ４３、ＰＣＲカウンタ４４、水晶発振器４１を有している。
【００３８】
外部記憶装置コントロール部３０は、外部記憶装置３３からのＴＳパケットの取得を制御する。ＭＵＸ３４は、ＭＵＸコントローラ３５の制御の下で、チューナーユニット３２と外部記憶装置３３とから取得したＴＳパケットをさらに時分割多重化する。多重化のアルゴリズムについては、特開平１０−４１９１１、特開平１０−４１９１５、米国特許第６４５６７８２、第６３４７１１９に開示されたものを用いる。パケット検出部３６は、ＴＳパケットを検出し、ＰＣＲ（第１のタイムスタンプ）が含まれるパケット（ＰＣＲパケット）を検出した場合は、そのＰＣＲの値を抽出する。このようなＰＣＲは、図示しないディジタル電波の放送局によって図２に示すＭＰＥＧ−ＴＳパケット７４のヘッダ（あるいはアダプテーションフィールド（図３参照））に例えば０．１秒間隔で付加され、ＰＣＲパケットとして伝送される。なお、ＰＣＲはこのようにＰＣＲパケットとして伝送される場合もあるが、映像データや音声データに埋め込まれて伝送される場合もある。
【００３９】
なお、この図１では、送信装置５０がチューナーユニット３２と外部記憶装置３３とから取得してＭＵＸ３４で多重化する例を示したが、チューナーユニット３２と外部記憶装置３３のうちいずれか一方のみを用いるようにしてもよい。
【００４０】
ＲＴＰパケット生成部３７は、図２に示すように、ＴＳパケット７４にＲＴＰに従うヘッダ（１６Bytes）を付加し、ＴＳパケット７４をペイロードとしたＲＴＰパケット７３を生成する。ＵＤＰ（User Datagram Protocol）パケット生成部３８は、ＲＴＰパケット生成部３７で生成されたＲＴＰパケット７３にＵＤＰに従うヘッダ（８Bytes）を付加し、ＲＴＰパケット７３をペイロードとしたＵＤＰパケット７２を生成する。ＴＣＰ（Transmission Control Protocol）を使用せず、ＵＤＰを使用するのはリアルタイム性を確保するためである。ＩＰパケット生成部３９は、ＵＤＰパケット生成部３８で生成されたＵＤＰパケット７２にＩＰに従うヘッダ（２０Bytes）を付加し、ＵＤＰパケット７２をペイロードとしたＩＰパケット７１を生成する。
【００４１】
図３は、ＭＰＥＧ−ＴＳパケット７４のデータ構造を示す図である。ＭＰＥＧ−ＴＳパケット７４は、ヘッダ７４ａ、アダプテーションフィールド７４ｂ及びペイロード７４ｃ等からなる、１８８バイトの固定長パケットである。一般的には、このヘッダ７４ａ及びアダプテーションフィールド７４ｂをまとめてヘッダと呼ぶこともある。
【００４２】
ヘッダ７４ａには、同期バイト（８ビット）、誤り表示（１ビット）、ユニット開始表示（１ビット）、トランスポートパケットプライオリティ（１ビット）、ＰＩＤ(Packet Identification)（１３ビット）、スクランブル制御（２ビット）、アダプテーションフィール制御（２ビット）、巡回カウンタ（４ビット）が含まれる。同期バイトは、４７ｈとされている。
【００４３】
アダプテーションフィールド７４ｂには、アダプテーションフィールド長さ（８ビット）、不連続表示（１ビット）、ランダムアクセス表示（１ビット）、ストリーム優先表示（１ビット）、フラグ（５ビット）、プログラムクロックリファレンスベース（３３ビット）、リザーブ（６ビット）、及びプログラムクロックリファレンス拡張（９ビット）が含まれる。なお、フラグには、ＰＣＲフラグ（１ビット）をはじめ５種類のフラグが存在する。
【００４４】
ペイロード７４ｃには、ビデオデータまたはオーディオデータ等が含まれる。
【００４５】
ＭＰＥＧ−ＴＳパケット７４は、以上のようなデータ構造を有するが、図３に示すように、ヘッダ７４ａのアダプテーションフィールド制御が"１０"または"１１"とされ、かつ、アダプテーションフィールド７４ｂのアダプテーションフィールド長さが００ｈ以外の値で、さらにＰＣＲフラグに"１"が立っている場合、そのＭＰＥＧ−ＴＳパケット７４は、ＰＣＲパケットであり、そのアダプテーションフィールド７４ｂのプログラムクロックリファレンスベースの値及びプログラムロックリファレンス拡張の値の組み合わせが、ＰＣＲ（第１のタイムスタンプ）値を表す。
【００４６】
プログラムクロックリファレンスベースには、０〜２９９の値が順に設定され（カウントされ）、プログラムクロックリファレンスベースの値が２９９から０の値に戻る（リセット）されるタイミングで、プログラムクロックリファレンス拡張の値が１だけインクリメントされる。すなわち、プログラムクロックリファレンスベース及びプログラムクロックリファレンス拡張の合計４２ビットにより、ＭＰＥＧ−２方式における２７MHzのシステムクロックを単位として、２４時間分の時間がカウントされる。
【００４７】
図１を参照して、水晶発振器４１は所定の周波数、例えば２７MHzのクロック（第１のクロック）を生成し、ＰＣＲカウンタ４４はこのクロックをカウントし、そのカウント値を同期情報算出部４２に出力する。同期情報算出部４２は、パケット検出部３６からのＰＣＲパケット検出信号により特定されるＭＰＥＧ−ＴＳパケット７４（ＰＣＲパケット）からＰＣＲを読み出し、読み出したＰＣＲに基づいて、所定の同期情報（同期残差の情報）を算出する。同期情報の詳細は後述する。同期情報算出部４２は、算出した同期情報をそのＰＣＲパケットに書き込み、ＲＴＰパケット生成部３７に出力する。また、同期情報算出部４２は、ＰＣＲパケットに限らず、パケット検出部３６で各ＭＰＥＧ−ＴＳパケット７４が検出されるタイミングにおける上記カウント値を新たなＰＣＲ（第２のタイムスタンプ）として、ＲＴＰパケット生成部３７に出力する。ＲＴＰパケット生成部３７では、このＰＣＲが、後述するタイムスタンプ（ＴｉＳ）としてＲＴＰパケットごとにそれらのＲＴＰヘッダに付加される。メモリ４３は、同期情報算出部４２から供給される、同期情報を算出する上において必要なデータを適宜記憶する。なお、この例の場合、同期情報算出部４２による同期情報算出処理は、プログラム毎（ＭＰＥＧ−ＴＳパケットに設定されたＰＩＤ（Packet IDentification）毎）に行われるので、メモリ４３は、同期情報算出部４２から供給されるデータをプログラムごとに記憶する。
【００４８】
送信装置５０は、以上の構成のほか、図２に示すＭＰＥＧ−ＴＳパケット７４の同期バイト７４ｓでフレーム同期を確立するためのフレーム同期部（図示せず）を有している。このフレーム同期のアルゴリズムは、例えば特開２０００−３５８００６、米国特許第６３４７１１９で開示されるものが用いられる。
【００４９】
受信装置６０は、送信装置５０からネットワーク９及び１０を介して伝送されてきたＩＰパケット７１を受信する。受信装置６０は、ＩＰヘッダ解析部４５、ＵＤＰヘッダ解析部４６、ＲＴＰヘッダ解析部４７、ＭＰＥＧ−ＴＳヘッダ解析部４９、ＤｅＭＵＸ５２、ＦＩＦＯ６１、６２、ビデオデコーダ６４、オーディオデコーダ６３を有している。
【００５０】
ＩＰヘッダ解析部４５は、受信されたＩＰパケット７１からＩＰヘッダを抜き取り、ＩＰヘッダのデータを解析する。ＵＤＰヘッダ解析部４６は、ＵＤＰパケット７２からＵＤＰヘッダを抜き取り、ＵＤＰヘッダのデータを解析する。ＲＴＰヘッダ解析部４７は、ＲＴＰパケット７３からＲＴＰヘッダを抜き取り、ＲＴＰヘッダのデータを解析する。ＭＰＥＧ−ＴＳヘッダ解析部４９も同様に、ＭＰＥＧ−ＴＳパケット７４からＭＰＥＧ−ＴＳヘッダを抜き取り、そのＴＳヘッダのデータを解析する。具体的には、ＭＰＥＧ−ＴＳヘッダ解析部４９は、ＴＳヘッダ内に上述した同期情報があれば、それを抽出して後述するタイムスタンプ補正部５１に出力し、また、ＰＣＲパケット内のＰＣＲを抽出しこれをタイムスタンプ補正部５１に出力する。
【００５１】
ＤｅＭＵＸ５２は、多重化されたＴＳパケット７４から、ユーザにより選択されたチャンネル（プログラム）のＴＳパケット７４を抽出する。具体的には、ＤｅＭＵＸ５２は、ユーザにより選択されたチャンネルのＰＭＴ（Program Map Table）に記述されたＰＩＤ値を参照して、そのＰＩＤ値を持つパケットをフィルタリングする。
【００５２】
ＦＩＦＯ６１は、ビデオデコーダ６４でビデオデータを復号するために、ＤｅＭＵＸ５２により抽出されたＴＳパケット７４のうちビデオデータのパケットを一時的にバッファリングする。ＦＩＦＯ６２は、オーディオデコーダ６３で復号するために、ＤｅＭＵＸ５２により抽出されたＴＳパケット７４のうちオーディオデータのパケットを一時的にバッファリングする。ビデオデコーダ６４及びオーディオデコーダ６３でそれぞれ復号されたデータは、ビデオ信号１６及びオーディオ信号１７として図示しないＡＶ機器に出力される。
【００５３】
また、受信装置６０は、タイムスタンプ検出部５３、タイムスタンプ補正部５１、比較器５７、６５、マスター水晶発振器５５、ＶＣＸＯ５９、マスターＳＴＣ（System Time Clock）カウンタ５６、ＳＴＣカウンタ６８、ＬＰＦ（ローパスフィルタ）５８を有する。
【００５４】
タイムスタンプ検出部５３は、ＲＴＰヘッダ解析部４７で抜き取られたＲＴＰヘッダからタイムスタンプ（後述するＴｉＳ（第２のタイムスタンプ））を検出し、タイムスタンプ補正部５１へ出力する。タイムスタンプ補正部５１は、タイムスタンプ検出部５３から得られたタイムスタンプや、ＭＰＥＧ−ＴＳヘッダ解析部４９から得られた同期情報に基づき、各ＴＳパケット７４の時刻参照値を演算により推定する。タイムスタンプ補正部５１は、推定された時刻参照値を補正タイムスタンプとして比較器５７及び６５に出力する。
【００５５】
マスター水晶発振器５５は、受信装置６０の基準となる例えば２７MHzのマスタークロックを生成し、マスターＳＴＣカウンタ５６はマスタークロックをカウントする。ＶＣＸＯ５９も同様に例えば２７MHzのクロック（第２のクロック）を生成し、ＳＴＣカウンタ６８はそのクロックをカウントする。そしてＳＴＣカウンタ６８は、ＶＣＸＯ５９で生成されたクロックのカウント値を比較器６５、ビデオデコーダ６４及びオーディオデコーダ６３に出力する。また、ＳＴＣカウンタ６８は、そのクロックのカウント値に基づき、ＦＩＦＯ６１及び６２のデータの出力タイミングを制御するための制御信号をＦＩＦＯ６１及び６２に出力する。
【００５６】
比較器６５は、ＳＴＣカウンタ６８から取得したカウント値と、タイムスタンプ補正部５１から取得した補正タイムスタンプ値とを比較して所定の演算処理を行う。具体的には、比較器６５は両者の差の平均値を算出し、この平均値をＳＴＣカウンタ６８に戻すことにより、ＳＴＣカウンタ６８のカウント値と補正タイムスタンプ値とがほぼ同じ値になるように制御する。
【００５７】
比較器５７は、マスターＳＴＣカウンタ５６でカウントされたカウント値と、タイムスタンプ補正部５１から出力された補正タイムスタンプとを比較して所定の演算処理を施す。ＬＰＦ５８は、ＶＣＸＯ５９により生成されるクロックをフィードバック制御するために、ＶＣＸＯ５９に制御信号を出力する。このとき、ＬＰＦ５８は、上記フィードバック制御するときの変数として、比較器５７で算出される値を比較器５７から取得する。つまり、この受信装置６０では、タイムスタンプ補正部５１で補正された補正タイムスタンプに基づいて、ＶＣＸＯ５９によるクロックの周波数がマスター水晶発振器５５によるマスタークロックの周波数と比較して所定の誤差の範囲内になるように制御される。
【００５８】
なお、送信装置５０は受信装置６０の機能をさらに備えていてもよいし、受信装置６０は送信装置５０の機能をさらに備えていてもよい。また、送信装置５０または受信装置６０は、ネットワーク９等におけるＲＴＰパケット７３の伝送を制御するためのＲＴＣＰ（RTP Control Protocol）に従うＲＴＣＰパケットを生成する機能を有していてもよい。
【００５９】
上記ＲＴＰパケット７３の構成を図４に示す。ＲＴＰヘッダには、バージョン番号、パディング、拡張ヘッダの有無、送信元数（カウンタ）、マーカ情報、ペイロードタイプ、シーケンス番号、タイムスタンプ、同期ソース（送信元）識別子（ＳＳＲＣ）及び貢献ソース（送信元）識別子（ＣＳＲＣ）の各フィールドが設けられている。上記したように、受信装置６０は、タイムスタンプ補正部５１により、ＴＳパケットの全てに含まれるこのタイムスタンプを用いて、受信するＴＳパケットごとの新たな時刻参照値を推定する。
【００６０】
次に、送信装置５０の動作を説明する。
【００６１】
送信装置５０がチューナーユニット３２及び外部記憶装置３３から取得したＭＰＥＧ−ＴＳパケット７４をＭＵＸ３４で多重化する。多重化されたＴＳパケット７４は、パケット検出部３６によりＰＣＲパケットが検出され、ＰＣＲが抽出されて同期情報算出部４２に出力される。
【００６２】
以下、同期情報算出部４２の動作を説明する。図５はその動作を示すフローチャートであり、図６はその説明図である。なお、この同期情報算出部４２の処理は、ＭＰＥＧ−ＴＳに設定されたＰＩＤごと（最大8192個のプログラム分のＰＩＤごと）に実行されるが、この例の場合、１つのＰＩＤに対応して実行される同期情報算出処理を例として説明する。図６では、２つのＰＩＤ（図６で上段と下段で２つのチャンネル）に対応する例を図示している。
【００６３】
ステップ５０１において、パケト検出部３６が、例えば、図６に示すように、送信装置５０に入力された最初のＰＣＲパケット（第１番目のＰＣＲパケット）を検出し、そのＰＣＲ値を含むＰＣＲパケット検出信号を同期情報算出部４２に出力する。同期情報算出部４２は、ＰＣＲパケットが検出されたことを示すフラグをメモリ２１５に設定する。
【００６４】
次に、ステップ５０２において、同期情報算出部４２は、第１番目のＰＣＲパケットのＰＣＲ（ＰＣＲ1-1）を、オフセット値を用いて表し、これをメモリ４３に記憶させる。具体的には、ステップ５０１において、同期情報算出部４２により、第１番目のＰＣＲパケットのＰＣＲ値であるＰＣＲ1-1が読み取られたとき、同期情報算出部４２は、ＰＣＲカウンタ４４に対して、カウント値がその基準クロック値となるタイミングでカウント値のリセットを指令する。つまり、ＰＣＲ1-1が読み取られたときのＰＣＲカウンタ４４から供給されたカウント値（ＰＣＲN1A）を基準クロック値（時点Ａ１）とする。すなわち、ＰＣＲ1A＝ＰＣＲ1-1である。このように各ＰＣＲパケット内のＰＣＲ値が読み取られるタイミングでカウントされたカウント値は図６において符号８１で示している。オフセット値（ＰＣＲoff1A）を考慮すると、ＰＣＲ1A（＝基準クロック値）は以下の式（１）で表すことができる。すなわち、式（１）よりオフセット値ＰＣＲoff1Aを求めることができる。  
ＰＣＲ1A（＝基準クロック値）＝ＰＣＲN1A＋ＰＣＲoff1A・・・（１）
【００６５】
ステップ５０３において、同期情報算出部４２は、基準クロック値（ＰＣＲ1A）及びオフセット値（ＰＣＲoff1A）のそれぞれをメモリ４３に記憶させる。
【００６６】
次に、ステップ５０４において、同期情報算出部４２は、ＰＣＲカウンタ４４からのカウント値が3240000を示すまで、つまり時点Ｂ１までに、ＰＣＲパケット検出信号が、パケット検出部３６から入力されたか否かを判定し、それまでにＰＣＲパケット検出信号が入力されたと判定した場合、ステップ５０５に進む。つまり、図６に示す例では、カウント値が3240000を示すまでに、パケット検出部３６から第２番目のＰＣＲパケットの検出信号が入力されているので、２番目のＰＣＲパケットに対してステップ５０５の処理を施す。なお、ＰＣＲパケットが入力されていないとき、同期情報算出部４２は、ＰＣＲパケットが検出されたことを示すフラグを取り消す。
【００６７】
ステップ５０５において、同期情報算出部４２は、ＰＣＲパケット（この場合、第２番目のＰＣＲパケット）のヘッダの同期バイトを47ｈから-128に変更する。このように、時点Ａ１から時点Ｂ１の間に検出されたＰＣＲパケットは同期バイトを-128にして同期情報を含めないようにする。この処理の詳細は後述する。
【００６８】
なお、ステップ５０４において、ＰＣＲカウンタ４４のカウント値が3240000になるまでの間、つまり時点Ａ１から時点Ｂ１までの間にＰＣＲパケットが検出されなかったと判定した場合、同期情報算出部４２は、ＰＣＲカウンタ４４に対して、カウント値＝3240000となるタイミングで、カウント値のリセットを指令し、その後、ステップ５０６に進む。
【００６９】
ステップ５０６において、同期情報算出部４２は、ＰＣＲパケットが検出されるまで（ＰＣＲパケット検出信号が入力されるまで）待機する。なお、この例の場合、ＰＣＲカウンタ４４においては、1／3240000に分周された２７MHzのクロックがカウントされているので、3240000クロック分のカウントが完了するのに、0.12秒（＝3240000／27000000）を要する。すなわち、ＭＰＥＧ−２方式によれば、ＰＣＲパケットは、少なくとも0.1秒に１つの割合で伝送されるようになされているので、ステップ５０４でカウント値の値がリセットされてから（例えば、基準点Ａ１から）、3240000クロックのカウントが完了する（例えば、時点Ｂ１）までの間には、必ず１つのＰＣＲパケット（この例の場合、第３番目のＰＣＲパケット）が検出される。
【００７０】
ステップ５０６において、ＰＣＲパケット（この例の場合、第３番目のＰＣＲパケット）が検出されたとき、同期情報算出部４２は、ステップ５０７に進み、第３番目のＰＣＲパケットに書き込む同期情報を算出する。具体的には、同期情報算出部４２は、到着した第３番目のＰＣＲパケットのＰＣＲ値（ＰＣＲ1-3）を取得する。次に、同期情報算出部４２は、第３番目のＰＣＲパケットが検出されたときのカウント値（ＰＣＲN1B+j1）を保持する。さらに、同期情報算出部４２は、ＰＣＲN1A、ＰＣＲ1-3、カウント値N1B+j1、及び基準クロック値（ＰＣＲ1A）を、下記の式（２）に代入し、同期情報（ＲＴＳ1A）を算出する。  
ＲＴＳ1A＝[ [（ＰＣＲ1-3）−（ＰＣＲ1A）−{（ＰＣＲN1B+j1）−（ＰＣＲN1A）} ]×3240000 /（（ＰＣＲN1B+j1）−（ＰＣＲN1A））] / 2・・・（２）
【００７１】
すなわち、この同期情報（ＲＴＳ1A）は、第３番目のＰＣＲパケット内のＰＣＲ値（ＰＣＲ1-3）と、このＰＣＲ1-3に対応するカウント値（ＰＣＲN1B+j1）とのずれに基づいて、時点Ｂ１（つまり時点Ａ１から3240000クロック分進んだ時点）における、ＰＣＲパケット内のＰＣＲ値とそれが検出されるタイミングでのカウント値とのずれを、比率で求めている。その「比率」が式（２）中、3240000 /（（ＰＣＲN1B+j1）−（ＰＣＲN1A））である。
【００７２】
式（２）において全体を２で割っているのは、ＲＴＳ1Aの値を２飛びにし実質的に大きな値を伝送するためである。従って、同期データとしての値（ＲＴＳ1A×2）は-250，-248，…，-4，-2，0，2，4，…，248，250をとる（詳細は、図７を参照して後に説明する）。なお、最後に２で割った余りはハードウェア簡略化のため切り捨てられる。
【００７３】
次に、ステップ５０８において、同期情報算出部４２は、第３番目のＰＣＲパケットに、ステップ５０７で算出した同期情報を書き込む。具体的には、同期情報算出部４２は、第３番目のＰＣＲパケットのヘッダ７４ａ（図３参照）の同期バイト（47ｈ）を、算出した同期情報に変更する（後で図８において説明するように、ＲＴＳＴに書き換える。）これにより、時点Ｂ１における上記ずれ、すなわち同期情報（ＲＴＳ1A）が、時点Ｂ１から時点Ｃ１までの間に検出された第３番目のパケット内に付加されることになる。
【００７４】
同期情報算出部４２は、ステップ５０５またはステップ５０８で同期バイトを変更した後、ステップ５０９に進み、その値から39hを差し引く。このように、39hの値を差し引くことより、例えば、同期情報が含まれていないＰＣＲパケットの同期バイト（ステップ５０５で、-128に変更された同期バイト）は、47hとなる。
【００７５】
次に、ステップ６０において、同期情報算出部４２は、3240000（クロック）に、ステップ５０７で算出した同期情報を加算して、それを新たな基準クロック値とする。これを下記の式（３）で表す。  
ＰＣＲN1B＝32400000＋(ＲＴＳ1A×2)・・・（３）
【００７６】
また、ステップ５０２で算出したオフセット値（ＰＣＲoff1A）に同期情報を加算して、それを新たなオフセット値（ＰＣＲoff1B）とする。これを下記の式（４）で表す。  
ＰＣＲoff1B＝ＰＣＲoff1A＋(ＲＴＳ1A×2)・・・（４）
【００７７】
同期情報算出部４２は、これら新たな基準クロック値（ＰＣＲN1B）及びオフセット値（ＰＣＲoff1B）をメモリ４３に上書きする。これにより、時点Ｃ１以降に検出されたＰＣＲパケットについて、この変更された基準クロック値（ＰＣＲN1B）及びオフセット値（ＰＣＲoff1B）に基づいて、式（２）と同様な方法で同期情報が算出される。
【００７８】
以上のような処理を同期情報算出部４２が実行することより、メモリ４３には、基準クロック値（４２ビット）、オフセット値（４２ビット）及びフラグ（１ビット）が、プログラムのＰＩＤに対応して記憶される。ＰＩＤは8192通りあるので、計１Mbitのメモリが必要である。なお、当然、他のＰＣＲクロック２（他のＰＩＤ）についても第１番目のＰＣＲパケット（このパケット内に含まれるＰＣＲ値はＰＣＲ2-1）で独立に時点Ａ２を設定していけば、同様に同期情報が求められる。
【００７９】
また以上のような同期情報算出部４２により、同期情報ＲＴＳは、3240000クロックごとに生成されるようになり、このＲＴＳがその3240000クロック間に検出された最初のＰＣＲパケット（図６に示す例では、上段の第３番目のＰＣＲパケット及び下段の第４番目のパケット）に組み込まれるようになる。
【００８０】
次に、同期情報のデータの内容について説明する。
【００８１】
図７にそのデータの内容を示す。同期情報（ＲＴＳ）は、-125〜125のうちのいずれかの値とし、その他の値には、図７に示すような意味付けを行って利用する。ただし、実質的な同期データはＲＴＳに２をかけた値(-250〜250)となる。
【００８２】
例えば、-128は、上述したようにそのＴＳパケットには同期情報が設定されていないことを意味する。-127は、例えばＰＣＲパケットに大きなジッタが発生し、入力されたＰＣＲパケットの間隔が大きく、同期情報の値が-125〜125の範囲外とされるような場合などの、送信装置５０において何らかのエラーが発生したことを意味する。-126、126、及び127は、リザーブの値である。
【００８３】
ここで、ＰＣＲクロックジッタの許容値はＭＰＥＧ規格より以下の式（５）の通りである。  
27000000±810 [Hz]・・・（５）
したがって、同期情報（ＲＴＳ）は0.12秒間に１サンプルなので、取り得る値は810×0.12=97.2となり以下の式（６）のようになる。  
ＲＴＳ＝±98 [Hz]・・・（６）
【００８４】
つまり、ＲＴＳの範囲は-125〜+125であれば充分であり１Byteで転送可能であるが、実際にはマージンをとり-250〜+250（２飛び）の範囲をとれるようにしておく。これは、ネットワークから供給されるコモンクロック（Common Clock）に数十ｐｐｍジッタ成分がある場合に対応するためである。
【００８５】
例を以下に示す。仮にコモンクロックの精度(ジッタ)を±３０ｐｐｍとする。また、ＰＣＲクロックの精度は±３０ｐｐｍ(±810Hz)なので、コモンクロックによって計測されるＲＴＳは、次式のようになる。  
((1−30ppm) /（1＋30ppm）−1)×27MHｚ=−1619.9514・・・（７）
((1＋30ppm) /（1−30ppm）−1)×27MHｚ=＋1620.0486・・・（８）
したがって、１秒間では±1621となる。0.12秒では以下の式（９）ようになる。  
±1621×0.12 =±194.52・・・（９）
ＲＴＳを１ビットシフトして伝送すると±97.26となる。したがって、ＲＴＳは１Byte(±125)で伝送可能である。
【００８６】
同期情報算出部４２は、同期情報ＲＴＳに、以下の式（１０）のように39hのオフセットをかけ、これをＲＴＳＴとして、図８に示すようにＰＣＲパケット７４−１の同期バイト７４ｓに書き込む。  
ＲＴＳＴ=ＲＴＳ−39h・・・（１０）
【００８７】
こうすることで、同期情報を持たないＰＣＲパケットの同期バイト７４ｓの値がもともとＭＰＥＧで規定されている47hと同じ値となる。すなわち、128-39h=47hである。これにより、受信側１００でＴＳパケットの先頭をより検出しやすくなる。この場合メモリ容量は１つのＰＩＤ当たり以下のビットが必要となる。
【００８８】
以上のようにして、同期情報（ＲＴＳＴ）が求められるとともに、ＰＣＲカウンタ４４でのＰＣＲ値がＲＴＰパケット生成部３７でＲＴＰヘッダ内のタイムスタンプ（以下、このタイムスタンプをＴｉＳと表す。）として挿入される。ＰＣＲは４２ビットで、ＲＴＰヘッダ内のＴｉＳは規格で３２ビットと決まっていてＰＣＲデータの全ビットをＲＴＰヘッダ内にマッピングすることはできないので、下位３２ビット（ＰＣＲ−base 23ビット、ＰＣＲ−extension 9ビット）をマッピングする。ＰＣＲカウンタ４４は２７MHｚでカウントされていて、ＰＣＲ Extensionにより0〜299がカウントされるので、ＰＣＲカウンタの周期は２２３×３００／２７ＭＨｚ＝９３秒となる。これは、一般的なネットワークのディレイと比較して充分大きな値となる。したがって、ネットワークのディレイの変動を計測することが可能となり下位３２ビットでも実用上問題ない。
【００８９】
同期情報算出部４２でＲＴＳＴが付加されたＴＳパケットは、ＲＴＰパケット生成部３７に渡される。そして、ＲＴＰパケット生成部３７によりＲＴＰヘッダが付されてＲＴＰパケット７３が生成され、ＵＤＰパケット生成部３８によりＵＤＰヘッダが付されてＵＤＰパケット７２が生成され、ＩＰパケット生成部３９によりＩＰヘッダが付されてＩＰパケット７１が生成されてネットワーク９を介して受信側１００に送信される。
【００９０】
次に、受信装置６０の動作を説明する。図９はその動作を示すフローチャートであり、図１０はタイムスタンプ補正部５１の動作を説明するための図である。図９において、ＰＣＲ（ｉ）はｉ番目のＲＴＰパケットのＰＣＲ値、ＴｉＳ（ｉ）はｉ番目のＲＴＰパケットのタイムスタンプ値、ＲＴＳ（ｉ）はｉ番目のＲＴＰパケットの同期情報、ＳＴＣＭ（ｉ）はｉ番目のＲＴＰパケット検出時のマスターＳＴＣカウンタ５６のカウント値である。図１０では、１つのＰＩＤ値について処理が実行される例を示している。図１０においては、ｏ<ｐ<ｊ<ｑである。
【００９１】
図１０において、ＴｉＳはＲＴＰパケットごとに存在するが、ＲＴＳはＴｉＳが3240000進むごとに存在する。また、ＰＣＲはＭＰＥＧの規格上0.1秒に１回（270000クロックに１回）以上伝送することになっているので、ＰＣＲパケット全てにＲＴＳが存在するわけではくＰＣＲのみ存在する場合がある。ＴｉＳ、ＲＴＳ、ＰＣＲの３つが、パケットで伝送される値である。ここでの「ＰＣＲ」は図６に示すように、ＰＣＲパケットにもともと含まれるＰＣＲ（図６に示すＰＣＲ1-1、ＰＣＲ1-2、ＰＣＲ1-3、・・・）である。つまり、「ＰＣＲ」が含まれるパケットはＰＣＲパケットがＲＴＰパケット化されたものである。タイムスタンプ補正部５１では、ＲＴＰパケットごとに存在するＴｉＳから、各ＲＴＰパケットでのＰＣＲの値（時刻参照値）を計算で求め推定している。
【００９２】
ステップ９０１において、初期状態では、到着したＲＴＰパケットの数ｉが０に設定される。また、初期状態では後述するＳＴＣＭsum、ＦBackも０である。
【００９３】
ＩＰヘッダ解析部４５は、受信装置６０が受け取ったＩＰパケット７１からＩＰヘッダを取り除きＵＤＰパケット７２とし、ＵＤＰヘッダ解析部４６は、ＵＤＰパケット７２からＵＤＰヘッダを取り除きＲＴＰパケット７３とする。そして、ＲＴＰヘッダ解析部４７がＲＴＰパケット７３を取得したとき、（ステップ９０２のＹＥＳ）、ｉが１インクリメントされ（ステップ９０３）、ステップ９０４に進む。ステップ９０４において、ＲＴＰヘッダ解析部４７は、ＲＴＰヘッダを取り除き、このＲＴＰヘッダからタイムスタンプ検出部５３はＴｉＳを検出する。
【００９４】
ステップ９０５では、ＳＴＣＭ（ｉ）をセットする。ここで、ＳＴＣＭは、タイムスタンプ補正部５１で算出された時刻参照値（補正タイムスタンプ：ＰＣＲmod）が比較器へ出力されるタイミングで、マスターＳＴＣカウンタ５６によりカウントされる、マスター水晶発振器５５が生成するマスタークロックのカウント値である。ＰＣＲmodは、ＲＴＰパケットごとに算出される値であり、ＲＴＰパケットがＰＣＲを含む場合はそのＰＣＲそのものの値となる。
【００９５】
一方、ＭＰＥＧ−ＴＳヘッダ解析部４９は、そのＲＴＰパケット７３がユーザによって選択されたＰＩＤ、すなわちユーザによって選択されたチャンネルのＰＣＲのＰＩＤ（ＰＣＲパケットのＰＩＤ）に相当するパケットか否かを判定する（ステップ９０６）。そのパケットがユーザによって選択されたＰＩＤに相当する場合は、ＭＰＥＧ−ＴＳヘッダ解析部４９は、そのＲＴＰパケットにＲＴＳが含まれているか否かを判定する（ステップ９０７）。ＲＴＳが含まれている場合（次のステップ９０８においてＲＴＳ（ｋ）＝ＲＴＳ（ｉ））、ＭＰＥＧ−ＴＳヘッダ解析部４９は、ＭＰＥＧ−ＴＳパケット７４のＴＳヘッダ内のＲＴＳＴに対して、下記の式（１１）によって式（１０）の逆の計算を行い、オフセットを取り除く（ステップ９０９）。  
ＲＴＳ＝ＲＴＳＴ＋39h・・・（１１）
【００９６】
ＴＳヘッダ内にＲＴＳＴが含まれているパケットは必ずＰＣＲも含まれており、ＭＰＥＧ−ＴＳヘッダ解析部４９は、このＰＣＲを検出してその値をタイムスタンプ補正部５１に出力する。
【００９７】
さらに、その後、ＲＴＰパケットを取得してステップ９１０〜ステップ９１５まで、上記ステップ９０２〜９０７と同様な処理を実行する。ステップ９１５でＲＴＳが検出されると、図１０においては、このＲＴＳを含むパケットは、「ＲＴＰパケット0」であり、そのタイムスタンプは「ＴｉＳ0」、ＰＣＲは「ＰＣＲ0」として示している。つまり「ＲＴＳ0」は、２回目に検出された同期情報であり、この「ＲＴＰパケット0（基準パケット）」に含まれる「ＴｉＳ0」の時刻を、第１番目の基準時点Ａ１’とする。基準時点Ａ１’における「ＴｉＳ0」を「ＴｉＳbase0」とする（ステップ９１６）。
【００９８】
基準時点Ａ１’において、タイムスタンプ補正部５１は、ＰＣＲ0とＴｉＳ0の関係としてオフセットＴｉＳoff0を下記の式（１２）で求める（ステップ９１６）。このようにオフセット値を考慮することにより、送信装置５０で生じたＰＣＲとＴｉＳとの差を考慮することとなり、より高精度にジッタを低減することができる。
ＴｉＳoff0＝ＰＣＲ0−ＴｉＳ0・・・（１２）
ＴｉＳ0は３２ビットであり、ＰＣＲ0とＴｉＳoff0は４２ビットであるので、ＴｉＳ0からみて足りない１０ビットはオールゼロとして計算される。
【００９９】
基準時点Ａ１’において計算されるＰＣＲの値「ＰＣＲmod0」はＰＣＲ0そのままとなる。Ａ１’を基準としてＴｉＳが3240000クロック進むまで、すなわち、次の「ＲＴＳ2」を含む「ＲＴＰパケット（ｐ−１）」を取得するまでは、同期情報をＲＴＳ0とし同期情報はＲＴＳ×2となる。ここで２を乗じているのは、送信装置５０において生成された同期情報を２で割って伝送しており、これを元に戻すためである。
【０１００】
基準時点Ａ１’からＴｉＳが3240000クロック進んだ時点を第２番目の基準時点Ｂ１’とする。Ａ１’からＢ１’までに取得されたＲＴＰパケットにおいてＰＣＲが存在するときは、上記したように、計算されるＰＣＲの値ＰＣＲmodはＰＣＲそのものものの値となる（ステップ９１６）。
【０１０１】
なお、ステップ９１６〜ステップ９２１までの処理はハードウェア上の問題を解決するための処理であり、これについては後述する。
【０１０２】
基準時点Ａ１’を過ぎてから、さらにＲＴＰパケットを取得した場合、ステップ９２２からステップ９２５まで、ステップ９０２からステップ９０５までと同様な処理を実行する。ステップ９２５の後、下記の式（１３）を満たす場合には、ステップ９２９へ進む（ステップ９２６）。  
(ＴｉＳbase(k)＋3240000)>ＴｉＳ(i)・・・（１３）
【０１０３】
この式（１３）は、現時点のＴｉＳ(i)がＴｉＳbase(k)（例えばＴｉＳbase0）から3240000クロック分の時間が過ぎていないかどうかを表すものである。つまり、現時点のＴｉＳ(i)がＢ１’を過ぎていないかどうかかを判定するための式である。ＴｉＳ(i)がＴｉＳbase(k)＋3240000より小さい場合、つまり、Ｂ１’を過ぎていない場合、ステップ９２９に進む。
【０１０４】
ステップ９２９において、ＭＰＥＧ−ＴＳヘッダ解析部４９は、そのＲＴＰパケット７３がユーザによって選択されたＰＣＲのＰＩＤに相当するパケットか否かを判定する。選択されたＰＣＲのＰＩＤに相当するパケットであれば、ステップ９０７、９１５と同様に、そのＲＴＰパケット７３にＲＴＳが含まれているか否かが判定される。ＲＴＳが含まれていなければそのパケットのＰＣＲは既にステップ９２９のＹＥＳで取得しているので、タイムスタンプ補正部５１はそのパケットのＰＣＲ値をそのままＰＣＲmodとして出力する（ステップ９３３）。なお、ＲＴＳが含まれていればＲＴＳ（ｋ）＝ＲＴＳ（ｉ）となる（ステップ９３１）。
【０１０５】
一方、ステップ９２９において、現時点のパケットがユーザにより選択されたＰＣＲのＰＩＤに相当するパケットでなければ、以下の処理を実行する。すなわち、この場合、タイムスタンプ補正部５１は、基準時点Ａ１’からＢ１’までに取得されたＲＴＰパケットにおいて、ＰＣＲが存在しないので、タイムスタンプ補正部５１は、下記の式（１４）でそのＰＣＲを求める（ステップ９３２）。  
ＰＣＲmod1＝ＴｉＳ1＋ＴｉＳoff0＋（ＲＴＳ0×2）×（ＴｉＳ1−ＴｉＳbase0）/ 3240000・・・（１４）
【０１０６】
この式（１４）では「ＲＴＰパケット1」の時刻参照値を求める場合を例に挙げている。この式（１４）では、まず、ＲＴＰパケット1のＴｉＳ1において、基準パケットであるＲＴＰパケット0のオフセットＴｉＳoff0を用いて、ＴｉＳ1＋ＴｉＳoff0を算出する。これは、ＴｉＳ1においてオフセット値を考慮した値である。3240000クロック分の同期情報（ＲＴＳ0×2）に基づいて、（ＴｉＳ1−ＴｉＳbase0）分の同期情報を比率で求め、この値を、（ＴｉＳ1＋ＴｉＳoff0）に加えている。
【０１０７】
ステップ９２６の説明に戻る。ステップ９２６において、ＴｉＳ(i)がＴｉＳbase(k)＋3240000より小さい場合、つまり、現時点がＢ１’を過ぎた場合、基準時点（この場合Ｂ１’）を過ぎてから最初のＲＴＰパケット（ｐ）のＴｉＳ（ｐ）におけるオフセット値及びＴｉＳbaseの値を変更する（ステップ９２７）、（ステップ９２８）。その計算式をそれぞれ式（１５）、（１６）に示す。  
ＴｉＳoff1＝ＴｉＳoff0＋ＲＴＳ0×2・・・（１５）
ＴｉＳbase1＝ＴｉＳbase0＋3240000＋ＲＴＳ0×2・・・（１６）
よって、第２番目の基準時点Ｂ１’から第３番目の基準時点Ｃ１’まではオフセットとしてＴｉＳoff1、基準時点はＢ１’で値はＴｉＳbase1となり、この区間の同期残差はＲＴＳ1×2となる。
【０１０８】
ＰＣＲが存在しないＲＴＰパケットでの補正タイムスタンプ（ＰＣＲmod）は下記の式（１７）、（１８）となる。また、ＰＣＲが存在するＲＴＰパケットでのＰＣＲ値は式（１９）、（２０）のようになる。式（１７）、（１８）は基本的に式（１４）と同じである。  
ＰＣＲmod(p)＝ＴｉＳ(p)＋ＴｉＳoff1＋（ＲＴＳ1×2）×（ＴｉＳ(p)−ＴｉＳbase1）/ 3240000・・・（１７）
ＰＣＲmod(q)＝ＴｉＳ(q)＋ＴｉＳoff1＋（ＲＴＳ1×2）×（ＴｉＳ(q)−ＴｉＳbase1）/ 3240000・・・（１８）
ＰＣＲmod(p+1)＝ＰＣＲ3・・・（１９）
ＰＣＲmod(q)＝ＰＣＲ4・・・（２０）
【０１０９】
以下、基準時点Ｃ１’以降も同様にして各ＲＴＰパケットでのＰＣＲ値を計算で求めることができる。以上のようにしてＰＣＲを持たないパケットであっても、各ＲＴＰパケットのＴｉＳと、同期情報（ＲＴＳ）とを用いてＰＣＲ値を推定することができる。
【０１１０】
ここで、本実施の形態では、ＲＴＳを持つパケット（例えばＲＴＰパケット（−ｎ））を受信してから、3240000クロックが経過した後に受信した、次のＰＣＲを含まないパケット（例えばＲＴＰパケット1）のＰＣＲを、当該ＲＴＳを持つパケット（ＲＴＰパケット（−ｎ））のＲＴＳ（例えばＲＴＳ0）を用いて算出している。換言すると、各基準時点Ａ１’、Ｂ１’、Ｃ１’・・・において、それらの基準点より前に取得されたＲＴＳを用いてＰＣＲmodを算出している。その理由は以下の通りである。
【０１１１】
ネットワーク９等の遅延ゆらぎによるジッタや、ネットワーク９等の負荷状況等が原因で、例えば「ＲＴＰパケット（−ｎ）」が受信されてから、予定通りの時間内、つまり3240000クロックが経過するまでに次の「ＲＴＰパケット1」を受信できない場合があるからである。また、例えばＲＴＣＰが用いられる場合、「ＲＴＰパケット1」が予定通り受信されず、受信装置６０が送信装置５０に対し再送要求した後にその「ＲＴＰパケット1」を受信する場合もあるからである。本実施の形態によれば、ネットワーク９等の遅延揺らぎや負荷状況に影響されずに、確実にＰＣＲmodを確実に算出することができる。
【０１１２】
図１１を参照しながら、さらに詳しく説明する。図に示すように、送信装置５０側から3240000クロックごとにＲＴＳを送出する。しかし、ネットワーク９上でのジッタにより、受信装置６０側では3240000クロックに対して、ネットワーク９のジッタ成分αi（i=1，2，3，4，5，・・・）が追加される。ここで、αiは、正負両方の値を取るジッタであり、αiを全て足すとゼロとなる。よって受信装置６０側では、ＲＴＳの間隔は、3240000＋α1、3240000＋α2、3240000＋α3、・・・となる。例えばα１＝−１００、α２＝＋２００、α３＝−１００、とすると、ＲＴＳの間隔は、323900、324200、323900、・・・となる。時間をマクロで見ると、受信装置６０は3240000クロックごとにＲＴＳを取得できるが、実際にはジッタ成分により、323900クロックであったり、324200クロックであったりする。毎回精密に324200クロック間隔でＲＴＳを取得できるとは限らない。
【０１１３】
そこで、ネットワークジッタがあっても受信側１００で取得されているＲＴＳデータが枯渇しないよう、前回のＲＴＳを使用することで、ネットワークのジッタに対応することができる。
【０１１４】
次に、比較器５７及び比較器６５における処理を説明する。
【０１１５】
比較器６５は、タイムスタンプ補正部５１がＰＣＲmod値を出力するタイミングでカウントされるＳＴＣカウンタ６８によるクロックのカウント値（ＳＴＣ）をサンプリングする。そして、それらのカウント値と、ＰＣＲmod値の差（ＰＣＲdiff(i)）を下記の式（２１）により算出する。（ｉ）は、ｉ番目のＲＴＰパケットを示す。  
ＰＣＲdiff(i)＝ＰＣＲmod(i)−ＳＴＣ(i)・・・（２１）
【０１１６】
ここで、サンプリングするＲＴＰパケット数をｎ（任意の正の整数）とすると、ＰＣＲとＳＴＣの差の合計をＰＣＲdiffとすると、式（２２）が成立する。そして、ＰＣＲとＳＴＣの差の平均値ＰＣＲdiff-aveは式（２３）で求めることができる。  
i=n
ＰＣＲdiff＝Σ｛ＰＣＲmod(i)−ＳＴＣ(i)｝・・・（２２）
i=1
ＰＣＲdiff-ave＝ＰＣＲdiff / n・・・（２３）
【０１１７】
比較器６５は、算出した平均値ＰＣＲdiff-aveをＳＴＣカウンタ６８に戻し、ＳＴＣカウンタ６８は、ＳＴＣ値に平均値ＰＣＲdiff-aveを加える。これにより、ＰＣＲmod(i)とＳＴＣ(i)はほぼ同じ値を持つようになる。ＰＣＲmod(i)とＳＴＣ(i)はほぼ同じ値になった後は、比較器６５は、例えばＰＣＲmod(i)とＳＴＣ(i)の差をモニターするだけで大きな差がなければ、平均値ＰＣＲdiff-aveをＳＴＣカウンタ６８へ送らない。よって、比較器６５からＳＴＣカウンタ６８へ平均値ＰＣＲdiff-aveを送る処理が活性化するのは、ＤｅＭＵＸ５２によりユーザからチャンネルの切り替えがあり、選択されたチャンネルのＰＣＲのＰＩＤが変更されたとき等である。
【０１１８】
このように、ＳＴＣカウンタ６８のカウント値がＰＣＲmodの値と同じになるように制御した上で、後述するようにマスタークロックとＶＣＸＯ５９のそれぞれの周波数の差を所定の範囲内に抑えている。これにより、遅延揺らぎによるジッタを極力低減させた状態でデータを復号することができる。
【０１１９】
一方、比較器５７は、タイムスタンプ補正部５１からＰＣＲmodが通知されたときのクロックのカウント値をサンプリングする。ここで、ｉ番目のＲＴＰパケットにおけるＰＣＲmod(i)、そのマスターＳＴＣカウンタ５６によるカウント値をＳＴＣＭ(i)とし、ｍ番目のＲＴＰパケットにおけるＰＣＲmod(m)、そのマスターＳＴＣカウンタ５６の値をＳＴＣＭ(m)とする。比較器５７は、ＲＴＰパケットから計算されたＰＣＲmodと、マスターＳＴＣカウンタ５６でカウントされるＳＴＣＭとの周波数の差をクロック数で求める。
【０１２０】
まず、１番目からｍ番目までのＲＴＰパケット間の、ＰＣＲmodのクロック数の合計ＰＣＲmodsumを求めると、下記の式（２４）のようになる（ステップ９３４）。  
i=m
ＰＣＲmodsum(m)＝Σ｛ＰＣＲmod(i)−ＰＣＲmod(i-1)｝・・・（２４）
i=2
同様に、１番目からｍ番目までのＲＴＰパケット間の、マスタークロックのカウント値の合計ＳＴＣＭsumを求めると、下記の式（２５）のようになる（ステップ９３４）。  
i=m
ＳＴＣＭsum(m)＝Σ｛ＳＴＣＭ(i)−ＳＴＣＭ(i-1)｝・・・（２５）
i=2
よって、１番目からｍ番目までのＲＴＰパケットでのＰＣＲmodとＳＴＣＭとの差ＰＣＲslip(m)は、下記の式（２６）のようになる。  
ＰＣＲslip(m)＝ＰＣＲmodsum(m)−ＳＴＣＭsum(m)・・・（２６）
【０１２１】
ＰＣＲslip(m)が１クロックずれるときのＳＴＣＭ（ＳＴＣＭinterval(m)）は、下記の式（２７）のようになる（ステップ９３５）。  
ＳＴＣＭinterval(m)＝ＳＴＣＭsum(m) / ＰＣＲslip(m)・・・（２７）
（ＰＣＲslip(m)＝０のときはＳＴＣＭinterval(m)＝０とする。）
【０１２２】
式（２７）は、｜ＰＣＲslip(m)｜の値が大きいほど、つまりＰＣＲmodsum(m)とＳＴＣＭsum(m)とのずれが大きいほど、｜ＳＴＣＭinterval(m)｜は小さくなることを示している。比較器５７は、このＳＴＣＭinterval(m)の値に基づき、ＬＰＦ５８がＶＣＸＯ５９のクロックの周波数（マスターＳＴＣカウンタ６８の周波数）を制御するための指標値となるフィードバック系の変数（ＦBack）を、当該ＬＰＦ５８に出力する。
【０１２３】
ここで、式（５）より、ＬＰＦ５８は、マスターＳＴＣカウンタ６８の周波数に対し、ＳＴＣカウンタ６８の周波数との差が±８１０Hz以内になるようにＶＣＸＯ５９を制御する。マスターＳＴＣカウンタ６８の周波数は２７MHzであり、27M／810＝33333.333・・・であるので、ＳＴＣＭinterval(m)の条件として−33333以下または＋33333以上と定める。つまり、ＳＴＣＭinterval(m)が±33333以内となった場合は、ＳＴＣＭinterval(m)＝＋33333、または、−33333とする。比較器５７が出力するＦBackは、以下のようになる（ステップ９３６）。  
ＳＴＣＭinterval(m)＝0のとき、
ＦBack＝0・・・（２８）
0<ＳＴＣＭinterval(m)<＋33333のとき、
ＦBack＝＋33333・・・（２９）
−33333<ＳＴＣＭinterval(m)<0のとき、
ＦBack＝−33333・・・（３０）
上記以外のとき、
ＦBack＝ＳＴＣＭinterval(m)・・・（３１）
【０１２４】
そして、ＬＰＦ５８は、式（２８）〜（３１）のような、ＳＴＣＭinterval(m)と、33333との相対的な関係に基づいて、ＶＣＸＯ５９のクロック数を制御する。具体的には、ＬＰＦ５８は、入力されるＦBackが例えば−33333の場合は、マスターＳＴＣカウンタ５６のカウント値（ＳＴＣＭ）が33333クロック進む間に、ＳＴＣカウンタ６８のカウント値（ＳＴＣ）が33332クロックとなるよう制御する。ＬＰＦ５８は、入力されるＦBackが例えば＋33333の場合は、マスターＳＴＣカウンタ５６のカウント値が33333クロック進む間に、ＳＴＣカウンタ６８のカウント値が33334クロックとなるよう制御する。ＬＰＦ５８は、入力されるＦBackが０のときはＳＴＣＭとＳＴＣが同じになるように制御する。
【０１２５】
すなわち、ＬＰＦ５８は、入力されるＦBackがマイナスｈ（ｈは任意の自然数）の場合は、マスター水晶発振器５５のクロック数ｈに対し、ＶＣＸＯ５９のクロック数がｈ−１となるよう制御する。ＬＰＦ５８は、入力されるＦBackがプラスｈの場合は、マスター水晶発振器５５のクロック数ｈに対し、ＶＣＸＯ５９のクロック数がｈ＋１となるよう制御する（ステップ９３７）。
【０１２６】
ＳＴＣＭinterval(m)>0の場合、式（２６）よりＰＣＲslip(m)>0となり、これは、ＳＴＣＭsum(m)がＰＣＲmodsum(m)に対して遅れていることになる。したがって、この場合、ＳＴＣＭよりＳＴＣカウンタ６８のカウント値が進んでいなければならないので、ＶＣＸＯのクロックを上げる。ＳＴＣＭinterval(m)<0の場合はその逆である。
【０１２７】
このようにして、ＶＣＸＯ５９の周波数がマスター水晶発振器５５の周波数と比較して２７MHz±８１０MHz以内にすることができる。
【０１２８】
以上のように、ＶＣＸＯ５９のクロックの周波数が制御された状態で、ビデオデコーダ６４及びオーディオデコーダ６３でＤｅＭＵＸ５２から出力されるＭＰＥＧ−ＴＳを復号する。ＤｅＭＵＸ５２は、ユーザにより選択されたビデオ及びオーディオのパケットを抽出し、それぞれＦＩＦＯ６１及び６２に書き込む。ＦＩＦＯ６１は、ＳＴＣカウンタ６８でカウントされたカウント値がＤＴＳ（Decoding Time Stamp）になったときにビデオパケットをビデオデコーダ６４へ転送する。ＦＩＦＯ６２は、ＳＴＣカウンタ６８でカウントされたカウント値がＰＴＳ（Presentation Time Stamp）となったときに、オーディオパケットをオーディオデコーダ６３へ転送する。ビデオデコーダ６４及びオーディオデコーダ６３はＭＰＥＧデータを復号し、モニターやスピーカー等の外部装置へ出力する。
【０１２９】
実際には、ネットワーク９等のジッタを吸収させるためＤＴＳ、ＰＴＳに対しジッタ成分をＦＩＦＯ６１等で充分吸収させるため、ある程度のオフセット時間（デコード及び表示を一定時間遅らせる。）をかける。このオフセット時間はネットワーク系の最大ジッタ量に依存する。
【０１３０】
最後に、ユーザによりチャンネルが切り替えられＰＣＲパケットのＰＩＤが変わると、図９に示すフローチャートのスタート位置から再実行される（ステップ９３８のＹＥＳ）。
【０１３１】
次に、ステップ９１６〜ステップ９２１の処理について説明する。
【０１３２】
ステップ９１６の後、タイムスタンプ補正部５１は、そのように算出されたＰＣＲmodを補正タイムスタンプとして比較器５７及び比較器６５に出力し、比較器５７は、そのＰＣＲmodを取得するタイミングにおけるマスターＳＴＣカウンタ５６のカウント値をＳＴＣＭ1としてセットする（ステップ９１７）。「ＳＴＣＭ1」は、受信装置６０が２番目のＲＴＳ（ＲＴＳ0）が含まれるＲＴＰパケット（ＲＴＰパケット0）を取得したときの、当該ＲＴＰパケット0のＰＣＲmod（ＰＣＲmod0）のカウント値である。比較器５７は、このＳＴＣＭ1を保持する。比較器５７は、その直後、ステップ９１８において、同様にＲＴＳパケット1のＰＣＲmod1のカウント値であるＳＴＣＭ2がセットされ、比較器５７はこれを保持する。
【０１３３】
ステップ９１９において、下記の式（３２）を満たす場合、ステップ９２０以降の特別な処理を実行する（ステップ９１９のＹＥＳ）。初期状態では、こればなるべくＳＴＣＭ1＝ＳＴＣＭ2とするためである。  
ＦBackが０でなく、かつ、ＳＴＣＭ2−ＳＴＣＭ1≧abs(Ｆback)・・・（３２）
【０１３４】
abs()は絶対値を示す。この式（３２）を逆に言うと、ＦBackが０の場合、または、ＳＴＣＭ2−ＳＴＣＭ1<abs(Ｆback)の場合は、ステップ９１８において、そのまま次のＲＴＰパケットの到着を待つ。ＦBackが０の場合は、ＳＴＣＭinterval(m)＝0の場合であり、ＰＣＲslip(m)＝０でジッタが生じていない状態である。また、ＳＴＣＭ2−ＳＴＣＭ1<abs(Ｆback)の場合は、比較器５７がＦBackを出力している状態でも、ＳＴＣＭ2−ＳＴＣＭ1がＦBackの値より小さければ、ステップ９１８において、そのまま次のＲＴＰパケットの到着を待つ。ＬＰＦ５８は、上述したように、ＦBackの値に基づきＳＴＣを制御することで、ＦBackの絶対値（ＦBack＝0を除く）だけＳＴＣＭが進むと、ＳＴＣはＳＴＣＭのクロック数に対し１クロックプラスまたはマイナスへずれる。そこで、比較器５７は、ＳＴＣＭsum(m)とＰＣＲmodsum(m)に対し、式（３３）、（３４）を施す（ステップ９２０）。  
ＳＴＣＭsum(m)<＝ＳＴＣＭsum(m)−abs(Ｆback)＋sign(Ｆback)・・・（３３）
ＰＣＲmodsum(m)<＝ＰＣＲmodsum(m)−abs(Ｆback)・・・（３４）
【０１３５】
式（３３）、（３４）において、sign()は符号を返す関数で（）内がプラスならば＋１、マイナスなら−１を返す。<＝は右辺の値を左辺に代入することを示す。このようにして、ＦBackごとにＬＰＦ５８でフィードバックした分をＳＴＣＭsum(m)、ＰＣＲmodsum(m)へ補償させる。これにより、ハードウェアのリソースは有限であるので、補償した分を引くことでＳＴＣＭsum(m)、ＰＣＲmodsum(m)の値が無限に大きくなることを防ぐことができる。比較器５７はこのような処理を行った後、ＳＴＣＭ1＝ＳＴＣＭ2とする（ステップ９２１）。
【０１３６】
以上説明したように、本実施の形態に係る受信装置６０は、もともとＰＣＲを含まないパケットのＰＣＲを推定するためにタイムスタンプ補正部５１を備えている。これにより、受信装置６０が受信するパケットがＰＣＲを含まないパケットであっても、そのパケットの推定されたＰＣＲを参照してジッタを低減しつつ同期を取ることができる。言い換えれば、全パケットのＰＣＲを得ることができるようになり、例えば１ｓに何千、何万ものＰＣＲを得ることができるようになる。これにより、早期に同期を取ることが可能となる。また、パケットごとにＰＣＲを伝送する必要がないので、使用するネットワーク帯域を節約することができる。
【０１３７】
さらに、通常ＭＰＥＧ−ＴＳに複数のチャンネルが多重化されていると、各チャンネルのＰＣＲの周波数は異なるのが一般的である。この場合において、例えばＲＴＰパケット７３のＲＴＰヘッダのタイムスタンプで同期を取ろうとすると、まずこのタイムスタンプでパケットの同期をとり、その次に選択されたチャンネルのＰＣＲを抜き取ってＰＣＲ同期を取るので２段階の手間がかかる。これに対し、本実施の形態では、計算でＰＣＲの値が計算できるので、ハードウェアのリソースを少なく抑えることができる。
【０１３８】
次に、以上のような通信システム２００を、以下に説明するネットワークシステムに適用することもできる。
【０１３９】
図１２は、この発明のネットワークシステムの一例を示し、ネットワーク９を介して複数の情報処理装置１、２、３、４が接続されたものである。情報処理装置１、２、３、４は、例えば各種のＡＶ（Audio and Visual）機器やポータブル機器等である。
【０１４０】
情報処理装置１について示すと、情報処理装置１は、コンピュータ機能部として情報処理コントローラ１１を備える。情報処理コントローラ１１は、メインプロセッサ２１−１、サブプロセッサ２３−１，２３−２，２３−３、ＤＭＡＣ（ダイレクトメモリアクセスコントローラ）２５−１及びＤＣ（ディスクコントローラ）２７−１を有する。
【０１４１】
メインプロセッサ２１−１は、サブプロセッサ２３−１，２３−２，２３−３によるプログラム実行（データ処理）のスケジュール管理と、情報処理コントローラ１１（情報処理装置１）の全般的な管理とを行う。ただし、メインプロセッサ２１−１内で管理のためのプログラム以外のプログラムが動作するように構成することもできる。その場合には、メインプロセッサ２１−１はサブプロセッサとしても機能することになる。メインプロセッサ２１−１は、ＬＳ（ローカルストレージ）２２−１を有する。
【０１４２】
サブプロセッサは、１つでもよいが、望ましくは複数とする。本例は、複数の場合である。各サブプロセッサ２３−１，２３−２，２３−３は、メインプロセッサ２１−１の制御によって並列的かつ独立にプログラムを実行し、データを処理する。更に、場合によってメインプロセッサ２１−１内のプログラムがサブプロセッサ２３−１，２３−２，２３−３内のプログラムと連携して動作するように構成することもできる。後述する機能プログラムもメインプロセッサ２１−１内で動作するプログラムである。各サブプロセッサ２３−１，２３−２，２３−３も、ＬＳ（ローカルストレージ）２４−１，２４−２，２４−３を有する。
【０１４３】
ＤＭＡＣ２５−１は、情報処理コントローラ１１に接続されたＤＲＡＭ（ダイナミックＲＡＭ）などからなるメインメモリ２６−１に格納されているプログラム及びデータにアクセスするものであり、ＤＣ２７−１は、情報処理コントローラ１１に接続された外部記録部２８−１，２８−２にアクセスするものである。
【０１４４】
外部記録部２８−１，２８−２は、固定ディスク（ハードディスク）でも、リムーバブルディスクでもよく、また、ＭＯ，ＣＤ±ＲＷ，ＤＶＤ±ＲＷなどの光ディスク、メモリディスク、ＳＲＡＭ（スタティックＲＡＭ）、ＲＯＭなど、各種のものを用いることができる。したがって、ＤＣ２７−１は、ディスクコントローラと称するが、外部記録部コントローラである。図１２の例のように、情報処理コントローラ１１に対して外部記録部２８を複数接続できるように、情報処理コントローラ１１を構成することができる。
【０１４５】
メインプロセッサ２１−１、各サブプロセッサ２３−１，２３−２，２３−３、ＤＭＡＣ２５−１及びＤＣ２７−１は、バス２９−１によって接続される。
【０１４６】
情報処理コントローラ１１には、当該の情報処理コントローラ１１を備える情報処理装置１を、ネットワーク全体を通して一意的に識別できる識別子が、情報処理装置ＩＤとして割り当てられる。
【０１４７】
メインプロセッサ２１−１及び各サブプロセッサ２３−１，２３−２，２３−３に対しても同様に、それぞれを特定できる識別子が、メインプロセッサＩＤ及びサブプロセッサＩＤとして割り当てられる。
【０１４８】
情報処理コントローラ１１は、ワンチップＩＣ（集積回路）として構成することが望ましい。他の情報処理装置２、３、４も、上記と同様に構成される。ここで、図１２において親番号が同一であるユニットは枝番号が異なっていても、特に断りがない限り同じ働きをするものとする。また、以下の説明において枝番号が省略されている場合には、枝番号の違いにいる差異を生じないものとする。
【０１４９】
図２０は、図１に示す送信装置５０の機能を情報処理装置１、２、３、４に適用した構成を示すブロック図である。ディジタル放送の電波６９を受信するチューナーユニット３２及び外部記憶装置３３は、ＤＣ２７−１に接続される。他の情報処理装置２、３等についても同様である。
【０１５０】
上述したように、１つの情報処理コントローラ内の各サブプロセッサ２３は、独立にプログラムを実行し、データを処理するが、異なるサブプロセッサがメインメモリ２６内の同一領域に対して同時に読み出しまたは書き込みを行った場合には、データの不整合を生じ得る。そこで、サブプロセッサ２３からメインメモリ２６へのアクセスは、以下のような手順によって行う。
【０１５１】
図１３（Ａ）に示すように、メインメモリ２６は、複数のアドレスを指定できるメモリロケーションによって構成される。各メモリロケーションに対しては、データの状態を示す情報を格納するための追加セグメントが割り振られる。追加セグメントは、Ｆ／Ｅビット、サブプロセッサＩＤ及びＬＳアドレス（ローカルストレージアドレス）を含むものとされる。また、各メモリロケーションには、後述のアクセスキーも割り振られる。Ｆ／Ｅビットは、以下のように定義される。
【０１５２】
Ｆ／Ｅビット＝０は、サブプロセッサ２３によって読み出されている処理中のデータ、または空き状態であるため最新データではない無効データであり、読み出し不可であることを示す。また、Ｆ／Ｅビット＝０は、当該メモリロケーションにデータ書き込み可能であることを示し、書き込み後に１に設定される。
【０１５３】
Ｆ／Ｅビット＝１は、当該メモリロケーションのデータがサブプロセッサ２３によって読み出されておらず、未処理の最新データであることを示す。当該メモリロケーションのデータは読み出し可能であり、サブプロセッサ２３によって読み出された後に０に設定される。また、Ｆ／Ｅビット＝１は、当該メモリロケーションがデータ書き込み不可であることを示す。
【０１５４】
更に、上記Ｆ／Ｅビット＝０（読み出し不可／書き込み可）の状態において、当該メモリロケーションについて読み出し予約を設定することは可能である。Ｆ／Ｅビット＝０のメモリロケーションに対して読み出し予約を行う場合には、サブプロセッサ２３は、読み出し予約を行うメモリロケーションの追加セグメントに、読み出し予約情報として当該サブプロセッサ２３のサブプロセッサＩＤ及びＬＳアドレスを書き込む。
【０１５５】
その後、データ書き込み側のサブプロセッサ２３によって、読み出し予約されたメモリロケーションにデータが書き込まれ、Ｆ／Ｅビット＝１（読み出し可／書き込み不可）に設定されたとき、予め読み出し予約情報として追加セグメントに書き込まれたサブプロセッサＩＤ及びＬＳアドレスに読み出される。
【０１５６】
複数のサブプロセッサによってデータを多段階に処理する必要がある場合、このように各メモリロケーションのデータの読み出し／書き込みを制御することによって、前段階の処理を行うサブプロセッサ２３が、処理済みのデータをメインメモリ２６上の所定のアドレスに書き込んだ後に即座に、後段階の処理を行う別のサブプロセッサ２３が前処理後のデータを読み出すことが可能となる。
【０１５７】
図１３（Ｂ）に示すように、各サブプロセッサ２３内のＬＳ２４も、複数のアドレスを指定できるメモリロケーションによって構成される。各メモリロケーションに対しては、同様に追加セグメントが割り振られる。追加セグメントは、ビジービットを含むものとされる。
【０１５８】
サブプロセッサ２３がメインメモリ２６内のデータを自身のＬＳ２４のメモリロケーションに読み出すときには、対応するビジービットを１に設定して予約する。ビジービットが１であるメモリロケーションには、他のデータは格納することができない。ＬＳ２４のメモリロケーションに読み出し後、ビジービットは０になり、任意の目的に使用できるようになる。
【０１５９】
図１３（Ａ）に示すように、更に、各情報処理コントローラと接続されたメインメモリ２６には、複数のサンドボックスが含まれる。サンドボックスは、メインメモリ２６内の領域を画定するものであり、各サンドボックスは、各サブプロセッサ２３に割り当てられ、そのサブプロセッサが排他的に使用することができる。すなわち、各々のサブプロセッサ２３は、自身に割り当てられたサンドボックスを使用できるが、この領域を超えてデータのアクセスを行うことはできない。メインメモリ２６は、複数のメモリロケーションから構成されるが、サンドボックスは、これらのメモリロケーションの集合である。
【０１６０】
更に、メインメモリ２６の排他的な制御を実現するために、図１３（Ｃ）に示すようなキー管理テーブルが用いられる。キー管理テーブルは、情報処理コントローラ内のＳＲＡＭ等の比較的高速のメモリに格納され、ＤＭＡＣ２５と関連付けられる。キー管理テーブル内の各エントリには、サブプロセッサＩＤ、サブプロセッサキー及びキーマスクが含まれる。
【０１６１】
サブプロセッサ２３がメインメモリ２６を使用する際のプロセスは、以下の通りである。まず、サブプロセッサ２３はＤＭＡＣ２５に、読み出しまたは書き込みのコマンドを出力する。このコマンドには、自身のサブプロセッサＩＤと、使用要求先であるメインメモリ２６のアドレスが含まれる。
【０１６２】
ＤＭＡＣ２５は、このコマンドを実行する前に、キー管理テーブルを参照して、使用要求元のサブプロセッサのサブプロセッサキーを調べる。次に、ＤＭＡＣ２５は、調べた使用要求元のサブプロセッサキーと、使用要求先であるメインメモリ２６内の図１３（Ａ）に示したメモリロケーションに割り振られたアクセスキーとを比較して、２つのキーが一致した場合にのみ、上記のコマンドを実行する。
【０１６３】
図１３（Ｃ）に示したキー管理テーブル上のキーマスクは、その任意のビットが１になることによって、そのキーマスクに関連付けられたサブプロセッサキーの対応するビットが０または１になることができる。例えば、サブプロセッサキーが１０１０であるとする。通常、このサブプロセッサキーによって１０１０のアクセスキーを持つサンドボックスへのアクセスだけが可能になる。しかし、このサブプロセッサキーと関連付けられたキーマスクが０００１に設定されている場合には、キーマスクのビットが１に設定された桁のみにつき、サブプロセッサキーとアクセスキーとの一致判定がマスクされ、このサブプロセッサキー１０１０によってアクセスキーが１０１０または１０１１のいずれかであるアクセスキーを持つサンドボックスへのアクセスが可能となる。
【０１６４】
以上のようにして、メインメモリ２６のサンドボックスの排他性が実現される。すなわち、１つの情報処理コントローラ内の複数のサブプロセッサによってデータを多段階に処理する必要がある場合、以上のように構成することによって、前段階の処理を行うサブプロセッサと、後段階の処理を行うサブプロセッサのみが、メインメモリ２６の所定アドレスにアクセスできるようになり、データを保護することができる。
【０１６５】
例えば、以下のように使用することが考えられる。まず、情報処理装置の起動直後においては、キーマスクの値は全てゼロである。メインプロセッサ内のプログラムが実行され、サブプロセッサ内のプログラムと連携動作するものとする。第１のサブプロセッサにより出力された処理結果データを一旦メインメモリに格納し、第２のサブプロセッサに入力したいときには、該当するメインメモリ領域は、当然どちらのサブプロセッサからもアクセス可能である必要がある。そのような場合に、メインプロセッサ内のプログラムは、キーマスクの値を適切に変更し、複数のサブプロセッサからアクセスできるメインメモリ領域を設けることにより、サブプロセッサによる多段階的な処理を可能にする。
【０１６６】
より具体的には、他の情報処理装置からのデータ→第１のサブプロセッサによる処理→第１のメインメモリ領域→第２のサブプロセッサによる処理→第２のメインメモリ領域、という手順で多段階処理が行われるときには、
第１のサブプロセッサのサブプロセッサキー：０１００、
第１のメインメモリ領域のアクセスキー    ：０１００、
第２のサブプロセッサのサブプロセッサキー：０１０１、
第２のメインメモリ領域のアクセスキー    ：０１０１
というような設定のままだと、第２のサブプロセッサは第１のメインメモリ領域にアクセスすることができない。そこで、第２のサブプロセッサのキーマスクを０００１にすることにより、第２のサブプロセッサによる第１のメインメモリ領域へのアクセスを可能にすることができる。
【０１６７】
図１２のネットワークシステムでは、情報処理装置１、２、３、４間での分散処理のために、情報処理装置１、２、３、４間でソフトウェアセルが伝送される。すなわち、ある情報処理装置内の情報処理コントローラに含まれるメインプロセッサ２１は、コマンド、プログラム及びデータを含むソフトウェアセルを生成し、ネットワーク９を介して他の情報処理装置に送信することによって、処理を分散することができる。
【０１６８】
図１４に、ソフトウェアセルの構成の一例を示す。この例のソフトウェアセルは、全体として、送信元ＩＤ、送信先ＩＤ、応答先ＩＤ、セルインターフェース、ＤＭＡコマンド、プログラム及びデータによって構成される。
【０１６９】
送信元ＩＤには、ソフトウェアセルの送信元である情報処理装置のネットワークアドレス及び当該情報処理装置の情報処理装置ＩＤ、更に、その情報処理装置内の情報処理コントローラが備えるメインプロセッサ２１及び各サブプロセッサ２３の識別子（メインプロセッサＩＤ及びサブプロセッサＩＤ）が含まれる。ここで、上記したＲＴＰパケットがソフトウェアセルに含まれてネットワーク９上で伝送される場合、図４に示すシーケンス番号が、このソフトウェアセルのグローバルＩＤとなる。
【０１７０】
送信先ＩＤ及び応答先ＩＤには、それぞれ、ソフトウェアセルの送信先である情報処理装置、及びソフトウェアセルの実行結果の応答先である情報処理装置についての、同じ情報が含まれる。
【０１７１】
セルインターフェースは、ソフトウェアセルの利用に必要な情報であり、グローバルＩＤ、必要なサブプロセッサの情報、サンドボックスサイズ及び前回のソフトウェアセルＩＤから構成される。
【０１７２】
グローバルＩＤは、ネットワーク全体を通して当該ソフトウェアセルを一意的に識別できるものであり、送信元ＩＤ及びソフトウェアセルの作成または送信の日時（日付及び時刻）に基づいて作成される。
【０１７３】
必要なサブプロセッサの情報は、当該ソフトウェアセルの実行に必要なサブプロセッサの数を設定する。サンドボックスサイズは、当該ソフトウェアセルの実行に必要なメインメモリ２６内及びサブプロセッサ２３のＬＳ２４内のメモリ量を設定する。前回のソフトウェアセルＩＤは、ストリーミングデータなどのシーケンシャルな実行を要求する１グループのソフトウェアセル内の、前回のソフトウェアセルの識別子である。
【０１７４】
ソフトウェアセルの実行セクションは、ＤＭＡコマンド、プログラム及びデータから構成される。ＤＭＡコマンドには、プログラムの起動に必要な一連のＤＭＡコマンドが含まれ、プログラムには、サブプロセッサ２３によって実行されるサブプロセッサプログラムが含まれる。ここでのデータは、このサブプロセッサプログラムを含むプログラムによって処理されるデータである。
【０１７５】
更に、ＤＭＡコマンドには、ロードコマンド、キックコマンド、機能プログラム実行コマンド、ステータス要求コマンド、及びステータス返信コマンドが含まれる。
【０１７６】
ロードコマンドは、メインメモリ２６内の情報をサブプロセッサ２３内のＬＳ２４にロードするコマンドであり、ロードコマンド自体のほかに、メインメモリアドレス、サブプロセッサＩＤ及びＬＳアドレスを含む。メインメモリアドレスは、情報のロード元であるメインメモリ２６内の所定領域のアドレスを示す。サブプロセッサＩＤ及びＬＳアドレスは、情報のロード先であるサブプロセッサ２３の識別子及びＬＳ２４のアドレスを示す。
【０１７７】
キックコマンドは、プログラムの実行を開始するコマンドであり、キックコマンド自体のほかに、サブプロセッサＩＤ及びプログラムカウンタを含む。サブプロセッサＩＤは、キック対象のサブプロセッサ２３を識別し、プログラムカウンタは、プログラム実行用プログラムカウンタのためのアドレスを与える。
【０１７８】
機能プログラム実行コマンドは、後述のように、ある情報処理装置が他の情報処理装置に対して、機能プログラムの実行を要求するコマンドである。機能プログラム実行コマンドを受信した情報処理装置内の情報処理コントローラは、後述の機能プログラムＩＤによって、起動すべき機能プログラムを識別する。
【０１７９】
ステータス要求コマンドは、送信先ＩＤで示される情報処理装置の現在の動作状態（状況）に関する装置情報を、応答先ＩＤで示される情報処理装置宛に送信要求するコマンドである。機能プログラムについては後述するが、図１７に示す情報処理コントローラのメインメモリ２６が記憶するソフトウェアの構成図において機能プログラムにカテゴライズされるプログラムである。機能プログラムは、メインメモリ２６にロードされ、メインプロセッサ２１により実行される。
【０１８０】
ステータス返信コマンドは、上記のステータス要求コマンドを受信した情報処理装置が、自身の装置情報を当該ステータス要求コマンドに含まれる応答先ＩＤで示される情報処理装置に応答するコマンドである。ステータス返信コマンドは、実行セクションのデータ領域に装置情報を格納する。
【０１８１】
図１５に、ＤＭＡコマンドがステータス返信コマンドである場合におけるソフトウェアセルのデータ領域の構造を示す。
【０１８２】
情報処理装置ＩＤは、情報処理コントローラを備える情報処理装置を識別するための識別子であり、ステータス返信コマンドを送信する情報処理装置のＩＤを示す。情報処理装置ＩＤは、電源投入時、その情報処理装置内の情報処理コントローラに含まれるメインプロセッサ２１によって、電源投入時の日時、情報処理装置のネットワークアドレス及び情報処理装置内の情報処理コントローラに含まれるサブプロセッサ２３の数などに基づいて生成される。
【０１８３】
情報処理装置種別ＩＤには、当該情報処理装置の特徴を表す値が含まれる。情報処理装置の特徴とは、例えば、ハードディスクレコーダ、ＰＤＡ（Personal Digital Assistants）、ポータブルＣＤ（Compact Disc）プレーヤなどである。また、情報処理装置種別ＩＤは、映像音声記録、映像音声再生など、情報処理装置の機能を表すものであってもよい。情報処理装置の特徴や機能を表す値は予め決定されているものとし、情報処理装置種別ＩＤを読み出すことにより、当該情報処理装置の特徴や機能を把握することが可能である。
【０１８４】
ＭＳ（マスター／スレーブ）ステータスは、後述のように情報処理装置がマスター装置またはスレーブ装置のいずれで動作しているかを表すもので、これが０に設定されている場合にはマスター装置として動作していることを示し、１に設定されている場合にはスレーブ装置として動作していることを示す。
【０１８５】
メインプロセッサ動作周波数は、情報処理コントローラ内のメインプロセッサ２１の動作周波数を表す。メインプロセッサ使用率は、メインプロセッサ２１で現在動作している全てのプログラムについての、メインプロセッサ２１での使用率を表す。メインプロセッサ使用率は、対象メインプロセッサの全処理能力に対する使用中の処理能力の比率を表した値で、例えばプロセッサ処理能力評価のための単位であるＭＩＰＳを単位として算出され、または単位時間あたりのプロセッサ使用時間に基づいて算出される。後述のサブプロセッサ使用率についても同様である。
【０１８６】
サブプロセッサ数は、当該の情報処理コントローラが備えるサブプロセッサ２３の数を表す。サブプロセッサＩＤは、当該の情報処理コントローラ内の各サブプロセッサ２３を識別するための識別子である。
【０１８７】
サブプロセッサステータスは、各サブプロセッサ２３の状態を表すものであり、ｕｎｕｓｅｄ，ｒｅｓｅｒｖｅｄ，ｂｕｓｙなどの状態がある。ｕｎｕｓｅｄは、当該のサブプロセッサが現在使用されてなく、使用の予約もされていないことを示す。ｒｅｓｅｒｖｅｄは、現在は使用されていないが、予約されている状態を示す。ｂｕｓｙは、現在使用中であることを示す。
【０１８８】
サブプロセッサ使用率は、当該のサブプロセッサで現在実行している、または当該のサブプロセッサに実行が予約されているプログラムについての、当該サブプロセッサでの使用率を表す。すなわち、サブプロセッサ使用率は、サブプロセッサステータスがｂｕｓｙである場合には、現在の使用率を示し、サブプロセッサステータスがｒｅｓｅｒｖｅｄである場合には、後に使用される予定の推定使用率を示す。
【０１８９】
サブプロセッサＩＤ、サブプロセッサステータス及びサブプロセッサ使用率は、１つのサブプロセッサ２３に対して一組設定され、１つの情報処理コントローラ内のサブプロセッサ２３に対応する組数が設定される。
【０１９０】
メインメモリ総容量及びメインメモリ使用量は、それぞれ、当該の情報処理コントローラに接続されているメインメモリ２６の総容量及び現在使用中の容量を表す。
【０１９１】
外部記録部数は、当該の情報処理コントローラに接続されている外部記録部２８の数を表す。外部記録部ＩＤは、当該の情報処理コントローラに接続されている外部記録部２８を一意的に識別する情報である。外部記録部種別ＩＤは、当該の外部記録部の種類（例えば、ハードディスク、ＣＤ±ＲＷ、ＤＶＤ±ＲＷ、メモリディスク、ＳＲＡＭ、ＲＯＭなど）を表す。
【０１９２】
外部記録部総容量及び外部記録部使用量は、それぞれ、外部記録部ＩＤによって識別される外部記録部２８の総容量及び現在使用中の容量を表す。
【０１９３】
外部記録部ＩＤ、外部記録部種別ＩＤ、外部記録部総容量及び外部記録部使用量は、１つの外部記録部２８に対して一組設定されるものであり、当該の情報処理コントローラに接続されている外部記録部２８の数の組数だけ設定される。すなわち、１つの情報処理コントローラに複数の外部記録部が接続されている場合、各々の外部記録部には異なる外部記録部ＩＤが割り当てられ、外部記録部種別ＩＤ、外部記録部総容量及び外部記録部使用量も別々に管理される。
【０１９４】
ある情報処理装置内の情報処理コントローラに含まれるメインプロセッサ２１は、以上のような構成のソフトウェアセルを生成し、ネットワーク９を介して他の情報処理装置及び当該装置内の情報処理コントローラに送信する。送信元の情報処理装置、送信先の情報処理装置、応答先の情報処理装置、及び各装置内の情報処理コントローラは、それぞれ、上記の送信元ＩＤ、送信先ＩＤ及び応答先ＩＤによって識別される。
【０１９５】
ソフトウェアセルを受信した情報処理装置内の情報処理コントローラに含まれるメインプロセッサ２１は、そのソフトウェアセルをメインメモリ２６に格納する。更に、送信先のメインプロセッサ２１は、ソフトウェアセルを読み出し、それに含まれるＤＭＡコマンドを処理する。具体的には、送信先のメインプロセッサ２１は、まず、ロードコマンドを実行する。これによって、ロードコマンドで指示されたメインメモリアドレスから、ロードコマンドに含まれるサブプロセッサＩＤ及びＬＳアドレスで特定されるサブプロセッサ内のＬＳ２４の所定領域に、情報がロードされる。ここでロードされる情報は、受信したソフトウェアセルに含まれるサブプロセッサプログラムまたはデータ、あるいはその他の指示されたデータである。
【０１９６】
次に、メインプロセッサ２１は、キックコマンドを、これに含まれるサブプロセッサＩＤで指示されたサブプロセッサに、同様にキックコマンドに含まれるプログラムカウンタと共に出力する。指示されたサブプロセッサは、そのキックコマンド及びプログラムカウンタに従って、サブプロセッサプログラムを実行する。そして、実行結果をメインメモリ２６に格納した後、実行を完了したことをメインプロセッサ２１に通知する。
【０１９７】
なお、送信先の情報処理装置内の情報処理コントローラにおいてソフトウェアセルを実行するプロセッサはサブプロセッサ２３に限定されるものではなく、メインプロセッサ２１がソフトウェアセルに含まれる機能プログラムなどのメインメモリ用プログラムを実行するように指定することも可能である。
【０１９８】
この場合には、送信元の情報処理装置は、送信先の情報処理装置宛に、サブプロセッサプログラムの代わりに、メインメモリ用プログラム及びそのメインメモリ用プログラムによって処理されるデータを含み、ＤＭＡコマンドがロードコマンドであるソフトウェアセルを送信し、メインメモリ２６にメインメモリ用プログラム及びそれによって処理されるデータを記憶させる。次に、送信元の情報処理装置は、送信先の情報処理装置宛に、送信先の情報処理装置内の情報処理コントローラについてのメインプロセッサＩＤ、メインメモリアドレス、メインメモリ用プログラムを識別するための後述の機能プログラムＩＤなどの識別子、及びプログラムカウンタを含み、ＤＭＡコマンドがキックコマンドまたは機能プログラム実行コマンドであるソフトウェアセルを送信して、メインプロセッサ２１に当該メインメモリ用プログラムを実行させる。
【０１９９】
以上のように、この発明のネットワークシステムでは、送信元の情報処理装置は、サブプロセッサプログラムまたはメインメモリ用プログラムをソフトウェアセルによって送信先の情報処理装置に送信するとともに、当該サブプロセッサプログラムを送信先の情報処理装置内の情報処理コントローラに含まれるサブプロセッサ２３にロードさせ、当該サブプロセッサプログラムまたは当該メインメモリ用プログラムを送信先の情報処理装置に実行させることができる。
【０２００】
送信先の情報処理装置内の情報処理コントローラでは、受信したソフトウェアセルに含まれるプログラムがサブプロセッサプログラムである場合には、当該サブプロセッサプログラムを指定されたサブプロセッサにロードさせる。そして、ソフトウェアセルに含まれるサブプロセッサプログラムまたはメインメモリ用プログラムを実行させる。したがって、ユーザが送信先の情報処理装置を操作しなくても自動的に、当該サブプロセッサプログラムまたは当該メインメモリ用プログラムを送信先の情報処理装置内の情報処理コントローラに実行させることができる。
【０２０１】
このようにして情報処理装置は、自装置内の情報処理コントローラがサブプロセッサプログラムまたは機能プログラムなどのメインメモリ用プログラムを有していない場合には、ネットワークに接続された他の情報処理装置からそれらを取得することができる。更に、各サブプロセッサ間ではＤＭＡ方式によりデータ転送を行い、また上述したサンドボックスを使用することによって、１つの情報処理コントローラ内でデータを多段階に処理する必要がある場合でも、高速かつ高セキュリティに処理を実行することができる。
【０２０２】
ソフトウェアセルの使用による分散処理の結果、図１６の上段に示すようにネットワーク９に接続されている複数の情報処理装置１、２、３、４は、図１６の下段に示すように、仮想的な１台の情報処理装置７として動作する。ただし、そのためには、以下のような構成によって、以下のような処理が実行される必要がある。
【０２０３】
図１７に、個々の情報処理コントローラのメインメモリ２６が記憶するソフトウェアの構成を示す。これらのソフトウェア（プログラム）は、情報処理装置に電源が投入される前においては、当該の情報処理コントローラに接続される外部記録部２８に記録されているものである。各プログラムは、機能または特徴によって、制御プログラム、機能プログラム及びデバイスドライバにカテゴライズされる。
【０２０４】
制御プログラムは、各情報処理コントローラが同じものを備え、各情報処理コントローラのメインプロセッサ２１が実行するもので、後述のＭＳ（マスター／スレーブ）マネージャ及び能力交換プログラムを含む。
【０２０５】
機能プログラムは、メインプロセッサ２１が実行するもので、記録用、再生用、素材検索用など、情報処理コントローラごとに情報処理装置に応じたものが備えられる。
【０２０６】
デバイスドライバは、情報処理コントローラ（情報処理装置）の入出力（送受信）用で、放送受信、モニター出力、ビットストリーム入出力、ネットワーク入出力など、情報処理コントローラ毎に情報処理装置に応じたものが備えられる。
【０２０７】
情報処理装置が物理的にネットワーク９に接続された状態で、情報処理装置に主電源が投入され、情報処理装置が電気的・機能的にもネットワーク９に接続されると、その情報処理装置の情報処理コントローラのメインプロセッサ２１は、制御プログラムに属する各プログラム、及びデバイスドライバに属する各プログラムを、メインメモリ２６にロードする。
【０２０８】
ロード手順としては、メインプロセッサ２１は、まず、ＤＣ２７に読み出し命令を実行させることによって、外部記録部２８からプログラムを読み出し、次に、ＤＭＡＣ２５に書き込み命令を実行させることによって、そのプログラムをメインメモリ２６に書き込む。
【０２０９】
機能プログラムに属する各プログラムについては、必要なときに必要なプログラムだけをロードするように構成してもよく、または、他のカテゴリに属するプログラムと同様に、主電源投入直後に各プログラムをロードするように構成してもよい。
【０２１０】
ここで、機能プログラムに属する各プログラムは、ネットワークに接続された全ての情報処理装置の外部記録部２８に記録されている必要はなく、いずれか１つの情報処理装置の外部記録部２８に記録されていれば、前述の方法によって他の情報処理装置からロードすることができるので、結果的に図１６の下段に示すように、仮想的な１台の情報処理装置７として機能プログラムを実行することができる。
【０２１１】
ここで前述したようにメインプロセッサ２１によって処理される機能プログラムは、サブプロセッサ２３によって処理されるサブプロセッサプログラムと連携動作する場合がある。そこでメインプロセッサ２１が外部記録部２８から機能プログラムを読み出し、メインメモリ２６に書き込む際に対象となる機能プログラムと連携動作するサブプロセッサプログラムが存在する場合には、当該サブプロセッサプログラムも併せて同じメインメモリ２６に書き込むものとする。この場合、連携動作するサブプロセッサプログラムは１個である場合もあるし、複数個であることもあり得る。複数個である場合には、全ての連携動作するサブプロセッサプログラムをメインメモリ２６に書き込むことになる。メインメモリ２６に書き込まれたサブプロセッサプログラムはその後、サブプロセッサ２３内のＬＳ２４に書き込まれ、メインプロセッサ２１によって処理される機能プログラムと連携動作する。
【０２１２】
図１４のソフトウェアセルに示したように、機能プログラムには、プログラムごとにプログラムを一意的に識別できる識別子が、機能プログラムＩＤとして割り当てられる。機能プログラムＩＤは、機能プログラムの作成の段階で、作成日時や情報処理装置ＩＤなどから決定される。
【０２１３】
そしてサブプロセッサプログラムにもサブプロセッサプログラムＩＤが割り当てられ、これによりサブプロセッサプログラムを一意的に識別可能である。割り当てられるサブプロセッサプログラムＩＤは、連携動作する相手となる機能プログラムの機能プログラムＩＤと関連性のある識別子、例えば機能プログラムＩＤを親番号とした上で最後尾に枝番号を付加させたもの等であることもあり得るし、連携動作する相手となる機能プログラムの機能プログラムＩＤとは関連性のない識別子であってもよい。いずれにしても機能プログラムとサブプロセッサプログラムが連携動作する場合には、両者とも相手の識別子であるプログラムＩＤを自プログラム内に互いに記憶しておく必要がある。機能プログラムが複数個のサブプロセッサプログラムと連携動作する場合にも、当該機能プログラムは複数個ある全てのサブプロセッサプログラムのサブプロセッサプログラムＩＤを記憶しておくことになる。
【０２１４】
メインプロセッサ２１は、自身が動作する情報処理装置の装置情報（動作状態に関する情報）を格納するための領域をメインメモリ２６に確保し、当該情報を自装置の装置情報テーブルとして記録する。ここでの装置情報は、図１５に示した情報処理装置ＩＤ以下の各情報である。
【０２１５】
上述したネットワークシステムでは、ある情報処理装置への主電源投入時、その情報処理装置の情報処理コントローラのメインプロセッサ２１は、マスター／スレーブマネージャ（以下、ＭＳマネージャ）をメインメモリ２６にロードし、実行する。
【０２１６】
ＭＳマネージャは、自身が動作する情報処理装置がネットワーク９に接続されていることを検知すると、同じネットワーク９に接続されている他の情報処理装置の存在を確認する。ここでの「接続」または「存在」は、上述したように、情報処理装置が物理的にネットワーク９に接続されているだけでなく、電気的・機能的にもネットワーク９に接続されていることを示す。また、自身が動作する情報処理装置を自装置、他の情報処理装置を他装置と称する。当該装置も、当該情報処理装置を示すものとする。
【０２１７】
ＭＳマネージャが同じネットワーク９に接続されている他の情報処理装置の存在を確認する方法を以下に示す。
【０２１８】
ＭＳマネージャは、ＤＭＡコマンドがステータス要求コマンドであり、送信元ＩＤ及び応答先ＩＤが当該情報処理装置で、送信先ＩＤを特定しないソフトウェアセルを生成して、当該情報処理装置が接続されたネットワーク上に送信して、ネットワーク接続確認用のタイマーを設定する。タイマーのタイムアウト時間は、例えば１０分とされる。
【０２１９】
当該ネットワークシステム上に他の情報処理装置が接続されている場合、その他装置は、上記ステータス要求コマンドのソフトウェアセルを受信し、上記応答先ＩＤで特定されるステータス要求コマンドを発行した情報処理装置に対して、ＤＭＡコマンドがステータス返信コマンドであり、かつデータとして自身（その他装置）の装置情報を含むソフトウェアセルを送信する。このステータス返信コマンドのソフトウェアセルには、少なくとも当該他装置を特定する情報（情報処理装置ＩＤ、メインプロセッサに関する情報、サブプロセッサに関する情報など）及び当該他装置のＭＳステータスが含まれる。
【０２２０】
ステータス要求コマンドを発行した情報処理装置のＭＳマネージャは、上記ネットワーク接続確認用のタイマーがタイムアウトするまで、当該ネットワーク上の他装置から送信されるステータス返信コマンドのソフトウェアセルの受信を監視する。その結果、ＭＳステータス＝０（マスター装置）を示すステータス返信コマンドが受信された場合には、自装置の装置情報テーブルにおけるＭＳステータスを１に設定する。これによって、当該装置は、スレーブ装置となる。
【０２２１】
一方、上記ネットワーク接続確認用のタイマーがタイムアウトするまでの間にステータス返信コマンドが全く受信されなかった場合、またはＭＳステータス＝０（マスター装置）を示すステータス返信コマンドが受信されなかった場合には、自装置の装置情報テーブルにおけるＭＳステータスを０に設定する。これによって、当該装置は、マスター装置となる。
【０２２２】
すなわち、いずれの装置もネットワーク９に接続されていない状態、またはネットワーク９上にマスター装置が存在しない状態において、新たな情報処理装置がネットワーク９に接続されると、当該装置は自動的にマスター装置として設定される。一方、ネットワーク９上に既にマスター装置が存在する状態において、新たな情報処理装置がネットワーク９に接続されると、当該装置は自動的にスレーブ装置として設定される。
【０２２３】
マスター装置及びスレーブ装置のいずれについても、ＭＳマネージャは、定期的にステータス要求コマンドをネットワーク９上の他装置に送信してステータス情報を照会することにより、他装置の状況を監視する。その結果、ネットワーク９に接続されている情報処理装置の主電源が遮断され、またはネットワーク９から情報処理装置が切り離されることにより、予め判定用に設定された所定期間内に特定の他装置からステータス返信コマンドが返信されなかった場合や、ネットワーク９に新たな情報処理装置が接続された場合など、ネットワーク９の接続状態に変化があった場合には、その情報を後述の能力交換プログラムに通知する。
【０２２４】
メインプロセッサ２１は、ＭＳマネージャから、ネットワーク９上の他装置の照会及び自装置のＭＳステータスの設定完了の通知を受けると、能力交換プログラムを実行する。
【０２２５】
能力交換プログラムは、自装置がマスター装置である場合には、ネットワーク９に接続されている全ての他装置の装置情報、すなわち各スレーブ装置の装置情報を取得する。他装置の装置情報の取得は、上述したように、ＤＭＡコマンドがステータス要求コマンドであるソフトウェアセルを生成して他装置に送信し、その後、ＤＭＡコマンドがステータス返信コマンドで、かつデータとして他装置の装置情報を含むソフトウェアセルを他装置から受信することによって可能である。
【０２２６】
能力交換プログラムは、マスター装置である自装置の装置情報テーブルと同様に、ネットワーク９に接続されている全ての他装置（各スレーブ装置）の装置情報を格納するための領域を自装置のメインメモリ２６に確保し、これら情報を他装置（スレーブ装置）の装置情報テーブルとして記録する。すなわち、マスター装置のメインメモリ２６には、自装置を含むネットワーク９に接続されている全ての情報処理装置の装置情報が、装置情報テーブルとして記録される。
【０２２７】
一方、自装置がスレーブ装置である場合には、能力交換プログラムは、ネットワーク９に接続されている全ての他装置の装置情報、すなわちマスター装置及び自装置以外の各スレーブ装置の装置情報を取得し、これら装置情報に含まれる情報処理装置ＩＤ及びＭＳステータスを、自装置のメインメモリ２６に記録する。すなわち、スレーブ装置のメインメモリ２６には、自装置の装置情報が、装置情報テーブルとして記録されるとともに、自装置以外のネットワーク９に接続されているマスター装置及び各スレーブ装置についての情報処理装置ＩＤ及びＭＳステータスが、別の装置情報テーブルとして記録される。
【０２２８】
また、マスター装置及びスレーブ装置のいずれについても、能力交換プログラムは、上記のようにＭＳマネージャから、新たにネットワーク９に情報処理装置が接続されたことが通知されたときには、その情報処理装置の装置情報を取得し、上述したようにメインメモリ２６に記録する。
【０２２９】
なお、ＭＳマネージャ及び能力交換プログラムは、メインプロセッサ２１で実行されることに限らず、いずれかのサブプロセッサ２３で実行されてもよい。また、ＭＳマネージャ及び能力交換プログラムは、情報処理装置の主電源が投入されている間は常時動作する常駐プログラムであることが望ましい。
【０２３０】
マスター装置及びスレーブ装置のいずれについても、能力交換プログラムは、上記のようにＭＳマネージャから、ネットワーク９に接続されている情報処理装置の主電源が遮断され、またはネットワーク９から情報処理装置が切り離されたことが通知されたときには、その情報処理装置の装置情報テーブルを自装置のメインメモリ２６から削除する。
【０２３１】
更に、このようにネットワーク９から切断された情報処理装置がマスター装置である場合には、以下のような方法によって、新たにマスター装置が決定される。
【０２３２】
具体的には、例えば、ネットワーク９から切断されていない情報処理装置は、それぞれ、自装置及び他装置の情報処理装置ＩＤを数値に置き換えて、自装置の情報処理装置ＩＤを他装置の情報処理装置ＩＤと比較し、自装置の情報処理装置ＩＤがネットワーク９から切断されていない情報処理装置中で最小である場合、そのスレーブ装置は、マスター装置に移行して、ＭＳステータスを０に設定し、マスター装置として、上述したように、ネットワーク９に接続されている全ての他装置（各スレーブ装置）の装置情報を取得して、メインメモリ２６に記録する。
【０２３３】
図１６の下段に示したようにネットワーク９に接続されている複数の情報処理装置１、２、３、４を仮想的な１台の情報処理装置７として動作させるためには、マスター装置がユーザの操作及びスレーブ装置の動作状態を把握する必要がある。
【０２３４】
図１８に、４台の情報処理装置が仮想的な１台の情報処理装置７として動作する様子を示す。情報処理装置１がマスター装置、情報処理装置２、３、４がスレーブ装置Ａ、Ｂ、Ｃとして、動作しているものとする。
【０２３５】
ユーザがネットワーク９に接続されている情報処理装置を操作した場合、操作対象がマスター装置１であれば、その操作情報は、マスター装置１において直接把握され、操作対象がスレーブ装置であれば、その操作情報は、操作されたスレーブ装置からマスター装置１に送信される。すなわち、ユーザの操作対象がマスター装置１とスレーブ装置のいずれであるかにかかわらず、その操作情報は常にマスター装置１において把握される。操作情報の送信は、例えば、ＤＭＡコマンドが操作情報送信コマンドであるソフトウェアセルによって行われる。
【０２３６】
そして、マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、その操作情報に従って、実行する機能プログラムを選択する。その際、必要であれば、マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、上記の方法によって自装置の外部記録部２８−１、２８−２からメインメモリ２６−１に機能プログラムをロードするが、他の情報処理装置（スレーブ装置）がマスター装置１に機能プログラムを送信してもよい。
【０２３７】
機能プログラムには、その実行単位毎に必要となる、図１５に示した各情報として表される情報処理装置種別ＩＤ、メインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量、外部記録部に関する条件等の、装置に関する要求スペックが規定されている。
【０２３８】
マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、各機能プログラムについて必要となる上記要求スペックを読み出す。また、予め能力交換プログラムによってメインメモリ２６−１に記録された装置情報テーブルを参照し、各情報処理装置の装置情報を読み出す。ここでの装置情報は、図１５に示した情報処理装置ＩＤ以下の各情報を示し、メインプロセッサ、サブプロセッサ、メインメモリ及び外部記録部に関する情報である。
【０２３９】
マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、ネットワーク９上に接続された各情報処理装置の上記装置情報と、機能プログラム実行に必要となる上記要求スペックとを順次比較する。
【０２４０】
そして、例えば、機能プログラムが録画機能を必要とする場合には、情報処理装置種別ＩＤに基づいて、録画機能を有する情報処理装置のみを特定して抽出する。更に、機能プログラムを実行するために必要なメインプロセッサまたはサブプロセッサの処理能力、メインメモリ使用量、外部記録部に関する条件を確保できるスレーブ装置を、実行要求候補装置として特定する。ここで、複数の実行要求候補装置が特定された場合には、当該候補装置から１つの実行要求候補装置を特定して選択する。
【０２４１】
実行要求するスレーブ装置が特定されたら、マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、その特定されたスレーブ装置について、自装置内の情報処理コントローラ１１に含まれるメインメモリ２６−１に記録されている当該スレーブ装置の装置情報テーブルを更新する。
【０２４２】
更に、マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、ＤＭＡコマンドが機能プログラム実行コマンドであるソフトウェアセルを生成し、当該ソフトウェアセルのセルインターフェースに、機能プログラムに関する必要なサブプロセッサの情報及びサンドボックスサイズ（図１４参照）を設定して、上記実行要求されるスレーブ装置に対して送信する。
【０２４３】
機能プログラムの実行を要求されたスレーブ装置は、その機能プログラムを実行するとともに、自装置の装置情報テーブルを更新する。その際、必要であれば、スレーブ装置内の情報処理コントローラに含まれるメインプロセッサ２１は、上記の方法によって自装置の外部記録部２８からメインメモリ２６に機能プログラム及び当該機能プログラムと連携動作するサブプロセッサプログラムをロードする。
【０２４４】
機能プログラムの実行を要求されたスレーブ装置の外部記録部２８に、必要な機能プログラムまたは当該機能プログラムと連携動作するサブプロセッサプログラムが記録されていない場合には、他の情報処理装置が当該機能プログラムまたはサブプロセッサプログラムを、その機能プログラム実行要求先スレーブ装置に送信するように、システムを構成すればよい。
【０２４５】
サブプロセッサプログラムについては、前述のロードコマンド及びキックコマンドを利用して他の情報処理装置に実行させることもできる。
【０２４６】
機能プログラムの実行終了後、機能プログラムを実行したスレーブ装置内の情報処理コントローラに含まれるメインプロセッサ２１は、終了通知をマスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１に送信するとともに、自装置の装置情報テーブルを更新する。マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、その終了通知を受信して、機能プログラムを実行したスレーブ装置の装置情報テーブルを更新する。
【０２４７】
マスター装置１内の情報処理コントローラ１１に含まれるメインプロセッサ２１−１は、自装置及び他装置の装置情報テーブルの参照結果から、当該の機能プログラムを実行することができる情報処理装置として、自身を選択する場合もあり得る。その場合には、マスター装置１が当該機能プログラムを実行する。
【０２４８】
図１８の例で、ユーザがスレーブ装置Ａ（情報処理装置２）を操作し、当該操作に応じた機能プログラムを別のスレーブ装置Ｂ（情報処理装置３）が実行する場合について、図１９を用いてその分散処理の例を説明する。
【０２４９】
図１９の例では、ユーザがスレーブ装置Ａを操作することによって、スレーブ装置Ａを含むネットワークシステム全体の分散処理が開始して、まず、スレーブ装置Ａは、ステップ８１で、その操作情報をマスター装置１に送信する。
【０２５０】
マスター装置１は、ステップ７２で、その操作情報を受信し、更にステップ７３に進んで、自装置のメインメモリ２６−１に記録されている自装置及び他装置の装置情報テーブルから、各情報処理装置の動作状態を調べて、受信した操作情報に応じた機能プログラムを実行することができる情報処理装置を選択する。この例は、スレーブ装置Ｂが選択される場合である。
【０２５１】
次に、マスター装置１は、ステップ７４で、その選択したスレーブ装置Ｂに対して機能プログラムの実行を要求する。
【０２５２】
スレーブ装置Ｂは、ステップ９５で、その実行要求を受信し、更にステップ９６に進んで、実行要求された機能プログラムを実行する。
【０２５３】
以上のように、ユーザは、１台の情報処理装置のみを操作することによって、他の情報処理装置を操作することなく、複数の情報処理装置１、２、３、４を仮想的な１台の情報処理装置７として動作させることができる。
【図面の簡単な説明】
【０２５４】
【図１】本発明の一実施の形態に係る通信システムの構成を示すブロック図である。
【図２】各ヘッダが付されたパケットの構成を示す図である。
【図３】ＭＰＥＧ−ＴＳパケットのデータ構造を示す図である。
【図４】上記ＲＴＰパケットのデータ構造を示す図である。
【図５】送信装置における同期情報の算出処理を示すフローチャートである。
【図６】同期情報の算出処理を説明するための図である。
【図７】同期情報の内容を示す図である。
【図８】同期情報算出部によりＲＴＳＴが書き込まれるときの様子を説明するための図である。
【図９】受信装置の動作を示すフローチャートである。
【図１０】受信装置の動作を説明するための図である。
【図１１】ＲＴＳがネットワークのジッタにより、受信装置が所定の時間間隔で受信できない場合を説明するための図である。
【図１２】図１に示す通信システムが適用されるネットワークシステムの一例を示す図である。
【図１３】情報処理装置が備える情報処理コントローラの説明に供する図である。
【図１４】ソフトウェアセルの一例を示す図である。
【図１５】ＤＭＡコマンドがステータス返信コマンドである場合のソフトウェアセルのデータ領域を示す図である。
【図１６】複数の情報処理装置が仮想的な１台の情報処理装置として動作する様子を示す図である。
【図１７】情報処理コントローラのソフトウェア構成の一例を示す図である。
【図１８】４台の情報処理装置が仮想的な１台の情報処理装置として動作する様子を示す図である。
【図１９】図１８のシステムにおける分散処理の例を示す図である。
【図２０】図１に示す送信装置の機能を情報処理装置に適用した構成を示すブロック図である。
【符号の説明】
【０２５５】
９、１０…ネットワーク
３６…パケット検出部
３７…ＲＴＰパケット生成部
３８…ＵＤＰパケット生成部
３９…ＩＰパケット生成部
４１…水晶発振器
４２…同期情報算出部
４４…ＰＣＲカウンタ
４５…ＩＰヘッダ解析部
４６…ＵＤＰヘッダ解析部
４７…ＲＴＰヘッダ解析部
４９…ＴＳヘッダ解析部
５０…送信装置
５１…タイムスタンプ補正部
５３…タイムスタンプ検出部
５５…マスター水晶発振器
５６…マスターＳＴＣカウンタ
５７、６５…比較器
５８…ＬＰＦ
５９…ＶＣＸＯ
６０、７０…受信装置
６０…受信装置
６１、６２…ＦＩＦＯ
６３…オーディオデコーダ
６４…ビデオデコーダ
６８…ＳＴＣカウンタ
７３…ＲＴＰパケット
７４…ＴＳパケット
２００…通信システム
【図１】
2006014089.tif 000003
【図２】
2006014089.tif 000004
【図３】
2006014089.tif 000005
【図４】
2006014089.tif 000006
【図５】
2006014089.tif 000007
【図６】
2006014089.tif 000008
【図７】
2006014089.tif 000009
【図８】
2006014089.tif 000010
【図９】
2006014089.tif 000011
【図１０】
2006014089.tif 000012
【図１１】
2006014089.tif 000013
【図１２】
2006014089.tif 000014
【図１３】
2006014089.tif 000015
【図１４】
2006014089.tif 000016
【図１５】
2006014089.tif 000017
【図１６】
2006014089.tif 000018
【図１７】
2006014089.tif 000019
【図１８】
2006014089.tif 000020
【図１９】
2006014089.tif 000021
【図２０】
2006014089.tif 000022