(57)【要約】【課題】  再生開始前のデータ蓄積量の低減化を図ることが可能な受信装置を提供する。【解決手段】  この受信装置２は、受信したデータを順次蓄積するデータ蓄積手段２３と、データ蓄積手段２３のデータ量が第１の基準値を超えたことに応じてデータを順次取出すデータ出力手段２４と、データ蓄積手段２３のデータ量が増加するようにデータ取出し速度を所定の速度に設定し、データ蓄積手段２３のデータ量が第２の基準値を超えた場合は所定の時間だけデータ取出し速度を高くするカウント手段２６とを備える。したがって、アンダーランを回避する必要が無いので、再生開始前のデータ蓄積量が小さくて済む。【選択図】        図２
2006049941.tif 000002
【特許請求の範囲】
【請求項１】
送信装置から通信網を介して送信されたデータを受信する受信装置であって、
受信したデータを順次蓄積するデータ蓄積手段、
前記データ蓄積手段に蓄積されたデータ量が予め定められた第１の基準値を超えたことに応じて前記データ蓄積手段に蓄積されたデータを順次取出すデータ出力手段、および
前記データ蓄積手段のデータ量が増加するように前記データ出力手段のデータ取出し速度を予め定められた速度に設定し、前記データ蓄積手段のデータ量が前記第１の基準値よりも高い予め定められた第２の基準値を超えた場合は所定の時間だけ前記データ出力手段のデータ取出し速度を高くする制御手段を備える、受信装置。
【請求項２】
前記第１の基準値は、前記通信網のジッタを吸収するために必要なデータ量である、請求項１に記載の受信装置。
【請求項３】
前記予め定められた速度は、前記データ蓄積手段のデータ量が時間比例して増加するように設定されている、請求項１または請求項２に記載の受信装置。
【請求項４】
前記所定の時間だけ高くされた前記データ出力手段のデータ取出し速度は、前記送信装置のデータ送信速度よりも速い、請求項１から請求項３までのいずれかに記載の受信装置。
【請求項５】
前記所定の時間は、前記データ蓄積手段のデータ量と前記第１の基準値との差に応じて長くなる、請求項１から請求項４までのいずれかに記載の受信装置。
【請求項６】
前記所定の時間と前記データ出力手段のデータ取出し速度の増加量との積は、前記データ蓄積手段のデータ量と前記第１の基準値との差に等しい、請求項５に記載の受信装置。
【請求項７】
前記制御手段は、
予め定められた周波数のクロック信号を発生するクロック発生手段、
前記クロック信号のパルス数をカウントし、そのカウント値に基づいてデータの取出しタイミングを決定するカウント手段、および
前記所定の時間だけ前記カウント手段のカウント値を増加させて前記データの取出しタイミングを早くするカウント値変更手段を含む、請求項１から請求項６までのいずれかに記載の受信装置。
【請求項８】
前記予め定められた速度は、前記送信装置のデータ送信速度の誤差範囲と前記クロック信号の周波数の誤差範囲とに基づいて、前記データ蓄積手段のデータ量が増加するように定められている、請求項７に記載の受信装置。
【請求項９】
前記制御手段は、
予め定められた周波数のクロック信号を発生するクロック発生手段、
前記クロック信号のパルス数をカウントし、そのカウント値に基づいてデータの取出しタイミングを決定するカウント手段、および
前記所定の時間だけ前記クロック信号の周波数を増加させて前記データの取出しタイミングを早くするクロック変更手段を含む、請求項１から請求項６までのいずれかに記載の受信装置。
【請求項１０】
前記受信装置が受信するデータは所定のデータ単位ごとにタイムスタンプ値を含み、
前記データ蓄積手段に蓄積されたデータ量は、蓄積された先頭のデータのタイムスタンプ値と最後尾のデータのタイムスタンプ値との差に基づいて求められる、請求項１から請求項９までのいずれかに記載の受信装置。
【請求項１１】
送信装置から通信網を介して送信されたデータを受信する受信装置における受信方法をコンピュータに実行させる受信プログラムであって、
受信したデータを前記受信装置のバッファに順次蓄積する第１のステップ、
前記バッファに蓄積されたデータ量が予め定められた第１の基準値を超えたことに応じて前記バッファに蓄積されたデータを順次取出す第２のステップ、および
前記バッファのデータ量が増加するように前記第２のステップにおけるデータ取出し速度を予め定められた速度に設定し、前記バッファのデータ量が前記第１の基準値よりも高い予め定められた第２の基準値を超えた場合は所定の時間だけ前記第２のステップのデータ取出し速度を高くする第３のステップを実行させる、受信プログラム。
【請求項１２】
請求項１１に記載の受信プログラムを記録した、コンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、受信装置、受信プログラム、および受信プログラムを記録した記録媒体に関し、特に、送信装置から通信網を介して送信されたデータを受信する受信装置、受信プログラム、および受信プログラムを記録した記録媒体に関する。
【背景技術】
【０００２】
近年、ホームネットワークにおいてＡＶデータなどのリアルタイムデータをＩＰ(Internet Protocol)パケットにより転送する技術が広がりつつある。この場合、エンコーダ（符号化回路）とデコーダ（復号化回路）のクロックのズレによって、単位時間あたりに伝送されるデータ量と、再生されるデータ量に違いがでてしまい画質の劣化等の問題を起こしてしまう可能性があった。
【０００３】
デジタルデータのリアルタイムストリーム伝送で一般的に用いられているＭＰＥＧ２−ＴＳでは、図１５に示すように、送信装置５１から受信装置５２にＰＣＲ信号とよばれる同期信号をデータと一緒に送信する。受信装置５２内のデコーダでは、ＰＣＲ信号に含まれる値およびＰＣＲ信号が入力された時間の情報に基づき、ＰＬＬ回路と呼ばれるクロックの同期を行う回路を用いて送信装置５１内のエンコーダのクロックを再現する。これにより、送信装置５１と受信装置５２のクロックのズレをなくしている。
【０００４】
しかし、ＰＬＬ回路を使った同期方式は、ネットワークにおける遅延の変動（ジッタ）が小さい場合に有効な技術であり、ＩＰデータ通信網のようなジッタが大きなネットワークにおいては有効ではない。このような問題を解決するために、一般に用いられているのがアダプティブクロック法と呼ばれる方法である。
【０００５】
この方法では、図１６に示すように、受信装置５３側で、受信データをデコーダに入力する前に、すべてのデータを一旦バッファリングし、受信側のクロック（一般にデコーダ内部のクロックとは別のクロック）に合わせて、デコーダに入力する。これにより、デコーダは、受信装置５３の受信バッファを駆動する時間情報に同期することになる。そのため、送信装置５１がデータを送出するクロックと、受信装置５３においてバッファがデコーダにデータを出力する速度とは異なることになる。そのため、受信バッファ内のデータは、長期的にみると、増加又は減少していくが、バッファに蓄積されたデータを監視し、蓄積データ量が上限値を超えたときデータ出力速度を速くし、データ蓄積量が下限値よりも低下したとき出力速度を遅くすることにより、バッファ溢れ（オーバーラン）やデータが足りなくなる（アンダーラン）現象を回避している（たとえば特許文献１参照）。
【０００６】
図１７は、受信バッファのバッファ量の変化を例示するタイムチャートである。図１７において、受信データのバッファリングが開始されると、受信バッファのバッファ量は一定の速度で増加する。バッファ量が再生開始位置に到達すると、受信バッファのデータはデコーダに出力される。データの出力速度が入力速度よりも速い場合は、バッファ量が減少する。これを放置するとアンダーランが生じるので、バッファ量がアンダーラン回避のための下限に到達したことに応じてデータの出力速度を入力速度よりも遅くする。データの出力速度を入力速度よりも遅くすると、バッファ量が増加する。これを放置するとオーバーランが生じるので、バッファ量がオーバーラン回避のための上限に到達したことに応じてデータの出力速度を入力速度よりも速くする。このようにしてオーバーランとアンダーランが回避される。
【特許文献１】特開２００２−１６５１４８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
このように、ネットワークにジッタがある通信網においては、再生データがなくなることを防ぐためにバッファリングが必要となる。データの伝送速度と再生速度が全く同じであれば、再生開始前にジッタの最大値に応じた量のデータをバッファリングし、再生を開始するのが一般的である。
【０００８】
しかし、クロックのズレにより伝送速度よりも再生速度が速い場合は、長期的にみるとバッファ量は減少していく。実際ネットワークのジッタによるバッファの変動と比べてクロックのズレによるバッファ量の減少は非常に小さいため、バッファ量がネットワークのジッタの増減で動く範囲内でクロックのズレを検知することは困難である。
【０００９】
一方、ネットワークの状態は、様々な要因により、局所的に突然悪くなりパケットの到着が遅れる（＝ジッタが大きくなる）ことがあり、再生開始までに、ネットワークのジッタ分しかデータをバッファリングしていないとすると、クロックのズレにより減少していたデータ量＋ネットワークのジッタにより減少しデータ量がバッファからなくなってしまうことになり、結果としてアンダーランが生じてしまう。そのため、一般にアンダーランの発生を回避するために、再生開始前に、クロックのズレによりアンダーランの発生が起こらないようにさらに多くの量のデータをバッファリングする必要があり、最悪の場合を想定すると、必要なバッファ量は、図１８に示すように、クロックのズレがない場合の２倍になる。
【００１０】
したがって、従来の技術では、再生開始前に長時間のバッファリングが必要となり、ユーザの操作に対するレスポンスが悪いという問題があった。
【００１１】
また、バッファリングを行うための大容量のバッファが必要となり、コスト高になっていた。
【００１２】
それゆえに、この発明の主たる目的は、再生開始前のデータ蓄積量の低減化を図ることが可能な受信装置、受信プログラムおよび受信プログラムを記録した記録媒体を提供することである。
【課題を解決するための手段】
【００１３】
この発明に係る受信装置は、送信装置から通信網を介して送信されたデータを受信する受信装置であって、受信したデータを順次蓄積するデータ蓄積手段と、データ蓄積手段に蓄積されたデータ量が予め定められた第１の基準値を超えたことに応じてデータ蓄積手段に蓄積されたデータを順次取出すデータ出力手段と、データ蓄積手段のデータ量が増加するようにデータ出力手段のデータ取出し速度を予め定められた速度に設定し、データ蓄積手段のデータ量が第１の基準値よりも高い予め定められた第２の基準値を超えた場合は所定の時間だけデータ出力手段のデータ取出し速度を高くする制御手段とを備えたものである。
【００１４】
また、この発明に係る受信プログラムは、送信装置から通信網を介して送信されたデータを受信する受信装置における受信方法をコンピュータに実行させる受信プログラムであって、受信したデータを受信装置のバッファに順次蓄積する第１のステップと、バッファに蓄積されたデータ量が予め定められた第１の基準値を超えたことに応じてバッファに蓄積されたデータを順次取出す第２のステップと、バッファのデータ量が増加するように第２のステップにおけるデータ取出し速度を予め定められた速度に設定し、バッファのデータ量が第１の基準値よりも高い予め定められた第２の基準値を超えた場合は所定の時間だけ第２のステップのデータ取出し速度を高くする第３のステップを実行させるものである。
【００１５】
また、この発明に係るコンピュータ読み取り可能な記録媒体は、上記受信プログラムを記録したものである。
【発明の効果】
【００１６】
この発明に係る受信装置および受信プログラムでは、データ蓄積量が増加するようにデータ取出し速度を予め定められた速度に設定するので、通信網のジッタを吸収する分だけデータを蓄積すれば足りる。したがって、通信網のジッタとクロックずれによるアンダーランを回避するために必要なデータ量を蓄積していた従来に比べ、再生開始前のデータ蓄積量が小さくて済む。よって、再生開始前のデータ蓄積時間で短くて済むので、ユーザの操作に対するレスポンスが速くなる。また、データ蓄積容量が小さくて済むので、低コスト化を図ることができる。
【００１７】
また、データ蓄積量が第２の基準値を超えた場合は所定の時間だけデータ取出し速度を高くするので、ジッタの影響によってデータ蓄積量の変動が激しい場合でも、データ取出し速度を頻繁に制御する必要がない。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の一実施の形態によるネットワークシステムについて説明する。本実施の形態は、遅延変動が大きな通信網を経由するリアルタイム通信において、通信を開始してから再生開始までの時間を短縮させるものである。
【００１９】
なお、本実施の形態においては、本発明がＩＰ（Internet Protocol）ネットワークを通じてＲＴＰ（Real Time Protocol）を用いたＭＰＥＧ２のリアルタイムストリーム伝送に適用された例について述べる。ただし、本発明はこれに限定されるものではない。
【００２０】
図１は、本発明の一実施の形態によるネットワークシステムの構成を示すブロック図である。このネットワークシステムは、たとえば、テレビやハードディスクレコーダ（以下、ＨＤＲ）、デジタルチューナーなどの様々な家庭内の機器が接続されたネットワークである。このネットワークシステムでは、たとえば、ＩＰ（Internet Protocol）のようなネットワークプロトコルを用いて通信が行われる。
【００２１】
送信装置１は、受信装置（たとえばテレビ）２との間でリアルタイムストリーム伝送を行うリアルタイムデータの送信装置であり、たとえば、通信機能を備えたビデオ、ＨＤＲ、デジタルチューナーなどである。送信装置１は、通信ネットワーク３を介して受信装置２と接続される。機器４，５は、通信ネットワーク３に接続されるその他の機器である。
【００２２】
図２は、送信装置１および受信装置２の構成を示すブロック図である。図２において、送信装置１はエンコーダ１１および送信処理部１４を含み、受信装置２は受信処理部２１およびデコーダ２７を含む。
【００２３】
エンコーダ１１は、所定の入力に対して、ＭＰＥＧ２で規定されている符号化規則に従って符号化を行い、ＭＰＥＧ２のデータを出力する符号化装置である。エンコーダ１１は、エンコーダ１１の時刻の基準となるクロック信号を発生するクロック発生手段１２と、そのクロック信号に同期してデータの符号化を行う符号化手段１３とを含む。
【００２４】
送信処理部１４は、処理手段１５およびネットワーク接続手段１６を含み、エンコーダ１１から出力されたデータをネットワーク３上で伝送可能なフォーマットにし、ネットワーク３に出力するものである。処理手段１５は、図３の示すように、エンコーダ１１から出力されるＭＰＥＧ２データに対して、ＲＴＰヘッダ，ＴＣＰヘッダ，ＩＰヘッダの各ヘッダを付加する。ＲＴＰヘッダは、シーケンス番号、タイムスタンプなどを含む。これにより、ＭＰＥＧ２のデータがＩＰネットワーク上で伝送可能になる。図２に戻って、ネットワーク接続手段１６は、処理手段１５で生成されたＩＰパケットを通信ネットワーク３へ出力するものであり、たとえば、イーサネット（登録商標）(Ethernet（登録商標））カードである。
【００２５】
次に、受信装置２について説明する。受信装置２は、送信装置１からのリアルタイムストリームデータの受信を行うものであり、たとえば、通信機能を備えたテレビや液晶プロジェクタなどである。受信装置２は、ネットワーク３から伝送されたデータを受信する受信処理部２１と、受信したデータの復号化を行うデコーダ２７とを含む。受信処理部２１はネットワーク接続手段２２、データ蓄積手段２３、データ出力手段２４、クロック発生手段２５およびカウント手段２６を含み、デコーダ２７は復号化手段２８およびクロック発生手段２９を含む。
【００２６】
ネットワーク接続手段２２は、受信装置２と通信ネットワーク３を接続するためのものであり、たとえば、イーサネット（登録商標）カードである。送信装置１から送信されたデータはネットワーク接続手段２２で受信される。データ蓄積手段２３は、ネットワーク接続手段２２にて受信したデータをデコーダ２７に出力する前に、一時的に蓄積するためのバッファと、バッファ制御するための制御処理機能とを含む。
【００２７】
データ出力手段２４は、データ蓄積手段２３で蓄積されたデータを、カウント手段２６でカウントされるカウント値と受信データに含まれる時刻情報とに基いてデコーダ２７に出力する。
【００２８】
クロック発生手段２５は、デコーダ２７への出力時間を決定するための基準として用いるクロック信号を発生する。カウント手段２６は、クロック発生手段２５で発生されたクロック信号のパルス数をカウントし、所定の規則に従って調整したカウント値をデータ出力手段２４に提供する。
【００２９】
復号化手段２８は、データ出力手段２４から出力されたデータ（ＭＰＥＧ２）の復号化を行う。クロック発生手段２９は、出力されたデータに含まれる時刻情報とデータが入力されたタイミングから受信したデータの再生を行うためのクロック信号を生成し、そのクロック信号を復号化手段２８に与える。
【００３０】
次に、受信装置２がリアルタイムデータを受信する際の詳細な動作について説明する。図４に示すように、受信処理部２１の各手段は、その内部にそれぞれの手段を機能させるための処理機能を有しており、それぞれが協調して動作することにより受信処理が実現される。
【００３１】
受信処理部２１が起動されると、データ蓄積手段２３においてデータ受信処理が起動され、カウント手段２６においてクロックカウント処理が起動され、データ出力手段２４においてバッファリング処理が起動される。データ受信処理とクロックカウント処理は常時実行され、バッファリング処理は、所定の条件になればデータ出力処理を起動し終了される。受信処理部２１は、ＣＰＵ（Central Processing Unit）と、記録媒体とを含んでいる。記録媒体には、上記各処理をＣＰＵに実行させるためのプログラムが格納されている。ＣＰＵは、記録媒体からプログラムを読み出して各処理を実行する。
【００３２】
図５は、データ蓄積手段２３のデータ受信処理を示すフローチャートである。データ受信処理が起動されると、ステップＳ１においてデータ蓄積手段２３は、ネットワーク接続手段２２からパケットを受信したか否かを判定し（Ｓ１）、受信したら（Ｓ１でＹＥＳ）次のステップＳ２に進む。受信していなければ（Ｓ１でＮＯ）再度ステップＳ１の判定処理を行う。ステップＳ１の判定処理は、パケットを受信するまで続けられる。ステップＳ２では、受信したパケットのデータを蓄積用のバッファへ書込む。
【００３３】
データは、図６に示すように、バッファの指定された書込位置（buffer_tail）に書き込まれ、バッファの指定された読出位置（buffer_head）から読み出される。図５に戻って、データの書込みが完了したら、ステップＳ３に進む。ステップＳ３では、バッファの書込位置（buffer_tail）を１つ進めるとともに、受信したパケットのＲＴＰヘッダのタイムスタンプ値を変数ta_rtp_tsに書込む。ステップＳ３が終了するとステップＳ１に戻り、一連の処理を繰り返す。
【００３４】
図７は、データ出力手段２４のバッファリング処理を示すフローチャートである。バッファリング処理が起動されると、ステップＳ１１においてデータ出力手段２４は、データ蓄積手段２３内のバッファに最初のパケットのデータが書き込まれているが、確認がまだであるか否かを判定する。最初のパケットのデータがバッファに書き込まれているが確認がまだである場合は、カウント手段２６から取得した現在のカウント値COUNTを変数fr_rtp_ti（最初のパケットの受信時間）に書込み（Ｓ１２）、最初のパケットのＲＴＰヘッダに含まれるタイムスタンプ値を変数fr_rtp_tsおよび変数he_rtp_ts（バッファの先頭のパケットのタイムスタンプ値）に書込み（Ｓ１３）、出力開始時間start_tiの算出を行う（Ｓ１４）。
【００３５】
出力開始時間start_tiは、最初のパケットを受信してから、所定の時間MAX_SAVE経過後に設定する。MAX_SAVEは、通常ネットワーク上で想定される最大のジッタ分の時間が設定される。たとえば、３００ｍｓｅｃである。ステップＳ１１の判定でＮＯとなるかステップＳ１４の処理が完了したら、ステップＳ１５に進む。ステップＳ１５では、カウント手段２６から取得したカウント値COUNTが出力開始時間start_tiを越えたらバッファリング処理を終了してデータ出力処理へ移り、出力開始時間start_tiになっていなければステップＳ１１に戻り、一連の処理を繰り返す。１度ステップＳ１２からステップＳ１４の処理を完了した後は、最初のパケットの確認は完了したことになるので、ステップＳ１１での判定処理は常にＮＯになる。
【００３６】
図８は、データ出力手段２４のデータ出力処理を示すフローチャートである。データ出力処理が起動されると、ステップＳ２１においてデータ出力手段２４は、バッファの先頭位置（buffer_headの位置にあるパケット）をバッファから取り出す。次に、取り出したパケットのＲＴＰのタイムスタンプと、カウント手段２６から取得したカウント値COUNTを比較し、取り出したパケットが出力開始時間start_tiになったか否かを確認する（Ｓ２２）。
【００３７】
出力開始時間start_tiになったら（Ｓ２２でＹＥＳ）、取り出したパケットをデコーダ２７に書込み（Ｓ２３）、出力開始時間start_tiになっていなければ、出力開始時間start_tiになるまで、ステップＳ２２の処理を繰り返す。パケットをデコーダ２７に書き込んだらバッファからの読出位置（buffer_head）をインクリメントし、先頭のパケットのデータのタイムスタンプ値を変数he_rtp_tsに書込む（Ｓ２４）。
【００３８】
ステップＳ２４の処理が完了したら、ステップＳ２５においてバッファ補正動作中か否か、すなわちフラグBUF_REVISEがTRUEか否かの判定を行う。フラグBUF_REVISEがTRUEでない場合は、カウント手段２６のクロックカウント処理においてバッファのオーバーランを防ぐためにカウントアップの速度が通常よりもアップしている。BUF_REVISEがTRUEであれば（Ｓ２５でＹＥＳ）、ステップＳ２１に戻り、FALSEであれば（Ｓ２５でＮＯ）、バッファ量が所定の閾値（ADJUST_BORDER）を超えているか否かの判定を行う。ここで、バッファ量は、バッファの最後のパケットのタイムスタンプ値(ta_rtp_ts)からバッファの先頭のパケットのタイムスタンプ値he_rtp_tsを減算して算出する。バッファ量が所定の閾値を超えている場合は（Ｓ２６でＹＥＳ）、ステップＳ２７においてBUF_REVISEをTRUEに設定してバッファ補正を開始する。超えていない場合（Ｓ２６でFALSE）は、ステップＳ２１に戻る。
【００３９】
図９および図１０は、カウント手段２６のクロックカウント処理を示すフローチャートである。クロックカウント処理が起動されると、ステップＳ３１においてカウント手段２６は、クロック手段２５からの基準クロック信号のパルスを取得する。基準クロック信号のパルスを取得したら、ステップＳ３２において、基準クロック信号のパルス数をカウントする変数Ｃ０をインクリメントする。
【００４０】
次に、フラグBUF_REVISEのチェックを行い、バッファ補正処理が動作中か否かの判定を行う（Ｓ３３）。フラグBUF_REVISEがFALSE（Ｓ３３でＮＯ）であれば、オーバーラン回避のための補正は行われていない状態であり、基準クロックカウント値Ｃ０に対する単位時間当たりの調整量total_adjustをS_ADJUSTに設定する（Ｓ３４）。
【００４１】
この補正は、データ出力手段２４による出力開始後にデータ蓄積手段２３においてバッファアンダーランが発生するのを防止するために行なわれる。S_ADJUSTは、送信装置１のクロック発生手段１２と受信装置２の受信処理部２１のクロック発生手段２５との誤差の範囲を元に算出される値であり、これにより、カウント手段２６のカウントするカウント値COUNTのカウントアップの速度が送信装置１のクロック発生手段１２の出力によって得られるカウント値のカウントアップの速度よりも遅くなるように調整される。たとえば、送信装置１のクロック発生手段１２の動作クロックがＭＰＥＧ２の仕様で規定されている２７ＭＨｚ±３０ｐｐｍで、受信装置２の受信処理部２１のクロック発生手段２５も同じ２７ＭＨｚ±３０ｐｐｍであるならば、S_ADJUST=１６２０以上に設定する必要がある。ステップＳ３４の終了後はステップＳ３８に進む。
【００４２】
一方、BUF_REVISEがTRUE（Ｓ３３でＹＥＳ）であれば、オーバーラン回避のための補正の実行が必要となる。まずステップＳ３５において、補正修了時刻を表す変数end_adjustがゼロか否かを判定する。end_adjustがゼロの場合は、本ステップが実行される直前にデータ出力処理のステップＳ２６においてバッファ量の補正が必要だと判定されたということであり、現在のバッファの状態から、補正の終了時刻をend_adjustに設定する（Ｓ３６）。
【００４３】
補正の終了時刻の算出は、例えば、次のように行う。図１１に示すように、補正の継続時間をｔとし、クロックのアップの速度変化に伴うバッファからの出力速度の変化をΔＶとすると、補正を行わない場合と比べた出力量の増加分Ｄは、Ｄ=ΔＶ×ｔで与えられる。また、補正時の単位時間当たりのクロックカウントの変化量はB_ADJUSTであるので、ΔＶ＝B_ADUST ×（１タイムスタンプあたりのバイト数）とすることが可能となる。
【００４４】
一方、バッファに残っているデータのバイト数は、（ta_rtp_ts − he_rtp_ts）×（１タイムスタンプあたりのバイト数）で算出可能であるが、補正後アンダーランを起こさないためには、ネットワークジッタを吸収できるだけのデータ、すなわちMAX_SAVE分のデータ残しておけばよい。つまり、図１２に示すように、最大でＤmax=（ta_rtp_ts − he_rtp_ts − MAX_SAVE）×（１タイムスタンプあたりのバイト数）分のデータをバッファから減少させてもよいことになる。
【００４５】
ここで、補正を行うことによる出力データ量の増加分ＤがＤmaxとなるときが最大の補正継続時間ｔとなるときであり、ΔＶ×t＝Ｄより、補正継続時間ｔ＝Ｄmax／ΔＶを得る。これによって得られたｔを現在時刻に加算することで補正終了時刻の算出を行う。
【００４６】
ステップＳ３５でＹＥＳと判定された場合、またはステップＳ３６で終了時間の設定が終わった場合は、ステップＳ３７において基準クロックカウントＣ０に対する単位時間当たりの調整量total_adjustをS_ADJUST − B_ADJUSTに設定する。
【００４７】
これにより、カウント手段２６のカウントするカウント値COUNTのカウントアップの速度が送信装置１のクロック発生手段１２の出力によって得られるカウント値のカウントアップの速度よりも速くなるように調整される。たとえば、送信装置１のクロック発生手段１２の動作クロックがＭＰＥＧ２の仕様で規定されている２７ＭＨｚ±３０ｐｐｍで、受信装置２の受信処理部２１のクロック発生手段２５も同じ２７ＭＨｚ±３０ｐｐｍであるならば、S_ADJUST=３２４０以上に設定する必要がある。
【００４８】
次いでステップＳ３８において、クロックを補正する周期Ｔを計算する。周期Ｔは、基準クロックにてカウントされる１秒あたりのカウント数Ｋを１秒あたりのクロックの調整数total_adjustで除算することによって得られる（Ｔ=Ｋ/total_adjust)。ステップＳ３９において、基準クロックのカウント値Ｃ０を周期Ｔで割った余りがゼロか否かを判別し、ゼロでない場合はステップＳ４０において補正せずにカウントし（COUNT=COUNT＋１)、ゼロの場合はステップＳ４１に進む。
【００４９】
ステップＳ４１では、クロックを速めるのか遅くするのか、すなわちＴ＞０か否かを判別し、Ｔ＞０でない場合はステップＳ４２においてクロックを通常よりも速く進め（COUNT=COUNT＋２)てステップＳ４３に進み、Ｔ＞０である場合はステップＳ４３に進む。
【００５０】
ステップＳ４３では補正終了時刻になった（COUNT>end_adjustかつBUF_REVISE=TRUE）か否かを判別し、補正終了時刻でない場合はステップＳ３１に戻り、補正終了時刻である場合はステップＳ４４で補正を終了し（end_adjust=0,BUF_REVISE=FALSE）、ステップＳ３１に戻る。
【００５１】
図１３は、データ蓄積手段２３に含まれる受信バッファのバッファ量の変化を例示するタイムチャートである。図１３において、受信データのバッファリングが開始されると、受信バッファのバッファ量は一定の速度で増加する。バッファ量が再生開始位置に到達すると、受信バッファのデータはデコーダ２７に出力される。再生開始位置は、従来よりも低くなる。
【００５２】
データの出力速度は、必ずデータの入力速度よりも遅く設定される。したがって、バッファ量が増大する。これを放置するとオーバーランが生じるので、バッファ量がオーバーラン回避のための上限に到達したことに応じてデータの出力速度を所定時間だけ高くする。これにより、バッファ量は下降する。このようにして、バッファ量は上限付近に維持される。
【００５３】
なお、、本実施の形態では、クロック発生手段２５で生成された一定周波数のクロック信号から得られるカウント値を補正することで、出力速度の制御を行っていたが、例えば、ＶＣＯ（電圧制御発振器）を用いて、クロック発生手段２５の動作周波数を変動させることにより、出力速度の制御を行う例も考えられる。
【００５４】
また、本実施の形態では、補正処理の実行において、単位時間あたりの補正値を固定し、補正の継続時間を算出する例について示したが、補正時間を固定し、補正値を変動させるような例も考えられる。
【００５５】
また、本実施の形態では、受信装置２をテレビとして例示しているが、たとえば、テレビに内蔵される通信制御回路として構成される場合もあるし、テレビとは別個の装置として構成される場合もある。
【００５６】
図１４は、そのような受信装置３０の外観を示す図である。図１４において、この受信装置３０は、コンピュータ本体３１、ディスプレイ装置３２、ＦＤ（Flexible Disk）３４が装着されるＦＤドライブ３３、キーボード３５、マウス３６、ＣＤ−ＲＯＭ（Compact Disc-Read Only Memory）３８が装着されるＣＤ−ＲＯＭ装置３７、およびネットワーク通信装置３９を含む。受信装置３０の機能を実現するプログラム（以下、受信プログラムと呼ぶ。）は、ＦＤ３４またはＣＤ−ＲＯＭ３８等の記録媒体によって供給される。受信プログラムがコンピュータ本体３１によって実行されることにより、上述した受信動作が実行される。また、受信プログラムは他のコンピュータより通信回線およびネットワーク通信装置３９を経由し、コンピュータ本体３１に供給されてもよい。
【００５７】
また、上述の受信装置３０において行なわれる受信方法を、プログラムとして提供することもできる。このようなプログラムは、コンピュータ本体３１に付属するＦＤ３４、ＣＤ−ＲＯＭ３８などのコンピュータ読取り可能な記録媒体に記録して、プログラム製品として提供することもできる。あるいは、コンピュータ本体３１に内蔵するハードディスクなどの記録媒体に記録させて、プログラムを提供することもできる。また、ネットワークを介したダウンロードによって、プログラムを提供することもできる。
【００５８】
提供されるプログラム製品は、ハードディスクなどのプログラム格納部にインストールされて実行される。なお、プログラム製品は、プログラム自体と、プログラムが記録された記録媒体とを含む。また、記録媒体はＦＤ３４、ＣＤ−ＲＯＭ３８に限定されるものではなく、磁気テープ、ＭＯ（Magnetic Optical disk）、ＭＤ（Mini Disc）、ＤＶＤ（Digital Versatile Disc）、ＩＣ（Integrated Circuit）カードなどであってもよい。
【００５９】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【００６０】
【図１】この発明の一実施の形態によるネットワークシステムの構成を示すブロック図である。
【図２】図１に示した送信装置および受信装置の構成を示すブロック図である。
【図３】図２に示した処理手段の動作を説明するための図である。
【図４】図２に示した受信処理部の動作を説明するためのブロック図である。
【図５】図４に示したデータ受信処理を示すフローチャートである。
【図６】図４に示したデータ蓄積手段に含まれるバッファを示す図である。
【図７】図４に示したバッファリング処理を示すフローチャートである。
【図８】図４に示したデータ出力処理を示すフローチャートである。
【図９】図４に示したクロックカウント処理を示すフローチャートの一部分である。
【図１０】図９に示したフローチャートの残りの部分である。
【図１１】図９に示した補正終了時刻の算出方法を説明するためのタイムチャートである。
【図１２】図９に示した補正終了時刻の算出方法を説明するための他のタイムチャートである。
【図１３】図１〜図１２に示した受信装置の動作を例示するタイムチャートである。
【図１４】この実施の形態の変更例を示す図である。
【図１５】従来のネットワークシステムの構成を示すブロック図である。
【図１６】従来の他のネットワークシステムの構成を示すブロック図である。
【図１７】図１６に示した受信バッファのバッファ量を例示するタイムチャートである。
【図１８】図１６に示したネットワークシステムの問題点を説明するためのタイムチャートである。
【符号の説明】
【００６１】
１，５１  送信装置、２，３０，５２，５３  受信装置、３  通信ネットワーク、４，５  機器、１１  エンコーダ、１２，２５，２９  クロック発生手段、１３  符号化手段、１４  送信処理部、１５  処理手段、１６，２２  ネットワーク接続手段、２１  受信処理部、２３  データ蓄積手段、２４  データ出力手段、２６  カウント手段、２７  デコーダ、２８  復号化手段、３１  コンピュータ本体、３２  ディスプレイ装置、３３  ＦＤドライブ、３４  ＦＤ、３５  キーボード、３６  マウス、３７  ＣＤ−ＲＯＭ装置、３８  ＣＤ−ＲＯＭ、３９  ネットワーク通信装置。
【図１】
2006049941.tif 000003
【図２】
2006049941.tif 000004
【図３】
2006049941.tif 000005
【図４】
2006049941.tif 000006
【図５】
2006049941.tif 000007
【図６】
2006049941.tif 000008
【図７】
2006049941.tif 000009
【図８】
2006049941.tif 000010
【図９】
2006049941.tif 000011
【図１０】
2006049941.tif 000012
【図１１】
2006049941.tif 000013
【図１２】
2006049941.tif 000014
【図１３】
2006049941.tif 000015
【図１４】
2006049941.tif 000016
【図１５】
2006049941.tif 000017
【図１６】
2006049941.tif 000018
【図１７】
2006049941.tif 000019
【図１８】
2006049941.tif 000020