(57)【特許請求の範囲】
【請求項１】
情報送信装置から送信されたパケットを受信する、前記情報送信装置とは異なる情報受信装置において、
前記情報送信装置は、第１のクロックに基づいて動作する第１のネットワークに属し、
前記情報受信装置は、前記第１のクロックと非同期の第２のクロックに基づいて動作する第２のネットワークに属し、
送信されてきた前記パケットを受信する受信手段と、
前記受信手段が受信した前記パケットを記憶する記憶手段と、
前記受信手段により受信された前記パケットに基づいて、前記第１のネットワークにおける前記第１のクロックと、前記第２のネットワークにおける前記第２のクロックのずれを検出する検出手段と
を備える情報受信装置。
【請求項２】
前記検出手段により検出されたずれに対応して、前記パケットに含まれる時刻情報を変更する変更手段と、
前記変更手段により変更された時刻情報に対応して、前記受信手段により受信された前記パケットを出力する出力手段とをさらに備え、
前記検出手段は、前記記憶手段に記憶された前記パケットの量に基づいて、前記第１のクロックと第２のクロックのずれを検出する
請求項１に記載の情報受信装置。
【請求項３】
前記記憶手段は、FIFOを含み、
前記検出手段は、所定間隔で区切られた期間毎に、前記記憶手段に記憶された前記パケットの量を計測し、全ての前記期間のうちの１つを注目期間として、前記注目期間と、前記注目期間と所定の関係の前記期間とのそれぞれについて計測された前記パケットの量どうしの差を演算し、その差に基づいて前記注目期間についての前記ずれを検出する
請求項１に記載の情報受信装置。
【請求項４】
前記検出手段の検出結果に対応して、空のパケットを前記記憶手段に記憶させる記憶制御手段を
さらに備える請求項１に記載の情報受信装置。
【請求項５】
情報送信装置から送信されたパケットを受信する、前記情報送信装置とは異なる情報受信装置の情報受信方法において、
前記情報送信装置は、第１のクロックに基づいて動作する第１のネットワークに属し、
前記情報受信装置は、前記第１のクロックと非同期の第２のクロックに基づいて動作する第２のネットワークに属し、
送信されてきた前記パケットを受信する受信ステップと、
前記受信ステップの処理により受信された前記パケットを記憶手段に記憶する記憶ステップと、
前記受信ステップの処理により受信された前記パケットに基づいて、前記第１のネットワークにおける前記第１のクロックと、前記第２のネットワークにおける前記第２のクロックのずれを検出する検出ステップと
を含む情報受信方法。
【請求項６】
前記検出手段により検出されたずれに対応して、前記パケットに含まれる時刻情報を変更する変更ステップと、
前記変更ステップの処理により変更された時刻情報に対応して、前記受信ステップの処理により受信された前記パケットを出力する出力ステップとをさらに含み、
前記検出ステップの処理において、前記記憶手段に記憶された前記パケットの量に基づいて、前記第１のクロックと第２のクロックのずれを検出する
請求項５に記載の情報受信方法。
【請求項７】
第１のクロックに基づいて動作する第１のネットワークに属する情報送信装置から送信されたパケットを受信する、前記第１のクロックと非同期の第２のクロックに基づいて動作する第２のネットワークの処理を実行するプログラムであって、
前記第２のネットワークには、前記情報送信装置とは異なる装置が属し、
送信されてきた前記パケットを受信する受信ステップと、
前記受信ステップの処理により受信された前記パケットを記憶手段に記憶する記憶ステップと、
前記受信ステップの処理により受信された前記パケットに基づいて、前記第１のネットワークにおける前記第１のクロックと、前記第２のネットワークにおける前記第２のクロックのずれを検出する検出ステップと
を含むコンピュータが実行可能なプログラムが記録されている記録媒体。
【請求項８】
前記検出手段により検出されたずれに対応して、前記パケットに含まれる時刻情報を変更する変更ステップと、
前記変更ステップの処理により変更された時刻情報に対応して、前記受信ステップの処理により受信された前記パケットを出力する出力ステップとをさらに含み、
前記検出ステップの処理において、前記記憶手段に記憶された前記パケットの量に基づいて、前記第１のクロックと第２のクロックのずれを検出する
コンピュータが実行可能なプログラムが記録されている請求項７に記載の記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報送信装置および方法、情報受信装置および方法、情報送受信装置および方法、並びに記録媒体に関し、特に、IEEE1394シリアルデータバスを含む複数のバスの対応関係を記述したマッピングテーブルを参照して、情報を通信する情報送信装置および方法、情報受信装置および方法、情報送受信装置および方法、並びに記録媒体に関する。
【０００２】
【従来の技術】
最近、インターネットにおいては、文字情報だけでなく、情報量が大きい高精細な静止画、動画、および音声等が伝送されるようになり、例えば、リアルタイムで音声と画像が通信される、いわゆるインターネットテレビ電話が実現されている。
【０００３】
【発明が解決しようとする課題】
ところで、上述したように、インターネットで伝送される情報量が大きくなったことに加え、インターネット利用者が急速に増加したので、その結果として、通信回線（インターネット）が混雑して、サーバへのアクセスに要する時間が増加したり、通信途中で情報の一部が欠落する課題があった。
【０００４】
また、インターネットは、約２０年前にその仕組みが考案されたものであるので、昨今の技術進化により開発された高速データ通信方式であるATM(Asynchronous Transfer Mode：非同期伝送モード)技術を有効に活用することができない課題があった。
【０００５】
本発明はこのような状況に鑑みてなされたものであり、情報が通信途中で欠落することを抑止するとともに、ATM技術を活用した高速な情報通信を可能にするものである。
【００１５】
【課題を解決するための手段】
請求項１に記載の情報受信装置は、情報送信装置から送信されたパケットを受信する、情報送信装置とは異なる情報受信装置であって、情報送信装置は、第１のクロックに基づいて動作する第１のネットワークに属し、情報受信装置は、第１のクロックと非同期の第２のクロックに基づいて動作する第２のネットワークに属し、送信されてきたパケットを受信する受信手段と、受信手段が受信したパケットを記憶する記憶手段と、受信手段により受信されたパケットに基づいて、第１のネットワークにおける第１のクロックと、第２のネットワークにおける第２のクロックのずれを検出する検出手段とを備える。
【００１６】
請求項５に記載の情報受信方法は、情報送信装置から送信されたパケットを受信する、情報送信装置とは異なる情報受信装置の情報受信方法であって、情報送信装置は、第１のクロックに基づいて動作する第１のネットワークに属し、情報受信装置は、第１のクロックと非同期の第２のクロックに基づいて動作する第２のネットワークに属し、送信されてきたパケットを受信する受信ステップと、受信ステップの処理により受信されたパケットを記憶手段に記憶する記憶ステップと、受信ステップの処理により受信されたパケットに基づいて、第１のネットワークにおける第１のクロックと、第２のネットワークにおける第２のクロックのずれを検出する検出ステップとを含む。
【００１７】
請求項７に記載の記録媒体のプログラムは、第１のクロックに基づいて動作する第１のネットワークに属する情報送信装置から送信されたパケットを受信する、第１のクロックと非同期の第２のクロックに基づいて動作する第２のネットワークの処理を実行するプログラムであって、第２のネットワークには、情報送信装置とは異なる装置が属し、送信されてきたパケットを受信する受信ステップと、受信ステップの処理により受信されたパケットを記憶手段に記憶する記憶ステップと、受信ステップの処理により受信されたパケットに基づいて、第１のネットワークにおける第１のクロックと、第２のネットワークにおける第２のクロックのずれを検出する検出ステップとを含む。
【００２１】
請求項１に記載の情報受信装置、請求項５の情報受信方法、および請求項７に記載の記録媒体においては、受信されたパケットが記憶され、受信されたパケットから、第１のネットワークにおける第１のクロックと、第２のネットワークにおける第２のクロックのずれが検出される。
【００２２】
【発明の実施の形態】
まず始めに、本出願人が、例えば、特願平９−２７９８２６号として提案した、従来のインターネットに対して、上位互換性をもつネットワークシステム（以下、第１のネットワークと称する）について説明する。この第１のネットワークは、既存のネットワークアーキテクチャがもつ問題点を解決する次世代ネットワークアーキテクチャである。第１のネットワークの特徴としては、高速資源予約プロトコル技術と、アプリケーション対応転送プロトコル技術（レートコントロール技術）が挙げられる。
【００２３】
高速資源予約プロトコル技術は、データを転送する前に、回線の帯域（通信資源）の予約を高速に行うことにより、他の通信に干渉されることなくデータを転送できる技術である。この技術は、非同期伝送モード(ATM)の特徴であるコネクションベースの品質保証ネットワーク技術を有効活用したものであり、データの転送先までのルートを決定してからデータを送信するので、データを確実に転送先まで届けることができる。高速資源予約プロトコル技術では、必要な時間だけ帯域を予約し、データ転送が終了すれば、予約を解消するので、帯域を有効に利用できる。
【００２４】
アプリケーション対応転送プロトコル技術（レートコントロール技術）は、高速資源予約プロトコル技術により確保された帯域を、無駄なく有効に使いきるための技術であり、データがスムーズに転送先に届くように、データを送信する前に、確保（予約）された帯域の幅から転送速度（レート）を予め計算し、計算した一定のレートでデータを送信する技術である。
【００２５】
第１のネットワークの構成について図１を参照して説明する。第１のネットワーク１のエッジルータ２−１，２−２は、末端のユーザ（家庭、企業等のネットワーク）のホームルータ４からの回線を集線して、バックボーンルータ３−１及至３−３に接続する。バックボーンルータ３−１乃至３−３は、それぞれが光ファイバにより接続され、上述した高速資源予約プロトコル技術とアプリケーション対応転送プロトコル技術を用いてデータの転送を行うようになされている。
【００２６】
ホームルータ４は、第１のネットワーク１と、IEEE1394バス５（この他、イーサネットで構成される末端のネットワーク）とを接続するようになされている。このネットワークには、IEEE1394インタフェースを備えるDVCR(Digital Video Cassette Recorder)７、映像情報と音声情報をDVデータに変換するデジタルビデオ(DV)カメラ８、およびモニタ６が接続されている。
【００２７】
図２は、本発明を適用したテレビ電話システムを図１のシステムで実現した場合の構成例を示している。なお、本明細書においてシステムの用語は、複数の装置、手段などにより構成される全体的な装置を意味するものである。
【００２８】
コントローラ１１−１とともにホームルータ４−１を構成するトランスレータ１０−１は、汎用のパーソナルコンピュータを用いることができ、図３に示すように、イーサカード(Ether Card)２３に接続された10baseTケーブル１６−１により、コントローラ１１−１と接続されており、コントローラ１１−１からの指令に対応して、ATMカード２２に接続された光ファイバケーブル１５−１を介して第１のネットワークとデータを送受信するようになされている。トランスレータ１０−１は、第１のネットワークからのIPデータ(Internet Protocol)をDVデータに変換し、IEEE1394カード２１に接続された、IEEE1394バス５−１−１の所定のチャンネルを介してDVCR７−１のDV端子２５に出力する。また、トランスレータ１０−１は、DVカメラ８−１からIEEE1394カード２１に接続されたIEEE1394バス５−１−２の所定のチャンネルを介して入力されたDVデータ（画像データ、および音声データ）を、IPデータに変換して第１のネットワークに送信する。さらに、トランスレータ１０−１は、IEEE1394バス５−１−１、５−１−２を介してDVCR７−１およびDVカメラ８−１の動作を制御するようになされている。
【００２９】
コントローラ１１−１としても、汎用のパーソナルコンピュータを用いることができる。このコントローラ１１−１は、図４に示すように、モニタ６−１に表示させるGUI(Graphical User Interface)を生成し、NTSC信号として、ビデオカード３３に接続されたＳ映像ケーブル１７−１を介して、DVCR７−１の入力端子Ａに供給するようになされている。また、コントローラ１１−１は、キャプチャカード３２に接続されたＳ映像ケーブル１８−１を介して、DVCR７−１の出力端子Ｂから供給される映像データをGUIの内部に取り込み、Ｓ映像ケーブル１７−１を介して、DVCR７−１の入力端子ＡにNTSC信号として供給する。
【００３０】
さらに、コントローラ１１−１は、シリアルポート３１に専用シリアルケーブル１９−１を介して接続されたリモートコントローラ１２−１に、DVCR７−１の出力端子Ｃからモニタ６−１に出力される画像データ（トランスレータ１０−１から供給されるDVデータをNTSC信号に変換したデータ、またはコントローラ１１−１から供給されるNTSC信号のデータ）を指定するコマンドを、赤外線で発信させる。
【００３１】
このリモートコントローラ１２−１が出力した赤外線信号によるコマンドが、DVCR７−１の受光部２４（図３）で受光されると、指定された画像データが、対応する音声データとともに、DVCR７−１から、モニタ６−１に、Ｓ映像ケーブル２０−１またはステレオ音声ケーブル２１−１を介して出力される。モニタ６−１は、入力された画像データを表示し、音声データを内蔵する図示しないスピーカから再生する。
【００３２】
なお、DVCR７−１の制御は、リモートコントローラ１２−１を用いなくても、IEEE1394バス５を介して制御コマンドを送信することによっても可能である。また、リモートコントローラ１２−１は、コントローラ１１−１と一体化してもよい。
【００３３】
図２の第１のネットワークの右側に示したホームルータ４−２乃至リモートコントローラ１２−２等は、テレビ電話の通話相手側のシステムであり、上述した、図２の左側に示したホームルータ４−１乃至リモートコントローラ１２−１等と同様の構成のものであるので、その説明は省略する。
【００３４】
なお、トランスレータ１０−１とコントローラ１１−１は、イーサネット（10baseTケーブル１６−１）により接続されているが、IP接続が可能である光ファイバ、またはIEEE1394バスを用いて接続してもよい。また、トランスレータ１０−１とコントローラ１１−１は、図１のホームルータ４に相当するものであり、トランスレータ１０−１とコントローラ１１−１を１台のコンピュータを用いて実現してもよい。
【００３５】
図５は、トランスレータ１０−１とコントローラ１１−１を一体化した場合のホームルータ４−１の構成例を示している。CPU４１は、バス５１を介して、メモリ５０に記憶されているプログラムを読み出し、そのプログラムに基づいて、ホームルータ４−１の全体を制御するようになされている。IEEE1394インタフェース４２は、図３のIEEE1394カード２１に相当し、IEEE1394バス５−１−１、５−１−２を介してDVCR７−１およびDVカメラ８−１が接続される。
【００３６】
ビデオインタフェース４３は、図４のビデオカード３３に相当し、Ｓ映像ケーブル１７−１、１８−１を介してDVCR７−１が接続される。DVCRコントロールインタフェース４４は、図４のシリアルポート３１に相当し、専用シリアルケーブル１９−１を介してリモートコントローラ１２−１が接続される。ATMインタフェース４５は、図３のATMカード２２に相当し、第１のネットワークに対して、帯域を予約して、または帯域を予約しないでIP(Internet Protocol) データを通信する。ユーザ入力インタフェース４６には、マウス４７、およびキーボード（図示せず）が接続される。なお、ユーザ入力インタフェース４６に接続されるポインティングデバイスとしては、マウスの他、タッチパネル、トラックボール、または音声認識装置が考えられる。
【００３７】
ハードディスクインタフェース４８は、プログラム、プログラムの設定、過去の入力情報が記憶されているハードディスク４９が接続される。
【００３８】
次に、ホームルータ４−１のデータ通信処理について、図６を参照して説明する。DVカメラ８−１により取り込まれた映像信号と音声信号は、DVデータ（DVパケット）に変換され、IEEE1394バス５−１−２を介して、IEEE1394インタフェース４２により指定されたチャンネルｎ（ｎは、チャンネル番号を表す０乃至６３の数）に出力される。IEEE1394インタフェース４２は、チャンネルｎのDVパケットを、IEEE1394アイソクロナス(isochronous)入力キュー６８−ｎで受け取る。IEEE1394アイソクロナス入力キュー６８−ｎに供給されたDVパケットは、CPU４１の制御により、バス５１を介して、メモリ５０のバッファ６１に転送され、記憶される。
【００３９】
バッファ６１に記憶されたDVパケット（図７のA）は、CPU４１の制御により、図７のBに示すように、１個またはそれ以上の所定の数毎にまとめられ、その先頭にシーケンシャル番号が付加される。さらに、シーケンシャル番号が付与されたパケットには、図７のCに示すように、メモリ５０が記憶している送信用のマッピングテーブル６２に基づいて、接続先（通話相手）のアドレスを示すIPヘッダが付加され、IPパケットに変換される。
【００４０】
なお、メモリ５０に記憶されている送信用のマッピングテーブル６２には、図７のDに示すように、自己のDVカメラ８−１から出力されるDVデータが伝送されるIEEE1394バス５−１−２（IEEE1394バス５−１−２と同一のバスである）におけるチャンネル番号（０乃至６３のいずれかの番号）、接続先のホームルータ４−２のIPアドレス(address0及至address63)、接続先のDVCR７−２が接続されるIEEE1394バス５−２−１（IEEE1394バス５−２−２と同一のバスである）のチャンネル番号（ホームルータ４−２のポート番号）（port0及至port63）との対応が記録されている。
【００４１】
バッファ６１のIPパケット（図７のｃ）は、CPU４１の制御により、ATMインタフェース４５のネットワーク出力キュー６３に転送される。ネットワーク出力キュー６３に転送されたIPデータは、ATMインタフェース４５が予約した第１のネットワークの帯域を利用して出力される。
【００４２】
一方、通話先から第１のネットワークを介して送信されたIPパケットは、ATMインタフェース４５のネットワーク入力キュー６４に記憶される。ネットワーク入力キュー６４に記憶されたIPパケットは、CPU４１の制御により、バッファ６１に転送される。
【００４３】
バッファ６１に転送されたIPパケット（図８のA）は、CPU４１により、シーケンシャル番号が参照されて、欠損パケットの有無が確認される。なお、このときパケットに欠損があれば、それを補うIPパケットがCPU４１により生成される。
【００４４】
また、CPU４１は、バッファ６１に転送されたパケットのIPヘッダを読み取り、そのIPヘッダ、またはメモリ５０に記憶されている受信用のマッピングテーブル６２（図８のD）に基づいて、IPパケットが出力されるIEEE1394バス５−１−１のチャンネル番号（ホームルータ４−１のポート番号）ｍ（ｍは、チャンネル番号またはポート番号を表す０乃至６３の数）を決定する。
【００４５】
さらに、CPU４１は、このIPパケットから、図８のBに示すように、IPヘッダおよびシーケンシャル番号を取り除き、図８のCに示すように、DVパケットに分割する。
【００４６】
分割されたDVパケットは、CPU４１の制御により、IEEE1394インタフェース４２のIEEE1394アイソクロナス出力キュー６６−ｍ（DVCR７−１のDV端子２５に接続されているIEEE1394バス５−１−１のチャンネルに対応する）に転送される。また、分割されたDVパケットの中にタイミング情報が含まれていた場合、そのタイミング情報は、IEEE1394出力タイミング制御部６５に供給される。
【００４７】
IEEE1394アイソクロナス出力キュー６６−ｍのDVパケットは、CPU４１の制御により、IEEE1394出力タイミング制御部６５が発信するタイミングに同期して、IEEE1394バス５−１−１のチャンネルｍに出力される。
【００４８】
次に、ホームルータ４−１から、IEEE1394バス５−１を介して、DVCR７−１、またはDVカメラ８−１に出力されるAV制御コマンドの通信について説明する。例えば、DVカメラ８−１にDVデータを出力させるAV制御コマンドは、CPU４１の制御により、バッファ６１の中に生成される。バッファ６１のAV制御コマンドは、IEEE1394インタフェース４２のアシンクロナス(asynchronous)出力キュー６７に転送される。アシンクロナス出力キュー６７のAV制御コマンドは、CPU４１の制御に基づいて、IEEE1394バス５−１に出力される。
【００４９】
一方、例えば、AV制御コマンドに対応してDVカメラ７−１から出力される応答は、IEEE1394インタフェース４２で受信され、IEEE1394アシンクロナス入力キュー６９に記憶される。IEEE1394アシンクロナス入力キュー６９に記憶された応答は、CPU４１の制御により、バッファ６１に転送された後、CPU４１に読み出される。
【００５０】
なお、上述したように、DVCR７−１に対しては、IEEE1394バス５−１−１を介して制御信号を送ることも可能であるが、リモートコントローラ１２−１から赤外線で制御信号を送ることもできる。
【００５１】
図９は、CPU４１がハードディスク４９に記憶されたテレビ電話アプリケーションプログラムを実行することにより生成し、モニタ６−１に表示させるGUIの例を示している。このGUIには、上述したように、コントローラ１１−１(CPU４１)により、DVカメラ８−２により撮影された通話相手の映像が取り込まれるようになされており、ビデオインタフェース４３からＳ映像ケーブル１７−１を介して、DVCR７−１に入力され、さらに、DVCR７−１の出力端子Ｃからモニタ６−１に供給されている。
【００５２】
表示部７１には、DVカメラ８−２で撮影された通話相手の映像が表示される。表示部７２には、例えば、通話時間(Connected Time)や呼び出し中(Contacting for Connection)のような通信状態を示すメッセージが表示される。
【００５３】
表示部７１，７２の右側に位置する複数のボタンは、マウス４７により操作される。その操作がユーザ入力インタフェース４６を介してCPU４１に入力されると、CPU４１はそのボタンに対応した処理を実行する。例えば、発呼(CALL)ボタン７３は、予め設定した通話したい相手に接続要求を送信するとき操作される。このとき、図１０(A)に示すように、発呼インジケータ７４においては、左側から右側に向かって、発光部が移動して表示される。
【００５４】
相手側から呼び出しがあった場合、接続要求の受信を示す着信待ちインジケータ７６において、図１０(B)に示すように、右側から左側に向かって、発光部が移動して表示される。
【００５５】
着信待ちインジケータ７６の発光表示（呼び出し）に応答するためには、応答(catch)ボタン７５が操作される。
【００５６】
通話終了(Hang up)ボタン７７は、接続を解除するとき操作される。表示(Monitor on)ボタン７８は、表示部７１上の通話相手の映像表示をオン（図１１(B)）からオフ（図１１(A)）、またはオフからオンに切り替えるとき操作される。
【００５７】
表示切替(Full Screen)ボタン７９は、図１２(A)に示すように、表示部７１に表示されていた通話相手の映像を、図１２(B)に示すように、モニタ６−１の画面全体に拡大させて表示させるとき操作される。すなわち、表示切替ボタン７９が操作されたことをユーザ入力インタフェース４６が検知すると、CPU４１は、DVCRコントロールインターフェイス４４から専用シリアルケーブル１９−１を介して、リモートコントローラ１２−１を制御し、DVCR７−１の出力を、コントローラ１１−１から供給されるNTSC信号のデータ（GUI）から、トランスレータ１０−１から供給されるDVデータに切り換えさせるコマンドを送信させる。なお、図１２(B)に示した状態において、マウス４７がクリックされると、モニタ６−１の表示は、図１２(A)に示すGUIに復帰する。すなわち、マウス４７の操作が検知され、リモートコントローラ１２−１から、DVCR７−１の出力切替のコマンドが送信される。
【００５８】
CPU４１は、設定(Option)ボタン８０の操作に対応して、図１３に示すような設定入力ウィンドウを、モニタ６−１に重畳して表示させる。設定入力ウィンドウのトランスファアドレス入力部９１には、例えば、「192.168.1.1」のように、IPアドレスを用いて、接続相手のホームルータ４−２のアドレスが設定される。ホームルータアドレス入力部９２には、トランスレータ１０−１とコントローラ１１−１を接続するイーサカード２３のアドレスが、例えば、「192.168.1.2」のように、IPアドレスを用いて設定される。AMInetアドレスには、トランスレータ１０−１のATMカード２２（または、ATMインタフェース４５）のアドレス（第１のネットワークのアドレス）が、例えば、「192.168.2.1」のように、IPアドレスを用いて設定される。
【００５９】
パケットサイズ入力部９４には、送信するパケットの大きさが設定される。受信遅延入力部９５には、フレーム数を用いて、受信データのバッファの大きさが設定される。この設定を大きくすると、表示画面が途中で途切れることはなくなるが、データを受信後、そのデータが表示されるまでの遅延時間が大きくなり、設定を小さくすると、遅延時間は少なくなるが、表示される画像が途切れることがある。
【００６０】
チェックボックス９６がチェックされることにより、映像情報と音声情報の送信が設定され、チェックが外されることにより、音声情報のみの送信が設定される。チェックボックス９７がチェックされることにより、映像情報と音声情報の受信が設定され、チェックが外されることにより、音声情報のみの受信が設定される。なお、通常、チェックボックス９６，９７は、映像情報と音声情報を送受信するように設定（チェック）される。
【００６１】
リモートコントローラ初期化ボタン９８の操作に対応して、リモートコントローラ１２−１の初期化が設定される。チェックボックス９９では、リモートコントローラ１２−１の使用の有無が設定される。
【００６２】
OKボタン１００が操作されることにより、この設定入力ウィンドウに入力されたパラメータを用いて、過去の設定が更新されるとともに、設定入力ウィンドウが閉じられる。一方、キャンセルボタン１０１が操作された場合には、設定入力ウィンドウにおいて入力したパラメータが無効とされて、過去の設定は更新されず、設定入力ウィンドウが閉じられる。
【００６３】
図９の説明に戻る。リセット(Reset)ボタン８１は、表示部７１に表示される通話相手の映像が乱れた場合等に操作される。リセットボタン８１の操作に対応して、処理中の受信が中止され、再度、映像情報の受信処理が行われる。終了(End)ボタン８２は、テレビ電話アプリケーションを終了させるとき操作される。
【００６４】
テレビ電話アプリケーションのGUI処理について、図１４乃至図１６のフローチャートを参照して説明する。ステップＳ１において、CPU４１は、マウス４７により、発呼ボタン７３が押下されたか否かを判定する。CPU４１は、発呼ボタン７３が押下されたと判定した場合、ステップＳ２（図１５）に進む。ステップＳ２において、CPU４１は、設定入力ウィンドウにおいて予め設定されている情報に基づいて、接続要求をATMインタフェース４５を介して、第１のネットワークに出力する。
【００６５】
ステップＳ３において、CPU４１は、接続先（通話したい相手）からの接続要求に対する応答を、第１のネットワークを介してATMインタフェース４５が受信したか否かを判定する。ステップＳ３において、CPU４１は、ATMインタフェース４５が接続要求に対する応答を受信しないと判定した場合、ステップＳ４に進む。ステップＳ４において、CPU４１は、接続要求を送信してから所定の時間が経過したか否かを判定する。CPU４１は、所定の時間が経過していないと判定した場合、ステップＳ３に戻り、接続要求に対する応答を待つ。ステップＳ４において、CPU４１は、所定の時間が経過したと判定した場合、ステップＳ１に戻る。
【００６６】
CPU４１は、ステップ３において、応答を受信したと判定した場合、ステップＳ５に進む。ステップＳ５において、CPU４１は、受信した応答に含まれる接続先のAMInetIPアドレスとポート番号をメモリ５０に記憶させる。ステップＳ６において、CPU４１は、ATMインタフェース４５に、第１のネットワークの帯域を予約をさせる。ステップＳ７において、CPU４１は、第１のネットワークの帯域予約が成功したか否かを判定し、帯域予約が成功したと判定した場合、ステップＳ８に進む。
【００６７】
ステップＳ８において、CPU４１は、接続先との過去の送信設定（マッピングテーブル６２(図７のＤ)）がメモリ５０に存在するか否かを判定する。CPU４１は、接続先との過去の送信設定がメモリ５０に存在しないと判定した場合、ステップＳ９に進む。ステップＳ９において、CPU４１は、DVカメラ８−１が使用するIEEE1394のチャンネル番号、接続先のAMInetIPアドレス、およびポート番号を対応付けてマッピングテーブル６２(図７のＤ)を作成し、メモリ５０に記憶させる。なお、ステップＳ８において、接続先との過去の送信設定が存在すると判定された場合、その送信設定を利用するので、ステップＳ９の処理はスキップされる。
【００６８】
ステップＳ１０において、CPU４１は、IEEE1394インタフェース４２を介して、DVカメラ８−１に撮像を指令するAV制御コマンドを送信し、指定したIEEE1394のチャンネルに、DVデータ（画像データ、および音声データ）を出力させる。このDVデータは、ATMインターフェイス４５により、IPデータに変換されて第１のネットワークに出力される。
【００６９】
ステップＳ１１において、CPU４１は、接続先との過去の受信設定（マッピングテーブル６２(図８のＤ)）がメモリ５０に存在するか否かを判定する。接続先との過去の受信設定が存在しないと判定された場合、ステップＳ１２に進む。ステップＳ１２において、CPU４１は、接続先のホームルータ４−２のIPアドレスと自己のDVCR７−１が接続されているIEEE1394バス５−１のチャンネルとを対応付けて受信用のマッピングテーブル６２(図８のＤ)を作成し、メモリ５０に記憶させる。なお、ステップＳ１１において、接続先との過去の受信設定が存在すると判定された場合、その受信設定を利用するので、ステップＳ１２の処理はスキップされる。
【００７０】
ステップＳ１３において、CPU４１は受信処理を開始する。受信処理の詳細について、図１７のフローチャートを参照して説明する。ステップＳ５１において、ATMインターフェイス４５は、CPU４１の制御により、第１のネットワークからIPパケットを受信し、ネットワーク入力キュー６４に記録した後、バッファ６１に転送する。CPU４１は、メモリ５０に記憶されている受信設定（マッピングテーブル６２(図８のＤ)）を読み出して、IPパケットの出力チャンネルｍを決定する。
【００７１】
ステップＳ５２において、CPU４１は、バッファ６１のIPパケットをDVパケットに分離して、IEEE1394インタフェース４２のIEEE1394アイソクロナス出力キュー６６−ｍに転送する。
【００７２】
ステップＳ５３において、CPU４１は、ステップＳ５２で分離したDVパケットにタイミング情報が含まれるか否かを判定する。タイミング情報が含まれないと判定された場合、ステップＳ５２に戻って、DVデータの分離、転送を継続し、タイミング情報が含まれると判定された場合、そのタイミング情報をアイソクロナス出力タイミング制御部６５に供給する。
【００７３】
ステップＳ５４において、IEEE1394インタフェース４２は、アイソクロナス出力タイミング制御部６５が出力開始を指示するまで待機し、出力開始が指示された場合、ステップＳ５５に進む。
【００７４】
ステップＳ５５において、IEEE1394インタフェース４２は、アイソクロナス出力タイミング制御部６５が指示するタイミングに同期して、IEEE1394アイソクロナス出力キュー６６のDVデータをIEEE1394バス５−１に出力する。
【００７５】
このDVデータ（画像データ、および音声データ）は、IEEE1394バス５−１を介してDVCR７−１に入力され、音声データはそのまま、モニタ６−１に供給されて再生され、画像データは、図１１(B)に示したように、DVCR7-1で、GUIに組み込まれて、モニタ６−１に供給され、表示される。
【００７６】
ステップＳ１４（図１６）において、CPU４１は、通話終了ボタン７７が押下されたか否かを判定する。通話終了ボタン７７が押下されていないと判定された場合、ステップＳ１５に進む。ステップＳ１５において、CPU４１は、ATMインタフェース４５が、通話相手から通話終了の通知を受信したか否かを判定する。通話終了の通知を受信しないと判定された場合、ステップＳ１６に進む。
【００７７】
ステップＳ１６において、CPU４１は、表示ボタン７８が押下されたか否かを判定する。表示ボタン７８が押下されたと判定された場合、ステップＳ１７に進む。ステップＳ１７において、CPU４１は、表示部７１に通話相手の映像が表示されていればそれを消去させ、表示されていなければ表示させる。その後、処理はステップＳ１４に戻る。
【００７８】
ステップＳ１６において、表示ボタン７８が押下されていないと判定された場合、ステップＳ１８に進む。ステップＳ１８において、CPU４１は、表示切替ボタン７９が押下されたか否かを判定する。表示切替ボタン７９が押下されたと判定された場合、ステップＳ１９において、CPU４１は、DVCRコントロールインターフェイス４４を介して、リモートコントローラ１２−１に、DVCR７−１の出力を、トランスレータ１０−１から供給されるDVデータに切り換えさせるコマンドを送信させる。したがって、モニタ６−１には、図１２(B)に示すように、DVデータがフルスクリーン表示される。
【００７９】
ステップＳ２０において、CPU４１は、マウス４７がクリックされるまで、処理を待機し、マウス４７がクリックされたと判定すると、ステップＳ２１において、CPU４１は、DVCRコントロールインターフェイス４４を介して、リモートコントローラ１２−１に、DVCR７−１の出力を、コントローラ１０−１から供給されるGUIに切り換えさせるコマンドを送信させる。したがって、モニタ６−１には、図１２(A)に示すように、GUIが表示される。その後、処理は、ステップＳ１４に戻る。
【００８０】
ステップＳ１８において、表示切替ボタン７９が押下されていないと判定された場合、ステップＳ２２に進む。ステップＳ２２において、CPU４１は、リセットボタン８１が押下されたか否かを判定する。リセットボタン８１が押下されたと判定された場合、ステップＳ２３に進む。ステップＳ２３において、CPU４１は、ATMインタフェース４５を制御して、第１のネットワークからの受信を停止させ、ステップＳ２４において、上述した受信処理（ステップＳ１３における場合と同様の受信処理）を再実行する。
【００８１】
ステップＳ２２において、リセットボタン８１が押下されていないと判定された場合、ステップＳ１４に戻る。
【００８２】
ステップＳ１４において、通話終了ボタン７７が押下されたと判定された場合、ステップＳ１５において、相手先から終了通知が送信されてきたと判定された場合、並びに、ステップＳ７において、第１のネットワークの帯域予約が成功しなかったと判定された場合、ステップＳ２５に進む。ステップＳ２５において、CPU４１は、接続先に接続終了を通知する。ステップＳ２６において、CPU４１は、ATMインタフェース４５を制御して、第１のネットワークへのIPパケットの送信を停止させるとともに、IEEE1394インタフェース４２を介して、DVカメラ８−１にAV制御コマンドを送信して、DVデータの出力を停止させる。
【００８３】
ステップＳ２７において、CPU４１は、DVカメラ８−１が使用したIEEE1394のチャンネル番号、接続先のAMInetIPアドレス、およびポート番号を対応付ける送信用のマッピングテーブル６２(図７のＤ)の記録をメモリ５０から消去させる。
【００８４】
ステップＳ２８において、CPU４１は、ATMインタフェース４５を制御して、第１のネットワークの帯域予約を取り消させる。
【００８５】
ステップＳ２９において、CPU４１は、ATMインタフェース４５を制御して、第１のネットワークからの受信を停止させる。
【００８６】
ステップＳ３０において、CPU４１は、接続先のホームルータ４−２のIPアドレスと、自己のDVCR７−１が接続されたIEEE1394バスのチャンネルｍとを対応付ける受信用のマッピングテーブル６２(図８のＤ)の記録をメモリ５０から消去させる。その後、処理は、ステップＳ１に戻る。
【００８７】
説明は図１４に戻る。ステップＳ１において、発呼ボタン７３が押下されていないと判定された場合、ステップＳ３１に進む。ステップＳ３１において、CPU４１は、設定ボタン８０が押下されたか否かを判定する。設定ボタン８０が押下されたと判定された場合、ステップＳ３２に進む。ステップＳ３２において、CPU４１は、図１３に示した設定入力ウィンドウをモニタ６−１に表示させる。ここでユーザは各種の設定の入力を行う。処理はその後、ステップＳ１に戻る。
【００８８】
ステップＳ３１において、設定ボタン８０が押下されていないと判定された場合、ステップＳ３３に進む。ステップＳ３３において、CPU４１は、他のユーザからの着信があるか否か（ATMインターフェース４５が接続要求を受信したか否か）を判定する。着信がないと判定された場合、ステップＳ３４に進む。ステップＳ３４において、CPU４１は、終了ボタン８２が押下されたか否かを判定する。終了ボタン８２が押下されていないと判定された場合、ステップＳ１に戻る。また、終了ボタン８２が押下されたと判定された場合、CPU４１はGUI処理（テレビ電話アプリケーション）を終了する。
【００８９】
ステップＳ３３において、着信があると判定された場合、ステップＳ３５に進む。ステップＳ３５において、CPU４１は、応答ボタン７５が押下されたか否かを判定し、応答ボタン７５が押下されていないと判定した場合、ステップＳ３６に進む。ステップＳ３６において、CPU４１は、着信開始から所定の時間が開始したか否かを判定し、所定の時間が経過していなければ、ステップＳ３５に戻り、応答ボタン７５が押下されるまで待機する。ステップＳ３６において、所定の時間が経過したと判定された場合、ステップＳ１に戻る。
【００９０】
ステップＳ３５において、応答ボタン７５が押下されたと判定された場合、ステップＳ３７に進む。ステップＳ３７において、CPU４１は、着信（接続要求）に含まれる接続先のIPアドレスをメモリ５０に記憶する。さらに、CPU４１は、DVカメラ８−１が接続されるIEEE1394バス５−１のチャンネル番号ｎと、ホームルータ４−１のアドレスを、着信に対する応答として、ATMインタフェース４５を介して出力する。その後、ステップＳ６に進み、それ以降の処理が実行される。
【００９１】
このように、本実施の形態によれば、DVカメラ８が取り込んだDVデータ（映像と音声）をリアルタイムで通信することにより、いわゆるテレビ電話が実現できる。さらに、本実施の形態によれば、DVCR７が磁気テープから再生したDVデータを通信することも可能である。
【００９２】
ところで、IEEE1394バス５に規定されたアイソクロナスモードによるデータ転送においては、各データパケットの送出タイミングは、数百マイクロ秒程度の誤差しか許容されない。これは、CPU４１の非リアルタイムOS上で動作するソフトウエアにとっては、かなり厳しい条件である。
【００９３】
また、IEEE1394バス５−１−２上で動作するDVカメラ８−１で撮像した画像データを第１のネットワーク１を介して、IEEE1394バス５−２−１上で動作するDVCR７−２に転送する場合（IEEE1394バス５−２−２上で動作するDVカメラ８−２で撮像した画像を、第１のネットワーク１を介してIEEE1394バス５−１−１で動作するDVCR７−１に転送する場合も同様）、IEEE1394バス５−１−２とIEEE1394バス５−２−１のクロックのズレ（またはEEE1394バス５−２−２とIEEE1394バス５−１−１のクロックのズレ）が蓄積し、バッファ６１がオーバーフローしたり、アンダーフローしてしまう恐れがある。そこでこのようなオーバーフローまたはアンダーフローを防止する方法について、以下に説明する。
【００９４】
最初にその原理について説明する。いま例えば、DVカメラ８−２により取り込まれた画像をDVCR７−１に転送するものとする。CPU４１のOS上で転送を制御するアップリケーションは、アイソクロナス出力キュー６６のデバイスドライバに対して関数write()のシステムコールを出力することで、ネットワーク入力キュー６４からバッファ６１に書き込まれた、アイソクロナスパケットヘッダを含むDVカメラ８−２のデータの、アイソクロナス出力キュー６６への書き込み処理を実行する。アイソクロナス出力キュー６６に、数百パケット分のデータが書き込まれた後、アプリケーションは、パケットの送出開始を、アイソクロナス出力キュー６６のデバイスドライバに明示的に指示する。送出の開始を指示するとき、開始すべきバスサイクルを指定することが可能とされている。アイソクロナス出力キュー６６からの送出が開始されると、データは連続して送出されるので、アプリケーションは、書き込みを継続して実行する必要がある。
【００９５】
CPU４１への負荷を軽減するために、デバイスドライバは、バッファ６１内に数百パケット、ないし数千パケット分のデータを記憶させ、DMAをチェーンして、１回の割り込みで、数百パケット分のデータの送出が行われるようになされている。このため、リアルタイム性のないOSでも、毎秒８千回の（１２５マイクロ秒周期の）アイソクロナスサイクル毎に、パケットを送出することが可能となる。
【００９６】
データは、各アイソクロナスサイクル毎に１パケットずつ、IEEE1394バス５−１−１上に送り出される。DMA転送の失敗やその他の原因によってパケットが送出されなかった場合、デバイスドライバはバッファ６１内のデータを捨てることにより、サイクル数と、送出パケット数を対応させる。この処理は、DMA転送完了の後の割り込みにより行われるため、一時的にサイクルとパケットの対応にズレが生じるが、バッファ６１からデータが捨て去られるため、所定の時間の後（DMAから２回程度の割り込みの後）、ズレが解消される。ズレが解消されるまでの時間は、デバイスドライバのバッファサイズに関わりなく、DMAの遅延数によって決定されるので、比較的短い時間に設定することができる。
【００９７】
以上のようにして送出開始バスサイクルの指定と、サイクルとデータの対応を保証することにより、アプリケーションは、書き込むデータが実際にIEEE1394バス５−１−１に送出されるタイミングを正確に知ることが可能となる。これにより、アイスクロナスパケットを転送するメモリとしてのアイスクロナス出力キュー６６をFIFO構成としたこととあいまって、リアルタイム性の低いアプリケーションプロセスからアイソクロナスパケットのタイミングを制御することが可能となる。
【００９８】
次に図１８のフローチャートを参照して、CPU４１上で動作するアプリケーションが行う、アイソクロナスパケットの転送処理の詳細について説明する。ステップＳ７１において、CPU４１（アプリケーション）は、ネットワーク入力キュー６４からパケットを取り出す。ステップＳ７２において、CPU４１は、ステップＳ７１で取り出したパケットにタイムスタンプが含まれているか否かを判定する。タイムスタンプを有するパケットは、図１９に示すように構成されている。図１９におけるSYTがタイムスタンプを表す。タイムスタンプを有しないパケットは、図２０に示すように構成されており、タイムスタンプのフィールド（SYTのフィールド）の値は、すべて”１”とされている。
＆
図１９と図２０のパケットの構成において、Data length は、パケットの長さを表し、Tagは、アイソクロナスパケットのフォーマットに関するラベルを表している。channelは、IEEE1394バス５上のチャンネルの番号（０ないし６３の番号のいずれかの番号）を表す。Tcodeは、パケットの種類とトランザクションのタイプを表し、アイソクロナスデータの場合、”１０”の値に設定される。
【００９９】
Syはアプリケーション特有の制御のためのシンクロナイゼーションコード（Synchronization Code）を表している。Header CRC（Cyclic Redundancy Check）は、ヘッダのエラー検出用のコードを表す。すなわちData length, Tag,Channel, Tcode,SyのCRCがここに記述される。SIDは、source node ID、すなわちパケットの転送元のノード番号を表す。DBSは、Data block size（データブロックサイズ）を表す。
【０１００】
FNは、function number（ファンクション番号）を表す。QPC(Quadlet padding count)はパディングの数を表す。SPH(source packet header)は、データがソースパケットヘッダを含んでいるか否かを表している。DBC(Data block count)は、データブロックのシーケンシャル番号を表す。FMTは、フォーマット番号を表し、デジタルビデオの場合、”０”とされる。FDF（format dependent data）は、フォーマットに固有な情報を表す。
【０１０１】
IEC61883-1によれば、CIPヘッダのタイムスタンプとバスサイクルは、対応している必要があり、そのズレは数サイクルしか許容されていない（経験的には０サイクル乃至１サイクルしか許容されない）。以下においては、CIPヘッダのタイムスタンプの値を、必要に応じてそのパケットのタイミングとも称する。DVCにおいては、CIPヘッダにタイムスタンプを有しないパケットも存在するが、これらのパケットのタイミングは、タイムスタンプを持つパケットのタイミングから単純な線形補間により決定される。
【０１０２】
ステップＳ７２において、パケットにタイムスタンプが含まれていると判定された場合、ステップＳ７３に進み、パケットの数を表す変数nの値が１だけインクリメントされる。なおこの変数nは、後述するステップＳ８０において、データレートを見直すタイミングにおいて、”０”にリセットされている。
【０１０３】
次に、ステップＳ７４にいて、CPU４１はアイソクロナス出力キュー６６内のデータ量をアイソクロナス出力キュー６６に保持されたデータ量の累積値を表す変数Ｓに加算する。ステップＳ７５において、CPU４１はパケットのタイムスタンプにレートＲを乗算することで、タイムスタンプを修正する。
【０１０４】
ステップＳ７２において、パケットにタイムスタンプが含まれていないと判定された場合には、ステップＳ７３乃至ステップＳ７５の処理はスキップされ、処理はステップＳ７６に進む。
【０１０５】
ステップＳ７６において、CPU４１は、パケットを出力キュー６６に入れ、そのデータ量を、送信データ量の累積値を表す変数Ｎに加算する。ステップＳ７７において、CPU４１は、ステップＳ７３でインクリメントした変数ｎの値が予め設定した所定の値（例えば１００）に達したか否かを判定する。すなわちここで、レートＲを見直すタイミングになったか否かが判定される。ｎの値が１００に達していない場合には、ステップＳ７１に戻り、それ以降の処理が繰り返し実行される。
【０１０６】
ステップＳ７７において、ｎの値が１００に達したと判定された場合（レートＲを見直すタイミングになったと判定された場合）、ステップＳ７８に進み、CPU４１は、アイソクロナス出力キュー６６のデータ量の平均値Ａ（＝Ｓ／ｎ）、送信データ量の累積値Ｎ、並びに現在のレートＲから新しいレートＲを演算する。さらにステップＳ７９において、CPU４１は、次回の計算のために、平均値Ａを保存し、アイソクロナス出力キュー６６のデータ量を表す値Ｓ、および送信データ量の累積値Ｎの値をクリアする。すなわちＳの値とＮの値が”０”とされる。そしてステップＳ８０において、CPU４１は変数ｎの値を”０”にリセットし、その後、処理はステップＳ７１に戻り、それ以降の処理が繰り返し実行される。
【０１０７】
ステップＳ７６のパケットをアイソクロナス出力キュー６６に入れ、そのデータ量を送信データ量に加算する処理の詳細について、図２１のフローチャートを参照してさらに説明する。ステップＳ９１において、CPU４１は、パケットにタイムスタンプが含まれているか否かを判定し、含まれていない場合には、ステップＳ９２において線形補間によってタイムスタンプ（タイミング）を計算する。ステップＳ９１において、パケットにタイムスタンプ（タイミング）が含まれていると判定された場合、およびステップＳ９２において、線形補間によりタイムスタンプ（タイミング）が計算されたとき、ステップＳ９３において、CPU４１は、タイムスタンプ（タイミング）が、バスサイクルを表すサイクルカウンタの値VCtと、転送による遅延などから決定される所定の定数Ｄとの和（VCt＋Ｄ）より大きいか否か判定される。
【０１０８】
すなわち今対象とされているパケットが出力するタイミングであるか否かがここで判定される。パケットのタイムスタンプ（タイミング）が、カウンタの値VCtと、定数Ｄの和と等しいか、それより小さい場合には、まだそのパケットを出力するタイミングではないので、ステップＳ９４に進み、CPU４１は、アイソクロナス出力キュー６６に空パケットを入れ、カウンタの値VCtに１サイクルの長さを表す値Ｃを加算する。その後、処理はステップＳ９３に戻り、タイムスタンプの値と、カウンタの値VCtと定数Ｄの加算値との大きさが再び比較される。
【０１０９】
ステップＳ９４において、アイソクロナス出力キュー６６に挿入される空パケットのフォーマットが図２２に示されている。同図に示すように、この場合、データは全て１とされている。
【０１１０】
上述したように、書き込みの回数とデータが出力されるバスサイクルの対応が保証されているので、CPU４１は、関数write()を実行する度にカウンタの値VCtの値を増加することにより、次に関数write()を実行することによって書き込まれるデータが実際にバスに出力されるサイクルを簡単に知ることができる。この仮想サイクルと各パケットのタイミングを比較することにより、送出タイミングが決定される。
【０１１１】
実際のプログラムにおいては、各パケットのタイミングを線形補間で求めるために、タイムスタンプのないパケットは関数write()を実行せずにバファリングし、タイムスタンプのあるパケットを読みこんだ時点で、バファリングされているパケットのタイミングを求めてから、関数write()を実行するようにすることができる。CIPヘッダのタイムスタンプは、１／（１２×２５６）サイクルを最小単位としているので、カウンタの値VCtや、１サイクルの長さＣの値も、これを単位として計算される。
【０１１２】
ステップＳ９３において、タイムスタンプの値（タイミング）が、カウンタの値VCtに定数Ｄを加算した値より大きくなったと判定された場合、ステップＳ９５に進み、CPU４１はパケットをアイソクロナス出力キュー６６に入れ、カウンタの値VCtに１サイクルの長さを表す値Ｃを加算し、さらにそのときの送信データ量を送信データ量の累積値Ｎに加算する。次にステップＳ９６に進み、CPU４１は送信がスタート済みであるか否かを判定し、まだスタートしていない場合にはステップＳ９７に進み、アイソクロナス出力キュー６６に充分なパケットが保持されているか否かを判定する。アイソクロナス出力キュー６６に充分なパケットが既に保持されている場合には、ステップＳ９８において、CPU４１は送信をスタートさせる。アイソクロナス出力キュー６６にまだ充分なパケットが保持されていない場合には、ステップＳ９８の送信スタート処理はスキップされる。
【０１１３】
上述したように、CPU４１は、IEEE1394バス５−２−２のクロックと、IEEE1394バス５−１−１のクロックのズレを、アイソクロナス出力キュー６６に保持されているデータ量から間接的に推定する。デバイスドライバは、ドライバ内のデータ量をバイト単位で返す関数ioctl()を有している。この関数ioctl()は、ソフトウエア的なバッファ内のデータ量に加えて、DMAのレジスタの状態からDMAの実行状況を考慮に入れて、正確な値が得れれるようになっている。
【０１１４】
アプリケーションは、適当な間隔で、複数回データ量を調べ、結果を平均する処理を繰り返す。平均値を前回の値と比較し、増減を調べることにより、送り元のバスと、送り先のバスのクロックのズレを知ることができる。サンプリング回数をある程度多くすれば、サンプリング間隔にばらつきがあっても、よい結果を得ることができる。理論的には、サンプリング間隔はランダムでよい。
【０１１５】
関数write()のシステムコールで書き込まれたデータ量を記憶しておけば、クロックのズレを計算することができる。例えば、前回の平均値が５００KBであり、今回の平均値が５０１KBであったような場合、その間に書き込んだデータが１０００ＭＢであれば、クロックのズレは以下のように計算される。
【０１１６】
（５０１KB−５００KB）／１０００MB＝０．０００００１
すなわちこの場合においては、送信元のIEEE1394バス５−２−２のクロックの方が、１ppm(parts per million)程度、その間隔が短いことになる。
【０１１７】
このようなバスクロックのズレによるアイソクロナス出力キュー６６のデータ量の増減を抑止するために、レートＲが定義される。このレートＲの値は、例えば、１．００００１などのようなほぼ１に近い値である。
【０１１８】
キャプチャされたパケットP(i)(i=0,1,2,...n)のタイミングPt(i)は、レートＲにより次式で示すように修正され、Pt'(i)とされる。
【０１１９】
0004168302.tif 000002
なお、上式においては、R＝Rc/Rmとして、Rを２つの整数RcとRmで表し、Rm＝１００００００と固定し、Rcの値を変化させることによってレートＲを指定している。また、長時間送出が続けられた場合、Pt(i)−Ct0の値が非常に大きくなるので、上式においては、Ct(0)の代わりに、Pt'(i-1)が使用されている。
【０１２０】
アイソクロナス出力キュー６６内のデータは、Ｒの値を小さくすれば、速く送出され、Ｒの値を大きくすれば、遅く送出されることになる。レートＲの値を適当な値に選定することで、バス間のクロックのズレを吸収して、バッファ内のデータ量を一定に保つことができる。
【０１２１】
さらに誤差を小さくするために、整数除算の際の余りRest(i)を記憶し、次回の計算に用いるようにすることができる。この場合、レートＲによって修正されたタイミングPt'(i)は、式で表される。
【０１２２】
Pt'(i)=Pt'(i-1)+((Pt(i)−Pt(i-1))×Rc + Rest(i-1))/Rm
ここでRest(i)は次式で表される。
【０１２３】
Rest(i)=((Pt(i)−Pt(i-1))×Rc + Rest(i-1))
−((Pt(i)−Pt(i-1))×Rc + Rest(i-1))/Rm×Rm
上式は、((Pt(i)−Pt(i-1))×Rc + Rest(i-1))＝Ｂと置くと、
Rest(i)=Ｂ−(Ｂ/Rm)×Rm
となる。(Ｂ/Rm)×Rmの値は、代数的にはＢとなるが、整数演算を行うと、除算の丸め誤差により、Ｂとは異なる値となる。これが、Rest(i)となる。
【０１２４】
アイスクロナス出力キュー６６内のデータ量の平均値Ａを求めた後、所定の期間だけデータを出力してから、再びアイスクロナス出力キュー６６内のデータ量の平均値Ａ’を求めた場合、その間に関数write()で処理したデータの合計をＮ、送出レートをＲとすると、クロックのズレを解消するためのレートＲ’は、次のように求められる。
【０１２５】
R’=（Ｎ/(Ｎ + A’−Ａ)）×Ｒ
なおこの式は、直感的に導出されたもので、証明されたものではないが、経験的に、充分に有効であることが判明している。
【０１２６】
さらにアイソクロナス出力キュー６６内のデータ量を所定の値Ａ０に保ちたい場合には、下記のようにレートＲ’をさらに修正したレートＲ”を用いることができる。ここでＦは１／１０００乃至１／１０００００程度の定数である。
【０１２７】
R”= Ｒ’−(Ａ’−Ａ０)／Ａ０×Ｆ
アイソクロナスパケットの送出は専用のリンクチップにより行われるのが普通であり、フォーマット自体もAV機器などで実装するのに適したものとなされている。しかしながら本発明のような制御方式を用いれば、汎用のハードウェアとOSにより、ストリームの制御を行うことができる。
【０１２８】
今後、パーソナルコンピュータには、1394OHCI(1394 Open Host Controller Interface)と呼ばれる共通規格のIEEE1394リンクチップを使用したホストアダプタが標準で搭載されるようになると考えられるが、OHCI仕様は、PELEを基にしたものとなっているので、本発明のような制御方法が有効である。
【０１２９】
なお、以上においては、主にDVCフォーマットについて説明したが、多くの部分は、フォーマットに依存しないため、本発明は、他のフォーマットについても適用が可能である。
【０１３３】
【発明の効果】
請求項１に記載の情報受信装置、請求項５に記載の情報受信方法、および請求項７に記載の記録媒体によれば、第１のクロックと第２のクロックのズレに対応して、パケットに含まれる時刻情報を変更するようにしたので、非同期のクロックが用いられている異なるネットワーク間において、リアルタイムでデータを受信することが可能となる。
【図面の簡単な説明】
【図１】第１のネットワークの構成を示す図である。
【図２】本発明を適用したテレビ電話システムの構成を示すブロック図である。
【図３】図２のトランスレータ１０−１と他の装置との接続を示すブロック図である。
【図４】図２のコントローラ１１−１と他の装置との接続を示すブロック図である。
【図５】図２のトランスレータ１０−１とコントローラ１１−１を一体化したホームルータ４−１の構成を示すブロック図である。
【図６】図２のホームルータ４−１のデータ通信を説明する図である。
【図７】図２のホームルータ４−１のデータ通信を説明する図である。
【図８】図２のホームルータ４−１のデータ通信を説明する図である。
【図９】図２のモニタ６−１に表示されるGUIを説明する図である。
【図１０】図２のモニタ６−１に表示されるGUIを説明する図である。
【図１１】図２のモニタ６−１に表示されるGUIを説明する図である。
【図１２】図２のモニタ６−１に表示されるGUIを説明する図である。
【図１３】設定入力ウィンドウを示す図である。
【図１４】図２のテレビ電話システムのGUI処理を説明するフローチャートである。
【図１５】図２のテレビ電話システムのGUI処理を説明するフローチャートである。
【図１６】図２のテレビ電話システムのGUI処理を説明するフローチャートである。
【図１７】図１５のステップＳ１３の受信処理を説明するフローチャートである。
【図１８】レートの修正の動作を説明するフローチャートである。
【図１９】タイムスタンプを有するパケットのフォーマットを説明する図である。
【図２０】タイムスタンプを有しないパケットのフォーマットを説明する図である。
【図２１】図１８のステップＳ７６のより詳細な処理を説明するフローチャートである。
【図２２】空パケットのフォーマットを説明する図である。
【符号の説明】
１  第１のネットワーク，  ２  エッジルータ，  ３  バックボーンルータ，４  ホームルータ，  ５  IEEE1394バス，  ６  モニタ，  ７  DVCR，  ８  DVカメラ，  １０  トランスレータ，  １１  コントローラ，  １２  リモートコントローラ，  ４１  CPU，  ４２  IEEE1394インタフェース，  ４３  ビデオインタフェース，  ４４  DVCRコントローラインタフェース，  ４５  ATMインタフェース，  ４６  ユーザ入力インタフェース，  ４７  マウス，  ４８  ハードディスクインタフェース，  ４９  ハードディスク，  ５０  メモリ，  ５１  バス，  ６１  バッファ，  ６２  マッピングテーブル
【図１】
0004168302.tif 000003
【図２】
0004168302.tif 000004
【図３】
0004168302.tif 000005
【図４】
0004168302.tif 000006
【図５】
0004168302.tif 000007
【図６】
0004168302.tif 000008
【図７】
0004168302.tif 000009
【図８】
0004168302.tif 000010
【図９】
0004168302.tif 000011
【図１０】
0004168302.tif 000012
【図１１】
0004168302.tif 000013
【図１２】
0004168302.tif 000014
【図１３】
0004168302.tif 000015
【図１４】
0004168302.tif 000016
【図１５】
0004168302.tif 000017
【図１６】
0004168302.tif 000018
【図１７】
0004168302.tif 000019
【図１８】
0004168302.tif 000020
【図１９】
0004168302.tif 000021
【図２０】
0004168302.tif 000022
【図２１】
0004168302.tif 000023
【図２２】
0004168302.tif 000024