(57)【要約】【課題】デジッタリングにおけるクロック制御において、所定のドリフトレートを満足しながら制御し、かつ、デジッタリングのクロック制御量がほぼ収束して所定のドリフトレートを満足しながら制御できるまでの時間を短くする。【解決手段】受信部３１は、時刻カウント情報を生成するための時刻カウント生成部４６と、送信機からのパケットを受信するための通信Ｉ／Ｆ部４１と、送信機からのパケットに含まれる第１の時刻カウント情報と、通信Ｉ／Ｆ部４１がパケットを受信した時点で時刻カウント生成部４６によって生成された第２の時刻カウント情報とに基づいて、時刻カウント差分を算出するための時刻カウント差分算出部４３と、時刻カウント差分の異常値を取り除くためのデータフィルタ４４と、データフィルタを通過した時刻カウント差分の情報から送信機との発振器の周波数差を算出するための周波数差推定部４５を含む。【選択図】図５
2008118549.tif 000002
【特許請求の範囲】
【請求項１】
ネットワークに接続された送信装置とデータ通信するための受信装置であって、
前記受信装置側の基準クロックとして、第１の時刻カウント情報を生成するための時刻カウント生成手段と、
前記送信装置からのパケットを受信するための受信手段と、
前記送信装置からの前記パケットに含まれる第２の時刻カウント情報と、前記受信手段が前記パケットを受信した時点で前記時刻カウント生成手段によって生成された第１の時刻カウント情報とに基づいて、時刻カウント差分を算出するための時刻カウント差分算出手段と、
前記時刻カウント差分の異常値を取り除くためのデータフィルタと、
前記データフィルタを通過した前記時刻カウント差分の情報から、前記送信装置側の基準クロックとの周波数差を算出するための周波数差推定手段とを備える、受信装置。
【請求項２】
前記周波数差推定手段は、前記算出した周波数差に基づいてクロック制御量を決定し、
前記周波数差推定手段からのクロック制御量にしたがって、前記時刻カウント生成部が生成する前記第１の時刻カウント情報の進み方を制御するための時刻カウント制御手段をさらに備える、請求項１記載の受信装置。
【請求項３】
前記データフィルタは、前記第１の時刻カウント情報と、前記第２の時刻カウント情報を擬似的に早くした第３の時刻カウント情報とに基づいて修正時刻カウント差分を算出し、前記算出時までの最小の前記修正時刻カウント差分より大きくなるような前記修正時刻カウント差分に対応する前記時刻カウント差分を異常値として取り除く、請求項１または２に記載の受信装置。
【請求項４】
前記データフィルタは、前記第２の時刻カウント情報と、前記第１の時刻カウント情報を擬似的に遅くした第４の時刻カウント情報とに基づいて修正時刻カウント差分を算出し、前記算出時までの最小の前記修正時刻カウント差分より大きくなるような前記修正時刻カウント差分に対応する前記時刻カウント差分を異常値として取り除く、請求項１または２に記載の受信装置。
【請求項５】
前記データフィルタは、所定の時間間隔ごとの極小値を求め、前記極小値以外の前記時刻カウント差分を異常値として取り除く、請求項１または２に記載の受信装置。
【請求項６】
前記周波数差推定手段は、前記受信手段が前記パケットの受信を開始した時点からの時間と前記時刻カウント差分との関係を回帰分析によって直線で近似し、前記周波数差を算出する、請求項１から５のいずれか１項に記載の受信装置。
【請求項７】
前記周波数差推定手段が算出した周波数差の精度を判定するための精度判定手段をさらに備える、請求項１または２に記載の受信装置。
【請求項８】
前記精度判定手段は、前記受信手段が前記パケットの受信を開始した時点から所定時間経過したことに応じて、前記周波数差の精度が前記所定の精度であると判断する、請求項７記載の受信装置。
【請求項９】
前記精度判定手段は、前記受信手段が前記パケットの受信を開始した時点から所定数の前記パケットを受信したことに応じて、前記周波数差の精度が前記所定の精度であると判断する、請求項７記載の受信装置。
【請求項１０】
前記精度判定手段は、前記データフィルタを通過した時刻カウント差分の数が所定数に達したことに応じて、前記周波数差の精度が前記所定の精度であると判断する、請求項７記載の受信装置。
【請求項１１】
前記精度判定手段は、所定のタイミング以前に算出された前記周波数差の最大値と最小値の差が所定範囲内にあることに応じて、前記周波数差の精度が前記所定の精度であると判断する、請求項７記載の受信装置。
【請求項１２】
前記精度判定手段は、前記時刻カウント差分の情報と近似された前記直線とから計算される残差二乗和が所定範囲内にあることに応じて、前記周波数差の精度が前記所定の精度であると判断する、請求項７記載の受信装置。
【請求項１３】
所定のドリフトレートの条件を満たすようにクロック制御量を決定するための定常状態クロック制御量決定手段と、
前記時刻カウント制御手段に対し、前記周波数差推定手段からのクロック制御量または前記定常状態クロック制御量決定手段からのクロック制御量のいずれか一方を選択的に与えるための選択手段とをさらに備え、
前記選択手段は、前記精度判定手段が前記周波数差の精度が所定の精度であると判断したことに応じて、前記時刻カウント制御手段に対し、前記周波数差推定手段からのクロック制御量に代わって、前記定常状態クロック制御量決定手段からのクロック制御量を与える、請求項７記載の受信装置。
【請求項１４】
前記定常状態クロック制御量決定手段は、
所定の期間において、前記時刻カウント差分の極小値を検出するための時刻カウント差分極小値検出手段と、
検出された前記極小値の変化に基づいて、前記基準クロックの進み方を所定のドリフトレートの範囲内になるように前記クロック制御量を決定するための時刻カウント遅速判定手段とを含む、請求項１３記載の受信装置。
【請求項１５】
受信した前記パケットを蓄積するためのバッファと、
前記送信装置からのパケットに含まれる、前記バッファに蓄積されたパケットの時刻カウント情報の時刻範囲を示す第１のバッファ時間量と、前記パケットが前記受信装置のバッファに蓄積された時点の第２のバッファ時間量とを合計した第３のバッファ時間量を算出するためのバッファ時間量算出手段とをさらに備え、
前記定常状態クロック制御量決定手段は、
所定の期間において、前記第３のバッファ時間量の極大値を検出するためのバッファ時間量極大値検出手段と、
検出された前記極大値の変化に基づいて、前記基準クロックの進み方を所定のドリフトレートの範囲内になるように前記クロック制御量を決定するための時刻カウント遅速判定手段とを含む、請求項１３記載の受信装置。
【請求項１６】
前記パケットを蓄積するためのバッファをさらに備え、
前記定常状態クロック制御量決定手段は、
所定の期間において、前記バッファに蓄積されたパケットの時刻カウント情報の時刻範囲を示す第４のバッファ時間量の極大値を検出するためのバッファ時間量極大値検出手段と、
検出された前記極大値の変化に基づいて、前記基準クロックの進み方を所定のドリフトレートの範囲内になるように前記クロック制御量を決定するための時刻カウント遅速判定手段とを含む、請求項１３記載の受信装置。
【請求項１７】
ネットワークに接続された送信装置とデータ通信するための受信装置であって、
前記受信装置側の基準クロックとして、第１の時刻カウント情報を生成するための時刻カウント生成手段と、
前記送信装置からのパケットを受信するための受信手段と、
前記送信装置からの前記パケットに含まれる第２の時刻カウント情報と、前記受信手段が前記パケットを受信した時点で前記時刻カウント生成手段によって生成された第１の時刻カウント情報とに基づいて、時刻カウント差分を算出するための時刻カウント差分算出手段と、
前記時刻カウント差分の情報から、前記送信装置側の基準クロックとの周波数差を算出し、クロック制御量を決定するための周波数差推定手段と、
前記周波数差推定手段が算出した周波数差の精度を判定するための精度判定手段とを備える、受信装置。
【請求項１８】
前記周波数差推定手段は、前記算出した周波数差に基づいてクロック制御量を決定し、
前記周波数差推定手段からのクロック制御量にしたがって、前記時刻カウント生成部が生成する前記第１の時刻カウント情報の進み方を制御するための時刻カウント制御手段をさらに備える、請求項１７記載の受信装置。
【請求項１９】
所定のドリフトレートの条件を満たすようにクロック制御量を決定するための定常状態クロック制御量決定手段と、
前記時刻カウント制御手段に対し、前記周波数差推定手段からのクロック制御量または前記定常状態クロック制御量決定手段からのクロック制御量のいずれか一方を選択的に与えるための選択手段とを備え、
前記選択手段は、前記精度判定手段が前記周波数差の精度が所定の精度であると判断したことに応じて、前記時刻カウント制御手段に対し、前記周波数差推定手段からのクロック制御量に代わって、前記定常状態クロック制御量決定手段からのクロック制御量を与える、請求項１８に記載の受信装置。
【請求項２０】
ネットワークに接続された送信装置とデータ通信するための受信装置であって、
前記送信装置からのパケットを受信するための受信手段と、
前記受信装置側の基準クロックとして、第１の時刻カウント情報を生成するための時刻カウント生成手段と、
前記基準クロックの制御状態を検出するための検出手段と、
検出された前記制御状態を前記送信装置に通知するための送信手段とを備える、受信装置。
【請求項２１】
前記精度判定手段が前記周波数差の精度が前記所定の精度であると判断したことを前記送信装置に通知するための送信手段をさらに備える、請求項７または１７に記載の受信装置。
【請求項２２】
前記受信装置に対する電源の入力状態を検出するための電源入力検出手段をさらに備え、
前記選択手段は、前記電源入力検出手段が前記電源の入力もしくはリセットを検出したことに応じて、前記時刻カウント制御手段に対して前記周波数差推定手段からのクロック制御量を与える、請求項１３または１９に記載の受信装置。
【請求項２３】
前記選択手段は、前記受信手段が前記送信装置からの前記パケットを所定時間受信していないとの判断に応じて、前記時刻カウント制御手段に対して前記周波数差推定手段からのクロック制御量を与える、請求項１３または１９に記載の受信装置。
【請求項２４】
前記送信装置は、前記受信装置に対しダミーパケットを送信し、
前記周波数差推定手段は、前記ダミーパケットの時刻カウント差分に基づいて前記周波数差を推定する、請求項１から２３のいずれか１項に記載の受信装置。
【請求項２５】
ネットワークに接続された送信装置とデータ通信するための受信装置であって、
前記受信装置側の基準クロックとして、第１の時刻カウント情報を生成するための時刻カウント生成手段と、
前記送信装置からのパケットを受信するための受信手段と、
受信した前記パケットを蓄積するためのバッファと、
前記送信装置からのパケットに含まれる、前記バッファに蓄積されたパケットの時刻カウント情報の時刻範囲を示す第１のバッファ時間量と、前記パケットが前記受信装置のバッファに蓄積された時点の第２のバッファ時間量とを合計した第３のバッファ時間量を算出するためのバッファ時間量算出手段と、
前記第３のバッファ時間量の異常値を取り除くためのデータフィルタと、
前記データフィルタを通過した前記第３のバッファ時間量の情報から、前記送信装置側の基準クロックとの周波数差を算出するための周波数差推定手段とを備える、受信装置。
【請求項２６】
ネットワークに接続された送信装置とデータ通信するためのクロック同期方法であって、
前記受信装置側の基準クロックとして、第１の時刻カウント情報を生成するステップと、
前記送信装置からのパケットを受信するステップと、
前記送信装置からの前記パケットに含まれる第２の時刻カウント情報と、前記受信するステップで前記パケットを受信した時点で生成された第１の時刻カウント情報とに基づいて、時刻カウント差分を算出するステップと、
前記時刻カウント差分の異常値を取り除くステップと、
前記異常値が取り除かれた前記時刻カウント差分の情報から、前記送信装置側の基準クロックとの周波数差を算出するステップとを備える、クロック同期方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、受信装置およびクロック同期方法に関する。特に、ジッターを引き起こすネットワークを経由して送受信する端末間で高速にクロック同期を実現するための技術に関する。
【背景技術】
【０００２】
ＭＰＥＧ２−ＴＳ（Motion Picture Experts Group 2 - Transport Stream）による映像伝送システムでは、受信機は送信機と同じ速度で処理しないと破綻が起こることが知られている。
【０００３】
また、ＭＰＥＧ２−ＴＳによる映像伝送は、（１）送信機は自分のペースで映像を送りつける、（２）受信機側からのフィードバックはない、（３）送信機側は今撮ったばかりの映像を伝送できる、（４）送信機は複数の受信機宛てに映像送信できる、という性質を持つ。
【０００４】
このため、（１）送信機側はクロックの情報を受信機に送信し、（２）受信機側はＰＬＬ（Phase Locked Loop）を組み、送信機側と同期したクロックを再生する、ことが必要である。
【０００５】
図１６は、ＭＰＥＧ２−ＴＳによる映像伝送システムの典型例を示したブロック図である。
【０００６】
図１６を参照して、ＭＰＥＧ２−ＴＳによる映像伝送システムについて説明する。図１６に示すように、送信機１２００は、入力された映像ソースから、映像データをＭＰＥＧ２エンコーダ１２０２によってエンコードすると同時に、発振器１２０４によってクロック情報を付与する。送信バッファ１２０６に蓄積されたＭＰＥＧ２−ＴＳパケットは、受信機１２１０に送信される。受信機１２１０は、送信機１２００からのＭＰＥＧ２−ＴＳパケットを受信バッファ１２１２に蓄積する。そして、ＭＰＥＧ２−ＴＳパケットからクロック情報を取り出し、ＰＬＬ１２１４を用いてＭＰＥＧ２エンコーダ１２０２と同期したクロックを再生する。また、ＭＰＥＧ２デコーダ１２１６によって、再生クロックを用いて映像データをデコードする。
【０００７】
このように、デコーダはＰＬＬを使って、エンコーダのクロックに同期したカウンタＳＴＣ（System Time Clock）を生成する。なお、ＭＰＥＧエンコーダからのクロック情報ＰＣＲ（Program Clock Reference）は少なくとも０．１秒に１回の割合でＭＰＥＧ２−ＴＳパケットの中に埋め込まれる。
【０００８】
図１７は、一般的なＰＬＬの構成を示したブロック図である。
図１７を参照して、ＭＰＥＧ２デコーダにおいて、非特許文献１の（Ｄ．０．３）節で示されるような、一般的に使われるＰＬＬの構成について説明する。ＰＬＬでは、最初にＰＣＲを含むＴＳパケットを受信すると内部カウンタ１３０２にＰＣＲ値をロードする。そして、後続のＰＣＲを含むＴＳパケットを受信するたびに、受信した時点の内部カウンタ１３０２から与えられるＳＴＣ値とＰＣＲ値の差分を、減算器１３０４によって求める。続いて、差分をローパスフィルタ１３０６にかけて制御電圧に変換し、これにより電圧制御発振器１３０８の周波数が変化する。それに伴い内部カウンタ１３０２の出力が調整され、エンコーダのクロックと同期したＳＴＣ値が生成される。
【０００９】
上記のようにしてＰＬＬは動作するが、このような動作を安定させるためには、各ＭＰＥＧ２−ＴＳパケットは、ジッターが極力出ないように（送信機から出力されたときの相互間隔が保たれるように）ＭＰＥＧデコーダまで配送されなければならない。
【００１０】
非特許文献１の（Ｄ．０．９）節と非特許文献２には、ジッターを引き起こすネットワークを経由して映像ストリームを受信した場合のジッター吸収方法が記載されている。
【００１１】
非特許文献２では次の３つの方法（ａ）〜（ｃ）が記載されている。ここで、ジッターを吸収するための機能（デジッタリング）は、ＭＰＥＧデコーダとは別に存在してもよいし、ＭＰＥＧデコーダ自身に統合されていてもよい。
【００１２】
（ａ）ＣＢＲ（Constant Bit Rate:固定ビットレート）の場合、バッファとＰＬＬを使う方法。
【００１３】
方法（ａ）によれば、受信機側のＰＬＬが、受信機側バッファの使用量に応じて、受信機側バッファの使用量がおよそ半分となるように、受信機側の出力レートを調整する。
【００１４】
（ｂ）タイムスタンプを使う方法。
図１８は、非特許文献２に記載されている映像伝送システムの概略を示す図である。
【００１５】
図１８を参照して、方法（ｂ）について説明する。送信機１４００では、クロック１４０２は、サンプル値ＣＲ（Clock Reference）をエンコーダ１４０４が生成する各パケットに付与する。
【００１６】
受信機１４１０では、受信したパケットに含まれるサンプル値ＣＲから、ＰＬＬ１４１４を使ってＴＣｄ（delayed TC）を復元する。「ＴＣｄ」とは、送信機１４００側のクロック１４０２が生成するカウンタ値に固定時間を加えたものである。
【００１７】
受信機１４１０は、送信機１４００からの映像データを一時的にデジッタリングバッファ１４１６に蓄えて再生する。先頭のパケットは、ＴＣｄがパケットに含まれるＣＲと等しくなったとの制御部１４１８の判断に応じて、デジッタリングバッファ１４１６から出力される。後続のＭＰＥＧ２パケットは、パケットに含まれるＣＲがＴＣｄと等しくなったときにデジッタリングバッファから出力される。
【００１８】
デジッタリングバッファのサイズは、パケットの伝送遅延が平均的な遅延時間に遅延ゆらぎ±Ｊ／２［秒］（ただし、送受信機は最大Ｊ［秒］の遅延ゆらぎ補償をするように設計されているとする。）加えた伝送遅延に耐えられる設計にする。パケットが平均的な遅延時間で到着した場合、デジッタリングバッファの占有量は中間の位置になる。パケットが平均的な遅延時間に比べＪ／２［秒］遅れて到着した場合、デジッタリングバッファは空になる。パケットが平均的な遅延時間に比べＪ／２［秒］早く到着した場合、デジッタリングバッファは満杯になる。
【００１９】
（ｃ）共通クロックが利用可能な場合、共通クロックを使う方法。
方法（ｃ）によれば、送受信機間において共通のネットワーククロックが入手可能で、システムクロックの周波数をそれにロックできる場合にはバッファを使ってジッターを吸収することができる。
【００２０】
また、非特許文献１の（Ｄ．０．９）節には、上記方法（ａ）をＶＢＲ（Variable Bit Rate:可変ビットレート）の場合にも適用できるように改良した方法も記載されている。これを方法（ａ’）とする。
【００２１】
方法（ａ’）では、受信機側バッファの使用量ではなく、データがバッファに入力される時刻をＰＣＲやＳＣＲを使って測定し、データがバッファから出力される時刻を制御する。データがバッファに入力されてから出力されるまでの期間が一定となるように、図１７と同様なＰＬＬを構成して調整する。
【００２２】
また、特許文献１には、データ供給装置とデータ処理装置の同期を行なうようにする方法が記載されている。この方法によれば、データ供給装置から送信されるデータの送信時刻と、データ処理装置で受信されるデータの受信時刻との間で生じる差分値を順次検出する。そして、所定の時間ごとにその差分値の極大値および極小値を検出し、その極大値および極小値それぞれの増減に応じてデータ処理装置の処理速度を制御して、同期をとる。
【００２３】
また、特許文献２には、カウンタ値を補正する方法が記載されている。この方法によれば、受信クロック情報の受信タイミングの揺らぎを取り除くよう送信元カウンタ値を補正するカウンタ補正手段を備える。これにより、受信した複数のカウンタ値との差分の二乗和が最小となるカウンタ値の時間変化を示す直線を求め、新たに受信したカウンタ値をその直線上に位置するようにカウンタ値を補正する。
【００２４】
また、特許文献３には、方法（ａ’）に類似した方法が記載されている。この方法によれば、受信機に蓄積されるデータ量を監視し、蓄積データ量が上側の閾値より大きくなったとき、受信クロックの周波数を高い周波数に設定する。また、データ蓄積量が下側の基準値より小さくなったとき、受信クロック周波数を低い周波数に設定する。
【００２５】
また、特許文献４には、特許文献３に類似した方法が記載されている。この方法によれば、デコーダへのデータ出力速度をハイとローとの２段階で切り替えるのではなく、切り替えのタイミングにおいてデータ出力速度をゆるやかに変化させる。
【００２６】
図１９は、特許文献３や特許文献４における、データ蓄積量（バッファ時間量）とクロック制御量との関係を示した図である。
【００２７】
図１９に示すように、データ蓄積量（バッファ時間量）が上限のしきい値を超えればクロック制御量を高く設定し、下限しきい値を下回ればクロック制御量を低く設定することによって、受信機側は内部バッファのオーバーランやアンダーランを引き起こすことなく再生をし続けることができる。
【００２８】
また、特許文献５には、伝送遅延ゆらぎが発生するネットワーク環境において、相対的ゆらぎ時間を平滑化し、時間経過に対する単調増加あるいは単調減少の様子を監視することにより、送受信間のクロックのずれを解消する方向に制御する手法が提案されている。
【特許文献１】特開平２００３−２１８８４２号公報
【特許文献２】特開平２０００−１７４７４２号公報
【特許文献３】特開平２００２−１６５１４８号公報
【特許文献４】特開平２００６−４２２７３号公報
【特許文献５】特開平２００３−２５８８９４号公報
【非特許文献１】ＩＳＯ／ＩＥＣ１３８１８−１：２０００（Ｅ）ＡｎｎｅｘＤ
【非特許文献２】ＩＳＯ／ＩＥＣ１３８１８−１：２０００（Ｅ）ＡｎｎｅｘＪ
【非特許文献３】ＩＴＵ−Ｔ  Ｒｅｃｏｍｍｅｎｄａｔｉｏｎ  Ｊ．１３３（０７／２００２）  ＡｐｐｅｎｄｉｘＩ
【発明の開示】
【発明が解決しようとする課題】
【００２９】
非特許文献１の（Ｄ．０．３）節に記載されている方法は、デジタル放送などのＭＰＥＧデコーダにおいて一般的に使われている方法であるが、映像データがジッターを引き起こすネットワークを経由して伝送されると、ＰＬＬが正常に動作せず映像が表示されないという問題がある。
【００３０】
図１７において、ＰＬＬでは、減算器１３０４によって内部カウンタのＳＴＣ値とＰＣＲ値の差分を計算している。ＭＰＥＧデコーダは、差分の値がある程度の範囲内（数１０μｓ程度）に収まり続けていなければ、安定したＳＴＣ値を生成できていないと判断し、その期間中の映像表示を中止する場合がある。
【００３１】
たとえば、ジッターを引き起こすネットワークを経由して映像データが伝送される場合、差分の値がある程度の範囲内に収まり続けることができないので、ＭＰＥＧデコーダのＰＬＬ単体では、安定したＳＴＣ値を生成させることができない。
【００３２】
したがって、ジッターを引き起こすネットワークを経由して映像データが伝送される場合は、非特許文献１の（Ｄ．０．３）節に記載されているＰＬＬとは別にジッターを吸収するための機能が必要であると考えられている。
【００３３】
また、非特許文献２に記載されている３つの方法（ａ）〜（ｃ）であるが、方法（ａ）は映像データがＣＢＲの場合しか適用できないという問題がある。汎用性を考えるとＶＢＲにも適用できるようにすべきである。
【００３４】
方法（ｂ）はＶＢＲにも適用できるようにしたものである。パケットにタイムスタンプを付与するという点は本発明と同じである。しかし、ＰＬＬを使ってＴＣｄを復元する場合、パケット伝送遅延時間の平均値は大きくても問題ないが、そのばらつきが大きいとＰＬＬが同期するまでに時間がかかり過ぎるという問題がある。
【００３５】
本発明に係る映像伝送システムは、映像データが無線ネットワーク、有線ネットワークまたはインターネットなどの一般的なＩＰ（Internet Protocol）ネットワークを経由して伝送されることを想定している。このため、そのような環境では少なくとも数１００ｍｓ程度のジッターが発生しうる。
【００３６】
一方、ジッターを吸収するための機能（以下、「デジッタリング」と呼ぶ。）として方法（ｂ）を使い、その後段に非特許文献１の（Ｄ．０．３）節に記載のＰＬＬを使うとすると、方法（ｂ）でジッターを吸収する目標精度としては、数１０μｓ程度とすることが必要である。
【００３７】
本発明で想定しているようなジッターを引き起こすネットワーク環境では、ＰＬＬで十分な精度にまで抑え込むことは難しく、もし抑え込むことができたとしても、同期するまでの引き込み時間が非常に長くなるため、結果としてその期間は映像が表示されないという問題がある。
【００３８】
方法（ｃ）はエンド−エンド間で共通クロックが存在することを前提にしたものである。この方法は、一部の閉じた環境では共通クロックが使える場合もあるが、一般的なＩＰネットワーク上ではそのような共通クロックは存在しないので、汎用性に欠けるという問題がある。
【００３９】
方法（ａ’）も方法（ｂ）と同じ問題を抱えている。すなわち、本発明で想定しているジッターの量は大きいので、ＰＬＬで十分な精度にまで抑え込むことは難しく、もし抑え込むことができたとしても、同期するまでの引き込み時間が非常に長くなる場合がある。
【００４０】
また、デジッタリング制御において考慮すべき問題として、（１）ＭＰＥＧデコーダのＶＣＸＯ（Voltage Controlled Crystal Oscillator）問題と、（２）ＭＰＥＧ規格上の問題がある。
【００４１】
（１）ＭＰＥＧデコーダのＶＣＸＯ問題とは、デジッタリング制御において、クロック制御量をあまりに大きく設定している（たとえば、±２００ｐｐｍで制御する）と、ＭＰＥＧデコーダのＶＣＸＯで周波数調整可能な範囲を外れてしまい、映像が表示されないという問題である。なお、ＶＣＸＯは、通常ＰＬＬの中に含まれる。たとえば、図１７における電圧制御発振器１３０８に相当する。
【００４２】
具体例を挙げて説明する。たとえば、図１６で示すようなＭＰＥＧ映像伝送システムにおいて、受信機１２１０のＰＬＬに含まれるＶＣＸＯの周波数可変範囲が公称周波数を中心に±７５ｐｐｍとして、送信機１２００の発振器１２０４の精度が±１００ｐｐｍとする。この場合、ネットワークによる影響がまったくなかったとしても、ＶＣＸＯで制御可能な範囲を超える可能性があるため、デコーダはエンコーダのクロックに追従できず、映像が表示されない可能性がある。映像が表示されるかどうかは、発振器の部品の精度に依存する。ネットワークによる影響を考えると、送信機の発振器の精度、受信機の発振器の精度を考慮しなければならない。
【００４３】
図２０は、映像が表示されるための条件を説明するための図である。
図２０を参照して、どのような条件で映像が表示されるかについて説明する。図２０において、ＭＰＥＧ２エンコーダ１６００の発振器１６０１の精度を±Ｅ［ｐｐｍ］、送信機１６０２の発振器１６０３の精度を±Ｔ［ｐｐｍ］、受信機１６０６の発振器１６０７の精度を±Ｒ［ｐｐｍ］、ＭＰＥＧ２デコーダ１６０８のＰＬＬに含まれるＶＣＸＯ１６０９の公称周波数の精度を±Ｐ［ｐｐｍ］、周波数調整可能範囲を±Ｗ［ｐｐｍ］とする。ただし、Ｅ，Ｔ，Ｒ，Ｐ，Ｗ＞０である。
【００４４】
ＭＰＥＧ２エンコーダ１６００から送信機１６０２、ネットワーク１６０４、受信機１６０６を経てＭＰＥＧ２デコーダ１６０８にデータが入力される時点で、ＭＰＥＧ２エンコーダ１６００で付与されたクロック情報ＰＣＲには最悪で±｛Ｅ＋Ｔ＋Ｒ｝［ｐｐｍ］のクロック精度の誤差が含まれる可能性がある。映像が表示されるためには、この値がＶＣＸＯ１６０９の周波数可変範囲に収まっていなければならない。よって、次の式（１）の条件が必要である。
【００４５】
Ｅ＋Ｔ＋Ｒ＜Ｗ−Ｐ…式（１）
具体的な数値をひとつ挙げると、Ｅ＝３０，Ｔ＝Ｒ＝５０，Ｐ＝１５，Ｗ＝１５０というのがありえる。この場合、式（１）を満たすため、最初から映像が表示されると考えられる。ところが、デジッタリング制御において、クロック制御量の振幅が大きくなると、式（１）を満たせなくなる可能性がある。したがって、デジッタリング制御を行なっているときでも、式（１）を満たすためには、クロック制御量の振幅をあまりに大きく設定するのは問題である。
【００４６】
次に（２）ＭＰＥＧ規格上の問題について説明する。
非特許文献３（４．３）〜（４．６）節には、ＰＣＲ限界（公称周波数２７ＭＨｚからのどれくらいの狂いが許されるか）について記載されている。
【００４７】
具体的には、ＰＣＲ周波数オフセット、ＰＣＲドリフトレート、ＰＣＲオーバーオールジッター、ＰＣＲアキュラシーについて記載されている。特に、ＰＣＲ周波数オフセットとＰＣＲドリフトレートの限界は次のようになっている（以下、「ＰＣＲ条件」と呼ぶ）。
【００４８】
（ＰＣＲ周波数オフセットの限界）＝±８１０Ｈｚまたは±３０ｐｐｍ
（ＰＣＲドリフトレートの限界）＝±７５ｍＨｚ／秒または±１０ｐｐｍ／時間
なお、非特許文献３では、ＰＣＲアキュラシーは可変ビットレートの場合は意味をなさないと記述されている。ＰＣＲオーバーオールジッターはネットワーク遅延がゼロであれば±５００ｎｓという基準が示されているが、ネットワーク遅延が存在するときの明確な基準は示されていない。ＩＳＯ／ＩＥＣ１３８１８−９には、±２５ｕｓという基準が示されているが、十分な精度を持つタイムスタンプを各パケットに付与すれば、この基準は守ることができるため特に問題にはならないと考えられる。
【００４９】
ＰＣＲ条件は、ＭＰＥＧデコーダ側から見た要求であるため、デジッタリングにおけるクロック制御も含めて守るべき条件であると考えられる。ただし、ＰＣＲ条件を守れないからといって、即座に実際上の問題（たとえば、映像が表示されない、あるいは、映像の品質が悪くなるなど）が発生するわけではない。しかし、ＭＰＥＧデコーダのチップにも依存する事であるが、ＰＣＲ条件を大きく逸脱すると実際上の問題が発生すると考えられる。
【００５０】
方法（ｂ）や方法（ａ’）では、ＰＬＬでどの程度のクロック制御がなされるか予測できず、ＰＣＲ条件を満足して伝送することは不可能であると考えられる。
【００５１】
また、特許文献１に記載の方法は、所定の時間ごとにデータ処理速度を変化させている。１回に変化させるクロック制御量は自由に決められるので、設計次第でＰＣＲ条件を満足することは可能であると考えられる。
【００５２】
図２１は、クロック制御量の時間変化を示す図である。
図２１に示すように、はじめはクロック制御量のステップを大きく、次第にステップを小さくさせている。最初からクロック制御量のステップが小さいままだと、クロック制御量がほぼ収束する状態になるまで時間がかかるため、最初からクロック制御量のステップを大きく設定し、徐々に小さくしている。
【００５３】
このような方法を実施したとしても、特許文献１では所定の時間ごとにデータ処理速度を速くさせるか遅くさせるかを決定しており、所定の時間を何度か繰り返さないと、デジッタリングにおけるクロック制御量がほぼ収束する状態にまでもっていくことができない。（所定の時間としては少なくとも数秒間は必要で、繰り返し数としては少なくとも数十回は必要である。クロック制御量がほぼ収束する状態になるまで数分はかかる。）したがって、デジッタリング制御量がほぼ収束するようになるまでには時間がかかるという問題がある。
【００５４】
また、特許文献２では、最小二乗法を用いてＰＣＲ値を補正するという方法が開示されているが、パケット伝送遅延時間のばらつきが大きいと最小二乗法で求める傾きが正確にならないという問題がある。
【００５５】
また、特許文献３、特許文献４の方法では、基本的にデジッタリングにおけるクロック制御量は遅くするか早くするかの２段階しかなく、しかも送信機と受信機のクロック発振周波数精度のばらつきを上回るだけ大きく振幅させて制御しなければならない。たとえば、送信機と受信機のクロック発振周波数精度がともに±１００ｐｐｍだとすると、デジッタリングにおけるクロック制御量は±２００ｐｐｍ以上のレンジで変化させなければならない。特許文献３、特許文献４の方法では、クロック制御量の振幅が大き過ぎるため、ＭＰＥＧデコーダのＶＣＸＯ問題をクリアできないと考えられる。また、クロック制御量の変化が速過ぎるのでＰＣＲ条件（ＰＣＲドリフトレート）を守ることはできないと考えられる。
【００５６】
また、特許文献５では、すべてのデータを平滑化フィルタの対象としているため、パケット伝送遅延時間のばらつきが大きいと、平滑化フィルタが収束せず、クロックの周波数差が正確に求まらないという問題がある。
【００５７】
本発明は、上記のような問題を解決するためになされたものであって、その目的は、デジッタリングにおけるクロック制御において、所定のドリフトレートを満足しながら制御し、かつ、デジッタリングのクロック制御量がほぼ収束して所定のドリフトレートを満足しながら制御できるまでの時間を短くすることである。
【課題を解決するための手段】
【００５８】
本発明の１つの局面に従うと、ネットワークに接続された送信装置とデータ通信するための受信装置であって、受信装置側の基準クロックとして、第１の時刻カウント情報を生成するための時刻カウント生成手段と、送信装置からのパケットを受信するための受信手段と、送信装置からのパケットに含まれる第２の時刻カウント情報と、受信手段がパケットを受信した時点で時刻カウント生成手段によって生成された第１の時刻カウント情報とに基づいて、時刻カウント差分を算出するための時刻カウント差分算出手段と、時刻カウント差分の異常値を取り除くためのデータフィルタと、データフィルタを通過した時刻カウント差分の情報から、送信装置側の基準クロックとの周波数差を算出するための周波数差推定手段とを備える。
【００５９】
好ましくは、周波数差推定手段は、算出した周波数差に基づいてクロック制御量を決定し、周波数差推定手段からのクロック制御量にしたがって、時刻カウント生成部が生成する第１の時刻カウント情報の進み方を制御するための時刻カウント制御手段をさらに備える。
【００６０】
好ましくは、データフィルタは、第１の時刻カウント情報と、第２の時刻カウント情報を擬似的に早くした第３の時刻カウント情報とに基づいて修正時刻カウント差分を算出し、算出時までの最小の修正時刻カウント差分より大きくなるような修正時刻カウント差分に対応する時刻カウント差分を異常値として取り除く。
【００６１】
好ましくは、データフィルタは、第２の時刻カウント情報と、第１の時刻カウント情報を擬似的に遅くした第４の時刻カウント情報とに基づいて修正時刻カウント差分を算出し、算出時までの最小の修正時刻カウント差分より大きくなるような修正時刻カウント差分に対応する時刻カウント差分を異常値として取り除く。
【００６２】
好ましくは、データフィルタは、所定の時間間隔ごとの極小値を求め、極小値以外の時刻カウント差分を異常値として取り除く。
【００６３】
好ましくは、周波数差推定手段は、受信手段がパケットの受信を開始した時点からの時間と時刻カウント差分との関係を回帰分析によって直線で近似し、周波数差を算出する。
【００６４】
好ましくは、前記周波数差推定手段が算出した周波数差の精度を判定するための精度判定手段をさらに備える。
【００６５】
好ましくは、精度判定手段は、受信手段がパケットの受信を開始した時点から所定時間経過したことに応じて、周波数差の精度が所定の精度であると判断する。
【００６６】
好ましくは、精度判定手段は、受信手段がパケットの受信を開始した時点から所定数のパケットを受信したことに応じて、周波数差の精度が所定の精度であると判断する。
【００６７】
好ましくは、精度判定手段は、データフィルタを通過した時刻カウント差分の数が所定数に達したことに応じて、周波数差の精度が所定の精度であると判断する。
【００６８】
好ましくは、精度判定手段は、所定のタイミング以前に算出された周波数差の最大値と最小値の差が所定範囲内にあることに応じて、周波数差の精度が所定の精度であると判断する。
【００６９】
好ましくは、精度判定手段は、時刻カウント差分の情報と近似された直線とから計算される残差二乗和が所定範囲内にあることに応じて、周波数差の精度が所定の精度であると判断する。
【００７０】
好ましくは、所定のドリフトレートの条件を満たすようにクロック制御量を決定するための定常状態クロック制御量決定手段と、前記時刻カウント制御手段に対し、前記周波数差推定手段からのクロック制御量または前記定常状態クロック制御量決定手段からのクロック制御量のいずれか一方を選択的に与えるための選択手段とをさらに備え、前記選択手段は、前記精度判定手段が前記周波数差の精度が所定の精度であると判断したことに応じて、前記時刻カウント制御手段に対し、前記周波数差推定手段からのクロック制御量に代わって、前記定常状態クロック制御量決定手段からのクロック制御量を与える。
【００７１】
好ましくは、定常状態クロック制御量決定手段は、所定の期間において、時刻カウント差分の極小値を検出するための時刻カウント差分極小値検出手段と、検出された極小値の変化に基づいて、基準クロックの進み方を所定のドリフトレートの範囲内になるようにクロック制御量を決定するための時刻カウント遅速判定手段とを含む。
【００７２】
好ましくは、受信したパケットを蓄積するためのバッファと、送信装置からのパケットに含まれる、バッファに蓄積されたパケットの時刻カウント情報の時刻範囲を示す第１のバッファ時間量と、パケットが受信装置のバッファに蓄積された時点の第２のバッファ時間量とを合計した第３のバッファ時間量を算出するためのバッファ時間量算出手段とをさらに備え、定常状態クロック制御量決定手段は、所定の期間において、第３のバッファ時間量の極大値を検出するためのバッファ時間量極大値検出手段と、検出された極大値の変化に基づいて、基準クロックの進み方を所定のドリフトレートの範囲内になるようにクロック制御量を決定するための時刻カウント遅速判定手段とを含む。
【００７３】
好ましくは、パケットを蓄積するためのバッファをさらに備え、定常状態クロック制御量決定手段は、所定の期間において、バッファに蓄積されたパケットの時刻カウント情報の時刻範囲を示す第４のバッファ時間量の極大値を検出するためのバッファ時間量極大値検出手段と、検出された極大値の変化に基づいて、基準クロックの進み方を所定のドリフトレートの範囲内になるようにクロック制御量を決定するための時刻カウント遅速判定手段とを含む。
【００７４】
本発明の他の局面に従うと、ネットワークに接続された送信装置とデータ通信するための受信装置であって、受信装置側の基準クロックとして、第１の時刻カウント情報を生成するための時刻カウント生成手段と、送信装置からのパケットを受信するための受信手段と、送信装置からのパケットに含まれる第２の時刻カウント情報と、受信手段がパケットを受信した時点で時刻カウント生成手段によって生成された第１の時刻カウント情報とに基づいて、時刻カウント差分を算出するための時刻カウント差分算出手段と、時刻カウント差分の情報から、送信装置側の基準クロックとの周波数差を算出し、クロック制御量を決定するための周波数差推定手段と、周波数差推定手段が算出した周波数差の精度を判定するための精度判定手段とを備える。
【００７５】
好ましくは、前記周波数差推定手段は、前記算出した周波数差に基づいてクロック制御量を決定し、前記周波数差推定手段からのクロック制御量にしたがって、前記時刻カウント生成部が生成する前記第１の時刻カウント情報の進み方を制御するための時刻カウント制御手段をさらに備える。
【００７６】
好ましくは、所定のドリフトレートの条件を満たすようにクロック制御量を決定するための定常状態クロック制御量決定手段と、前記時刻カウント制御手段に対し、前記周波数差推定手段からのクロック制御量または前記定常状態クロック制御量決定手段からのクロック制御量のいずれか一方を選択的に与えるための選択手段とを備え、前記選択手段は、前記精度判定手段が前記周波数差の精度が所定の精度であると判断したことに応じて、前記時刻カウント制御手段に対し、前記周波数差推定手段からのクロック制御量に代わって、前記定常状態クロック制御量決定手段からのクロック制御量を与える。
【００７７】
本発明のさらに他の局面に従うと、ネットワークに接続された送信装置とデータ通信するための受信装置であって、送信装置からのパケットを受信するための受信手段と、受信装置側の基準クロックとして、第１の時刻カウント情報を生成するための時刻カウント生成手段と、基準クロックの制御状態を検出するための検出手段と、検出された制御状態を送信装置に通知するための送信手段とを備える。
【００７８】
好ましくは、精度判定手段が周波数差の精度が所定の精度であると判断したことを送信装置に通知するための送信手段をさらに備える。
【００７９】
好ましくは、受信装置に対する電源の入力状態を検出するための電源入力検出手段をさらに備え、選択手段は、電源入力検出手段が電源の入力もしくはリセットを検出したことに応じて、時刻カウント制御手段に対して周波数差推定手段からのクロック制御量を与える。
【００８０】
好ましくは、選択手段は、受信手段が送信装置からのパケットを所定時間受信していないとの判断に応じて、時刻カウント制御手段に対して周波数差推定手段からのクロック制御量を与える。
【００８１】
好ましくは、送信装置は、受信装置に対しダミーパケットを送信し、周波数差推定手段は、ダミーパケットの時刻カウント差分に基づいて周波数差を推定する。
【００８２】
本発明のさらに他の局面に従うと、ネットワークに接続された送信装置とデータ通信するための受信装置であって、受信装置側の基準クロックとして、第１の時刻カウント情報を生成するための時刻カウント生成手段と、送信装置からのパケットを受信するための受信手段と、受信したパケットを蓄積するためのバッファと、送信装置からのパケットに含まれる、バッファに蓄積されたパケットの時刻カウント情報の時刻範囲を示す第１のバッファ時間量と、パケットが受信装置のバッファに蓄積された時点の第２のバッファ時間量とを合計した第３のバッファ時間量を算出するためのバッファ時間量算出手段と、第３のバッファ時間量の異常値を取り除くためのデータフィルタと、データフィルタを通過した第３のバッファ時間量の情報から、送信装置側の基準クロックとの周波数差を算出するための周波数差推定手段とを備える。
【００８３】
本発明のさらに他の局面に従うと、ネットワークに接続された送信装置とデータ通信するためのクロック同期方法であって、受信装置側の基準クロックとして、第１の時刻カウント情報を生成するステップと、送信装置からのパケットを受信するステップと、送信装置からのパケットに含まれる第２の時刻カウント情報と、受信するステップでパケットを受信した時点で生成された第１の時刻カウント情報とに基づいて、時刻カウント差分を算出するステップと、時刻カウント差分の異常値を取り除くステップと、異常値が取り除かれた時刻カウント差分の情報から、送信装置側の基準クロックとの周波数差を算出するステップとを備える。
【発明の効果】
【００８４】
本発明によれば、デジッタリングにおけるクロック制御において、所定のドリフトレートを満足しながら制御し、かつ、デジッタリングのクロック制御量がほぼ収束して所定のドリフトレートを満足しながら制御できるまでの時間を短くできる。
【発明を実施するための最良の形態】
【００８５】
以下、図面を参照しつつ本発明の実施の形態について説明する。以下の説明では、同一の部品には同一の符号を付してある。それらの名称および機能も同じである。したがって、それらについては詳細な説明は繰り返さない。
【００８６】
以下の説明で明らかとなるように、本発明によれば、デジッタリングにおけるクロック制御において、所定のドリフトレートを満足しながら制御し、かつ、デジッタリングのクロック制御量がほぼ収束して所定のドリフトレートを満足しながら制御できるまでの時間を短くする。
【００８７】
図１は、デジッタリングのクロック制御量の時間経過を示した図である。
図１において、縦軸はクロック制御量、横軸は時間を表わす。図１に示すように、本発明に係る受信装置は、具体的には、最初の数秒間で±１０ｐｐｍ程度の範囲に収め、それ以降は所定のドリフトレートを満足しながら制御を行なう。なお、以下の説明では、最初の数秒間で一気に合わせこむ制御状態（Ｔ１）にあることを「過渡状態」と呼び、その後のクロック制御量の変化がゆるやかな同期制御の状態（Ｔ２）にあることを「定常状態」と呼ぶ。
【００８８】
［実施の形態１］
図２は、本実施の形態に係るネットワーク映像伝送システムを示す図である。
【００８９】
図２を参照して、ネットワーク映像伝送システム１００について説明する。映像伝送システム１００は、送信機１０と、ネットワーク２０と、受信機３０とから構成される。送信機１０と受信機３０とは、ネットワーク２０を介して、データを送受信することができる。
【００９０】
送信機１０は、ＭＰＥＧエンコーダ１１と、送信部１２と、発振器１３，１４とを備える。また、受信機３０は、受信部３１と、ＭＰＥＧデコーダ３２と、発振器３３と、可変周波数発振器３４とを備える。なお、受信部３１にはデジッタリング制御部（図示しない）も含まれる。
【００９１】
送信機１０において、チューナーやＤＶＤプレーヤなどの映像ソースから映像データが入力される。ＭＰＥＧエンコーダ１１は、映像データをＭＰＥＧ２パケットに符号化し、送信部１２に渡す。送信部１２は、ＭＰＥＧ２パケットに発振器１３に基づく時刻カウント情報を付与してパケット化し、ネットワーク２０を経由して、受信機３０へ送信する。
【００９２】
受信機３０において、受信部３１によって受信されたパケットは、デジッタリング制御部によってジッターが吸収されて（つまり、パケット間の間隔が復元されて）、ＭＰＥＧデコーダ３２に送られる。デジッタリング制御部は、パケットに含まれる時刻カウント情報と、発振器３３に基づく時刻カウント情報とを比較して、ジッターを吸収する。ＭＰＥＧデコーダ３２は、ＭＰＥＧ２パケットを復号化し、テレビなどの映像シンクに映像データを出力する。
【００９３】
本実施の形態におけるネットワーク２０は、ＩＥＥＥ８０２．１１などの無線ＬＡＮネットワークを想定している。しかし、それ以外にも、Ｅｔｈｅｒｎｅｔ（登録商標）や電力線通信などの有線ＬＡＮネットワーク、または、インターネットなど複数の中継器を経由する一般的なＩＰ（Internet Protocol）ネットワークであってもよい。
【００９４】
図３は、パケットのフォーマットの一例を示す図である。
図３を参照して、送信部１２によって送信されるパケットのフォーマットについて説明する。なお、本実施の形態では、パケット伝送プロトコルをＵＤＰ（User Datagram Protocol）とし、図３に示されているのはＵＤＰのペイロード部であるとする。ただし、パケット伝送プロトコルは、ＵＤＰに限らずＴＣＰ（Transmission Control Protocol）であってもよいし、それら以外のものであってもよい。
【００９５】
パケットのフォーマットとしては、単に１個のＭＰＥＧ２パケットに１個の時刻カウント情報を付与したものであってもよいが、本実施の形態では、Ｅｔｈｅｒｎｅｔ(登録商標）等での伝送に適したサイズとなるように、ＭＰＥＧ２パケットを７個まとめて伝送することとする。
【００９６】
ＴＳ−ｄａｔａフィールド２００−０〜６には、ＭＰＥＧ２−ＴＳのデータを付与する。また、ＴＳ−ｄａｔａフィールドは１８８バイトである。
【００９７】
ＴＴＳフィールド２１０−０〜６には、各ＭＰＥＧ２−ＴＳがエンコーダから入力された時点の発振器１３に基づく時刻カウント情報を付与する。また、ＴＴＳフィールドは４バイトである。
【００９８】
ＳＥＱフィールド２２０には、パケットのシーケンス番号を付与する。送信側は、パケットのシーケンス番号を１ずつ増やしていく。受信側は、シーケンス番号の連続性を見ることによって、パケットロスト、同一パケットの再受信、あるいはパケット受信順序の逆転をチェックすることができる。本実施の形態では、パケットロストなどのエラー処理は記載しない。なお、図３においては、ＳＥＱフィールドに４バイト割り当てられているが、ＳＥＱフィールドは省略してもよい。
【００９９】
ＴＸＱフィールド２３０には、送信側の発振器１３に基づく時刻カウント情報を付与する。実際にパケットを送信しようとする時点の時刻カウント情報を付与する。なお、図３においては、ＴＸＱフィールドに４バイト割り当てられているが、ＴＸＱフィールドも省略してもよい。この場合、パケットを送信しようとする時点の時刻カウント情報は、最も新しい時刻カウント情報であるＴＴＳ６で代用することもできる。しかし、エンコーダからＭＰＥＧ２パケットが入力された時点と、パケットを送信しようとする時点には通常タイムラグがあるので、分けておく方が望ましい。
【０１００】
また、図２には図示されていないが、送信部１２は、通常、送信用バッファを持っているのが一般的である。送信用バッファに、送信前のパケットを蓄えることができるようにしておく。送信用バッファを持つことで、ネットワーク２０にバースト的な伝送障害が起こっても障害の耐性を得ることができる。
【０１０１】
また、送信機１０と受信機３０における時刻カウント情報のカウントアップ周波数は共通にしておく。ここでは、時刻カウント情報のカウントアップ周波数を１ＭＨｚとする。つまり、１μ秒に１ずつカウントアップされる。
【０１０２】
図４は、本実施の形態に係る受信機３０の状態遷移を示す図である。
図４を参照して、受信機３０の制御状態について説明する。受信機３０は、大まかに分けて過渡状態３００と定常状態３１０の２つの状態をとる。過渡状態時と定常状態時の動作は、図１に記載されているクロック制御量の動きと対応付けられる。また、受信機３０に対し電源オンまたはリセットした後は、過渡状態となる。
【０１０３】
受信機３０は、過渡状態のとき、高速デジッタリング制御を行なう。送信機１０と受信機３０の発振器の周波数差が十分な精度で推定されれば、高速デジッタリング制御を終了して定常状態に移行する。
【０１０４】
一方、受信機３０は、定常状態のとき、所定のドリフトレートを守ったデジッタリング制御を行なう。受信機３０がパケットを受信しなくなって、一定期間を経過すると過渡状態に移行する。
【０１０５】
まず、受信機３０が過渡状態のときの動作について説明する。
図５は、受信部３１の詳細な構成を示した図である。
【０１０６】
図５に示すように、受信部３１は、パケットを送受信するための通信インタフェース（以下、「Ｉ／Ｆ」）部４１と、デジッタリングバッファ４２と、時刻カウント差分算出部４３と、データフィルタ４４と、周波数差推定部４５と、時刻カウント生成部４６と、時刻カウント差分極小値検出部４７と、時刻カウント遅速判定部４８と、精度判定部４９と、選択部５０とを備える。
【０１０７】
通信Ｉ／Ｆ部４１によって受信されたパケットは、パケット長などがチェックされ、図３で示したようなＭＰＥＧパケットであれば、デジッタリングバッファ４２に蓄えられる。
【０１０８】
デジッタリングバッファ４２に蓄えられたパケットは、パケットに含まれる時刻カウント情報と時刻カウント生成部４６によって生成される時刻カウント情報に基づき、タイミングが調整されてＭＰＥＧデコーダに出力される。
【０１０９】
以下に、図５を参照して、デジッタリングバッファ４２からＭＰＥＧデコーダにパケットが出力されるタイミングについて説明する。まず、あらかじめ受信機側で最初のパケットを受信してからそのパケットをＭＰＥＧデコーダに出力するまでどれだけの時間を待つかというパラメータを設定しておく。これを初期再生遅延時間とする。初期再生遅延時間はネットワークで生じる伝送遅延ゆらぎを吸収できるだけの時間を設定することが望ましい。
【０１１０】
最初のパケットを出力するタイミングは、以下の条件（Ａ）もしくは条件（Ｂ）のうち早い方とする。
【０１１１】
条件（Ａ）受信機側で１パケット目を受信してから初期再生遅延時間が経過したとき
条件（Ｂ）受信機側バッファに蓄えられているバッファ時間量が初期再生遅延時間を超えたとき（ただし、バッファ時間量とは、受信機側バッファに蓄えられている最新のパケットと最古のパケットとに付与されている時刻カウント情報の差である。各パケットには、エンコーダから入力された時点の送信機側の時刻カウント情報が付与されている。）
ここで、受信機側は、１パケット目を出力した時点で、遅延時間（delayed_time）を次の式（２）のように設定する。
【０１１２】
「遅延時間（delayed_time）」＝「１パケット目を出力した時点の時刻カウント情報」−「１パケット目に含まれる時刻カウント情報」…式（２）
また、２パケット目以降を出力するタイミングは、現在の時刻カウント情報（current_time）が次の式（３）の条件を満たすと出力する。
【０１１３】
「現在の時刻カウント情報（current_time）」≧「２パケット目以降に含まれる時刻カウント情報」＋「遅延時間（delayed_time）」…式（３）
送受信を開始する時点で、送信機が送信バッファにある程度のパケットを蓄えていると、送受信が始まると一時的に多量のパケットが送受信されるので、条件（Ｂ）が先に満たされることになる。そうでなければ、条件（Ａ）が先に満たされることが多い。
【０１１４】
式（３）の条件がすでに満たされていれば、ただちにパケットを出力する。
ただし、時刻カウント情報の大小比較には注意が必要である。時刻カウント情報は、符号無し３２ビット整数であり、０〜２＾３２−１を巡回する数値だからである。
【０１１５】
図６は、時刻カウント情報などの巡回する数値の大小比較を説明するための図である。
図６（ａ）に示すように、時刻カウント情報の大小比較は、単純な比較ではなく、右回りに行くほど大きいと判断されるように比較しなければならない。具体的には、図６（ｂ）に示すようなコードで大小比較を行なうとよい。以下の説明でも、時刻カウント情報（時刻カウント差分）の大小比較は、図６（ｂ）に示すようなコードを使うものとする。
【０１１６】
図５に戻って、通信Ｉ／Ｆ部４１でパケットを受信し始めてからしばらくはパケット伝送遅延時間が安定しないことがある。パケット伝送遅延時間が安定しないと、後続の周波数差推定部４５において精度良く周波数差を求めることができない。このようなときは、所定の時間（たとえば０．５秒）、受信したパケットを無視するようにしてもよい。もしくは、パケットを受信し始めてから所定のパケット数（たとえば１５０パケット）を受信するまで無視するようにする。もしくは、パケットを受信し始めてからパケット伝送遅延時間が安定するまで、無視するようにしてもよい。ここで、「パケット伝送遅延時間が安定する」とは、たとえば、パケット伝送遅延時間の直近Ｎ回の標準偏差を計算し、所定の値以下ならば安定したと判断する。
【０１１７】
時刻カウント生成部４６は、発振器３３とクロック制御量に基づいて時刻カウント情報を生成する。クロック制御量とは、時刻カウント情報の進み具合を調整するパラメータである。
【０１１８】
カウントアップ周波数が１ＭＨｚと仮定し、クロック制御量をＸ［ｐｐｍ］に設定すると、時刻カウント情報は１秒間に１００万＋Ｘ回カウントアップされる。
【０１１９】
ここで、クロック制御量をプラスに設定すると、時刻カウント情報は早く進む。また、クロック制御量をマイナスに設定すると、時刻カウント情報はゆっくり進む。
【０１２０】
時刻カウント情報は、発振器３３のクロックを分周してカウントアップする。たとえば、発振器３３の発振周波数を３３ＭＨｚ、クロック制御量をＸ［ｐｐｍ］とすると、分周値を次式（４）の右辺のように設定するとよい。
【０１２１】
１／３３×（１＋Ｘ×１０＾（−６））≒３０３０３／（９９９９９９−Ｘ）…式（４）
なお、分周値は有理数で表現している。分周値がｎ／ｄというのは、発振器３３のクロックサイクルｄ回に、時刻カウント情報がｎの割合でカウントアップすることを意味する。
【０１２２】
このように、時刻カウント生成部４６は、クロック制御量を引数として時刻カウント情報の進み具合が調整され、時刻カウント情報を生成する。
【０１２３】
選択部５０は、精度判定部４９からの制御信号に従って、周波数差推定部４５からのクロック制御量または時刻カウント遅速判定部４８からのクロック制御量のいずれか一方を選択的に時刻カウント生成部４６に与える。
【０１２４】
精度判定部４９は、選択部５０に対し、過渡状態においては、周波数差推定部４５からのクロック制御量を与え、定常状態においては、時刻カウント遅速判定部４８からのクロック制御量を与えるように制御信号を送る。過渡状態から定常状態および定常状態から過渡状態への移行については後述する。
【０１２５】
時刻カウント差分算出部４３は、パケットに含まれる時刻カウント情報とそのパケットが受信された時点の時刻カウント生成部４６によって生成された時刻カウント情報との差分を検出する。時刻カウント差分（deliver_time）は次の式（５）で求められる。
【０１２６】
「時刻カウント差分（deliver_time）」＝「受信機が受信した時点の時刻カウント情報（received_time）」−「送信機が送信しようとする時点の時刻カウント情報（transmit_time）」…式（５）
パケット伝送時間が前後のパケットと比べて著しく長くなると、そのときの時刻カウント差分が前後のパケットと比べて大きくなる。データフィルタ４４は、このような場合のデータを無効なデータとして除去する。このようなデータフィルタを設ける理由は、パケット伝送時間のばらつきが大きいためである。
【０１２７】
図７は、無線伝送におけるパケット伝送時間のヒストグラムの一例を示す図である。
図７において、横軸はパケット伝送時間を、縦軸は頻度を表わす。図７に示すように、一見すると正規分布のようであるが、パケット伝送時間は＋∞方向に長い尾を引いていることがわかる。無線伝送においては、パケット伝送時間が１００ｍｓを超えることもあり、パケット伝送時間に上限を仮定することはふさわしくない。これは、無線伝送に限らず多くのネットワーク環境においてもいえることである。
【０１２８】
時刻カウント差分に異常値があると、周波数差を推定するところで誤差が大きくなってしまう。本発明の目的は、短時間で高精度に周波数差を推定することであるので、データフィルタを設けている。
【０１２９】
図５に戻って、周波数差推定部４５は、送信機の発振器１３と受信機の発振器３３との間で生じる発振周波数の差を推定する。データフィルタ４４によって除去された時刻カウント差分を基に推定する。
【０１３０】
また、周波数差推定部４５は、時刻カウント生成部４６に対してクロック制御量を出力する。周波数差を推定しない段階のデフォルトのクロック制御量は、０［ｐｐｍ］に設定しておく。時刻カウント生成部４６は、クロック制御量によって、時刻カウント情報の進み方を早くしたり遅くしたり調整する。
【０１３１】
図８は、時刻カウント差分算出部４３によって得られた時刻カウント差分のプロット図である。
【０１３２】
図８を参照して、時刻カウント差分について説明する。なお、図８において、横軸は、データ受信を開始してからの経過時間［μｓ］である。縦軸は、時刻カウント差分［μｓ］である。
【０１３３】
送信側の時刻カウント情報と受信側の時刻カウント情報は、それぞれ独立してカウントアップされる。送信側と受信側それぞれが電源オンやリセットされた時点でゼロからカウントアップされ始める。送信側と受信側で電源オンやリセットされるタイミングが毎回異なるため、時刻カウント情報の差分の値そのものに意味はない。しかし、時刻カウント情報の差分の経過には意味がある。
【０１３４】
図８に示すように、時間の経過とともに時刻カウント差分が増える傾向にあることが分かる。これは、送信機の発振器１３と受信機の発振器３３との間で生じる発振周波数の差に起因する。
【０１３５】
時間の経過とともに増えていくか、減っていくかは、送信機の発振器１３と受信機の発振器３３との関係による。すなわち、受信機の発振器３３の進み方が送信機の発振器１３よりも速ければ、時間の経過とともに増えていき、受信機の発振器３３の進み方が送信機の発振器１３よりも遅ければ、時間の経過とともに減っていく。
【０１３６】
図９は、データフィルタによって無効なデータが除去された後の時刻カウント差分のプロット図である。
【０１３７】
図９に示すように、データフィルタ４４は、図８に示すようなプロット図から無効なデータを除去する。
【０１３８】
図１０は、無効なデータを検出する処理についてのフローチャートである。
図１０を参照して、データフィルタ４４が無効なデータを検出する処理について説明する。データフィルタ４４は、パケットを受信するごとに、パケットに含まれる、送信機が送信しようとする時点の時刻カウント情報（transmit_time）と、受信機が受信した時点の時刻カウント情報（received_time）とを引数として、無効なデータを検出するルーチンを呼び出す。
【０１３９】
まず、ステップＳ９００において、データフィルタ４４は、受信したパケットが先頭パケットであるかどうか判定する。
【０１４０】
先頭パケットであれば（ステップＳ９００において、ＹＥＳ）、ステップＳ９０２において、データフィルタ４４は、静的変数（first_transmit_time、min_deliver_time2）の初期設定を行なう。具体的には、送信機が先頭パケットを送信しようとする時刻の時刻カウント情報（first_transmit_time）をゼロに設定する。ここで、「先頭パケット」とは、電源投入後やリセット後に最初に受信したパケットをいう。また、修正された時刻カウント差分の最小値（min_deliver_time2）を＋∞に設定する。なお、「修正された時刻カウント差分」についてはステップＳ９０６で詳しく説明する。
【０１４１】
続いて、ステップＳ９０４にて、送信機が先頭パケットを送信しようとする時刻の時刻カウント情報（first_transmit_time）に、受信したパケットに含まれる、送信機が送信しようとする時点の時刻カウント情報（transmit_time）を代入する。
【０１４２】
一方、先頭パケットでなければ（ステップＳ９００において、ＮＯ）、ステップＳ９０６にて、修正された時刻カウント差分（deliver_time2）を計算する。ここで行なわれる時刻カウント差分の修正計算は、以下で説明するようなデータ判定のために行なわれる。なお、計算は次の式（６）にしたがって行なう。
【０１４３】
（deliver_time2）＝（received_time）−（transmit_time2）…式（６）
ここで、（transmit_time2）は、送信機の時刻カウント情報を擬似的に＋２００［ｐｐｍ］早くさせたものである。具体的な計算式は次の式（７）のようになる。
【０１４４】
（transmit_time2）＝（（transmit_time）−（fisrt_transmit_time））×（1＋200e-6）＋（fisrt_transmit_time）…式（７）
ここでは、送信機の時刻カウント情報を擬似的に＋２００［ｐｐｍ］早くさせているが、これは、送信機側と受信機側の発振器で想定される周波数誤差を合計したものを上回るだけの量を設定する。ここでは、送信機側と受信機側の発振器の精度をそれぞれ１００［ｐｐｍ］未満と想定する。このように設定すれば、受信機側の時刻カウント情報の進み方が送信機側の時刻カウント情報の進み方より遅くなる。
【０１４５】
また、受信機側の時刻カウント情報を擬似的に遅くさせる方法をとってもよい。このように設定すれば、送信機側の時刻カウント情報の進み方が受信機側の時刻カウント情報の進み方より早くなる。
【０１４６】
したがって、いずれの方法をとっても、修正された時刻カウント差分は、時間経過とともに減少していくと推定される。擬似的に早くさせる量は、システムで使用する発振器の精度に合わせて変更してもよい。
【０１４７】
図１１は、図８で示したデータに対し、修正された時刻カウント差分（deliver_time2）をプロットした図である。
【０１４８】
図１１に示すように、擬似的に送信機の時刻カウント情報を早めて送信機の時刻カウント情報を修正し、修正された時刻カウント差分時間（deliver_time2）を計算すると、時間経過とともに減少していくことが分かる。
【０１４９】
図１０に戻って、ステップＳ９０８にて、ステップＳ９０６において計算した、修正された時刻カウント差分時間（deliver_time2）が、現時点における、修正された時刻カウント差分の最小値（min_deliver_time2）より小さいかどうかを判定する。
【０１５０】
最小値以下であれば（ステップＳ９０８にて、ＹＥＳ）、ステップＳ９１０にて、修正された時刻カウント差分の最小値（min_deliver_time2）に、ステップＳ９０６で計算した、修正された時刻カウント差分時間（deliver_time2）を代入する。
【０１５１】
次いで、ステップＳ９１２にて、受信したパケットは有効なデータであると判定して、処理を終了する。
【０１５２】
一方、最小値より大きければ（ステップＳ９０８にて、ＮＯ）、ステップＳ９１４にて無効なデータであると判定して、処理を終了する。
【０１５３】
データフィルタは、以上のような方法により実現できるが、データフィルタの実現方法としては、上述した方法だけでなく次のような方法もある。
【０１５４】
受信機側で、所定の時間（たとえば１００ｍｓ）ごとに区切り、もしくは、一定数のパケット数受信（たとえば５０パケット）ごとに区切り、それぞれの期間で時刻カウント差分の極小を求める。時刻カウント差分が極小となった場合のみ有効なデータであると判定し、それ以外は無効なデータであると判定する。
【０１５５】
あるいは、受信機側で、時刻カウント差分（deliver_time）の過去Ｎ回のうち小さい方からＭ個を取り出して、そのＭ個の平均をとる（これを「移動下側平均」と呼ぶ）。パケットを受信したとき、時刻カウント差分（deliver_time）が、移動下側平均±Ｘ（Ｘは所定の値）の範囲の中に含まれるとき、有効なデータであると判定し、それ以外は無効なデータであると判定する。
【０１５６】
図５に戻って、周波数差推定部４５は、データフィルタ４４によって有効であると判定されたデータに基づいて周波数差を算出する。
【０１５７】
図１２は、周波数差を算出する処理についてのフローチャートである。
図１２を参照して、周波数差推定部４５が、送受信機の周波数差を算出する処理について説明する。周波数差推定部４５は、パケットを受信するごとに、パケットに含まれる、送信機が送信しようとする時点の時刻カウント情報（transmit_time）と、受信機が受信した時点の時刻カウント情報（received_time）とを引数として、周波数差を算出するルーチンを呼び出す。なお、ここでは、周波数差を算出する方法として、最小二乗法を用いる。
【０１５８】
図１３は、最小二乗法を説明するための図である。
ここで、図１３を参照して最小二乗法について説明する。なお、図１３では、横軸をｘ、縦軸をｙとする。
【０１５９】
最小二乗法は、ｎ個の点（ｘｉ，ｙｉ）（ｉ＝１，…，ｎ）を最もよく近似する直線ｙ＝ａｘ＋ｂ（これを「回帰直線」と呼ぶ）を求めるのに用いられる。つまり、最小二乗法は、次式（８）で表わされる、各点（ｘｉ，ｙｉ）と回帰直線ｙ＝ａｘ＋ｂとの間の差（これを残差と呼ぶ）の二乗和が最小になるように各係数（この場合はａ，ｂ）を求める方法である。
【０１６０】
【数１】
2008118549.tif 000003
【０１６１】
ただし、式（８）中のＡ，Ｂ，Ｃ，Ｄ，Ｅは、次式（９）で表わされる。
【０１６２】
【数２】
2008118549.tif 000004
【０１６３】
各係数を求めるには、具体的には、式（８）で表わされる残差二乗和Ｓを各係数で偏微分しゼロを代入して得られる次の式（１０）、式（１１）を計算する。
【０１６４】
【数３】
2008118549.tif 000005
【０１６５】
図１２に戻って、以下、周波数差を算出する処理についてフローチャートに従って詳細に説明する。なお、周波数差推定部４５は、パケットを受信するたびに以下の処理を行なうものとする。
【０１６６】
まず、ステップＳ１１００において、時刻カウント差分算出部４３は、式（５）に従って、時刻カウント差分（deliver_time）を計算する。
【０１６７】
そして、ステップＳ１１０２において、周波数差推定部４５は、受信したパケットが先頭パケットであるかどうか判定する。
【０１６８】
先頭パケットであれば（ステップＳ１１０２において、ＹＥＳ）、ステップＳ１１０４において、周波数差推定部４５は、静的変数（first_transmit_time，first_deliver_time，ＳＸ，ＳＹ，ＳＸＸ，ＳＸＹ，ＳＹＹ，ＣＮＴ）の初期設定を行なう。具体的には、各変数の値をゼロにする。なお、ここでは、先頭パケットの時刻カウント差分を「first_deliver_time」とする。また、ＳＸは式（８）における変数Ｅに対応する。同様に、ＳＹは変数Ｃに、ＳＸＸは変数Ｂに、ＳＸＹは変数Ｄに、ＳＹＹは変数Ａに、ＣＮＴはｎに対応する。
【０１６９】
次いで、ステップＳ１１０６にて、送信機が先頭パケットを送信しようとする時刻の時刻カウント情報（first_transmit_time）に受信したパケットに含まれる、送信機が送信しようとする時点の時刻カウント情報（transmit_time）を代入する。また、先頭パケットの時刻カウント差分（first_deliver_time）に受信したパケットの時刻カウント差分（deliver_time）を代入する。
【０１７０】
一方、先頭パケットでなければ（ステップＳ１１０２において、ＮＯ）、ステップＳ１１０８にて、精度判定部４９は、周波数差推定部４５が推定した周波数差の精度が所定の精度であるか（精度が十分であるか）どうか判定する。この判定方法は後述する。
【０１７１】
周波数差の推定が十分であれば（ステップＳ１１０８において、ＹＥＳ）、ステップＳ１１１０にて、周波数推定部４５は、周波数差の計算を行ない、処理を終了する。なお、周波数差（Ａ）は、式（１０）に対応する計算を行なう。具体的には、次式（１２）の計算を行なう。
【０１７２】
周波数差（Ａ）＝（ＣＮＴ×ＳＸＹ−ＳＹ×ＳＸ）／（ＣＮＴ×ＳＸＸ−ＳＸ×ＳＸ）…式（１２）
一方、周波数差の推定が十分でなければ（ステップＳ１１０８において、ＮＯ）、ステップＳ１１１２にて、周波数差推定部４５は、ステップＳ１１０２で求めた時刻カウント差分（deliver_time）が有効なデータであるかどうか判定する。
【０１７３】
有効なデータであるかどうかは、データフィルタ４４が、図１０で示したフローチャートもしくは前述した方法にしたがって判定した結果を用いる。
【０１７４】
有効なデータであれば（ステップＳ１１１２において、ＮＯ）、ステップＳ１１１４にて、周波数差推定部４５は、最小二乗法のための準備計算を行ない、処理を終了する。なお、準備計算とは式（９）に対応する計算のことである。具体的には、「（transmit_time）−（first_transmit_time）」をＸとし、「（deliver_time）−（first_deliver_time）」をＹとする。また、ＳＸにＳＸ＋Ｘを、ＳＹにＳＹ＋Ｙを、ＳＸＸにＳＸＸ＋Ｘ×Ｘを、ＳＹＹにＳＹＹ＋Ｙ×Ｙを、ＣＮＴにＣＮＴ＋１を代入する。
【０１７５】
一方、有効なデータでなければ（ステップＳ１１１２において、ＮＯ）、処理を終了する。
【０１７６】
以上のようにして、周波数差を算出する処理が行なわれる。さらに、周波数差推定部４５は、ステップＳ１１１０で算出した周波数差をもとに、クロック制御量を決定する。
【０１７７】
時刻カウント生成部４６は、クロック制御量を引数に時刻カウント情報の進み具合を調整する。いったんステップＳ１１１０で周波数差の計算が行なわれた後は、周波数差を算出する処理はもはや行なわれない。過渡状態が終了し、定常状態に移行する。
【０１７８】
次に、ステップＳ１１０８において、精度判定部４９が、推定した周波数差の精度が所定の精度であるか（推定が十分であるか）どうかの判定する方法について説明する。
【０１７９】
第１の方法は、先頭パケットを受信してから所定の時間（たとえば５秒）を経過すれば、周波数差の推定が十分になったと判定する。
【０１８０】
第２の方法は、先頭パケットを受信してから所定のパケット数（たとえば１５００パケット）を受信すれば、周波数差の推定が十分になったと判定する。
【０１８１】
第３の方法は、有効なデータの差分の個数（ステップＳ１１１４におけるＣＮＴに相当）が所定の個数（たとえば５０個）集まれば、周波数差の推定が十分になったと判定する。
【０１８２】
第４の方法は、所定の時間を経過するごとに、もしくは所定のパケット数を受信するごとに、式（１０）を用いて係数ａを求めて、その計算結果の過去Ｎ回の最大と最小との差が所定の値（たとえば１０［ｐｐｍ］）を下回っていると判断されれば、周波数差の推定が十分になったと判定する。
【０１８３】
第５の方法は、パケットを受信して、有効なデータが得られるごとに、式（８）で示される残差二乗和Ｓを計算して、その計算結果が所定の値以下になっていると判断されれば、周波数差の推定が十分になったと判定する。これは、各データがより良く回帰直線にあてはまる場合は、残差二乗和Ｓの値が小さくなることに着目したものである。残差二乗和Ｓの値が小さければ、図１３における各点（ｘｉ，ｙｉ）が回帰直線により近いところに位置するため、その傾きも正しく推定できていると考えられる。第５の方法では、データの個数を一定に保つことが必要なので、有効なデータを、受信したときの直前のＮ個だけ用意して計算するようにする。
【０１８４】
あるいは、データの個数を一定に保つときに、最も古いデータを削除するのではなく、データがＮ個たまった時点での回帰直線を仮に求め、その回帰直線から最も離れた点となるデータを削除していき、Ｎ個だけのデータを残すようにしてもよい。
【０１８５】
その他、回帰直線のあてはまり具合を表す指標として、相関係数や決定係数（アール・スクエア）などを用いてもよい。
【０１８６】
精度判定部４９は、以上のようにして周波数差の精度が十分であると判定すれば、精度が十分である周波数差から決定されたクロック制御量を時刻カウント生成部４６に与えた後に、時刻カウント遅速判定部４８からのクロック制御量を与えるように、選択部５０に対して制御信号を送る。
【０１８７】
なお、ステップＳ１１１０で処理を終了するときに、精度判定部４９は通信Ｉ／Ｆ部４１を介して、周波数差の推定が十分になったことを、送信機側に通知してもよい。これによって、送信機側は、受信機側が過渡状態にあるときはより伝送遅延時間のばらつきの少ない方法で伝送し、受信機側が定常状態にあるときは伝送効率の良い方法で伝送する、といった動作をすることが可能となる。
【０１８８】
送信機側が、より伝送遅延時間のばらつきの少ない方法で伝送すると、受信機による周波数差の推定が正しく計算しやすくなるという利点がある。
【０１８９】
図１４は、送信部１２の詳細な構成の例を示した図である。
図１４を参照して、上記のように受信機側の通知によって伝送方法を変えることができるような送信部１２の構成について説明する。
【０１９０】
送信部１２は、パケット生成部５１と、送信バッファ部５２と、送信時刻付与部５３と、通信Ｉ／Ｆ部５４と、伝送方法選択部５５と、時刻カウント生成部５６とから構成される。
【０１９１】
パケット生成部５１は、ＭＰＥＧエンコーダから入力されたＭＰＥＧパケットに、時刻カウント生成部５６に基づく時刻カウント情報を付与して、パケットを生成する。
【０１９２】
送信バッファ部５２は、パケットを一時的に蓄える。
送信時刻付与部５３は、送信バッファ部５２からパケットを取り出し、通信Ｉ／Ｆ部５４へパケットを送る。この際、パケットに送信時刻情報を付与する。
【０１９３】
通信Ｉ／Ｆ部５４は、パケットを受信機側に送信する。
伝送方法選択部５５は、パケットをどのような方法で伝送するかを選択する。たとえば、伝送遅延時間のばらつきの少ない方法で伝送する、または、伝送効率の良い方法で伝送する、を選択する。伝送方法選択部５５は、送信機１０だけの判断で選択を決定してもよいし、受信機３０からのパケットを受信することによって決定してもよい。
【０１９４】
時刻カウント生成部５６は、発振器１３に基づいて時刻カウント情報を生成する。
以上の手順で、送信機１０と受信機３０の発振器の周波数差が短時間で精度良く求められる。ここまでで、過渡状態の期間は終了する。
【０１９５】
過渡状態の期間が終了した後は、定常状態におけるデジッタリング制御を行なう。
定常状態でのデジッタリング制御は、クロック制御量の変化をなるべくゆるやかにすることを目標にする。望ましくは、非特許文献３に記載されているＰＣＲドリフトレートを満足するまでゆるやかに制御させる。民生機器であれば、必ずしもＰＣＲドリフトレートを満足することは必要ないが、目標とするドリフトレートをあらかじめ決定しておく。なお、必ずしもＰＣＲドリフトレートを満足する必要がないというのは、民生機器で一般的に使用される水晶発振器部品の温度変化による発振周波数変化の方が、非特許文献３に記載されているＰＣＲドリフトレートよりも大きいことが一つの理由である。
【０１９６】
定常状態でのデジッタリング制御は、「パケット相対伝送時間」が一定になるように制御する方法と、「送受信機のバッファ時間量の合計」が一定になるように制御する方法と、「受信機のバッファ時間量」が一定になるように制御する方法がある。以下、図５を参照して各方法について述べる。
【０１９７】
［パケット相対伝送時間が一定になるように制御する方法］
ここでいう「パケット相対伝送時間」とは、前述した時刻カウント差分（（deliver_time）＝（received_time）−（transmit_time））と同値である。送信機の時刻カウント情報はパケットのペイロードに含まれているものとする。
【０１９８】
まず、時刻カウント差分算出部４３は、パケット相対伝送時間を求める。
そして、時刻カウント差分極小値検出部４７は、所定の期間ごとに「パケット相対伝送時間」の極小値を求める。たとえば、６秒間ごとに極小値を求める。過渡状態において、データフィルタ４４が、時刻カウント差分が所定の時間で極小となったものを有効とする判定方法について上述したが、定常状態において、時刻カウント差分極小値検出部４７では、極小値を求める「所定の期間」の範囲が「所定の時間」よりも長い。これは、定常状態では、ゆるやかな同期制御を行なうためである。
【０１９９】
「パケット相対伝送時間」の極小値は、受信機側のクロックの進み方が送信機側と比べて速ければ、増える方向に向かう。受信機側のクロックの進み方が送信機側と比べて遅ければ、減る方向に向かう。
【０２００】
時刻カウント遅速判定部４８は、「パケット相対伝送時間」の極小値の変化をみて、受信機側のクロックの進み方が遅いか速いかを判定する。「パケット相対伝送時間」の極小値の｛増／減｝に応じて、受信機側のクロックの進み方を所定のドリフトレートの範囲内で｛遅くする／速くする｝。どれだけクロック制御量を変化させるかはあらかじめ決めておく。たとえば、６秒間ごとに±１／９［ｐｐｍ］ずつ変化させる。
【０２０１】
所定の時間ごとに、どれだけクロック制御量を変化させるかはパラメータで調整可能なように設計しておくのがよい。また、時刻カウント遅速判定部４８は、「パケット相対伝送時間」の極小値の変化において、所定の値以下の差（たとえば１０μ秒程度）は有意な差とはみなさず、受信機側のクロックの進み方をそのままに維持してもよい。
【０２０２】
［送受信機のバッファ時間量の合計が一定になるように制御する方法］
また、バッファ時間量を観察することでも、受信機側のクロックの進み方が遅いか速いかを判定できる。
【０２０３】
受信機は、パケットを受信するごとに、送受信機のバッファ時間量の合計を求める。なお、これは時刻カウント差分算出部４３に相当する部分において行なわれる。
【０２０４】
送信機のバッファ時間量の情報は、パケットのペイロードに含まれているものとする。これは図１３における送信時刻付与部５３に相当する部分において行なわれる。
【０２０５】
図５に戻って、受信機のバッファ時間量は、パケットを受信したときにデジッタリングバッファ４２に蓄えられているパケットの時間量を取得する。
【０２０６】
受信機のバッファ時間量は、パケット伝送時間が大きくなれば減ることになる。なぜなら、送信機側のバッファ時間量は、パケットに含まれている情報として変化しないが、パケット伝送時間が大きくなると、受信機側でパケットを遅れて受信することになる。その間に受信機側のデジッタリングバッファからパケットが出力され続けることになるので、バッファ時間量は減ることになる。よって、バッファ時間量については極大値を見ることが重要である。
【０２０７】
受信機は、所定の時間ごとに「送受信機のバッファ時間量の合計」の極大値を求める。なお、これは時刻カウント差分極小値検出部４７に相当する部分において行なわれる。
【０２０８】
「送受信機のバッファ時間量の合計」の極大値は、受信機側のクロックの進み方が送信機側と比べて速ければ、減る方向に向かう。受信機側のクロックの進み方が送信機側と比べて遅ければ、増える方向に向かう。「送受信機のバッファ時間量の合計」の極大値の変化をみて、受信機側のクロックの進み方が遅いか速いかを判定する。なお、これは時刻カウント遅速判定部４８に相当する部分において行なわれる。
【０２０９】
極大値の｛増／減｝に応じて、受信機側のクロックの進み方を所定のドリフトレートの範囲内で｛速くする／遅くする｝。
【０２１０】
［受信機のバッファ時間量が一定になるように制御する方法］
また、送信機のバッファ時間量の情報が得られない場合、受信機のバッファ時間量だけで判断してもよい。
【０２１１】
ネットワーク２０にバースト的な伝送障害が起こらない限り、送信機のバッファ時間量はゼロもしくはゼロに近い値となると考えられる。所定の時間の間に、１パケットでもこのような状態になれば、送信機のバッファ時間量の情報が得られない場合でも、受信機のバッファ時間量だけで判断することができる。
【０２１２】
受信機は、所定の時間ごとに「受信機のバッファ時間量」の極大値を求める。「受信機のバッファ時間量」の極大値の変化をみて、受信機側のクロックの進み方が遅いか速いかを判定する。極大値の｛増／減｝に応じて、受信機側のクロックの進み方を所定のドリフトレートの範囲内で｛速くする／遅くする｝。
【０２１３】
これらのいずれかの方法を用いることで、目標とするドリフトレートを守って、デジッタリング制御を継続することができる。
【０２１４】
以上で、定常状態でのデジッタリング制御の方法について述べた。
また、定常状態時から過渡状態に移行することもありえる。パケットの受信が途絶えて、デジッタリングバッファ４２が空になり、一定時間経過すれば、ストリーム伝送が終了したとみなして、過渡状態に移行する。
【０２１５】
また、電源オンもしくはリセットされても、定常状態から過渡状態に移行する。
定常状態から過渡状態に移行した際、選択部５０は、周波数差推定部４５からのクロック制御量を時刻カウント生成部４６に与えるようにする。
【０２１６】
なお、過渡状態に移行したときに、受信機から送信機にパケットを送信するような送信手段を備えてもよい。これによって、送信機側は伝送遅延時間のばらつきの少ない方法で伝送することができる。パケットを送信することで、受信機側から送信機の伝送方法を明示的に指示することができる。
【０２１７】
また、本発明における映像伝送システムでは、部品のクロック精度によっては、過渡状態時に正常に映像が表示されるかどうかは保障されない。上述したＭＰＥＧデコーダのＶＣＸＯ問題があるため、セットによって正常に映像が表示される場合とされない場合がある。よって、過渡状態時に、送信機ではダミーパケットを送信し、受信機では受信したダミーパケットを破棄するようにしてもよい。このように制御することで、セットの個体差による動作の違いをなくすことができる。
【０２１８】
また、ダミーパケットの構成は、図３で示したパケットフォーマットにとらわれず、送信時刻情報のみのパケットとしてもよい。パケットの長さを短く設定できるため、パケット伝送時間のばらつきが少なくなることも期待できる。
【０２１９】
図１５は、データフィルタ４４がある場合とない場合のシミュレーション結果を示す図である。
【０２２０】
図１５を参照して、データフィルタがある場合とない場合との収束結果の違いについて説明する。図１５において、横軸は、シミュレーションの経過時間［秒］である。縦軸は、最小二乗法を用いて推測した周波数差と、真値との誤差の絶対値［ｐｐｍ］である。０ｐｐｍに近いほど正しく推定できていることを示す。
【０２２１】
また、図１５では、シミュレーションを２０００回行なって、収束の精度の悪い１０回を除いて、その次に悪い回の値を示している。したがって、図１５の結果は９９．５％の確率で期待できる。なお、グラフ１４０は、データフィルタ４４がない場合を示し、グラフ１４２は、データフィルタ４４がある場合を示している。
【０２２２】
ここで、シミュレーションの条件を詳しく説明すると、パケット伝送遅延時間のばらつきとして、パレート分布を用いた。最短のパケット伝送遅延時間は５０μ秒で、９９．７％が１０ｍｓ以内に収まるようにパラメータを設定している。
【０２２３】
図１５に示すように、データフィルタ４４がない場合は、１０秒以上経過しても数ｐｐｍまでしか収束していない。一方、データフィルタ４４がある場合は、５秒間で約±１ｐｐｍまで収束していることがわかる。
【０２２４】
図１５のシミュレーション結果は、データフィルタ４４があることによって、デジッタリングにおけるクロック制御量がほぼ収束する（所定のドリフトレートを満足しながら制御できる）までの時間を短く設定できることを示している。
【０２２５】
以上で説明したように、本実施の形態に係る映像伝送システムによれば、デジッタリングにおけるクロック制御において、所定のドリフトレートを満足しながら制御し、かつ、デジッタリングのクロック制御量がほぼ収束して所定のドリフトレートを満足しながら制御できるまでの時間を短くすることができる。
【０２２６】
［実施の形態２］
実施の形態１における過渡状態時の高速デジッタリング制御では、送信機と受信機との間で生じる発振周波数の差を求めるために、送信機側と受信機側の時刻カウント差分を求めていた。本実施の形態では、実施の形態１での方法とは異なる、送信機と受信機に蓄えられているパケットのバッファ時間量の合計を見るという方法について示す。
【０２２７】
バッファ時間量の合計の時間経過は、ちょうど図８で示したグラフを上下反転したような形となる。時刻カウント差分の時間経過と同様の（上下反転した）傾きが得られるので、送信機と受信機との間で生じる発振周波数の差を求めることができる。
【０２２８】
実施の形態２は、実施の形態１における「時刻カウント差分」ではなく「送受信機のバッファ時間量の合計」で発振周波数差を求めるように変更したものである。
【０２２９】
本実施の形態では、図５に示す時刻カウント差分算出部４３において、送信機と受信機に蓄えられているパケットのバッファ時間量の合計を計算するように変更する。バッファ時間量の合計は次式（１３）で求められる。
【０２３０】
「バッファ時間量の合計（buf_amount）」＝「送信機に蓄えられるバッファ時間量（tx_queue）」＋「受信機に蓄えられるバッファ時間量（rx_queue）」…式（１３）
なお、送信機に蓄えられるバッファ時間量（tx_queue）はパケットから得られる。図３で示したＴＸＱフィールド２３０を、パケットを送信しようとする時点の送信機に蓄えられているバッファ時間量に変更する。
【０２３１】
送信機に蓄えられるバッファ時間量は、送信用バッファに蓄えられているパケットのうち、最新パケットの時刻カウント情報と最古パケットの時刻カウント情報との差を、次式（１４）に従って求めることで得られる。
【０２３２】
「送信機に蓄えられるバッファ時間量（tx_queue）」＝「最新パケットの時刻カウント情報（tx_newest_tts）」−「最古パケットの時刻カウント情報（tx_oldest_tts）」…式（１４）
受信機に蓄えられているバッファ時間量は、デジッタリングバッファ４２に蓄えられているパケットのうち、最新パケットの時刻カウント情報と最古パケットの時刻カウント情報との差を、次式（１５）に従って求めることで得られる。
【０２３３】
「受信機に蓄えられるバッファ時間量（rx_queue）」＝「最新パケットの時刻カウント情報（rx_newest_tts）」−「最古パケットの時刻カウント情報（rx_oldest_tts）」…式（１５）
データフィルタ４４において、「バッファ時間量の合計（buf_amount）」の異常値を除去するように変更する。データフィルタ４４のアルゴリズムは、符号の反転を考慮する（例：最小値を更新→最大値を更新と変更する）だけで、実施の形態１で提示した方法がそのまま使える。周波数差推定部４５も符号の反転を考慮するだけで、実施の形態１で提示した方法がそのまま使える。以後の処理は、実施の形態１と同様である。
【０２３４】
以下に、バッファ時間量の合計の時間経過グラフは、時刻カウント差分の時間経過グラフをちょうど上下反転したものである理由を示す。
【０２３５】
「送信機に蓄えられるバッファ時間量（tx_queue）」を求める式（１５）に対し、次式（１６）のようにして求められる「エンコーダから入力されて送信するまでのタイムラグ（time_to_send）」を加えてもよい。
【０２３６】
「エンコーダから入力されて送信するまでのタイムラグ（time_to_send）」＝「送信機が送信しようとする時点の時刻カウント情報（transmit_time）」−「最新パケットの時刻カウント情報（tx_newest_tts）」…式（１６）
なお、送信機に蓄えられるバッファ時間量（tx_queue）に対して式（１６）を加えるというのは、以下の考え方に基づいている。
【０２３７】
送信機がパケットを、エンコーダからパケットが入力された直後に送信する場合と、しばらく経過してから送信する場合では、バッファ時間量の意味合いが実質的に異なるという考え方がある。
【０２３８】
たとえば、エンコーダから１５０μ秒間隔でパケットが入力されているとして、直前のパケットが５０μ秒前に入力されていたとする。すると、１００μ秒後には次のパケットが入力されるはずなので、その時点で送信機に蓄えられるバッファ時間量は１５０μ秒増えることになる。１００μ秒後にバッファ時間量を１５０μ秒増やすのではなく、現時点でバッファ時間量を５０μ秒分増やしておく、という考え方である。
【０２３９】
エンコーダから一定間隔（例：１５０μ秒）でパケットが入力されているとき、式（１８）の値はわずか（例：０μ秒〜１５０μ秒）である。
【０２４０】
また、受信機に蓄えられるバッファ時間量（rx_queue）を求める式（１５）に、次式（１７）のようにして求められる「最古パケットが出力されるまでの時間（time_to_output）」を加えてもよい。
【０２４１】
「最古パケットが出力されるまでの時間（time_to_output）」＝「最古パケットが出力される予定の時刻（expected_sph）」−「受信機がパケットを受信した時点の時刻カウント情報（received_time）」…式（１７）
最古パケットが出力される予定の時刻は次式（１８）で計算できる。
【０２４２】
最古パケットが出力される予定の時刻（expected_sph）＝「最古パケットの時刻カウント情報（rx_oldest_tts）」＋「遅延時間（delayed_time）」…式（１８）
受信機に蓄えられるバッファ時間量（rx_queue）に、式（１７）を加えるというのは、以下の考え方に基づいている。
【０２４３】
受信機がパケットを、最古パケットを出力した直後に受信した場合と、しばらく経過してから受信した場合とでは、バッファ時間量の意味合いが実質的に異なるという考え方がある。
【０２４４】
たとえば、エンコーダから１５０μ秒間隔でパケットが入力されているとして、受信機がパケットを受信した時点で、最古パケットを５０μ秒に出力する予定になっていたとする。すると、５０μ秒を経過しても、受信機に蓄えられるバッファ量に何ら変わりはないので、その分の５０μ秒分を受信機に蓄えられるバッファ時間量（rx_queue）に加える、という考え方である。
【０２４５】
エンコーダから一定間隔（例：１５０μ秒）でパケットが入力されているとき、式（８）の値はわずか（例：０μ秒〜１５０μ秒）である。
【０２４６】
また、送信機における最古パケットとは、いままさに送信しようとしているパケットのことである。また、受信機における最新パケットとは、いま受信したばかりのパケットのことである。よって、送信機における「最古パケットの時刻カウント情報（tx_oldest_tts）」と受信機における「最新パケットの時刻カウント情報（rx_newest_tts）」は等しい。
【０２４７】
以上をまとめると、バッファ時間量の合計は次式（１９）によっても求めることができる。
【０２４８】
「バッファ時間量の合計（buf_amount）」＝「送信機が送信しようとする時点の時刻カウント情報（transmit_time）」−「受信機がパケットを受信した時点の時刻カウント情報（received_time）」＋「遅延時間（delayed_time）」…式（１９）
遅延時間（delayed_time）は固定の時間であるので、これを除くと、バッファ時間量の合計は、結局のところ時刻カウント差分（deliver_time）を符号反転したものに過ぎない。以上より、バッファ時間量の合計の時間経過グラフは、時刻カウント差分の時間経過グラフをちょうど上下反転したものであることがわかる。実施の形態２は、実施の形態１を「時刻カウント差分」から「送受信機のバッファ時間量の合計」に変更したものであり、時刻カウント差分算出部４３、データフィルタ４４、周波数差推定部４５を変更したものである。
【０２４９】
［実施の形態３］
また、実施の形態２の過渡状態時の高速デジッタリング制御を「受信機のバッファ時間量」だけで制御することもできる。
【０２５０】
本実施の形態に係る伝送装置では、パケットに送信機のバッファ時間量の情報が含まれない場合でも、実施可能である。送信機のバッファ時間量をゼロとみなし、それ以外は実施の形態２と同様である。
【０２５１】
本発明は、ＭＰＥＧ２−ＴＳの映像伝送システムに限らず、ストリーミングメディア（ビデオ、オーディオ、音声など）のネットワーク伝送全般において適用できる。具体的なサービスとしては、ＶｏＩＰ、テレフォニー、遠隔会議、ストリーミングビデオ、Ｗｅｂキャスト、ＶｏＤ（ビデオオンデマンド）、ＩＰ放送などが挙げられる。
【０２５２】
今回開示された実施の形態はすべての点で例示であって制限的なものではないと考えられるべきである。本発明の範囲は上記した説明ではなくて特許請求の範囲によって示され、特許請求の範囲と均等の意味および範囲内でのすべての変更が含まれることが意図される。
【図面の簡単な説明】
【０２５３】
【図１】デジッタリングのクロック制御量の時間経過を示した図である。
【図２】本実施の形態に係るネットワーク映像伝送システムを示す図である。
【図３】パケットのフォーマットの一例を示す図である。
【図４】本実施の形態に係る受信機３０の状態遷移を示す図である。
【図５】受信部３１の詳細な構成を示した図である。
【図６】時刻カウント情報などの巡回する数値の大小比較を説明するための図である。
【図７】無線伝送におけるパケット伝送時間のヒストグラムの一例を示す図である。
【図８】時刻カウント差分算出部４３によって得られた時刻カウント差分のプロット図である。
【図９】データフィルタによって無効なデータが除去された後の時刻カウント差分のプロット図である。
【図１０】無効なデータを検出する処理についてのフローチャートである。
【図１１】図８で示したデータに対し、修正された時刻カウント差分（deliver_time2）をプロットした図である。
【図１２】周波数差を算出する処理についてのフローチャートである。
【図１３】最小二乗法を説明するための図である。
【図１４】送信部１２の詳細な構成の例を示した図である。
【図１５】データフィルタ４４がある場合とない場合のシミュレーション結果を示す図である。
【図１６】ＭＰＥＧ２−ＴＳによる映像伝送システムの典型例を示したブロック図である。
【図１７】一般的なＰＬＬの構成を示したブロック図である。
【図１８】非特許文献２に記載されている映像伝送システムの概略を示す図である。
【図１９】特許文献３や特許文献４における、データ蓄積量（バッファ時間量）とクロック制御量との関係を示した図である。
【図２０】映像が表示されるための条件を説明するための図である。
【図２１】クロック制御量の時間変化を示す図である。
【符号の説明】
【０２５４】
１０  送信機、１１  ＭＰＥＧエンコーダ、１２  送信部、１３  発振器、１４  発振器、２０  ネットワーク、３０  受信機、３１  受信部、３２  ＭＰＥＧデコーダ、３３  発振器、３４  可変周波数発振器、４１  通信Ｉ／Ｆ部、４２  デジッタリングバッファ、４３  時刻カウント差分算出部、４４  データフィルタ、４５  周波数差推定部、４６  時刻カウント生成部、４７  時刻カウント差分極小値検出部、４８  時刻カウント遅速判定部、４９  精度判定部、５０  選択部、５１  パケット生成部、５２  送信バッファ部、５３  送信時刻付与部、５４  通信Ｉ／Ｆ部、５５  伝送方法選択部、５６  時刻カウント生成部、１００  ネットワーク映像伝送システム、１２００  送信機、１２０２  ＭＰＥＧ２エンコーダ、１２０４  発振器、１２０６  送信バッファ、１２１０  受信機、１２１２  受信バッファ、１２１４  ＰＬＬ、１２１６  ＭＰＥＧ２デコーダ、１３０２  内部カウンタ、１３０４  減算器、１３０６  ローパスフィルタ、１３０８  電圧制御発振器、１４００  送信機、１４０２  クロック、１４０４  エンコーダ、１４１０  受信機、１４１２  デコーダ、１４１４  ＰＬＬ、１４１６  デジッタリングバッファ、１４１８  制御部、１６００  ＭＰＥＧ２エンコーダ、１６０１  発振器、１６０２  送信機、１６０３  発振器、１６０４  ネットワーク、１６０６  受信機、１６０７  発振器、１６０８  ＭＰＥＧ２デコーダ、１６０９  ＶＣＸＯ。
【図１】
2008118549.tif 000006
【図２】
2008118549.tif 000007
【図３】
2008118549.tif 000008
【図４】
2008118549.tif 000009
【図５】
2008118549.tif 000010
【図６】
2008118549.tif 000011
【図７】
2008118549.tif 000012
【図８】
2008118549.tif 000013
【図９】
2008118549.tif 000014
【図１０】
2008118549.tif 000015
【図１１】
2008118549.tif 000016
【図１２】
2008118549.tif 000017
【図１３】
2008118549.tif 000018
【図１４】
2008118549.tif 000019
【図１５】
2008118549.tif 000020
【図１６】
2008118549.tif 000021
【図１７】
2008118549.tif 000022
【図１８】
2008118549.tif 000023
【図１９】
2008118549.tif 000024
【図２０】
2008118549.tif 000025
【図２１】
2008118549.tif 000026