(57)【特許請求の範囲】
【請求項１】
少なくともタイムスタンプとＴＳ（Ｔｒａｎｓｐｏｒｔ  Ｓｔｒｅａｍ）パケットとで構成される所定の単位が連続するパケットストリームを受信する受信部と、
発振周波数が制御可能である発振部と、
前記発振部が供給するクロックを分周して計測する計測部と、
前記パケットストリームの受信開始時から、前記受信部が受信した前記パケットストリームから読み出した最新の前記タイムスタンプ及び前記計測部が計測する最新の計測値を所定の周期で読み出す取得部と、
前記取得部が取得した前記タイムスタンプの累積値及び前記計測値の累積値を算出する算出部と、
前記算出部が算出した前記タイムスタンプの累積値と前記計測値の累積値との差分の絶対値と、ネットワークジッタに相当する値との大小を比較する比較部と、
前記比較部で比較した結果、前記タイムスタンプの累積値と前記計測値の累積値との差分の絶対値の方が大きい場合に前記発振部の発振周波数を制御する周波数制御部と、
を含むことを特徴とする、受信装置。
【請求項２】
前記周波数制御部は、前記受信部で前記パケットストリームの受信を開始した時から大小比較するまでの時間と、前記タイムスタンプと前記計測値との差分との比率を用いて前記発振部の発振周波数を制御することを特徴とする、請求項１に記載の受信装置。
【請求項３】
前記受信部で受信した前記パケットストリームに含まれる前記ＴＳパケットを、前記制御部によって制御され前記発振部から供給されるクロックに同期してデコード及び再生する再生部をさらに含むことを特徴とする、請求項１に記載の受信装置。
【請求項４】
前記算出部は、前記受信部が受信した前記パケットストリームから前記取得部が読み出した最新のタイムスタンプと、前記取得部が１つ前に読み出したタイムスタンプとを比較し、１つ前に読み出したタイムスタンプの方が小さい場合には１つ前に読み出したタイムスタンプを累積値の算出に用いることを特徴とする、請求項１に記載の受信装置。
【請求項５】
前記取得部で読み出した最新の前記タイムスタンプが、所定の回数に渡って同一の値であるときは、前記周波数制御部での発振周波数の制御を行わないことを特徴とする、請求項１に記載の受信装置。
【請求項６】
前記取得部は、垂直同期信号の割り込みを受けることによって前記受信部が受信した前記パケットストリームから読み出した最新の前記タイムスタンプ及び前記計測部が計測する最新の計測値を読み出すことを特徴とする、請求項１に記載の受信装置。
【請求項７】
前記周波数制御部は、前記比較部が前記タイムスタンプの累積値と前記計測値の累積値との差分の絶対値の方が大きいと判定した場合に、前記タイムスタンプの累積値または前記計測値の累積値のどちらか一方が所定の回数連続して大きいときに初めて前記発振部の発振周波数を制御することを特徴とする、請求項１に記載の受信装置。
【請求項８】
少なくともタイムスタンプとＴＳパケットとで構成される所定の単位が連続するパケットストリームを受信する受信ステップと、
制御可能な発振周波数を有するクロックを供給するクロック供給ステップと、
前記クロック供給ステップで供給するクロックを分周して計測する計測ステップと、
前記パケットストリームの受信開始時から、前記受信ステップで受信した前記パケットストリームから読み出した最新の前記タイムスタンプ及び前記計測ステップが計測する最新の計測値を所定の周期で読み出す取得ステップと、
前記取得ステップで取得した前記タイムスタンプの累積値及び前記計測値の累積値を算出する算出ステップと、
前記算出ステップで算出した前記タイムスタンプの累積値と前記計測値の累積値との差分の絶対値と、ネットワークジッタに相当する値との大小を比較する比較ステップと、
前記比較ステップで比較した結果、前記タイムスタンプの累積値と前記計測値の累積値との差分の絶対値の方が大きい場合に、前記クロック供給ステップで供給されるクロックの前記発振周波数を制御する周波数制御ステップと、
を含むことを特徴とする、クロック同期方法。
【請求項９】
コンピュータに、
少なくともタイムスタンプとＴＳパケットとで構成される所定の単位が連続するパケットストリームを受信する受信ステップと、
制御可能な発振周波数を有するクロックを供給するクロック供給ステップと、
前記クロック供給ステップで供給するクロックを分周して計測する計測ステップと、
前記パケットストリームの受信開始時から、前記受信ステップで受信した前記パケットストリームから読み出した最新の前記タイムスタンプ及び前記計測ステップが計測する最新の計測値を所定の周期で読み出す取得ステップと、
前記取得ステップで取得した前記タイムスタンプ及び前記計測値の累積値を算出する算出ステップと、
前記算出ステップで算出した前記タイムスタンプの累積値と前記計測値の累積値との差分の絶対値と、ネットワークジッタに相当する値との大小を比較する比較ステップと、
前記比較ステップで比較した結果、前記タイムスタンプの累積値と前記計測値の累積値との差分の絶対値の方が大きい場合に、前記クロック供給ステップで供給されるクロックの前記発振周波数を制御する周波数制御ステップと、
を含む処理を実行させることを特徴とする、コンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、受信装置、クロック同期方法およびコンピュータプログラムに関し、より詳細には、ネットワークを介して受信したデータを安定して再生させる受信装置、クロック同期方法およびコンピュータプログラムに関する。
【背景技術】
【０００２】
近年になって、インターネットに代表される通信媒体を介して、音声データや映像データを伝送して提供するサービスが広く提供されるようになっている。音声データや映像データの伝送方式は、通信速度の高速化やネットワーク回線容量の増大化に伴って、データの受信と並行して、受信したデータを基に音声や映像を再生するストリーミング形式の伝送方式が広く利用されている。
【０００３】
ストリーミング形式によって音声データや映像データを受信して、安定して再生するには、送信装置における信号処理クロックと、受信装置における信号処理クロックとを合わせる必要がある。従って、音声データや映像データを安定して再生するには、受信装置において信号処理クロックの周波数を制御する必要がある。
【０００４】
ストリーミング形式によって音声データや映像データを受信して再生する受信装置が、例えば特許文献１に開示されている。特許文献１には、ネットワークＩ／Ｆより、タイムスタンプとＴＳ（Ｔｒａｎｓｐｏｒｔ  Ｓｔｒｅａｍ）パケットとで構成される所定の単位が連続するパケットストリームを受信し、受信したパケットストリームに含まれるタイムスタンプを利用して、ＴＳパケットごとにデマルチプレクサへ出力し、ＰＣＲ（Ｐｒｏｇｒａｍ  Ｃｌｏｃｋ  Ｒｅｆｅｒｅｎｃｅ）を利用したクロック制御を行う技術が開示されている。特許文献１に記載された受信装置は、送信側と受信側とでのフロー制御を想定しており、ストリーム供給が適切に行われれば、バッファのオーバーフローやアンダーフローは発生せず、受信した音声データや映像データを安定してデコードすることができる。
【０００５】
【特許文献１】特開２００５−１５１４３４号公報
【特許文献２】特開２０００−３３２８０２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
特許文献１で開示された技術では、ストリーム供給が適切に行われれば、バッファのオーバーフローやアンダーフローは発生せず、受信した音声データや映像データを安定してデコードすることができる。一方、ＲＴＰ／ＵＤＰ転送でフロー制御を行わないシステムでは、送信側のクロックと受信側のクロックに差が生じる場合には、ある程度の容量を有するバッファを受信側に用意しておくことで、バッファがオーバーフローまたはアンダーフローするまでは、音声データや映像データを安定してデコードすることができる。
【０００７】
しかし、送信側のクロックと受信側のクロックの差が大きくなるほど、バッファがオーバーフローまたはアンダーフローするまでの時間が短くなり、音声データや映像データを安定してデコードできる時間が短くなってしまう。また、バッファがオーバーフローまたはアンダーフローすることで受信したデータの欠落が生じると正常にデコードできなくなってしまう。従って、長時間に渡って安定してデコード動作を行うためには、送信側と受信側のクロックの差を無くすようにクロックの制御を行う必要がある。
【０００８】
送信側と受信側のクロックを同期させる技術としては、例えば特許文献２がある。特許文献２には、送信側でパケットが伝送される瞬間の時刻情報をパケットに付加することで、送信側と受信側のクロックを同期させる技術が開示されている。つまり、特許文献２に開示された技術は、ＲＴＰのヘッダのタイムスタンプを使用することを想定したものとなっている。しかし、タイムスタンプとＴＳパケットとで構成される所定の単位が連続するパケットストリームを扱う特許文献１に記載の技術とはシステムが異なっており、特許文献２に開示された技術を特許文献１に記載の技術に適用することはできない。
【０００９】
また、ストリーミング形式によってネットワーク経由で受信した音声データや映像データは、比較的大きなジッタが生じうる。従って、ＴＳパケットの到着時刻と、ストリーム中のＰＣＲとを使用したクロック制御はできない。また、ネットワーク経由で受信した映像データや音声データにはパケットロスも生じうるので、ネットワークジッタやパケットロスの影響を受けずに安定してクロックを制御する必要がある。
【００１０】
そこで、本発明は、上記問題に鑑みてなされたものであり、本発明の目的とするところは、フロー制御を行わないような受信システムにおいても、ネットワークジッタやパケットロスの影響を受けずに長時間に渡って安定したクロックの制御が可能な、新規かつ改良された受信装置、クロック同期方法およびコンピュータプログラムを提供することにある。
【課題を解決するための手段】
【００１１】
上記課題を解決するために、本発明のある観点によれば、少なくともタイムスタンプとＴＳ（Ｔｒａｎｓｐｏｒｔ  Ｓｔｒｅａｍ）パケットとで構成される所定の単位が連続するパケットストリームを受信する受信部と、発振周波数が制御可能である発振部と、発振部が供給するクロックを分周して計測する計測部と、パケットストリームの受信開始時から、受信部が受信したパケットストリームから読み出した最新のタイムスタンプ及び計測部が計測する最新の計測値を所定の周期で読み出す取得部と、取得部が取得したタイムスタンプ及び計測値の累積値を算出する算出部と、算出部が算出したタイムスタンプの累積値と計測値の累積値との差分の絶対値と、ネットワークジッタに相当する値との大小を比較する比較部と、比較部で比較した結果、タイムスタンプの累積値と計測値の累積値との差分の絶対値の方が大きい場合に発振部の発振周波数を制御する周波数制御部と、を含むことを特徴とする、受信装置が提供される。
【００１２】
かかる構成によれば、発振部は発振周波数が制御可能であり、計測部は発振部が供給するクロックを分周して計測する。また、受信部は少なくともタイムスタンプとＴＳパケットとで構成される所定の単位が連続するパケットストリームを受信し、取得部は、パケットストリームの受信開始時から、受信部が受信したパケットストリームから読み出した最新のタイムスタンプ及び計測部が計測する最新の計測値を所定の周期で読み出し、算出部は取得部が取得したタイムスタンプの累積値及び計測値の累積値を算出する。そして、比較部は算出部が算出したタイムスタンプの累積値と計測値の累積値の差分の絶対値と、ネットワークジッタに相当する値との大小を比較し、周波数制御部は比較部で比較した結果、タイムスタンプの累積値と計測値の累積値との差分の絶対値の方が大きい場合に発振部の発振周波数を制御する。その結果、フロー制御を行わないような受信システムにおいても、パケットストリームから読み出したタイムスタンプと、受信開始時から計測を開始した計測値とに基づいて周波数を制御することで、ネットワークジッタやパケットロスの影響を受けずに長時間に渡って安定したクロックの制御が可能となる。
【００１３】
周波数制御部は、受信部でパケットストリームの受信を開始した時から大小比較するまでの時間と、タイムスタンプと計測値との差分との比率を用いて発振部の発振周波数を制御してもよい。
【００１４】
上記受信装置は、受信部で受信したパケットストリームに含まれるＴＳパケットを、制御部によって制御され発振部から供給されるクロックに同期してデコード及び再生する再生部をさらに含んでもよい。
【００１５】
算出部は、受信部が受信したパケットストリームから取得部が読み出した最新のタイムスタンプと、取得部が１つ前に読み出したタイムスタンプとを比較し、１つ前に読み出したタイムスタンプの方が小さい場合には１つ前に読み出したタイムスタンプを累積値の算出に用いてもよい。
【００１６】
取得部で読み出した最新のタイムスタンプが、所定の回数に渡って同一の値であるときは、周波数制御部での発振周波数の制御を行わないようにしてもよい。
【００１７】
取得部は、垂直同期信号の割り込みを受けることによって受信部が受信したパケットストリームから読み出した最新のタイムスタンプ及び計測部が計測する最新の計測値を読み出してもよい。
【００１８】
周波数制御部は、比較部がタイムスタンプ及び計測値の累積値の差分の絶対値の方が大きいと判定した場合に、タイムスタンプまたは計測値のどちらかが所定の回数連続して大きいときに初めて発振部の発振周波数を制御してもよい。
【００１９】
また、上記課題を解決するために、本発明の別の観点によれば、少なくともタイムスタンプとＴＳパケットとで構成される所定の単位が連続するパケットストリームを受信する受信ステップと、制御可能な発振周波数を有するクロックを供給するクロック供給ステップと、クロック供給ステップで供給するクロックを分周して計測する計測ステップと、パケットストリームの受信開始時から、受信ステップで受信したパケットストリームから読み出した最新のタイムスタンプ及び計測ステップが計測する最新の計測値を所定の周期で読み出す取得ステップと、取得ステップで取得したタイムスタンプの累積値及び計測値の累積値を算出する算出ステップと、算出ステップで算出したタイムスタンプの累積値と計測値の累積値との差分の絶対値と、ネットワークジッタに相当する値との大小を比較する比較ステップと、比較ステップで比較した結果、タイムスタンプの累積値と計測値の累積値との差分の絶対値の方が大きい場合に、クロック供給ステップで供給されるクロックの発振周波数を制御する周波数制御ステップと、を含むことを特徴とする、クロック同期方法が提供される。
【００２０】
かかる構成によれば、受信ステップは少なくともタイムスタンプとＴＳパケットとで構成される所定の単位が連続するパケットストリームを受信し、クロック供給ステップは制御可能な発振周波数を有するクロックを供給し、計測ステップはクロック供給ステップで供給するクロックを分周して計測する。取得ステップはパケットストリームの受信開始時から、受信ステップで受信したパケットストリームから読み出した最新のタイムスタンプ及び計測ステップが計測する最新の計測値を所定の周期で読出し、算出ステップは取得ステップで取得したタイムスタンプの累積値及び計測値の累積値を算出する。そして、比較ステップは算出ステップで算出したタイムスタンプの累積値と計測値の累積値との差分の絶対値と、ネットワークジッタに相当する値との大小を比較し、周波数制御ステップは比較ステップで比較した結果、タイムスタンプの累積値と計測値の累積値との差分の絶対値の方が大きい場合に、クロック供給ステップで供給されるクロックの発振周波数を制御する。その結果、フロー制御を行わないような受信システムにおいても、パケットストリームから読み出したタイムスタンプと、受信開始時から計測を開始した計測値とに基づいて周波数を制御することで、ネットワークジッタやパケットロスの影響を受けずに長時間に渡って安定したクロックの制御が可能となる。
【００２１】
また、上記課題を解決するために、本発明の別の観点によれば、少なくともタイムスタンプとＴＳパケットとで構成される所定の単位が連続するパケットストリームを受信する受信ステップと、制御可能な発振周波数を有するクロックを供給するクロック供給ステップと、クロック供給ステップで供給するクロックを分周して計測する計測ステップと、パケットストリームの受信開始時から、受信ステップで受信したパケットストリームから読み出した最新のタイムスタンプ及び計測ステップが計測する最新の計測値を所定の周期で読み出す取得ステップと、取得ステップで取得したタイムスタンプの累積値及び計測値の累積値を算出する算出ステップと、算出ステップで算出したタイムスタンプの累積値と計測値の累積値の差分の絶対値と、ネットワークジッタに相当する値との大小を比較する比較ステップと、比較ステップで比較した結果、タイムスタンプの累積値と計測値の累積値との差分の絶対値の方が大きい場合に、クロック供給ステップで供給されるクロックの発振周波数を制御する周波数制御ステップと、を含む処理をコンピュータに実行させることを特徴とする、コンピュータプログラムが提供される。
【００２２】
かかる構成によれば、受信ステップは少なくともタイムスタンプとＴＳパケットとで構成される所定の単位が連続するパケットストリームを受信し、クロック供給ステップは制御可能な発振周波数を有するクロックを供給し、計測ステップはクロック供給ステップで供給するクロックを分周して計測する。取得ステップはパケットストリームの受信開始時から、受信ステップで受信したパケットストリームから読み出した最新のタイムスタンプ及び計測ステップが計測する最新の計測値を所定の周期で読出し、算出ステップは取得ステップで取得したタイムスタンプの累積値及び計測値の累積値を算出する。そして、比較ステップは算出ステップで算出したタイムスタンプの累積値と計測値の累積値との差分の絶対値と、ネットワークジッタに相当する値との大小を比較し、周波数制御ステップは比較ステップで比較した結果、タイムスタンプの累積値と計測値の累積値の差分の絶対値の方が大きい場合に、クロック供給ステップで供給されるクロックの発振周波数を制御する。その結果、フロー制御を行わないような受信システムにおいても、パケットストリームから読み出したタイムスタンプと、受信開始時から計測を開始した計測値とに基づいて周波数を制御することで、ネットワークジッタやパケットロスの影響を受けずに長時間に渡って安定したクロックの制御が可能となる。
【発明の効果】
【００２３】
以上説明したように本発明によれば、フロー制御を行わないような受信システムにおいても、パケットストリームから読み出したタイムスタンプと、受信開始時から計測を開始した計測値とに基づいて周波数を制御することで、ネットワークジッタやパケットロスの影響を受けずに長時間に渡って安定したクロックの制御が可能な、新規かつ改良された受信装置、クロック同期方法およびコンピュータプログラムを提供することができる。
【発明を実施するための最良の形態】
【００２４】
以下に添付図面を参照しながら、本発明の好適な実施の形態について詳細に説明する。なお、本明細書及び図面において、実質的に同一の機能構成を有する構成要素については、同一の符号を付することにより重複説明を省略する。
【００２５】
まず、本発明の一実施形態にかかる受信装置の構成について説明する。図１は、本発明の一実施形態にかかる受信装置１００の構成について説明する説明図である。以下、図１を用いて本発明の一実施形態にかかる受信装置１００の構成について説明する。
【００２６】
図１に示したように、本発明の一実施形態にかかる受信装置１００は、再生部１１０と、ネットワークＩ／Ｆ１１１と、通信キャッシュ１１２と、ＴＳ同期抽出部１１３と、ＴＳ同期クロックカウンタ１１４と、発振部１２７と、分周部１２８と、記録媒体１３０と、ＣＰＵ１３１と、を含んで構成される。
【００２７】
再生部１１０は、受信装置１００が受信した映像データや音声データをデコードして再生するものである。再生部１１０は、デマルチプレクサ１１６と、オーディオデコーダバッファ１１７と、ビデオデコーダバッファ１１８と、ＳＴＣカウンタ１１９と、ＥＳ同期抽出部１２０、１２１と、オーディオデコーダ１２３と、ビデオデコーダ１２４と、ＡＶ同期制御部１２５と、を含んで構成される。
【００２８】
ネットワークＩ／Ｆ１１１は、インターネット等の外部の各種ネットワークとの間の通信インタフェースであり、例えばＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）カードや、ＡＤＳＬ（Ａｓｙｍｍｅｔｒｉｃ  Ｄｉｇｉｔａｌ  Ｓｕｂｓｃｒｉｂｅｒ  Ｌｉｎｅ）モデム、ＦＴＴＨ（Ｆｉｂｅｒ  Ｔｏ  Ｔｈｅ  Ｈｏｍｅ）用ＯＮＵ（Ｏｐｔｉｃａｌ  Ｎｅｔｗｏｒｋ  Ｕｎｉｔ；光回線終端装置）等であってもよい。図１には図示しないが、ネットワークＩ／Ｆ１１１は、ストリームリソース（映像データや音声データがパケット化されたパケットストリーム）が保存されているコンテンツサーバにインターネット等の外部の各種ネットワークを介して接続されている。
【００２９】
ネットワークＩ／Ｆ１１１は、例えばＨＴＴＰ（ＨｙｐｅｒＴｅｘｔ  Ｔｒａｎｓｐｏｒｔ  Ｐｒｏｔｏｃｏｌ）やＴＣＰ／ＩＰ（Ｔｒａｎｓｍｉｓｓｉｏｎ  Ｃｏｎｔｒｏｌ  Ｐｒｏｔｏｃｏｌ／Ｉｎｔｅｒｎｅｔ  Ｐｒｏｔｏｃｏｌ）等によって通信する。ネットワークＩ／Ｆ１１１が受信したデータは通信キャッシュ１１２に転送される。
【００３０】
ここで、ネットワークＩ／Ｆ１１１が通信キャッシュ１１２に供給するストリームリソースは、図２に示すようなタイムスタンプ付きのＴＳパケット（ＴＴＳパケット）である。ＴＴＳパケットは、１８８バイトのＴＳパケットに、４バイトのタイムスタンプが付加された１９２バイトのパケット長を有するパケットである。図２に示したＴＴＳパケットにおいて、４バイトのタイムスタンプは、２７ＭＨｚの精度を持つタイムスタンプである。ＴＴＳパケットが連続するストリームは、ＭＰＥＧ２−ＴＳパケットストリームと称されている。
【００３１】
通信キャッシュ１１２は、ネットワークＩ／Ｆ１１１が受信したストリームリソースを一時的に保持（キャッシュ）しておくものである。通信キャッシュ１１２に一時的に保持したストリームリソースはＴＳ同期抽出部１１３に供給される。通信キャッシュ１１２からＴＳ同期抽出部１１３にストリームリソースを供給する際には、１つのＴＴＳパケット（１ＴＴＳパケット）単位で供給する。
【００３２】
なお、通信キャッシュ１１２がＴＳ同期抽出部１１３にストリームリソースを供給することによって通信キャッシュ１１２が記憶しているストリームリソースが少なくなると、ネットワークＩ／Ｆ１１１から適宜ストリームリソースが通信キャッシュに供給される。また、通信キャッシュ１１２は、コンテンツサーバから受信装置１００に送信される際のルーティングや再送による遅れ（例えば再生時間にして３０秒程度）を十分吸収できる量のストリームリソースを記憶できるだけの容量を有していることが望ましい。
【００３３】
ＴＳ同期抽出部１１３は、通信キャッシュ１１２から供給されるＴＴＳパケットを保持し、ＴＳ同期クロックカウンタ１１４から供給されるカウント値に基づいて、保持しているＴＴＳパケットのデマルチプレクサ１１６への出力を制御するものである。通信キャッシュ１１２から供給されるＴＴＳパケットがストリームリソースの先頭のパケットである場合には、ＴＳ同期抽出部１１３はＴＴＳパケットのタイムスタンプの値（タイムスタンプ値）をＴＳ同期クロックカウンタ１１４に供給するとともに、ＴＴＳパケットからタイムスタンプを除去したパケットを抽出してデマルチプレクサに供給する。また、通信キャッシュ１１２から供給されるＴＴＳパケットがストリームリソースの先頭以外のパケットである場合には、ＴＳ同期抽出部１１３は、ＴＴＳパケットのタイムスタンプ値がＴＳ同期クロックカウンタ１１４から供給されるカウント値と同一の値であるか否かを判定する。ＴＴＳパケットのタイムスタンプ値がＴＳ同期クロックカウンタ１１４から供給されるカウント値と同一の値であれば、ＴＳ同期抽出部１１３はＴＴＳパケットからタイムスタンプを除去したパケットを抽出してデマルチプレクサに供給する。
【００３４】
なお、ＴＳ同期抽出部１１３が保持しているＴＴＳパケットに含まれているＴＳパケットがデマルチプレクサ１１６に出力されると、次のＴＴＳパケットが通信キャッシュ１１２からＴＳ同期抽出部１１３に供給される。
【００３５】
また、ＴＳ同期抽出部１１３が保持しているＴＴＳパケットに付加されているタイムスタンプ値は、ＣＰＵ１３１によって読み出され、ＣＰＵ１３１におけるクロックの周波数制御に用いられる。
【００３６】
ＴＳ同期クロックカウンタ１１４は、ＴＳ同期抽出部１１３から供給されたタイムスタンプ値を初期値とし、発振部１２７から供給される２７ＭＨｚの周波数を有するクロックによってカウントアップされるタイムスタンプ値を保持するものである。ＴＳ同期クロックカウンタ１１４のカウント値はＴＳ同期抽出部１１３に供給される。
【００３７】
デマルチプレクサ１１６は、ＴＳ同期抽出部１１３から供給される、映像データ、音声データ、ＰＣＲ等が格納されたＴＳパケットを、映像データ、音声データ、ＰＣＲ、その他のデータに分離する（フィルタリングする）ものである。デマルチプレクサ１１６でデータを分離すると、音声データはオーディオデコーダバッファ１１７に、映像データはビデオデコーダバッファ１１８にそれぞれ供給し、ストリームリソースの最初のＰＣＲパケットに格納されているＰＣＲ上位３３ビットをＳＴＣカウンタ１１９に供給する。
【００３８】
また、図１には図示していないが、受信装置１００を操作するための操作部をユーザが操作することにより、受信装置１００が受信した映像データや音声データ（ネットワークＩ／Ｆ１１１を介して受信したストリームリソース）を記録媒体１３０に記録するようにユーザが指示した場合には、デマルチプレクサ１１６はＴＳ同期抽出部１１３から供給されたデータを記録媒体１３０に供給する。
【００３９】
オーディオデコーダバッファ１１７は、デマルチプレクサ１１６から供給される音声データを一時的に蓄積するものである。オーディオデコーダバッファ１１７に蓄積される音声データはＰＥＳパケットとしてオーディオデコーダバッファ１１７に記憶される。オーディオデコーダバッファ１１７は、記憶したＰＥＳパケットまたはＰＥＳパケットのヘッダ部のみをＥＳ同期抽出部１２０に供給する。
【００４０】
ビデオデコーダバッファ１１８は、デマルチプレクサ１１６から供給される映像データを一時的に蓄積するものである。ビデオデコーダバッファ１１８に蓄積される映像データはＰＥＳパケットとしてビデオデコーダバッファ１１８に記憶される。ビデオデコーダバッファ１１８は、記憶したＰＥＳパケットまたはＰＥＳパケットのヘッダ部のみをＥＳ同期抽出部１２１に供給する。
【００４１】
ＳＴＣカウンタ１１９は、デマルチプレクサ１１６から供給される、ストリームリソースの最初のＰＣＲパケットに格納されているＰＣＲ上位３３ビットを初期値とし、分周部１２８から供給される９０ｋＨｚの周波数を有するクロックによってカウントアップされるＳＴＣカウンタ値を保持するものである。ＳＴＣカウンタ１１９のカウント値は、ＥＳ同期抽出部１２０、１２１に供給される。
【００４２】
また、ＳＴＣカウンタ１１９のカウント値はＣＰＵ１３１によって読み出され、ＣＰＵ１３１におけるクロックの周波数制御に用いられる。
【００４３】
ＥＳ同期抽出部１２０は、オーディオデコーダバッファ１１７からＰＥＳパケットの供給を受け、オーディオデコーダバッファ１１７に記憶されている音声データのＰＥＳパケットのヘッダ部を抽出する。そして、ＥＳ同期抽出部１２０はＳＴＣカウンタ１１９から供給されるＳＴＣカウンタ値に基づいて、オーディオデコーダバッファ１１７に記憶されている音声データのオーディオデコーダ１２３への供給を制御する。換言すると、ＥＳ同期抽出部１２０は、ＰＥＳパケットのヘッダ部に記載されているＰＴＳ値が、ＳＴＣカウンタ１１９から供給されるＳＴＣカウンタ値と同一の値となった場合、先に抽出したＰＥＳパケットのヘッダ部を持つＰＥＳパケットをオーディオデコーダバッファ１１７から抽出し、オーディオデコーダ１２３に供給する。
【００４４】
ＥＳ同期抽出部１２１は、ビデオデコーダバッファ１１８からＰＥＳパケットの供給を受け、ビデオデコーダバッファ１１８に記憶されている映像データのＰＥＳパケットのヘッダ部を抽出する。そして、ＥＳ同期抽出部１２１はＳＴＣカウンタ１１９から供給されるＳＴＣカウンタ値に基づいて、ビデオデコーダバッファ１１８に記憶されている映像データのビデオデコーダ１２４への供給を制御する。換言すると、ＥＳ同期抽出部１２１は、ＰＥＳパケットのヘッダ部に記載されているＰＴＳ値が、ＳＴＣカウンタ１１９から供給されるＳＴＣカウンタ値と同一の値となった場合、先に抽出したＰＥＳパケットのヘッダ部を持つＰＥＳパケットをビデオデコーダバッファ１１８から抽出し、ビデオデコーダ１２４に供給する。
【００４５】
オーディオデコーダ１２３は、ＥＳ同期抽出部１２０から供給されるＰＥＳパケットの音声データをデコードする。デコードした音声データは、ＡＶ同期制御部１２５から供給される２７ＭＨｚの周波数のクロックに従って、スピーカ等の音声出力装置（図示せず）から音声として出力する。
【００４６】
ビデオデコーダ１２４は、ＥＳ同期抽出部１２１から供給されるＰＥＳパケットの映像データをデコードする。デコードした映像データは、ＡＶ同期制御部１２５から供給される２７ＭＨｚの周波数のクロックに従って表示装置（図示せず）から映像として出力する。表示装置として、例えばＣＲＴ（Ｃａｔｈｏｄｅ  Ｒａｙ  Ｔｕｂｅ）ディスプレイ、プラズマディスプレイ、液晶ディスプレイ、有機ＥＬディスプレイ等を用いてもよい。
【００４７】
ＡＶ同期制御部１２５は、発振部１２７から供給される２７ＭＨｚの周波数のクロックに基づいて、映像データと音声データとを同期させる２７ＭＨｚの周波数のクロックを、オーディオデコーダ１２３およびビデオデコーダ１２４に供給する。
【００４８】
発振部１２７は、２７ＭＨｚの周波数のクロックを生成し、生成したクロックを分周部１２８、ＴＳ同期クロックカウンタ１１４およびＡＶ同期制御部１２５に供給する。発振部１２７は、例えばＶＣＸＯ（Ｖｏｌｔａｇｅ  Ｃｏｎｔｒｏｌｌｅｄ  Ｘｔａｌ  Ｏｓｃｉｌｌａｔｏｒ；電圧制御発振器）で構成することができる。ＶＣＸＯは、電圧によって周波数を変更できる水晶発振器である。ＶＣＸＯへの電圧の制御は、例えばＰＷＭ（Ｐｕｌｓｅ  Ｗｉｄｔｈ  Ｍｏｄｕｌａｔｉｏｎ）信号をローパスフィルタを通してＶＣＸＯに供給することによって行うことができ、ＰＷＭ信号を制御することでＶＣＸＯの発振周波数を制御することができる。なお、発振部１２７の発振周波数を変更できる範囲は、送信装置におけるクロック周波数の変動範囲をカバーできる範囲であることが望ましい。
【００４９】
分周部１２８は、発振部１２７から供給される２７ＭＨｚの周波数のクロックを３００分の１の周波数に分周して、９０ｋＨｚの周波数のクロックを生成するものである。分周部１２８で生成した９０ｋＨｚの周波数のクロックはＳＴＣカウンタ１１９に供給する。
【００５０】
記録媒体１３０は、例えばハードディスク等の磁気ディスク、ＣＤ−Ｒ、ＤＶＤ−Ｒ、ブルーレイディスク等の光ディスク、ＭＤ等の光磁気ディスク、半導体メモリ等で構成される。記録媒体１３０には、受信装置１００を制御するためのコンピュータプログラムを予め格納しておいてもよい。また、記録媒体１３０には、ＣＰＵ１３１の制御によって、デマルチプレクサ１１６から供給される映像データや音声データが格納される。また、記録媒体１３０は、ＣＰＵ１３１の制御によって、デマルチプレクサ１１６へ記録媒体１３０に記録された映像データや音声データを供給する。
【００５１】
ＣＰＵ１３１は、受信装置１００の各部を制御するものである。ＣＰＵ１３１による受信装置１００の各部の制御は、例えば記録媒体１３０に格納されたコンピュータプログラムを読み出して、読み出したコンピュータプログラムを順次実行することによって行ってもよい。
【００５２】
本実施形態においては、ＣＰＵ１３１は、ＴＳ同期抽出部１１３からタイムスタンプ値を、ＳＴＣカウンタ１１９からＳＴＣカウンタ値を、所定の周期でそれぞれ取得し、取得した値に基づいて発振部１２７の発振周波数を制御するものである。所定の周期は、例えばＡＶ同期制御部１２５からのＶ．Ｓｙｎｃ（垂直同期信号）の割り込みが行われる周期であってもよい。ＣＰＵ１３１における発振部１２７の発振周波数の制御方法については後に詳述する。
【００５３】
図１に示したように受信装置１００を構成することで、ネットワークＩ／Ｆ１１１を介してコンテンツサーバから送信されたストリームリソースから映像データと音声データを分離し、映像データと音声データとを同期して再生することができる。
【００５４】
そして、ＴＳ同期抽出部１１３からタイムスタンプ値を、ＳＴＣカウンタ１１９からＳＴＣカウンタ値を、所定の周期でそれぞれ取得し、取得した値に基づいて発振部１２７の発振周波数を制御する。発振部１２７の発振周波数を制御することによって、コンテンツサーバから送信された映像データや音声データを長時間に渡って安定してデコードし、再生することができる。
【００５５】
以上、図１を用いて本発明の一実施形態にかかる受信装置１００の構成について説明した。次に、本発明の一実施形態にかかる受信装置１００におけるクロック同期処理の概要について説明する。
【００５６】
図３は、本発明の一実施形態にかかる受信装置１００におけるクロック同期処理の概要について説明する流れ図である。以下、図３を用いて本発明の一実施形態にかかる受信装置１００におけるクロック同期処理の概要について説明する。
【００５７】
本発明の一実施形態にかかる受信装置１００におけるクロック同期処理は、ＡＶ同期制御部１２５からのＣＰＵ１３１へのＶ．Ｓｙｎｃ（垂直同期信号）の割り込みが所定の周期で行われることによって開始される。ＣＰＵ１３１は、ＡＶ同期制御部１２５からＶ．Ｓｙｎｃの割り込みを受けると、ＴＳ同期抽出部１１３から最新のタイムスタンプ値を、ＳＴＣカウンタ１１９から最新のＳＴＣカウンタ値を、それぞれ取得する（ステップＳ１０１）。
【００５８】
続いて、ＣＰＵ１３１でパケットストリームの受信開始か否かを判定する（ステップＳ１０２）。パケットストリームの受信開始とは、例えば受信装置１００の電源がオンになったり、操作部（図示せず）によるチャンネルの切り替え操作による新たなストリームの受信が開始されたりすることをいう。パケットストリームの受信開始である場合には、受信装置１００におけるクロック同期処理に関する初期設定を行い（ステップＳ１０３）、処理を終了する。一方、パケットストリームの受信開始でない場合には、続いてパケットストリームが正しく受信装置１００に到達しているかどうか、ストリーム順序判定を行う（ステップＳ１０４）。
【００５９】
ストリーム順序判定には、１つ前のクロック同期処理においてＴＳ同期抽出部１１３から取得したタイムスタンプ値と、上記ステップＳ１０１でＴＳ同期抽出部１１３から取得したタイムスタンプ値との大小を比較する。上記ステップＳ１０１でＴＳ同期抽出部１１３から取得したタイムスタンプ値の方が小さければ、受信装置１００へのパケットの到達順序が異常であると判定し、補正処理を行う（ステップＳ１０５）。補正処理の詳細については後述する。一方、ＴＳ同期抽出部１１３から取得したタイムスタンプ値の方が小さくなければ、受信装置１００へのパケットの到達順序に異常は無いとして、ステップＳ１０５の補正処理をスキップする。
【００６０】
続いて、ＣＰＵ１３１で、受信装置１００に到達する筈のパケットストリームが途絶しているかどうかのストリーム途絶判定を行う（ステップＳ１０６）。ストリーム途絶判定は、１つ前のクロック同期処理においてＴＳ同期抽出部１１３から取得したタイムスタンプ値と、上記ステップＳ１０１でＴＳ同期抽出部１１３から取得したタイムスタンプ値とを比較して、２つの値が所定の時間以上同じ値である場合には、パケットストリームが途絶していると判定する。そして、ＣＰＵ１３１でパケットストリームが途絶していると判定すると、ＣＰＵ１３１は受信装置１００におけるクロック同期処理を異常終了させる。
【００６１】
図４は、本発明の一実施形態にかかる受信装置１００における、ＴＴＳ同期抽出部１１３が保持するタイムスタンプ値を用いた、ストリーム順序判定およびストリーム途絶判定の概要を示す説明図である。ＴＴＳ同期抽出部１１３は、通信キャッシュ１１２から供給されるＴＴＳパケットに記述されているタイムスタンプ値を保持しておく。そして、ＣＰＵ１３１は所定の周期でＴＴＳ同期抽出部１１３に保持されているタイムスタンプ値を取得する。
【００６２】
図４に示した例では、３回目に取得したタイムスタンプ値と、４回目に取得したタイムスタンプ値とが“１３”で一致している。従って、この間には受信装置１００にパケットストリームが到達していないと判定する。このように、取得したタイムスタンプ値が所定の時間以上同じ値である場合には、ストリーム途絶判定においてパケットストリームが途絶していると判定する。
【００６３】
また、図４に示した例では、５回目に取得したタイムスタンプ値と、６回目に取得したタイムスタンプ値との間の大小関係が逆転している。これは、５回目にタイムスタンプ値“１９”を取得した後に、ＴＴＳ同期抽出部１１３に供給されたＴＴＳパケットのタイムスタンプ値が“１８”であったからであり、この場合にはストリーム順序判定において受信装置１００へのパケットの到達順序が異常であると判定し、補正処理を行う。
【００６４】
ストリーム順序判定およびストリーム途絶判定を終えると、続いて、ＣＰＵ１３１において上記ステップＳ１０１で取得したタイムスタンプ値の累積値ＡおよびＳＴＣカウンタ値の累積値Ｂを計算する（ステップＳ１０７）。タイムスタンプ値の累積値ＡおよびＳＴＣカウンタ値の累積値Ｂは、それぞれ１つ前のクロック同期処理において取得したタイムスタンプ値およびＳＴＣカウンタ値との差分を加算していくことによって計算する。
【００６５】
ＣＰＵ１３１において上記ステップＳ１０１で取得したタイムスタンプ値の累積値ＡおよびＳＴＣカウンタ値の累積値Ｂを計算すると、累積値ＡとＢとの間の大小を比較する（ステップＳ１０８）。そして、累積値ＡとＢとの差に応じて、発振部１２７の発振周波数をＣＰＵ１３１で制御する。
【００６６】
累積値ＡとＢとの間の大小を比較する際には、ネットワークジッタに相当する量（ネットワークジッタ量）Ｊを閾値として、累積値ＡとＢとの差の絶対値がネットワークジッタ量Ｊより大きければ発振部１２７の発振周波数をＣＰＵ１３１で制御する。Ａ−Ｂ＞Ｊである場合、つまりタイムスタンプ値の累積値ＡからＳＴＣカウンタ値の累積値Ｂを引いた値がネットワークジッタ量Ｊより大きい場合には、受信装置１００が受信したパケットストリームにおけるＴＴＳパケットのタイムスタンプ値がＳＴＣカウンタ値よりも先行しているので、発振部１２７の発振周波数を上げるようにＣＰＵ１３１で制御する（ステップＳ１０９）。また、Ｂ−Ａ＞Ｊである場合、つまりＳＴＣカウンタ値の累積値Ｂからタイムスタンプ値の累積値Ａを引いた値がネットワークジッタ量Ｊより大きい場合には、ＳＴＣカウンタ値の方が、受信装置１００で受信したパケットストリームにおけるＴＴＳパケットのタイムスタンプ値よりも先行しているので、発振部１２７の発振周波数を下げるようにＣＰＵ１３１で制御する（ステップＳ１１０）。なお、｜Ａ−Ｂ｜≦Ｊである場合には、発振部１２７の発振周波数は制御しない（ステップＳ１１１）。
【００６７】
なお、ステップＳ１０８において累積値ＡとＢとの間の大小を比較する際には、累積値ＡとＢとの差の絶対値がネットワークジッタ量Ｊより大きいと、所定の回数連続して判定されるまでは、発振部１２７の発振周波数を制御しないようにしてもよい。
【００６８】
以上、図３を用いて本発明の一実施形態にかかる受信装置１００におけるクロック同期処理の概要について説明した。次に、本発明の一実施形態にかかる受信装置１００におけるクロック同期処理の詳細について説明する。
【００６９】
図５および図６は、本発明の一実施形態にかかる受信装置１００を用いたクロック同期処理を詳細に説明する流れ図である。図５は、図３に示した流れ図におけるステップＳ１０１からステップＳ１０７までに相当するものであり、図６は、図３に示した流れ図におけるステップＳ１０８からステップＳ１１１までに相当するものである。以下、図５および図６を用いて、本発明の一実施形態にかかるクロック同期処理を詳細に説明する。
【００７０】
上述したように、本発明の一実施形態にかかる受信装置１００におけるクロック同期処理は、ＡＶ同期制御部１２５からのＣＰＵ１３１へのＶ．Ｓｙｎｃの割り込みが所定の周期で行われることによって開始される。ＣＰＵ１３１へのＶ．Ｓｙｎｃの割り込みが行われると、ＣＰＵ１３１はＴＳ同期抽出部１１３で保持している最新のタイムスタンプ値を取得して、変数ＴＴＳ（ｎ）に格納し（ステップＳ１２１）、次いでＳＴＣカウンタ１１９から最新のＳＴＣカウンタ値を取得して、変数ＳＴＣ（ｎ）に格納する（ステップＳ１２２）。なお、ここでは、ＣＰＵ１３１はＴＳ同期抽出部１１３から最新のタイムスタンプ値を取得した後にＳＴＣカウンタ１１９から最新のＳＴＣカウンタ値を取得したが、本発明は係る例に限られないことは言うまでもなく、最新のＳＴＣカウンタ値を取得した後に最新のタイムスタンプ値を取得してもよく、また２つの値を同時に取得してもよい。なお、以下の処理は特に断りが無い限りＣＰＵ１３１で実行する処理であるものとする。
【００７１】
続いて、ＣＰＵ１３１でパケットストリームの受信開始か否かを判定する（ステップＳ１２３）。ステップＳ１２３における判定の結果、パケットストリームの受信開始である場合には、受信装置１００におけるクロック同期処理に用いる変数の初期化を行う（ステップＳ１２４）。ここで、受信装置１００におけるクロック同期処理に用いる変数を説明する。
Ａ：タイムスタンプ値の累積値
Ｂ：ＳＴＣカウンタ値の累積値
Ｃ：タイムスタンプ値が前回の値と同じ値だった回数
Ｄ：Ａ−Ｂ＞Ｊｍａｘと連続して判定された回数
Ｅ：Ｂ−Ａ＜Ｊｍａｘと連続して判定された回数
Ｇｕｐ：発振部１２７の発振周波数を上げる必要のある回数
Ｇｄｏｗｎ：発振部１２７の発振周波数を下げる必要のある回数
【００７２】
一方、ステップＳ１２３における判定の結果、パケットストリームの受信開始でない場合には、変数ＴＴＳ（ｎ）に格納されている値と、１つ前のクロック同期処理において格納した変数ＴＴＳ（ｎ−１）に格納されている値との大小を比較する（ステップＳ１２５）。変数ＴＴＳ（ｎ）の値が変数ＴＴＳ（ｎ−１）の値より大きくない場合は、パケットストリームが到達していない、またはパケットの到達順序が入れ替わっている場合である。比較した結果、変数ＴＴＳ（ｎ）の値が変数ＴＴＳ（ｎ−１）の値より大きくない場合には、変数ＴＴＳ（ｎ−１）の値を変数ＴＴＳ（ｎ）に格納する（ステップＳ１２６）。
【００７３】
続いて、変数ＴＴＳ（ｎ）に格納されている値と、変数ＴＴＳ（ｎ−１）に格納されている値とが同一の値であるかを判定する（ステップＳ１２７）。判定した結果、２つの値が同一の値である場合には、変数Ｃの値を１つインクリメントする（ステップＳ１２８）。なお、上記ステップＳ１２６において、変数ＴＴＳ（ｎ）の値が変数ＴＴＳ（ｎ−１）の値より大きくない場合には、変数ＴＴＳ（ｎ−１）の値を変数ＴＴＳ（ｎ）に格納している。従って、上記ステップＳ１２１で取得したタイムスタンプ値が、前回取得したタイムスタンプ値より小さい場合にも変数Ｃの値は１つインクリメントされることになる。
【００７４】
一方、変数ＴＴＳ（ｎ）に格納されている値と、変数ＴＴＳ（ｎ−１）に格納されている値とが同一の値で無いと判定した場合には、変数Ｃの値を０に設定する（ステップＳ１２９）。
【００７５】
続いて、変数Ｃの値が所定の閾値Ｃｍａｘ未満であるかどうかを判定する（ステップＳ１３０）。所定の閾値Ｃｍａｘは、所定の時間（例えば２秒間）に相当する値が設定されている。変数Ｃの値は、上記ステップＳ１２７において、変数ＴＴＳ（ｎ）に格納されている値と、変数ＴＴＳ（ｎ−１）に格納されている値とが同一の値であると連続して判定されている場合に限って、２以上の値を有することになる。つまり、変数Ｃの値が所定の閾値Ｃｍａｘ未満で無い場合、すなわちタイムスタンプ値を前回のタイムスタンプ値と比較し、Ｃｍａｘ回連続して（所定の時間連続して）同じ値であった場合には、パケットストリームが途絶しているものとして、クロック同期処理を異常終了する。
【００７６】
一方、変数Ｃの値が所定の閾値Ｃｍａｘ未満である場合には、変数Ａおよび変数Ｂに対する計算を実行する（ステップＳ１３１）。変数Ａには、変数ＴＴＳ（ｎ）の値から変数ＴＴＳ（ｎ−１）の値を引き、それまでの変数Ａの値を加算した値が代入される。変数Ｂには、変数ＳＴＣ（ｎ）の値から変数ＳＴＣ（ｎ−１）の値を引き、それまでの変数Ｂの値を加算した値が代入される。なお、最初にタイムスタンプ値およびＳＴＣ値を取得した場合には、変数ＴＴＳ（ｎ−１）＝ＴＴＳ（ｎ）および変数ＳＴＣ（ｎ−１）＝ＳＴＣ（ｎ）であるものとして計算する。
【００７７】
続いて、次回のクロック同期処理に備えるために、変数ＴＴＳ（ｎ−１）に変数ＴＴＳ（ｎ）の値を、変数ＳＴＣ（ｎ−１）に変数ＳＴＣ（ｎ）の値を、それぞれ格納する（ステップＳ１３２）。なお、変数ＴＴＳ（ｎ−１）および変数ＳＴＣ（ｎ−１）への値の格納は、以下で説明する変数Ａと変数Ｂとの大小判定処理の後に行ってもよい。
【００７８】
変数Ａおよび変数Ｂの計算を行うと、次に、変数Ａと変数Ｂとの差分の絶対値（｜Ｂ−Ａ｜）が、所定の閾値Ｊｍａｘより大きいかどうかを判定する（ステップＳ１３３）。Ｊｍａｘには、考慮すべきネットワークジッタの最大値に相当する値を設定する。
【００７９】
図７は、本発明の一実施形態にかかる受信装置１００を用いたクロック同期処理において、タイムスタンプ値とＳＴＣカウンタ値との差分およびジッタの関係を、グラフを用いて示す説明図である。図７に示したグラフは、横軸がＳＴＣカウンタ値であり、縦軸がタイムスタンプ値を示している。そして、変数Ａが最新のタイムスタンプ値ＴＴＳ（ｎ）からタイムスタンプ値の初期値ＴＴＳ（０）の間の値を表しており、変数Ｂが最新のＳＴＣカウンタ値ＳＴＣ（ｎ）からＳＴＣカウンタ値の初期値ＳＴＣ（０）の間の値を表している。
【００８０】
ＳＴＣカウンタ値は、発振部１２７の発振周波数が一定なので、同じペースで増加していくが、タイムスタンプ値は必ずしも同じペースで増加していくとは限らず、ネットワークの状況によって増大するペースが変化する。そして、ある時点においてタイムスタンプ値とＳＴＣカウンタ値との差分の値が、考慮すべきネットワークジッタの最大値に相当する値を超えると、受信装置１００における安定したデコード動作ができなくなり、再生動作が破綻してしまう。そこで、タイムスタンプ値とＳＴＣカウンタ値との差分の値が、考慮すべきネットワークジッタの最大値に相当する値を超えた時点で、発振周波数を制御してＳＴＣカウンタ値の増加ペース（すなわち、図７に示したグラフの傾き）を変化させて、タイムスタンプ値とＳＴＣカウンタ値との差分が考慮すべきネットワークジッタの最大値以内となるように制御する。このように発振周波数を制御することで、受信装置１００は安定したデコード動作および再生動作が可能となる。
【００８１】
上記ステップＳ１３３における判定の結果、｜Ｂ−Ａ｜≦Ｊｍａｘであった場合には、発振部１２７の発振周波数はそのままにして（ステップＳ１４３）、処理を終了する。一方｜Ｂ−Ａ｜＞Ｊｍａｘであった場合には、続いてＢ＜Ａであるか（すなわちタイムスタンプ値がＳＴＣカウンタ値よりも先行して増加しているか）を判定する（ステップＳ１３４）。
【００８２】
ステップＳ１３４における判定の結果、Ｂ＜Ａである場合には、続いてＧｕｐ＝０であるかどうかを判定する（ステップＳ１３５）。上述したように、変数Ｇｕｐは、発振部１２７の発振周波数を上げる必要のある回数である。変数Ｇｕｐの役割については後に詳述する。ステップＳ１３５における判定の結果、Ｇｕｐ＝０である場合には、続いて変数Ｄが所定の閾値Ｄｍａｘより大きいかどうかを判定する（ステップＳ１３６）。なお、Ｄｍａｘは１以上の整数である。変数Ｄが所定の閾値Ｄｍａｘより大きい場合には、発振部１２７の発振周波数を上げるように制御する（ステップＳ１３７）。一方、変数Ｄが所定の閾値Ｄｍａｘより大きくない場合には、発振部１２７の発振周波数は変化させない（ステップＳ１３８）。
【００８３】
上述したように、変数ＤはＡ−Ｂ＞Ｊｍａｘと連続して判定された回数を表している。従って、ステップＳ１３４において、一度だけでは無く複数回連続してＢ＜Ａと判定されて、初めて発振部１２７の発振周波数を上げるように制御する。
【００８４】
また、ステップＳ１３４における判定の結果、Ａ＜Ｂである場合には、続いてＧｄｏｗｎ＝０であるかどうかを判定する（ステップＳ１３９）。上述したように、変数Ｇｄｏｗｎは、発振部１２７の発振周波数を下げる必要のある回数である。変数Ｇｄｏｗｎの役割については後に詳述する。ステップＳ１３９における判定の結果、Ｇｄｏｗｎ＝０である場合には、続いて変数Ｅが所定の閾値Ｅｍａｘより大きいかどうかを判定する（ステップＳ１４０）。なお、Ｅｍａｘは１以上の整数である。変数Ｅが所定の閾値Ｅｍａｘより大きい場合には、発振部１２７の発振周波数を下げるように制御する（ステップＳ１４１）。一方、変数Ｅが所定の閾値Ｅｍａｘより大きくない場合には、発振部１２７の発振周波数は変化させない（ステップＳ１４２）。
【００８５】
上述したように、変数ＥはＢ−Ａ＞Ｊｍａｘと連続して判定された回数を表している。従って、ステップＳ１３４において、一度だけでは無く複数回連続してＡ＞Ｂと判定されて、初めて発振部１２７の発振周波数を下げるように制御する。
【００８６】
このように、発振部１２７の発振周波数を上げるのか、下げるのか、そのままにするのかを決定して、ＣＰＵ１３１から発振部１２７の発振周波数を制御することで、一連のクロック同期処理を終了する。以降は、ＣＰＵ１３１は、ＡＶ同期制御部１２５からＶ．Ｓｙｎｃの割り込みを受ける度に、図５および図６に示した処理を実行して、ＣＰＵ１３１から発振部１２７の発振周波数を制御する。
【００８７】
ここで、ステップＳ１３７、ステップＳ１３８、ステップＳ１４１、ステップＳ１４２およびステップＳ１４３の各処理の詳細について説明する。
【００８８】
図８は、本発明の一実施形態にかかる受信装置１００を用いたクロック同期処理において、図６のステップＳ１３７に示した発振部１２７の発振周波数を上げる処理の詳細について説明する流れ図である。
【００８９】
発振部１２７の発振周波数を上げる際には、まず、変数Ｇｕｐの値がＧｕｐ＝０であるかどうかを判定する（ステップＳ１５１）。変数Ｇｕｐの値がＧｕｐ＝０であれば、次に、｜Ｂ−Ａ｜をＢで割った値を計算し、計算結果を変数Ｆに格納する（ステップＳ１５２）。変数Ｆは、Ａ−Ｂ＞Ｊｍａｘと判定されるまでの経過時間と、値Ａと値Ｂとの差分とから類推する、送信側と受信装置１００との間のクロックの偏差に相当するものである。例えば、Ｂの値が６０分に相当する値であり、Ａ−Ｂの値が１８０ミリ秒に相当する値であれば、Ｆは５０ｐｐｍに相当する値となる。
【００９０】
変数Ｆへの値の格納が完了すると、次に変数Ｆの値が所定の閾値Ｆｍａｘ未満であるかどうかを判定する（ステップＳ１５３）。所定の閾値Ｆｍａｘは、発振部１２７の発振周波数の可変範囲を大きく超える値を設定することが望ましい。所定の閾値Ｆｍａｘの例として、例えば１００ｐｐｍ（２７００Ｈｚ相当）を設定することができる。ステップＳ１５３での判定の結果、Ｆ＜Ｆｍａｘではないと判定した場合には、異常状態であるとして以降の処理は全てスキップする。一方、ステップＳ１５３での判定の結果、Ｆ＜Ｆｍａｘであると判定した場合には、次に変数Ｆを設定変更値αで割り、得られた値を変数Ｇｕｐに格納する（ステップＳ１５４）。なお、変数Ｆを設定変更値αで割った結果、割り切れなければ小数点以下は切り上げる。
【００９１】
なお、設定変更値αとは、１回のクロック同期処理あたりの発振部１２７の発振周波数の変化値を指す。例えば、設定変更値αを５ｐｐｍ（１３５Ｈｚに相当）に設定した場合に、変数Ｆの値が５０ｐｐｍに相当する値であった場合には、変数Ｇｕｐの値は５０／５＝１０となる。つまり、この場合には発振部１２７の発振周波数を目的の発振周波数になるまで１０回変更することになる。大きく一度に発振周波数を変更すると、受信したパケットストリームをデコードする際に画像や音声に乱れが生じるおそれがあるので、本実施形態においては、画像や音声の乱れを防ぐために少しずつ発振周波数を変化させる。
【００９２】
なお、上記ステップＳ１５１において、変数Ｇｕｐの値がＧｕｐ＝０でないと判定した場合には、上記ステップＳ１５２〜ステップＳ１５４の処理はスキップする。
【００９３】
続いて、発振部１２７から発振される現在のクロック周波数の設定値Ｈを取得する（ステップＳ１５５）。発振部１２７から発振される現在のクロック周波数の設定値Ｈを取得すると、設定値Ｈに設定変更値αを加算して、発振部１２７から発振されるクロック周波数の設定値を再設定する（ステップＳ１５６）。具体的には、発振部１２７にＶＣＸＯを用いた場合には、ＶＣＸＯに供給するＰＷＭ信号を制御することで、発振部１２７から発振されるクロック周波数を変更する。
【００９４】
ステップＳ１５６で発振部１２７から発振されるクロック周波数の設定値を再設定すると、変数Ｇｕｐの値を１つデクリメントし、変数Ｇｄｏｗｎ、Ｄ、Ｅの値をそれぞれ０に初期化する（ステップＳ１５７）。
【００９５】
図９は、本発明の一実施形態にかかる受信装置１００を用いたクロック同期処理において、図６のステップＳ１４１に示した発振部１２７の発振周波数を下げる処理の詳細について説明する流れ図である。
【００９６】
発振部１２７の発振周波数を下げる際には、まず、変数Ｇｄｏｗｎの値がＧｄｏｗｎ＝０であるかどうかを判定する（ステップＳ１６１）。変数Ｇｄｏｗｎの値がＧｄｏｗｎ＝０であれば、次に、｜Ｂ−Ａ｜をＢで割った値を計算し、計算結果を変数Ｆに格納する（ステップＳ１６２）。変数Ｆは、ここではＢ−Ａ＞Ｊｍａｘと判定されるまでの経過時間と、値Ａと値Ｂとの差分とから類推する、送信側と受信装置１００との間のクロックの偏差に相当するものである。
【００９７】
変数Ｆへの値の格納が完了すると、次に変数Ｆの値が所定の閾値Ｆｍａｘ未満であるかどうかを判定する（ステップＳ１６３）。ステップＳ１６３での判定の結果、Ｆ＜Ｆｍａｘではないと判定した場合には、異常状態であるとして以降の処理は全てスキップする。一方、ステップＳ１６３での判定の結果、Ｆ＜Ｆｍａｘであると判定した場合には、次に変数Ｆを設定変更値αで割り、得られた値を変数Ｇｄｏｗｎに格納する（ステップＳ１６４）。
【００９８】
なお、上記ステップＳ１６１において、変数Ｇｄｏｗｎの値がＧｄｏｗｎ＝０でないと判定した場合には、上記ステップＳ１６２〜ステップＳ１６４の処理はスキップする。
【００９９】
続いて、発振部１２７から発振される現在のクロック周波数の設定値Ｈを取得する（ステップＳ１６５）。発振部１２７から発振される現在のクロック周波数の設定値Ｈを取得すると、設定値Ｈから設定変更値αを減算して、発振部１２７から発振されるクロック周波数の設定値を再設定する（ステップＳ１６６）。
【０１００】
ステップＳ１６６で発振部１２７から発振されるクロック周波数の設定値を再設定すると、変数Ｇｄｏｗｎの値を１つデクリメントし、変数Ｇｕｐ、Ｄ、Ｅの値をそれぞれ０に初期化する（ステップＳ１６７）。
【０１０１】
図１０は、本発明の一実施形態にかかる受信装置１００を用いたクロック同期処理において、図６のステップＳ１４３に示した発振部１２７の発振周波数をそのまま変化させない処理の詳細について説明する流れ図である。
【０１０２】
まず。発振部１２７から発振される現在のクロック周波数の設定値Ｈを取得する（ステップＳ１７１）。発振部１２７から発振される現在のクロック周波数の設定値Ｈを取得すると、取得した設定値Ｈをそのまま発振部１２７から発振されるクロック周波数の設定値として再設定する（ステップＳ１７２）。
【０１０３】
ステップＳ１７２で発振部１２７から発振されるクロック周波数の設定値を再設定すると、変数Ｇｕｐ、Ｇｄｏｗｎ、Ｄ、Ｅの値をそれぞれ０に初期化する（ステップＳ１７３）。
【０１０４】
なお、図６のステップＳ１４３では発振部１２７から発振される現在のクロック周波数を変化させないので、上記ステップＳ１７１およびステップＳ１７２の処理は、実行しなくてもよい。
【０１０５】
図１１は、本発明の一実施形態にかかる受信装置１００を用いたクロック同期処理において、図６のステップＳ１３８に示した発振部１２７の発振周波数をそのまま変化させない処理の詳細について説明する流れ図である。
【０１０６】
まず。発振部１２７から発振される現在のクロック周波数の設定値Ｈを取得する（ステップＳ１８１）。発振部１２７から発振される現在のクロック周波数の設定値Ｈを取得すると、取得した設定値Ｈをそのまま発振部１２７から発振されるクロック周波数の設定値として再設定する（ステップＳ１８２）。
【０１０７】
ステップＳ１８２で発振部１２７から発振されるクロック周波数の設定値を再設定すると、変数Ｇｕｐ、Ｇｄｏｗｎ、Ｅの値をそれぞれ０に初期化し、変数Ｄの値を１つインクリメントする（ステップＳ１８３）。図６のステップＳ１３８は、ステップＳ１３４でＢ＜Ａと判定した場合に実行される処理であるので、Ａ−Ｂ＞Ｊｍａｘであると連続して判定された回数を表す変数Ｄを１つインクリメントする。ここで変数Ｄの値が増加することで、図６のステップＳ１３６において、変数Ｄの値が所定の閾値Ｄｍａｘよりも大きくなった時点で、ステップＳ１３７における、発振部１２７から発振されるクロック周波数を増加させる処理を実行することができる。
【０１０８】
なお、図６のステップＳ１３８では発振部１２７から発振される現在のクロック周波数を変化させないので、上記ステップＳ１８１およびステップＳ１８２の処理は、実行しなくてもよい。
【０１０９】
図１２は、本発明の一実施形態にかかる受信装置１００を用いたクロック同期処理において、図６のステップＳ１４２に示した発振部１２７の発振周波数をそのまま変化させない処理の詳細について説明する流れ図である。
【０１１０】
まず。発振部１２７から発振される現在のクロック周波数の設定値Ｈを取得する（ステップＳ１９１）。発振部１２７から発振される現在のクロック周波数の設定値Ｈを取得すると、取得した設定値Ｈをそのまま発振部１２７から発振されるクロック周波数の設定値として再設定する（ステップＳ１９２）。
【０１１１】
ステップＳ１９２で発振部１２７から発振されるクロック周波数の設定値を再設定すると、変数Ｇｕｐ、Ｇｄｏｗｎ、Ｄの値をそれぞれ０に初期化し、変数Ｅの値を１つインクリメントする（ステップＳ１９３）。図６のステップＳ１４２は、ステップＳ１３４でＢ＞Ａと判定した場合に実行される処理であるので、Ｂ−Ａ＞Ｊｍａｘであると連続して判定された回数を表す変数Ｅを１つインクリメントする。ここで変数Ｅの値が増加することで、図６のステップＳ１４０において、変数Ｅの値が所定の閾値Ｅｍａｘよりも大きくなった時点で、ステップＳ１４１における、発振部１２７から発振されるクロック周波数を減少させる処理を実行することができる。
【０１１２】
なお、図６のステップＳ１４２では発振部１２７から発振される現在のクロック周波数を変化させないので、上記ステップＳ１９１およびステップＳ１９２の処理は、実行しなくてもよい。
【０１１３】
以上、本発明の一実施形態にかかる受信装置１００を用いたクロック同期処理について説明した。
【０１１４】
以上のように制御された発振部１２７の発振周波数によって、オーディオデコーダ１２３およびビデオデコーダ１２４が動作する。このとき、ＴＳ同期抽出部１１３からオーディオデコーダ１２３およびビデオデコーダ１２４へのパケットストリームの供給を、特許文献１に記載されているように、ＴＳ同期クロックカウンタのカウント値とタイムスタンプとの一致によって行うことができる。また、ＴＳ同期クロックカウンタを使用せず、オーディオデコーダバッファ１１７やビデオデコーダバッファ１１８に空きがあれば、ＴＳ同期抽出部１１３に対してデータを要求することで、オーディオデコーダ１２３およびビデオデコーダ１２４にデータを供給し、受信した映像データや音声データを再生することもできる。
【０１１５】
以上説明したように本実施形態によれば、ＲＴＰ／ＵＤＰ転送でフロー制御を行わないようなシステムにおいて、受信装置１００において、ネットワークジッタを考慮して受信装置１００の発振部１２７の発振周波数を制御することで、ネットワークを経由して受信したパケットストリームを、長時間に渡って安定してデコードすることができる。また、ネットワーク経由で受信したパケットストリームをデコードして再生した後に、再度映像や音声をエンコードし、多重化して記録するようなシステムにおいて、バッファが破綻したときに生じる画像の乱れはそのまま記録されてしまう。従って、ネットワークジッタを考慮して受信装置１００の発振部１２７の発振周波数を制御することで、バッファの破綻が起こりにくくなり、記録される映像に画像の乱れが生じる頻度を低減させる効果も生じる。
【０１１６】
以上、添付図面を参照しながら本発明の好適な実施形態について説明したが、本発明は係る例に限定されないことは言うまでもない。当業者であれば、特許請求の範囲に記載された範疇内において、各種の変更例または修正例に想到し得ることは明らかであり、それらについても当然に本発明の技術的範囲に属するものと了解される。
【図面の簡単な説明】
【０１１７】
【図１】本発明の一実施形態にかかる受信装置１００の構成について説明する説明図である。
【図２】ＴＴＳパケットについて説明する説明図である。
【図３】本発明の一実施形態にかかる受信装置１００におけるクロック同期処理の概要について説明する流れ図である。
【図４】ストリーム順序判定およびストリーム途絶判定の概要を示す説明図である。
【図５】本発明の一実施形態にかかる受信装置１００を用いたクロック同期処理を説明する流れ図である。
【図６】本発明の一実施形態にかかる受信装置１００を用いたクロック同期処理を説明する流れ図である。
【図７】タイムスタンプ値とＳＴＣカウンタ値との差分およびジッタの関係を、グラフを用いて示す説明図である。
【図８】発振部の発振周波数を上げる処理の詳細について説明する流れ図である。
【図９】発振部の発振周波数を下げる処理の詳細について説明する流れ図である。
【図１０】発振部の発振周波数をそのまま変化させない処理の詳細について説明する流れ図である。
【図１１】発振部の発振周波数をそのまま変化させない処理の詳細について説明する流れ図である。
【図１２】発振部の発振周波数をそのまま変化させない処理の詳細について説明する流れ図である。
【符号の説明】
【０１１８】
１００    受信装置
１１０    再生部
１１１    ネットワークＩ／Ｆ
１１２    通信キャッシュ
１１３    ＴＳ同期抽出部
１１４    ＴＳ同期クロックカウンタ
１１６    デマルチプレクサ
１１７    オーディオデコーダバッファ
１１８    ビデオデコーダバッファ
１１９    ＳＴＣカウンタ
１２０    ＥＳ同期抽出部
１２１    ＥＳ同期抽出部
１２３    オーディオデコーダ
１２４    ビデオデコーダ
１２５    ＡＶ同期制御部
１２７    発振部
１２８    分周部
１３０    記録媒体
１３１    ＣＰＵ
【図１】
0004438878.tif 000002
【図２】
0004438878.tif 000003
【図３】
0004438878.tif 000004
【図４】
0004438878.tif 000005
【図５】
0004438878.tif 000006
【図６】
0004438878.tif 000007
【図７】
0004438878.tif 000008
【図８】
0004438878.tif 000009
【図９】
0004438878.tif 000010
【図１０】
0004438878.tif 000011
【図１１】
0004438878.tif 000012
【図１２】
0004438878.tif 000013