(57)【特許請求の範囲】
【請求項１】
ストリームデータのパケット間の再生時刻のインターバルを抽出する第1の抽出手段と、
前記ストリームデータのパケット間の受信時刻のインターバルを抽出する第２の抽出手段と、
連続する前記再生時刻のインターバルを所定数積算し、第１の時間を求める第1の積算手段と、
連続する前記受信時刻のインターバルを所定数積算し、第２の時間を求める第２の積算手段と、
前記第１の時間と前記第２の時間との差分を平滑化する平滑化手段と、
前記平滑化手段により平滑化された前記第１の時間と前記第２の時間との差分が１クロック分のずれとなるパケット数毎に、前記再生時刻に１クロック分の時間を加算、または、減算して再生時刻を調整する調整手段と、
を備えることを特徴とする情報処理装置。
【請求項２】
前記再生時刻は、タイムスタンプである
ことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
ストリームデータより再生時刻を抽出する第1の抽出ステップと、
前記ストリームデータの受信時刻を抽出する第２の抽出ステップと、
連続する前記再生時刻のインターバルを所定数積算し、第１の時間を求める第１の積算ステップと、
連続する前記受信時刻のインターバルを所定数積算し、第２の時間を求める第２の積算ステップと、
前記第１の時間と前記第２の時間との差分を平滑化する平滑化ステップと、
前記平滑化ステップの処理により平滑化された前記第１の時間と前記第２の時間との差分が１クロック分のずれとなるパケット数毎に、前記再生時刻に１クロック分の時間を加算、または、減算して再生時刻を調整する調整ステップと
を含むことを特徴とする情報処理方法。
【請求項４】
前記再生時刻は、タイムスタンプである
ことを特徴とする請求項３に記載の情報処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、情報処理装置および方法、記録媒体、並びにプログラムに関し、特に、ストリームデータを、ネットワークを介して受信する際に生じる、ストリームデータに付されたタイムスタンプとのクロック誤差を調整して、補正できるようにした情報処理装置および方法、記録媒体、並びにプログラムに関する。
【０００２】
【従来の技術】
インターネットおよびIP(Internet Protocol)関連などのネットワーク技術の継続成長によって、IPベースのネットワークを介したストリームデータの送受信の要求が高まりつつある。
【０００３】
ネットワークを介したストリームデータの送受信処理は、例えば、ライブ(同時実況)中継放送、または録画した遠隔学習用画像の転送、IPネットワークを介したパーソナルコンピュータへのテレビ放送などに応用される。このような、ストリームデータの送受信処理は、一般に、インターネットを介して実行される。
【０００４】
ところで、インターネットを介したデータの通信、例えば、TCP/IP（Transmission Control Protocol/Internet Protocol）などでは、「プル(pull)」モードと呼ばれる通信方法が使用されており、データを転送するのに最適となるように設計されている。プルモードとは、送信側の装置と受信側の装置が相互に通信し、送信側の装置から送信されてくるデータを受信側の装置がバッファリングする際、オーバーフローしそうになると、送信側の装置が送信速度を低下させ、受信側の装置がアンダーフローしそうになると送信側の装置が通信速度を上げるなど、バッファリングに必要な状態を維持できるように通信させるモードである。
【０００５】
このため、ポイント・トゥ・ポイントで接続された端末間のインターネットを介した通信処理においては、ストリームデータの転送中に遅延が生じることがあっても、受信側の装置と送信側の装置との間でストリームデータの再生に障害が発生しない構成となっている。
【０００６】
【発明が解決しようとする課題】
しかしながら、デジタルA/V放送サービスなどでは、リアルタイムでのストリームデータの配信を目指しているため、大容量の送信チャンネルと必要最小容量の戻りチャンネル（または戻りチャンネルのない）からなる「プッシュ(push)」モードの通信が要求される。ここでいう、プッシュモードとは、送信側の装置が一方的に、受信側の装置にデータを送信するモードを示す。
【０００７】
このため、送信側の装置と、受信側の装置間では、ストリームデータの再生に必要とされるタイムスタンプに記録された再生時刻と、実際にストリームデータが受信された受信時刻との間にジッタが生じてしまう。結果として、このジッタによりバッファオーバーフローやバッファアンダーフローが発生してしまい、通常のデコーダでストリームデータをデコードすることができなくなってしまうという課題があった。
【０００８】
また、送信側の装置と受信側の装置が、それぞれに自らの動作に必要なクロックを備えているが、一般に、受信側の装置（クライアントコンピュータなど）は、クロック精度が保証されていないため、送信側の装置で符号化されたストリームデータに含まれる再生時刻の情報と、受信側の装置でストリームデータを受信したときの受信時刻を比較した場合、一致しないと言ったことが生じてしまうことがあり、受信側の装置において、ストリームデータを正確に復号できない恐れがあると言う課題があった。
【０００９】
さらに、SONET/SDH（Synchronous Optical Network/Synchronous Digital Hierarchy）などのクロックの同期が管理された回線では、データ伝送に係るジッタは、ほぼ０に管理されているが、クロックが非同期となっているATM（Asynchronous Transfer Mode）では、セルの衝突を回避させる目的で、セルの交換機によるセルジッタが発生する。このセルジッタは、国内では1.5ms以下、国際的に見ても2乃至3ms以下に抑えられている。この程度のジッタであれば、例えば、MPEG（Moving Picture Experts Group）などで定められている500ns以下のジッタ補正を行うために、MPEGデコーダが通常採用しているPLL（Phase Locked Loop）などを工夫して回線ジッタを吸収することが可能である。
【００１０】
しかしながら、IPベースのデータ転送においては、バックボーンと、その末端に存在する装置とを結ぶLAN（Local Area Network）スイッチやIPルータなどで大きなジッタが発生する。また、LANスイッチやIPルータなどの接続数が増えるに連れて（ホップ数が増えるに連れて）、ジッタは大きくなる。
【００１１】
こういった問題が存在するため、LANスイッチに代表される機器の性能は向上されてきており、スイッチング自体がハードウェアにより高速で行えるようにされてきているが、複数のポート入力からパケットの衝突が起きた場合、ファーストインファーストアウトの原則に基づいて、バッファに一時的に蓄えられる時間がジッタとなる。
【００１２】
さらに、スイッチングにおいて、ソフトウェアの処理が含まれている場合、その処理に費やされる時間が定まらないため、さらにジッタが増加する。結果として、低遅延のリアルタイムでのストリームデータの転送を考えた場合、ある程度管理された回線を利用する必要があるが、実際のジッタは、10ms乃至1sec程度となるので、従来のPLLを用いた方法では、ジッタの補正が行えず、符号化を行った送信側の装置のクロックを受信側の装置で再現することができない。結果として、受信側の装置では、ストリームデータを正確に再生させることができないという課題があった。
【００１３】
本発明はこのような状況に鑑みてなされたものであり、ネットワークを介してストリームデータを送信する側の装置が、ストリームデータを符号化するときに使用したクロックを、受信側の装置で補正し、より正確に再現できるようにするものである。
【００１４】
【課題を解決するための手段】
本発明の情報処理装置は、ストリームデータのパケット間の再生時刻のインターバルを抽出する第1の抽出手段と、ストリームデータのパケット間の受信時刻のインターバルを抽出する第２の抽出手段と、連続する再生時刻のインターバルを所定数積算し、第１の時間を求める第1の積算手段と、連続する受信時刻のインターバルを所定数積算し、第２の時間を求める第２の積算手段と、第１の時間と第２の時間との差分を平滑化する平滑化手段と、平滑化手段により平滑化された第１の時間と第２の時間との差分が１クロック分のずれとなるパケット数毎に、再生時刻に１クロック分の時間を加算、または、減算して調整手段とを備えることを特徴とする。
【００１５】
前記再生時刻は、タイムスタンプとするようにすることができる。
【００１９】
本発明の情報処理方法は、ストリームデータより再生時刻を抽出する第1の抽出ステップと、ストリームデータの受信時刻を抽出する第２の抽出ステップと、連続する再生時刻のインターバルを所定数積算し、第１の時間を求める第１の積算ステップと、連続する受信時刻のインターバルを所定数積算し、第２の時間を求める第２の積算ステップと、第１の時間と第２の時間との差分を平滑化する平滑化ステップと、平滑化ステップの処理により平滑化された第１の時間と第２の時間との差分が１クロック分のずれとなるパケット数毎に、再生時刻に１クロック分の時間を加算、または、減算して再生時刻を調整する調整ステップとを含むことを特徴とする。
前記再生時刻は、タイムスタンプとするようにすることができる。
【００２２】
本発明の情報処理装置および方法、並びにプログラムにおいては、ストリームデータのパケット間の再生時刻のインターバルが抽出され、ストリームデータのパケット間の受信時刻のインターバルが抽出され、連続する再生時刻のインターバルが所定数積算され、第１の時間が求められ、連続する受信時刻のインターバルが所定数積算され、第２の時間が求められ、第１の時間と第２の時間との差分が平滑化され、平滑化された第１の時間と第２の時間との差分が１クロック分のずれとなるパケット数毎に、再生時刻に１クロック分の時間が加算、または、減算されて再生時刻が調整される。
【００２３】
【発明の実施の形態】
図１は、本発明に係る画像表示装置２の一実施の形態の構成を示す図である。
【００２４】
本発明の画像表示装置は、ネットワークを介して配信されてくるストリームデータ、例えば、MPEG（Moving Picture Experts Group）２などで圧縮されて配信されるトランスポートストリーム（以下、TSとも称する）をリアルタイムで受信して、表示部２９に表示させるものである。
【００２５】
I/F（インターフェース）１１は、ネットワーク１を介してコンテンツなどを配信するサーバより送信されてくるTSを受信し、DMA（Direct Memory Access controller）１２に出力する。DMA１２は、スイッチ１３を適宜制御しながら、I/F１１から入力されてくるTSをRAM１４に記憶させたり、または、RAM１４に記憶されたTSをタイムスタンプ抽出部１５、イネーブル信号抽出部２０、およびバッファ２７に出力する。
【００２６】
タイムスタンプ抽出部１５は、TSに含まれているタイムスタンプTxをTSパケット単位で抽出し、Txインターバル演算部１６、および、調整部２５に出力する。ここでいうタイムスタンプTxは、MPEGのPCR（Program Clock Reference）に対応するものである。このPCRは、RTP（Real Time Protocol）でいうタイムスタンプと同等のものであるので、本説明においては、タイムスタンプに統一して称するものとする。
【００２７】
Txインターバル演算部１６は、入力されたTSパケットのタイムスタンプTxの情報から連続するTSパケット間のタイムスタンプTxのインターバル、すなわち、連続するTSパケットの持つタイムスタンプTxの時刻情報の差分となる時間（以下、Txインターバルと称する）を求め、Txインターバル積算カウンタ１７、および、Txインターバルカウンタ１８に出力する。
【００２８】
Txインターバル積算カウンタ１７は、Txインターバル演算部１６よりTSパケット毎に順次入力されるTxインターバルを積算し、サンプリング周期信号発生部３０よりサンプリング周期信号が入力されるタイミングでその積算値を読み出して、減算器１９に出力する。
【００２９】
Txインターバルカウンタ１８は、Txインターバル演算部１６より出力されるTxインターバルの個数をカウントし、サンプリング周期信号発生部３０よりサンプリング周期信号が入力されるタイミングでTxインターバルの個数をDiv（割算器）２４に出力する。
【００３０】
イネーブル信号抽出部２０は、スイッチ１３より供給されるTSからイネーブル信号を抽出してRxインターバル演算部２１に出力する。
【００３１】
Rxインターバル演算部２１は、イネーブル信号抽出部２０より供給されてくるイネーブル信号のタイミングである、TSパケットが受信された時刻Rxに基づいて、連続する複数のTSパケットの受信された時刻間のインターバル（以下、Rxインターバルと称する）を求め、Rxインターバル積算カウンタ２２に出力する。
【００３２】
Rxインターバル積算カウンタ２２は、Rxインターバル演算部２１よりTSパケット毎に順次入力されるRxインターバルを積算し、サンプリング周期信号発生部３０よりサンプリング周期信号が入力されるタイミングでその積算値を読み出して、減算器１９に出力する。
【００３３】
減算器１９は、Txインターバル積算カウンタ１７より入力されるTxインターバルの積算値（以下、Σ（Tx（ｉ＋１）−Tx（ｉ））とも称する）から、Rxインターバル積算カウンタ２２より入力されるRxインターバルの積算値（以下、Σ（Rx（ｉ＋１）−Rx（ｉ））とも称する）を減算して、その差分ΔT（＝Σ（Tx（ｉ＋１）−Tx（ｉ））−Σ（Rx（ｉ＋１）−Rx（ｉ）））をLPF２３に出力する。
【００３４】
LPF２３は、減算器１９からサンプリング周期信号の発生間隔で順次出力される差分ΔTを平滑化してDiv（割算器）２４に出力する。
【００３５】
Div（割算器）２４は、LPF２３より入力されてくる差分ΔTをTxインターバルカウンタ１８から入力されてくるTxインターバルの個数で除して調整パケット数Cを求めて調整部２５に出力する。
【００３６】
調整部２５は、Div２４から入力された調整パケット数Cに基づいて、調整しようとする調整パケット番号Ｓを求め、その調整パケット番号Ｓに対応するTSパケット以降のTSパケットに対して、加算係数Ａの値に対応するクロック数の時間をタイムスタンプTxに加算、または、減算してずらすことによりタイムスタンプTxとTSパケットの受信時刻とのずれを調整して、読出信号生成部２６に出力すると共に、加算係数Ａを１インクリメント、または、１デクリメントしたとき、Txインターバル積算カウンタ１７、Rxインターバル積算カウンタ２２、および、Txインターバルカウンタ１８をリセットする。また、調整パケット番号Ｓに基づいて、調整がなされた場合、その値を完了調整パケット番号Ｔとして更新し、さらに、その完了調整パケット番号Ｔに、新たな調整パケット数Ｃを加算することにより、新たな調整パケット番号Ｓを求める。尚、加算係数Ａ、調整パケット番号Ｓ、および、完了調整パケット番号は、自らのメモリ２５ａに記憶されている。また、このタイムスタンプTxの調整方法については詳細を後述する。
【００３７】
読出信号生成部２６は、調整部２５より入力されるタイムスタンプTxの時刻情報に基づいて、対応するTSパケットの読出信号を対応する時刻に生成してバッファ２７に出力する。バッファ２７は、スイッチ１３から入力されたTSパケットを一時的に記憶して、読出信号生成部２６より読出信号が入力されるとき、対応するTSパケットを読み出してデコード部２８に出力する。デコード部２８は、バッファ２７より入力されたTSパケットに基づいて、MPEG２方式などの所定の方式でTSを復号して表示部２９に表示させる。
【００３８】
サンプリング周期信号発生部３０は、所定の時間間隔でTxインターバルカウンタ１８、Txインターバル積算カウンタ１７、および、Rxインターバル積算カウンタ２２に対して記憶されている値を読み出させるタイミングを示す信号を所定のサンプリング周期で出力する。尚、このサンプリング周期は、実質的に、イネーブル信号が入力されるタイミングと同じであってもよいので、イネーブル信号で代用するようにしてもよい。
【００３９】
次に、タイムスタンプTxの調整について説明する。
【００４０】
図２で示すように、TSパケットPKT（ｍ），PKT（ｍ＋1），PKT（ｍ＋２）・・・PKT（ｎ−２），PKT（n−1），PKT（n）が連続的に存在するものとする。尚、ここでパケットPKT（ｍ）のタイムスタンプ（再生が指定されている時刻）はTx（ｍ）で示されており、また、パケットPKT（ｎ）のタイムスタンプはTx（ｎ）で示されている。
【００４１】
理想的な状態では、パケットPKT（ｍ）が受信される時刻Rx（ｍ）とパケットPKT（ｎ）が受信される時刻Rx（ｎ）との関係は、Tx（ｍ）−Tx（ｎ）＝Rx（ｍ）−Rx（ｎ）となるはずである。
【００４２】
しかしながら、実際には、インターネットなどのネットワークを介した通信により受信されるTSパケットは、上述のような様々な要因によりずれが生じることがある。この場合、時間の関係は、例えば、図３で示すようになる。すなわち、上段の各TSパケットの受信時刻RxのRxインターバルの積算値Σ（Rx（ｉ＋１）−Rx（ｉ））（ｉ＝ｍ乃至ｎ−１：以下においても同じ）と、各TSパケットのタイムスタンプTxの積算値Σ（Tx（ｉ＋１）−Tx（ｉ））（＝ｔ）（ｉ＝ｍ乃至ｎ−１：以下においても同じ）との間には、差分ΔTで示す実質的な誤差が生じる。
【００４３】
図３で示す関係から、単位時間当りの誤差（1クロック当りの誤差）はΔT／ｔで示されることになる。したがって、１TSパケットあたりの誤差CLK(1PKT)は、以下の式（１）で示すような関係となる。
【００４４】
【数１】
0003846578.tif 000002
【００４５】
結果として、図４で示すように、１TSパケット毎に受信時刻のインターバルRx（ｉ）から実際の式（１）で求めることができる誤差CLK(1PKT)となる時間を調整することで、正確なタイムスタンプTxに補正することが可能となる。
【００４６】
ところが、ハードウェアの処理は、時間の最小単位であるクロックの時間幅よりも短い時間での処理を実行することができない。このため、式（１）の処理により小数点以下の値が生じる場合、すなわち、割り切れない場合、１個のTSパケット毎に、図４で示すように式（１）を用いてタイムスタンプTxを調整することができない。
【００４７】
そこで、1クロック分の誤差が生じるTSパケット数を調整パケット数Cとして求め、調整パケット数C毎に1クロック分の時間を加算、または、減算することでタイムスタンプTxを調整する。
【００４８】
ここで、調整パケット数Ｃは、以下に示す式（２）で示すように、誤差CLK(1PKT)の逆数となる。
【００４９】
【数２】
0003846578.tif 000003
【００５０】
さらに、この式（２）は、式（３）で示すように変形することができる。ここで、N-PKTは、積算されるTxインターバルが図３の時間ｔとなるときのパケット数である。さらに、式（３）のTxインターバル（Tx（ｉ＋１）−Tx（ｉ））をキャンセルすると、式（４）で示すような関係が得られる。
【００５１】
式（４）で示すように、パケット数N-PKTをTxインターバルの積算値からRxインターバルの積算値を減じた値、すなわち、差分ΔTで除することにより調整パケット数Cが求められる。
【００５２】
ここで、図５，図６のフローチャートを参照して、図１の画像表示装置による画像表示処理について説明する。
【００５３】
ステップＳ１において、調整部２５は、メモリ２５ａの加算係数Ａを０に初期化する。このとき、Txインターバルカウンタ１８、Txインターバル積算カウンタ１７、および、Rxインターバル積算カウンタ２２も初期化されて０となる。また、調整パケット番号Ｓ、および、完了調整パケット番号Ｔは１に初期化される。
【００５４】
ステップＳ２において、I/F１１は、ネットワーク１を介して送信されてくるTSパケットを順次受信し、DMA１２に出力する。ステップＳ３において、DMA１２は、入力されたTSを順次スイッチ１３に出力し、ステップＳ４において、そのスイッチを制御して適宜RAM１４を使用しながら、順次バッファ２７、タイムスタンプ抽出部１５、および、イネーブル信号抽出部２０に出力する。
【００５５】
ステップＳ５において、バッファ２７は、スイッチ１３を介して入力されるTSパケットを順次記憶する。ステップＳ６において、タイムスタンプ抽出部１５は、TSパケットからタイムスタンプTxを抽出してTxインターバル演算部１６および調整部２５に出力する。
【００５６】
ステップＳ７において、Txインターバル演算部１６は、入力されたタイムスタンプTxからTxインターバルを演算し、Txインターバル積算カウンタ１７、および、Txインターバルカウンタ１８に出力する。すなわち、例えば、図７Ａで示すように各TSパケット（１）乃至（１２）の各タイムスタンプTxが、タイムスタンプ時刻Tx（１）乃至Tx（１２）である場合（尚、各カッコ内の番号はパケットの番号である）、パケット（１）とパケット（２）のTxインターバルは、Tx（２）−Tx（１）として演算され、パケット（２）とパケット（３）のTxインターバルは、Tx（３）−Tx（２）として演算され、順次同様にしてTxインターバルを演算する。尚、図７Ａは、タイムスタンプTxとTxインターバルの関係を示し、図７Ｂは、TSパケットの受信時刻RxとRxインターバルの関係を示しており、各（）内の番号は、TSパケットの番号であり、以降においても同様に示す。
【００５７】
ステップＳ８において、Txインターバル積算カウンタ１７は、入力されたTxインターバルを積算して記憶する。すなわち、例えば、Txインターバル積算カウンタ１７は、パケット（２）が入力される場合、Txインターバル（Tx（２）−Tx（１））が記憶され、パケット（３）が入力されるときTxインターバル（Tx（３）−Tx（２））が入力されると共に、それまでに記憶されていた値に積算されるので、Txインターバル積算カウンタ１７には、Txインターバル（Tx（２）−Tx（１））＋（Tx（３）−Tx（２））が記憶される。
【００５８】
ステップＳ９において、イネーブル信号抽出部２０は、TSパケットからイネーブル信号抽出し、そのイネーブル信号からTSパケットの受信時刻Rxを求めて、Rxインターバル演算部２１に出力する。ステップＳ１０において、Rxインターバル演算部２１は、TSパケットが受信された時刻Rx間の差分からRxインターバルを求める。
【００５９】
すなわち、図７Ｂで示すように各TSパケット（１）乃至（９）を受信した時刻をRx（１）乃至Rx（９）で示す場合、例えば、TSパケット（２）が受信されるとき、TSパケット（２）が受信された時刻Rx（２）と、その前に受信されているTSパケット（１）が受信された時刻Rx（１）とのRxインターバルが（Rx（２）−Rx（１））として求められ、この値がRxインターバル積算カウンタ２２に出力される。
【００６０】
また、その次のタイミングで、図７Ｂのパケット（３）でイネーブル信号が検出された場合、その前のパケット（２）が受信された時刻Rx（２）とパケット（３）が受信された時刻Rx（３）の差分（Rx（３）−Rx（２））がRxインターバルとして求められて、これがRxインターバル積算カウンタ２２に出力される。さらに、同様の処理がなされる。尚、イネーブル信号は、実際には、所定数の複数のTSパケットが受信される毎に出力されるものである。
【００６１】
ステップＳ１１において、Rxインターバル積算カウンタ２２は、入力されたRxインターバルを積算して記憶する。すなわち、上述のようにパケット（２）が受信された場合、Rxインターバル積算カウンタ２２は、入力されたRxインターバル（Rx（２）−Rx（１））のみを記憶していることになる。また、同様にして、引き続きパケット（３）が入力されたタイミングでは、差分（Rx（３）−Rx（２））が積算されて、（Rx（２）−Rx（１））＋（Rx（３）−Rx（２））が記憶されることになる。以下、順次同様の処理が繰り返されることになる。
【００６２】
ステップＳ１２において、Txインターバルカウンタ１８は、Txインターバル演算部１６より入力されてくるTxインターバルの個数をカウントして記憶する。
【００６３】
ステップＳ１３において、サンプリング周期信号発生部３０がサンプリング周期信号を出力し、Txインターバルカウンタ１８、Txインターバル積算カウンタ１７、および、Rxインターバル積算カウンタ２２に入力されたか否かが判定され、サンプリング周期信号が入力されなかった場合、その処理は、ステップＳ１に戻り、サンプリング周期信号が出力されるまでステップＳ２乃至Ｓ１３の処理が繰り返される。
【００６４】
ステップＳ１３において、サンプリング周期信号が発生されたと判定された場合、ステップＳ１４において、Txインターバル積算カウンタ１７は、Txインターバルの積算値Σ（Tx（ｉ＋１）−Tx（ｉ））を減算器１９に出力し、Rxインターバル積算カウンタ２２は、Rxインターバルの積算値Σ（Rx（ｉ＋１）−Rx（ｉ））を減算器１９に出力し、さらに、Txインターバルカウンタ１８は、カウントして記憶されているTxインターバルの個数をDiv２４に出力する。
【００６５】
例えば、図７Ａ，Ｂの場合、TSパケットが1個おきに受信されるタイミングでサンプリング周期信号が入力されるとき、例えば、最初にTSパケット２が受信されるタイミングでサンプリング周期信号が入力されるものとすると、Txインターバル積算カウンタ１７には、パケット（１），（２）のタイムスタンプTx（２）とTx（１）との差分（Txインターバル）が記憶されていることになるので、Σ（Tx（ｉ＋１）−Tx（ｉ））＝（Tx（２）−Tx（１））がTxインターバル積算カウンタ１７から出力されることになる。また、Rxインターバル積算カウンタ２２には、パケット（１），（２）の受信時刻Rx（１）とRx（２）との差分（Rxインターバル）が加算されていることになるので、Σ（Rx（ｉ＋１）−Rx（ｉ））＝（Rx（２）−Rx（１））がRxインターバル積算カウンタ２２から出力されることになる。
【００６６】
また、TSパケット４が受信されるタイミングでサンプリング周期信号が受信される場合、Txインターバル積算カウンタ１７には、パケット（１）乃至（４）のタイムスタンプTx（１）乃至Tx（４）の各差分（Txインターバル）が加算されていることになるので、Σ（Tx（ｉ＋１）−Tx（ｉ））＝（Tx（２）−Tx（１））＋（Tx（３）−Tx（２）＋（Tx（４）−Tx（３））＝（Tx（４）−Tx（１））が減算器１９に出力されることになる。同様にして、Rxインターバル積算カウンタ２２には、パケット１乃至４の受信時刻の各差分（Rxインターバル）が加算されていることになるので、Σ（Rx（ｉ＋１）−Rx（ｉ））＝（Rx（２）−Rx（１））＋（Rx（３）−Rx（２）＋（Rx（４）−Rx（３））＝（Rx（４）−Rx（１））がRxインターバル積算カウンタ２２から出力されることになる。
【００６７】
ステップＳ１５において、減算器１９は、Txインターバルの積算値Σ（Tx（ｉ＋１）−Tx（ｉ））からRxインターバルの積算値Σ（Rx（ｉ＋１）−Rx（ｉ））を減算し、差分ΔT（＝Σ（Tx（ｉ＋１）−Tx（ｉ））−Σ（Rx（ｉ＋１）−Rx（ｉ）））を求めてLPF２３に出力する。
【００６８】
すなわち、例えば、図７Ａ，Ｂの場合、TSパケット（２）が受信されるタイミングでは、Txインターバル積算カウンタ１７から出力されるΣ（Tx（ｉ＋１）−Tx（ｉ））＝（Tx（２）−Tx（１））からΣ（Rx（ｉ＋１）−Rx（ｉ）＝（Rx（２）−Rx（１））が減算されて、差分ΔTが出力される（ΔTのクロック数が出力される）。尚、説明を簡単にするため、図７Ａでは、１個のTxインターバルが１クロックになるものとし、さらに、Txインターバルの４倍がRxインターバルの３倍に等しいものとする。この場合、差分ΔTは、ΔT＝Σ（Tx（ｉ＋１）−Tx（ｉ））−Σ（Rx（ｉ＋１）−Rx（ｉ））＝（Tx（２）−Tx（１））−（Rx（２）−Rx（１））＝１−３／４＝−１／３（クロック）となる。
【００６９】
同様にして、TSパケット４が受信されるタイミングでサンプリング周期信号が受信される場合、差分ΔTは、ΔT＝（Tx（４）−Tx（１））−（Rx（４）−Rx（１））＝３−４＝−１（クロック）となる。以降についても、同様にして求められる。
【００７０】
ステップＳ１６（図６）において、LPF２３は、入力された差分ΔTを平滑化してDiv２４に出力する。すなわち、実際のRxインターバルは、図７Ｂで示すような一定の間隔とはならないので、差分ΔTについても同様に変化することになるため、平滑化処理を行う。結果として、Rxインターバルにばらつきが発生しても、安定した差分ΔTの値を設定することができる。
【００７１】
ステップＳ１７において、Div２４は、LPF２３により平滑化された差分ΔTで、Txインターバルカウンタ１８より入力されたTxインターバルの個数N-PKTを割ることにより式（４）で示した演算を実行し、調整パケット数Cを求め調整部２５に出力する。
【００７２】
すなわち、上述のように図７Ａ，Ｂの場合、パケット（２）が入力されるとき、差分ΔTは−１／３（クロック）となり、Txインターバルの数は、パケット（１），（２）間の１個であるので調整パケット数Cは、C＝１／（−１／３）＝−３個となる。
【００７３】
同様にして、パケット（４）が入力されるとき、差分ΔTは１（クロック）となり、Txインターバルの数は、パケット（１），（２）間，パケット（２），（３）間，パケット（３），（４）間の３個であるので調整パケット数Cは、C＝３／（−１）＝−３個となる。
【００７４】
図７の場合、TxインターバルとRxインターバルの関係が変化しないので、いずれのタイミングでも調整パケット数は、同一となるが、実際には、Rxインターバルが変化するので、調整パケット数Cは、一定とはならないこともある。
【００７５】
ステップＳ１８において、調整部２５は、求められた調整パケット数Ｃに基づいて、調整パケット番号Ｓを求める。すなわち、調整部２５は、１クロック分の時間を加算し始めた完了調整パケット番号Ｔに、今現在の調整パケット数Ｃの絶対値を加算して、実際に調整を行う調整パケット番号Ｓを求める。例えば、最初の処理の場合、その前に１クロック分の時間が加算される調整がなされたTSパケットが存在しないが、処理が開始されるときTSパケット（１）では、調整がなされていることになるので、初期値としてＳ＝１が設定されるので、求められた調整パケット数Ｃを加算することにより、調整パケット番号Ｓ＝４（＝１＋３）となる。
【００７６】
ステップＳ１９において、調整部２５は、今現在のTSパケットが、調整パケット番号に対応するTSパケットであるか否かを判定する。すなわち、図７Ａ，Ｂの場合、調整パケット番号Ｓ＝４であるが、図７Ｂのパケット２が入力されるタイミングでは、調整パケット番号Ｓ＝４ではないと判定され、その処理は、ステップＳ２０に進む。
【００７７】
ステップＳ２０において、調整部２５は、タイムスタンプ抽出部１５よりこのタイミング以降に供給されてくるタイムスタンプTxにクロック数×加算係数Ａの時間を加算する。今の場合、加算係数Ａは０であるので、実質的にタイムスタンプTxを調整することなく、そのまま読出信号生成部２６に出力する。すなわち、ステップＳ１９において、調整パケット番号ではないということは、タイムスタンプTxとTSパケットの受信された時刻Rxのずれが１クロック未満であることになるので、タイムスタンプTxの調整は行われない。
【００７８】
ステップＳ２１において、読出信号生成部２６は、入力されたタイムスタンプTxのタイミングでバッファ２７に出力する。ステップＳ２２において、バッファ２７は、読出信号が入力されたタイミングで対応するTSパケットをデコード部２８に出力する。
【００７９】
ステップＳ２３において、デコーダ２８は、読み出されたTSパケットをデコードして表示部２９に表示させる。
【００８０】
ステップＳ２４において、トランスポートストリームがその後も続いているか否かが判定され、続いていると判定された場合、その処理は、ステップＳ２に戻り、続いていないと判定された場合、その処理は、終了する。
【００８１】
ステップＳ１９において、図７の場合、調整パケット番号Ｓ＝４であるが、例えば、図７Ｂのパケット（４）が入力されると、調整パケット番号Ｓ＝４に対応するTSパケットであると判定され、その処理は、ステップＳ２５に進む。
【００８２】
ステップＳ２５において、調整部２５は、調整パケット数Cが負の値であるか否かを判定する。例えば、図７Ａ，Ｂの場合、調整パケット数Cは、−３であるので調整パケット数Cは、負の値であると判定され、その処理は、ステップＳ２６に進む。
【００８３】
ステップＳ２６において、調整部２５は、メモリ２５ａの加算係数Ａを１インクリメントする。すなわち、今の場合、加算係数がインクリメントされて１になるので、これ以降の処理においては、タイムスタンプ抽出部１５から取得されているタイムスタンプTxに１クロック分の時間を加算して読出信号生成部２６に出力する。
【００８４】
ステップＳ２７において、調整部２５は、Txインターバル積算カウンタ１７、Rxインターバル積算カウンタ２２、および、Txインターバルカウンタ１８をリセットする。
【００８５】
ステップＳ２８において、完了調整パケット番号Ｔを調整パケット番号Ｓに更新する。すなわち、今の場合、完了調整パケット番号Ｔが１から調整パケット番号Ｓの値であった４に更新される。
【００８６】
すなわち、調整パケット数Cは、受信されるTSパケットの時刻の積算値とTSパケットのタイムスタンプTxの積算値の差分ΔTが１クロック分に相当するときのTxインターバルの個数を示しているので、図７で示すように、Txインターバルが３個になると、受信されるRxインターバルとの差分（ずれ）が１クロック分（図７の場合、１クロックと１個のTxインターバルが同じである）となる。そこで、調整パケット数Cに相当するTSパケットがカウントされたタイミングで、図８で示すように、それ以降のタイムスタンプTxの値の全てに加算係数Ａに対応する数のクロック数の時間を加算するようにして、受信時刻とのずれを補正する。図８においては、タイムスタンプTx'（４）乃至Tx'（１０）は、タイムスタンプTx（４）乃至Tx（１０）のそれぞれに１クロック分の時間が加算された時刻となる。
【００８７】
また、完了調整パケット番号Ｔ＝４に更新された後、上述の処理により調整パケット数Ｃに変化が生じない場合、図８Ｂで示すように、TSパケット４以降のTSパケットが受信されるタイミングでは、ステップＳ１８において、完了調整パケット番号Ｔ＝４に調整パケット数Ｃの絶対値＝３が加算されることにより、調整パケット番号Ｓ＝７となる。この状態で、TSパケット（５），（６）が受信されるタイミングでは、ステップＳ１９において、調整パケット番号ＳのTSパケットが受信されないので、その処理は、ステップＳ２０に進むことになる。
【００８８】
さらに、TSパケット（７）が受信されるタイミングでは、タイムスタンプTxとの差分が１クロック分となり、調整パケット番号Ｓ＝７のパケットが受信されることになるので、ステップＳ２５，Ｓ２６の処理が実行されることにより、加算係数Ａがさらに１インクリメントされて２となるので、TSパケット８以降のタイムスタンプTx'（８）乃至Tx'（１０）は、図９で示すように、タイムスタンプTx''（８）乃至Tx''（１０）に変更される。すなわち、タイムスタンプTx''（８）乃至Tx''（１０）は、元のタイムスタンプTx（８）乃至Tx（１０）に加算係数Ａ＝２×クロック分の時間を加算して調整されることで補正されることになる。
【００８９】
ステップＳ２５において、調整パケット数Ｃが負ではない、すなわち、０以上の値であった場合、ステップＳ２９において、調整部２５は、メモリ２５ａの加算係数Ａを１デクリメントする。
【００９０】
すなわち、例えば、図１０Ａ，Ｂで示すように、Txインターバル１回分が１クロックであり、かつ、Txインターバル３回分でRxインターバル４回分である場合、パケット５が受信されたタイミングでサンプリング周期信号が受信されると、ステップＳ１７の処理により調整パケット数Ｃは、Ｃ＝３／（３−９／４）＝４となるので、ステップＳ１８の処理により、調整パケット番号Ｓは、最初の処理の場合、調整パケット番号は１（＝前回調整パケット番号Ｔ）＋４（＝調整パケット数Ｃ）＝５となる。そこで、TSパケット（５）が入力されると、ステップＳ１９において、調整パケット番号であると判定され、ステップＳ２０において、調整パケット数Ｃが正であると判定され、その処理は、ステップＳ２９に進むことになる。
【００９１】
ステップＳ２９において、加算係数Ａが１デクリメントされることにより、ステップＳ２０の処理により、TSパケットのタイムスタンプTxから１クロック分の時間が減算される。すなわち、図１１Ａで示すように、TSパケット（１）乃至（４）までカウントされると、その次のTSパケット（５）のタイムスタンプTx（５）は、加算係数Ａ（＝１）×クロック数分だけ減算されたタイムスタンプTx'（５）となる。図１１Ａの場合、１回のTxインターバルが１クロックとなっているので、実質的には、TSパケット４のタイムスタンプTx（４）とTSパケット５のタイムスタンプTx'（５）は、同一となり、後から再生されるTSパケット（５）のみが再生されることになる。
【００９２】
また、調整パケット数Cが変化することがない場合、最初の処理により、完了調整パケット番号Ｔは、５に更新されることになるので、図１１Ａ，Ｂのパケット（９）が入力されるタイミングでは、ステップＳ１８の処理で、調整パケット番号Ｓは、５（＝完了調整パケット番号Ｔ）＋４（＝調整パケット数Ｃ）＝９となるのでパケット（９）が入力されるタイミングで、加算係数Ａはさらに１デクリメントされることになるので、加算係数Ａ（＝（−２））×クロック分の時間がタイムスタンプTx（９）から減じられてタイムスタンプTx''（９）となり、このときも実質的に、TSパケット（８）のタイムスタンプTx'（８）と同一の時刻となる。
【００９３】
しかしながら、実際には、Txインターバルは、複数のクロックであることが常であり、図１１Ａで示すように、補正前のTSパケットが消滅するようなことはなく１クロック分の補正のみがなされることになる。
【００９４】
したがって、この処理により、実際に受信されるタイミングとタイムスタンプとの差分は、最大でも１クロック以下に維持されることになるので、ジッタを除去すると共に送信側の装置で使用されていたクロック精度でストリームデータを再生することが可能となる。
【００９５】
また、上述の処理においては、ストリームデータを一時的にバッファに蓄積した後、再生時間を調整するのではなく、バッファに記憶させる処理を行う前に、順次再生タイミングを調整した後にバッファに蓄積させるようにしているので、バッファに蓄積させる時間を短くさせることができ、システム全体としての遅延を低減させることができる。
【００９６】
さらに、上述においては、MPEGのTSを用いた場合の例について説明してきたが、タイムスタンプに準じた機能を有したストリームデータのリアルタイムでの配信処理にも使用することができる。
【００９７】
また、IPベースのネットワークに限らず、その他のネットワークにも利用することが可能である。
【００９８】
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行させることが可能な、例えば汎用のパーソナルコンピュータなどに記録媒体からインストールされる。
【００９９】
図１２は、画像表示装置２をソフトウェアにより実現する場合のパーソナルコンピュータの一実施の形態の構成を示している。パーソナルコンピュータのCPU１０１は、パーソナルコンピュータの動作の全体を制御する。また、CPU１０１は、バス１０４および入出力インターフェース１０５を介してユーザからキーボードやマウスなどからなる入力部１０６から指令が入力されると、それに対応してROM(Read Only Memory)１０２に格納されているプログラムを実行する。あるいはまた、CPU１０１は、ドライブ１１０に接続された磁気ディスク１１１、光ディスク１１２、光磁気ディスク１１３、または半導体メモリ１１４から読み出され、記憶部１０８にインストールされたプログラムを、RAM(Random Access Memory)１０３にロードして実行する。これにより、上述した画像処理装置の機能が、ソフトウェアにより実現されている。さらに、CPU１０１は、通信部１０９を制御して、外部と通信し、データの授受を実行する。
【０１００】
プログラムが記録されている記録媒体は、図１２に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク１１１（フレキシブルディスクを含む）、光ディスク１１２（CD-ROM(Compact Disc-Read Only Memory)，DVD（Digital Versatile Disc）を含む）、光磁気ディスク１１３（MD（Mini-Disc）を含む）、もしくは半導体メモリ１１４などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM１０２や、記憶部１０８に含まれるハードディスクなどで構成される。
【０１０１】
尚、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理は、もちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理を含むものである。
【０１０２】
【発明の効果】
本発明によれば、ジッタを除去すると共に送信側のクロック精度でストリームデータを再生することが可能となる。また、バッファに蓄積させる時間を短くさせることができ、システム全体としての遅延を低減させることができる。
【図面の簡単な説明】
【図１】本発明を適用した画像表示装置のブロック図である。
【図２】  TSパケットのTxインターバルとRxインターバルを説明する図である。
【図３】  TSパケットのTxインターバルとRxインターバルを説明する図である。
【図４】  TSパケットのTxインターバルとRxインターバルを説明する図である。
【図５】  TSの表示処理を説明するフローチャートである。
【図６】  TSの表示処理を説明するフローチャートである。
【図７】  TSパケットのTxインターバルを調整する処理を説明する図である。
【図８】  TSパケットのTxインターバルを調整する処理を説明する図である。
【図９】  TSパケットのTxインターバルを調整する処理を説明する図である。
【図１０】  TSパケットのTxインターバルを調整する処理を説明する図である。
【図１１】  TSパケットのTxインターバルを調整する処理を説明する図である。
【図１２】媒体を説明する図である。
【符号の説明】
１  ネットワーク，  ２  画像表示装置，  １５  タイムスタンプ抽出部，１６  Txインターバル演算部，  １７  Txインターバル積算カウンタ，  １８  Txインターバルカウンタ，  １９  減算器，  ２０  イネーブル信号抽出部，  ２１  Rxインターバル演算部，  ２２  Rxインターバル積算カウンタ，  ２３  LPF，  ２４  Div，  ２５  調整部，２６  読出信号生成部，２７  バッファ
【図１】
0003846578.tif 000004
【図２】
0003846578.tif 000005
【図３】
0003846578.tif 000006
【図４】
0003846578.tif 000007
【図５】
0003846578.tif 000008
【図６】
0003846578.tif 000009
【図７】
0003846578.tif 000010
【図８】
0003846578.tif 000011
【図９】
0003846578.tif 000012
【図１０】
0003846578.tif 000013
【図１１】
0003846578.tif 000014
【図１２】
0003846578.tif 000015