本発明は、有線回線や無線回線を介して伝送されてくるMPEG2−TS等の映像信号や音響信号等を受信するためのデータ受信装置に関し、より特定的には、伝送される映像信号や音響信号等の同期を確保することができるデータ受信装置に関する。
従来、IEEE802.11に代表される無線ローカルエリアネットワーク等の無線回線を介して、映像信号や音響信号等を伝送するために、送信側と受信側との間で信号の同期を実現する技術が存在する(例えば、特許文献1参照)。
図11は、特許文献1に記載されている従来の送信側の無線親機900の機能的構成を示すブロック図である。図12は、特許文献1に記載されている従来の受信側の無線子機920の機能的構成を示すブロック図である。図13は、特許文献1に記載されている従来の送信側の無線親局から送信されるデータパケット990のフレーム構造を示す図である。以下、図11,図12,および図13を参照しながら、特許文献1に記載されている無線親機900および無線子機920の動作について説明する。
無線親機900において、MPEG2−TSエンコード部901に入力した映像信号は、MPEG2−TSパケット950に変換されて出力される。タイムスタンプ付加部902は、MPEG2−TSパケット950がMPEG2−TSエンコード部901から出力される時間に応じたタイムスタンプ951を、MPEG2−TSパケット950に付加する。ここで付加されるタイムスタンプ951は、ビーコン用タイマ部908からのタイマ値を含む。
通信プロトコル処理部903は、タイムスタンプ951が付加されたMPEG2−TSパケット950を一つのデータブロック941とし、データブロック941と複数のデータブロック942〜94Nとを結合して、データヘッダ980を付加して出力する。MAC処理部904のフレーム組み立て部909は、通信プロトコル処理部903からの出力に対して、MACヘッダ970を付加して、出力する。RF部905は、フレーム組み立て部909からの出力に対して、物理層ヘッダ960を付加して出力する。アンテナ906は、RF部905からの出力を無線信号として、無線通信回線路に放射する。
クロック生成部907は、クロックを生成して、ビーコン用タイマ部908に入力する。ビーコン用タイマ部908は、クロックに基づいて、現在のタイマ値(たとえば、現在時刻)を設定して出力する。ビーコン生成部910は、ビーコン用タイマ部908からのタイマ値を含むビーコンを生成する。フレーム組み立て部909は、ビーコン生成部910が生成したビーコンに対して、MACヘッダを付加して出力する。RF部905は、フレーム組み立て部909からの出力に対して、物理層ヘッダ960を付加して出力する。アンテナ906は、RF部905からの出力をビーコン信号として、無線通信回線路に放射する。
無線子機920において、無線通信回線路を介して伝送された無線信号は、アンテナ921で受信される。アンテナ921で受信された無線信号は、RF部922を介して、MAC処理部923のフレーム解析部925に入力される。フレーム解析部925は、受信した信号が自機器宛であるか否か解析する。自機器宛である場合、フレーム解析部925は、受信した信号を受信データ処理部927に入力する。受信データ処理部927は、受信した信号がデータパケット990である場合、当該データパケット990を通信プロトコル処理部924に入力する。一方、受信した信号がビーコン信号である場合、受信データ処理部927は、当該ビーコン信号をビーコン用タイマ部926に入力する。
通信プロトコル処理部924は、受信したデータパケット990の物理層ヘッダ960,MACヘッダ970,データヘッダ980を解析して、データブロック941〜94Nを抽出して、抽出したデータブロック941〜94Nを受信データバッファ部933に格納する。
ビーコン用タイマ部926は、クロック生成部928から出力されるクロックに基づいて、現在のタイマ値(たとえば、現在時刻)を設定する。ビーコン用タイマ部926は、受信データ処理部927からビーコン信号が入力された場合、当該ビーコン信号に含まれるタイマ値と一致するように、現在のタイマ値を設定し直す。これにより、無線親機900におけるビーコン用タイマ部908と無線子機920におけるビーコン用タイマ部926とが同期する。
PLL処理部929は、ビーコン用タイマ部926からのタイマ値をPLL処理して、PLL処理したタイマ値をタイマ部930に入力する。タイマ部930は、PLL処理された現在のタイマ値をタイムスタンプ比較部931に入力する。タイムスタンプ抽出部932は、受信データバッファ部933に格納されているデータブロックに含まれるタイムスタンプを抽出する。タイムスタンプ比較部931は、タイムスタンプ抽出部932が抽出したタイムスタンプに含まれるタイマ値とタイマ部930から入力される現在のタイマ値とが一致するか否かを判断する。刻々と変化する現在のタイマ値に対して、タイムスタンプに含まれるタイマ値が一致した場合、タイムスタンプ比較部931は、タイマ値が一致したタイムスタンプを含むデータブロック内のMPEG2−TSパケットを、受信データバッファ部933に出力させる。MPEG2−TSデコーダ部934は、受信データバッファ部933から出力されるMPEG2−TSパケットをデコードして、映像信号を出力する。
このようにして、無線子機920は、MPEG2−TSデコード部934に入力させるMPEG2−TSパケット間の時間間隔を、無線親機900のMPEG2−TSエンコード部901から出力されたMPEG2−TSパケット間の時間間隔と一致させることができる。
ところで、MPEG2−TSパケットには、MPEG2−TSエンコード部901におけるシステムクロック情報(PCR:Program Clock Reference)が含まれている。MPEG2−TSデコード部934は、このシステムクロック情報に基づいて、MPEG2−TSエンコード部901のシステムクロックを再現している。
しかし、システムクロックを再現するためには、それぞれのMPEG2−TSパケットが伝送される際の伝送時間ばらつきが、充分小さくなければならない。ISO/IEC13818 Part9(MPEG2 Extention for real time interface)では、伝送時間ばらつきの値を25マイクロ秒以内と規定している。
上述したように、従来のデータ伝送システムでは、送信側の無線親機900は、MPEG2−TSパケットにビーコン用タイマ値に基づいたタイムスタンプを付加する。受信側の無線子機920は、無線親機900と同期したビーコン用タイマ値を利用し、MPEG2−TSパケットのタイムスタンプに基づいてMPEG2−TSパケットの出力タイミングを制御する。これによって、無線パケットに複数のMPEG2−TSパケットを結合した際の時間軸上のずれと、伝送回線上で生じた伝送時間のばらつきとを補正することができる。したがって、受信側は、MPEG2−TSパケット間における元々の時間間隔を再現することができ、伝送する映像・音響信号を送信側と受信側とで同期させることが可能となる。
特開2003−60652号公報
しかし、例えばEthernet(登録商標)のように、ビーコン信号が送受信されないシステムでは、従来の技術を用いて、MPEG2−TSパケット間の時間間隔のずれを補正することはできない。
それゆえ、本発明の目的は、Ethernet(登録商標)等、送信側と受信側との間でビーコン信号等によってタイマ値を同期しないシステムにおいても、パケット間の時間間隔のずれを補正し、送信側でのパケットの間隔を受信側で再現することができ、伝送される映像・音響信号等を送信側と受信側とで同期させることができるデータ受信装置を提供することである。
上記目的を達成するために、本発明は、以下のような特徴を有する。本発明は、複数のパケットを含んでいるデータパケットを受信するためのデータ受信装置であって、複数のパケットには、それぞれ、パケット生成時の時間に関する情報である第1の時間情報が付加されており、データパケットに含まれる複数のパケットを格納するための受信データバッファ部と、受信データバッファ部に格納されているデータの量を計測する受信データ量計測部と、周波数が可変なクロックを生成する可変クロック生成部と、可変クロック生成部が生成するクロックの周波数に応じてカウントされる第2の時間情報を出力する時間情報出力部と、パケットに付加されている第1の時間情報と時間情報出力部から出力される第2の時間情報とを比較して、受信データバッファ部に格納されているパケットを出力するタイミングを制御する第1の時間情報比較部とを備え、受信データ量計測部は、可変クロック生成部が生成するクロックの周波数を受信データ量計測部による計測値に応じて制御する。
本発明によれば、蓄積されたデータ量に応じて、クロックの周波数が制御されることとなるので、送信側と受信側との間でビーコン信号等によってタイマ値を同期しないシステムにおいても、データパケット間の時間間隔のずれを補正し、送信側でのデータパケットの間隔を受信側で再現することができ、伝送される映像・音響信号等を送信側と受信側とで同期させることができるデータ受信装置が提供されることとなる。
好ましくは、時間情報比較部が出力する第2の時間情報は、所定のオフセット時間だけ遅れているとよい。
これにより、データパケットが遅延して届いたとしても、データ受信装置は、パケットを出力することができる。
好ましくは、時間情報出力部は、可変クロック生成部が生成するクロックの周波数に応じてカウントされる第3の時間情報を出力するタイマ部と、受信データバッファ部に格納されるパケットに付加されている第1の時間情報を抽出する時間情報抽出部と、タイマ部が出力する第3の時間情報を時間情報抽出部が抽出した第1の時間情報に一致させる初期設定部と、タイマ部が出力する第3の時間情報を所定のオフセット時間だけ遅らせることによって第2の時間情報を出力するオフセット部とを備えるとよい。
これにより、初期設定がなされるので、送信側での時間情報と受信側での時間情報とがほぼ一致することとなる。さらに、第2の時間情報は、オフセット時間だけ遅らされているので、データパケットが遅延して届いたとしても、データ受信装置は、パケットを出力することができる。
好ましくは、オフセット部は、データ受信装置が接続される伝送路の状態に応じて、所定のオフセット時間を変化させるとよい。
これにより、遅延量が変化したとしても、データ受信装置は、パケットを出力することができる。
好ましくは、オフセット部は、受信データバッファ部に蓄積されているデータの量に応じて、所定のオフセット時間を変化させるとよい。
これにより、遅延量が変化したとしても、データ受信装置は、パケットを出力することができる。
好ましくは、オフセット部は、通信プロトコルの種類に応じて、所定のオフセット時間を変化させるとよい。
これにより、遅延量が変化したとしても、データ受信装置は、パケットを出力することができる。
好ましくは、さらに、タイマ部が出力する第3の時間情報と時間情報抽出部が抽出する第1の時間情報とを比較し、比較結果に応じて、可変クロック生成部が生成するクロックの周波数を制御する第2の時間情報比較部を備えるとよい。
これにより、タイマ部が出力する第3の時間情報と送信側での時間情報とをほぼ一致させることができ、パケットの間隔のずれが補正されることとなる。
好ましくは、データパケットの受信を開始した時点から所定の時間が経過するまで、可変クロック生成部が生成するクロックの周波数は、第2の時間情報比較部によって制御され、所定の時間の経過後、可変クロック生成部が生成するクロックの周波数は、受信データ量計測部によって制御されるとよい。
これにより、パケットがある程度蓄積されるまでの間は、時間差を用いてクロックの周波数が制御されることとなり、パケットがある程度蓄積された後は、蓄積されているデータ量に応じてクロックの周波数が制御されることとなるので、安定したクロックの制御が可能となる。
好ましくは、受信データ量計測部は、所定の時間経過後に、可変クロック生成部が生成するクロックの周波数の制御を開始するとよい。
これにより、安定したクロックの制御が可能となる。
好ましくは、受信データ量計測部は、受信データバッファ部に蓄積されているデータの量の平均値を計測値とし、計測値に応じて、可変クロック生成部が生成するクロックの周波数を制御するとよい。
これにより、安定したクロックの制御が可能となる。
たとえば、データパケットに含まれるパケットは、MPEG2−TSパケットである。
たとえば、データパケットは、映像および/または音声信号をエンコードして複数のMPEG2−TSパケットを生成して、各MPEG2−TSパケットに対して、エンコード時の時間に関する情報を第1の時間情報として付加して、第1の時間情報が付加された複数のMPEG2−TSパケットを結合して、データパケットを生成するデータ送信装置から送信されている。
また、本発明は、複数のパケットを含んでいるデータパケットを受信するための集積回路であって、複数のパケットには、それぞれ、パケット生成時の時間に関する情報である第1の時間情報が付加されており、集積回路に接続されるデータパケットに含まれる複数のパケットを格納するための受信データバッファ部に格納されているデータの量を計測する受信データ量計測部と、周波数が可変なクロックを生成する可変クロック生成部と、可変クロック生成部が生成するクロックの周波数に応じてカウントされる第2の時間情報を出力する時間情報出力部と、パケットに付加されている第1の時間情報と時間情報出力部から出力される第2の時間情報とを比較して、受信データバッファ部に格納されているパケットを出力するタイミングを制御する第1の時間情報比較部とを備え、受信データ量計測部は、可変クロック生成部が生成するクロックの周波数を受信データ量計測部による計測値に応じて制御する。
本発明に係るデータ受信装置は、非同期の伝送路を介した映像・音声信号等のストリーム伝送において、送信側でのパケットの送信間隔を受信側で再現することができるため、MPEG2−TSパケット等を非同期の伝送路を介して伝送した場合にも、受信側で正しく再生することができる。
本発明のこれらおよび他の目的、特徴、局面、効果は、添付図面と照合して、以下の詳細な説明から一層明らかになるであろう。
図1は、本発明の第1の実施形態に係るデータ送信装置1の機能的構成を示すブロック図である。
図2Aは、MPEG2−TSエンコード部100から出力される複数のMPEG2−TSパケットのデータ構造を示す図である。
図2Bは、タイムスタンプ付加部101から出力されるタイムスタンプ201が付加された複数のMPEG2−TSパケット200のデータ構造を示す図である。
図3は、通信プロトコル処理部104によってIPパケット化されたデータパケット(IPパケット)2のデータ構造の一例を示す図である。
図4は、通信プロトコル処理部104によってIPパケット化されたデータパケット(IPパケット)2aのデータ構造の他の例を示す図である。
図5は、本発明の第1の実施形態に係るデータ受信装置3の機能的構成を示すブロック図である。
図6は、データ受信装置3の動作の流れを示すフローチャートである。
図7は、本発明の第2の実施形態に係るデータ受信装置4の機能的構成を示すブロック図である。
図8は、本発明の第2の実施形態に係るデータ受信装置4の動作を示すフローチャートである。
図9は、本発明の第3の実施形態に係るデータ受信装置5の機能的構成を示すブロック図である。
図10は、第3の実施形態に係るデータ受信装置5の動作を示すフローチャートである。
図11は、特許文献1に記載されている従来の送信側の無線親機900の機能的構成を示すブロック図である。
図12は、特許文献1に記載されている従来の受信側の無線子機920の機能的構成を示すブロック図である。
図13は、特許文献1に記載されている従来の送信側の無線親局から送信されるデータパケット990のフレーム構造を示す図である。
符号の説明
1 データ送信装置
3,4,5 データ受信装置
100 MPEG2−TSエンコード部
101 タイムスタンプ付加部
102 クロック生成部
103 タイマ部
104,301 通信プロトコル処理部
105,300 通信部
200 MPEG2−TSパケット
201 タイムスタンプ
2,2a IPパケット
302 受信データバッファ部
303 MPEG2−TSデコード部
304 第1の時間情報抽出部
305 初期設定部
306 受信データ量計測部
307 可変クロック生成部
308 タイマ部
309 オフセット部
310 第2の時間情報抽出部
311 第1の時間情報比較部
312 時間情報出力部
400 第2の時間情報比較部
500 切り替え制御部
以下、本発明の実施の形態について、図面を参照しながら説明する。
(第1の実施形態)
図1は、本発明の第1の実施形態に係るデータ送信装置1の機能的構成を示すブロック図である。図1において、データ送信装置1は、MPEG2−TSエンコード部100と、タイムスタンプ付加部101と、クロック生成部102と、タイマ部103と、通信プロトコル処理部104と、通信部105とを備える。
MPEG2−TSエンコード部100は、入力する映像および/または音声信号をMPEG2−TSパケットに変換して出力する。図2Aは、MPEG2−TSエンコード部100から出力される複数のMPEG2−TSパケットのデータ構造を示す図である。図2Aに示すように、MPEG2−TSエンコード部100から、複数のMPEG2−TSパケット200が出力される。
クロック生成部102は、独立したクロックを生成して出力する。クロック生成部102によって生成されるクロックは、ISO/IEC13818 Part9(MPEG2 Extention for real time interface)で規定されたPCRジッタ許容値である25マイクロ秒以内に対して、十分な分解能を有する。なお、クロックとして、MPEG2−TSエンコード部100におけるシステムクロック(STC:System Time Clock)が用いられてもよい。
タイマ部103は、クロック生成部102が出力するクロックを計数(パルスの数を数えることをいう。以下同様)して、計数結果を時間情報として出力する。時間情報として現在時刻が用いられてもよいし、現在の総カウント数が用いられてもよい。時間に関する情報であれば、時間情報は、上記の例に限られない。
タイムスタンプ付加部101は、MPEG2−TSエンコード部100からMPEG2−TSパケットが入力されると、入力された時点における時間情報をタイマ部103から取得し、取得した時間情報を第1の時間情報とし、当該第1の時間情報を含むタイムスタンプをMPEG2−TSパケットに付加し、タイムスタンプが付加されたパケットとして、MPEG2−TSパケットを出力する。このように、第1の時間情報は、パケット生成時の時間に関する情報である。
図2Bは、タイムスタンプ付加部101から出力されるタイムスタンプ201が付加された複数のMPEG2−TSパケット200のデータ構造を示す図である。図2Bに示すように、タイムスタンプ付加部101から、タイムスタンプ201が付加された複数のMPEG2−TSパケット200が出力される。
第1の実施形態におけるデータ送信装置1では、タイマ部103が出力する時間情報を基準とする時間軸が想定されている。上述のように、MPEG2−TSエンコード部100がMPEG2−TSパケットを出力するタイミングにおける時間情報が、タイムスタンプとして、MPEG2−TSパケットに付加される。したがって、MPEG2−TSエンコード部100がMPEG2−TSパケットを出力するタイミングを基準として、タイマ部103の出力する時間情報が、MPEG2−TSパケットに、第1の時間情報として付加されることになる。
通信プロトコル処理部104は、タイムスタンプ付加部101から出力されたタイムスタンプが付加された複数のMPEG2−TSパケットを結合して、IPパケット化し、通信部105に入力する。
図3は、通信プロトコル処理部104によってIPパケット化されたデータパケット(IPパケット)2のデータ構造の一例を示す図である。図3では、通信プロトコルとして、RTP(Realtime Tranport Protocol)を用いた場合の例が示されている。通信プロトコル処理部104に入力されたタイムスタンプ201が付加されたMPEG2−TSパケット200は、データブロック211となる。通信プロトコル処理部104に入力されたタイムスタンプ201が付加された他のMPEG2−TSパケット200は、それぞれ、データブロック212〜21Nとなる。これは、複数のデータブロックをまとめて伝送することによって、通信上の冗長性を小さくするためである。複数のデータブロック211〜21Nには、著作権情報221が付加される。著作権情報221は、MPEG2−TSパケットが著作権保護等の目的で暗号化されている場合に用いられる情報であって、たとえばコピーの可否、暗号化に関する情報等である。たとえば、著作権情報221は、DTCP(Digital Transmission Content Protection)で規定されるDTCP−IPのためのヘッダである。さらに、複数のデータブロック211〜21Nには、RTPヘッダ222、UDPヘッダ223、IPヘッダ224が付加される。なお、RTPヘッダ内にはタイムスタンプを格納する領域がある。MPEG2−TSパケットをRTPで伝送する際には、MPEG2−TSパケットのPCR(Program Clock Reference)の値とRTPヘッダ内のタイムスタンプ値とを一致させなければならない場合がある。しかし、本発明では、RTPヘッダ内のタイムスタンプは用いないので、MPEG2−TSパケットのPCRの値とRTPヘッダ内のタイムスタンプ値とは、一致させなくてもよいものとする。
図4は、通信プロトコル処理部104によってIPパケット化されたデータパケット(IPパケット)2aのデータ構造の他の例を示す図である。図4では、通信プロトコルとして、HTTP(Hyper Text Transfer Protocol)を用いた場合の例が示されている。通信プロトコル処理部104に入力されたタイムスタンプ201が付加されたMPEG2−TSパケット200は、図3に示したRTPの例と同様に、データブロック211となる。また、通信プロトコル処理部104に入力されたタイムスタンプ201が付加された他のMPEG2−TSパケット200は、それぞれ、データブロック212〜21Nとなる。さらに、複数のデータブロック211〜21Nには、著作権情報221、HTTPヘッダ232、TCPヘッダ233、IPヘッダ234が付加される。
なお、通信プロトコル処理部104で結合されるデータブロックの数が多くなる程、伝送時の冗長性が低くなる。通常、通信プロトコル処理部104は、IPプロトコルを用いて伝送する際、IPヘッダ224以下のデータの総バイト数、すなわち、図3の例では、UDPヘッダ223、RTPヘッダ222、著作権情報221、およびデータブロック211〜21Nの総バイト数が、1500バイト以下の最も大きいバイト数となるように、データブロックの数を設定する。また、通信プロトコル処理部104は、IPヘッダ224以下のデータの総バイト数、すなわち、TCPヘッダ233、HTTPヘッダ232、著作権情報221、およびデータブロック211〜21Nの総バイト数が、1500バイト以下の最も大きいバイト数となるように、データブロックの数を設定する。
通信プロトコル処理部104は、図3、図4に示したようなIPパケット化を行うと共に、所定の通信プロトコル処理を実行する。
通信プロトコル処理部104から出力されたパケットは、通信部105に入力される。通信部105は、たとえば、Ethernet(登録商標)のMAC層および物理層に相当する処理を行い、処理後の信号を伝送路に出力する。
図5は、本発明の第1の実施形態に係るデータ受信装置3の機能的構成を示すブロック図である。図5において、データ受信装置3は、通信部300と、通信プロトコル処理部301と、受信データバッファ部302と、MPEG2−TSデコード部303と、第1の時間情報抽出部304と、初期設定部305と、受信データ量計測部306と、可変クロック生成部307と、タイマ部308と、オフセット部309と、第2の時間情報抽出部310と、第1の時間情報比較部311とを備える。初期設定部305と、タイマ部308と、オフセット部309と、第2の時間情報抽出部310とによって、時間情報出力部312が構成される。
伝送路からの信号は、通信部300に入力される。通信部300は、入力する信号に対して、Ethernet(登録商標)のMAC層および物理層に相当する処理を行い、処理後の信号を通信プロトコル処理部301に入力する。
通信プロトコル処理部301は、所定の通信プロトコル処理を行うと共に、受信した信号に含まれるデータブロックを抽出して、抽出したデータブロックを受信データバッファ部302に格納する。
受信データバッファ部302には、複数のデータブロックが蓄積される。
受信データ量計測部306は、受信データバッファ部302に蓄積された複数のデータブロックの総データ量の平均値(以下、蓄積データ平均値という)を計測し、計測値である蓄積データ平均値の増減に応じた制御信号を可変クロック生成部307に入力する。
可変クロック生成部307は、受信データ量計測部306からの制御信号に基づいて、生成するクロックの周波数を増減する。
受信データ量計測部306は、蓄積データ平均値が増加した場合、可変クロック生成部307が生成するクロックの周波数が上がるような制御信号を出力する。一方、蓄積データ平均値が減少した場合、受信データ量計測部306は、可変クロック生成部307が生成するクロックの周波数が下がるような制御信号を出力する。また一方、蓄積データ平均値が変化していない場合、受信データ量計測部306は、可変クロック生成部307が生成するクロックの周波数を変化させない。
タイマ部308は、可変クロック生成部307が出力するクロックを計数することによって第2の時間情報を出力する。クロックの計数に基づく時間情報として、現在時刻が用いられてもよいし、現在の総カウント数が用いられてもよい。時間に関する情報であれば、時間情報は、上記の例に限られない。
オフセット部309は、タイマ部308が出力する時間情報で表されている時間を遅らせるように、タイマ部308が出力する時間情報に対して、所定のオフセット時間を減算する。以下、オフセット部309から出力される時間情報を第2の時間情報という。所定のオフセット時間を減算することによって遅らせる時間は、おおよそ、伝送遅延時間とバッファリングに要する時間との和である。第2の時間情報は、可変クロック生成部307が生成するクロックの周波数に応じてカウントされる時間情報である。なお、タイマ部308から出力される時間情報を第3の時間情報という。第3の時間情報も可変クロック生成部307が生成するクロックの周波数に応じてカウントされる時間情報である。第2の時間情報と第3の時間情報との違いは、第2の時間情報の方が、所定のオフセット時間だけ、遅れている点である。
第1の時間情報抽出部304は、受信データバッファ部302を参照して、次に出力すべきMPEG2−TSパケット、すなわち、受信データバッファ部302に蓄積されたMPEG2−TSパケットの内、時間的に最も古い時点で蓄積された(最も前に蓄積された)MPEG2−TSパケットに付随するタイムスタンプ内の第1の時間情報を抽出する。
第1の時間情報比較部311は、第1の時間情報抽出部304によって抽出された第1の時間情報とオフセット部309から出力される第2の時間情報とが一致するか否かを判断する。第2の時間情報が刻々とカウントされる中、第1の時間情報比較部311は、第1の時間情報抽出部304からの第1の時間情報とオフセット部309から出力される第2の時間情報とが一致した時点において、MPEG2−TSパケットの出力を受信データバッファ部302に指示するための制御信号を受信データバッファ部302に入力する。
受信データバッファ部302は、第1の時間情報比較部311からの制御信号が入力されれば、蓄積されたMPEG2−TSパケットの内、時間的に最も古い時点で蓄積されたデータブロック内のMPEG2−TSパケットを抜き出し、MPEG2−TSデコード部303に入力する。
受信データバッファ部302によってMPEG2−TSパケットが出力された後、次に出力すべきデータブロックに付随するタイムスタンプ内の第1の時間情報が、第1の時間情報抽出部304によって抽出される。第1の時間情報抽出部304によって抽出された第1の時間情報は、第1の時間情報比較部311において、第2の時間情報と比較される。当該第1の時間情報と第2の時間情報とが一致した時点で、受信データバッファ部302は、次のMPEG2−TSパケットを出力する。このようにして、受信データバッファ部302から、MPEG2−TSパケットが順次出力される。
MPEG2−TSデコード部303は、受信データバッファ部302から出力されるデータブロックを映像および/または音声信号に変換して、出力する。
第2の時間情報抽出部310は、通信プロトコル処理部301が出力するデータブロックからタイムスタンプを抽出し、抽出したタイムスタンプ内から第1の時間情報を抽出し、抽出した第1の時間情報を初期設定部305に入力する。
初期設定部305は、初期設定として、タイマ部308が出力する第3の時間情報を第2の時間情報抽出部310が抽出した第1の時間情報に一致させる。
これにより、データ送信装置1のタイマ部103に設定されている時間情報とデータ受信装置3のタイマ部308に設定されている時間情報とが、伝送路上の遅延を無視すれば、一致することとなる。初期設定部305における初期設定は、データ送信装置1とデータ受信装置3との間で、データが送受信される最初の段階で行われる。こうして、データ受信装置3のタイマ部308の時間情報は、初期設定部305によって初期設定が行われた時点で、伝送路上の遅延を無視すれば、データ送信装置1のタイマ部103の時間情報と一致する。
図6は、データ受信装置3の動作の流れを示すフローチャートである。以下、図6を参照しながら、データ受信装置3の動作の流れについて説明する。
データパケットであるIPパケットの受信を開始する際、第2の時間情報抽出部310は、受信したIPパケット中のデータブロックに含まれる第1の時間情報を抽出する(ステップS101)。
次に、初期設定部305は、タイマ部308が出力する第3の時間情報を第2の時間情報抽出部310が抽出した第1の時間情報に一致させ、初期値設定する(ステップS102)。
次に、可変クロック生成部307は、デフォルトの周波数を有するクロックを生成する(ステップS103)。なお、デフォルトの周波数は、データ送信装置1のクロック生成部102が生成するクロックの周波数とほぼ一致する。ただし、誤差の影響や、精度の違いがあるので、二つの周波数は完全には一致していない場合が多い。
次に、受信データ量計測部306は、受信データバッファ部302を参照して、蓄積データ平均値を計測する(ステップS104)。
次に、受信データ量計測部306は、計測した蓄積データ平均値が前回計測した蓄積データ平均値と比べて増加しているか、減少しているか、それとも変化が無いか否かを判断する(ステップS105)。なお、ステップS104において、初めて蓄積データ平均値を計測した場合、ステップS105,S106,S107の処理は、省略される。
蓄積データ平均値が増加している場合、受信データ量計測部306は、所定の値だけ、または増加量に応じた値だけ、クロックの周波数を上げるように可変クロック生成部307を制御して(ステップS106)、ステップS108の動作に進む。一方、蓄積データ平均値が減少している場合、受信データ量計測部306は、所定の値だけ、または減少量に応じた値だけ、クロックの周波数を下げるように可変クロック生成部307を制御して(ステップS107)、ステップS108の動作に進む。これにより、クロックの周波数が変化して、タイマ部308から出力される第3の時間情報が進むまたは遅れる。また一方、蓄積データ平均値が変化していない場合、データ受信装置3は、そのままステップS108の動作に進む。蓄積データ平均値に変化がないということは、送信側でのMPEG2−TSパケットの時間間隔と出力するMPEG2−TSパケットの時間間隔とが一致していることを示しているので、クロックの周波数を変化させなくてもよい。
ステップS108において、オフセット部309は、タイマ部308からの第3の時間情報からオフセット時間を減算して、タイマ部308からの第3の時間情報を遅らせ、第2の時間情報を出力する。
次に、第1の時間情報抽出部304は、次にデコードすべきMPEG2−TSパケットに対応するタイムスタンプ内の第1の時間情報を受信データバッファ部302から抽出する(ステップS109)。
次に、第1の時間情報比較部311は、第1の時間情報抽出部304が抽出した第1の時間情報と第2の時間情報とが一致するか否かを判断する(ステップS110)。一致する場合、第1の時間情報比較部311は、受信データバッファ部302に、当該第1の時間情報に対応するMPEG2−TSパケットを出力させ、ステップS111の動作に進む。一方、一致しない場合、第1の時間情報比較部311は、第1の時間情報と第2の時間情報とが一致するまで、ステップS110の動作を繰り返す。なお、蓄積データ平均値を求める処理時間がMPEG2−TSパケット間の時間間隔よりも短いならば、ステップS110において一致しないと判断された場合、データ受信装置3は、ステップS104の動作に戻ってもよい。
ステップS111において、第1の時間情報比較部311は、今回送信されてきたIPパケットに含まれる全てのMPEG2−TSパケットを受信データバッファ部302に出力させたか否かを判断する。全てのMPEG2−TSパケットを出力させていない場合、データ受信装置3は、ステップS104の動作に戻る。一方、全てのMPEG2−TSパケットを出力させている場合、データ受信装置3は、処理を終了する。
以上の処理から分かるように、一つのIPパケットを受信している間、可変クロック生成部307、タイマ部308、オフセット部309、第1の時間情報比較部311、第1の時間情報抽出部304、受信データバッファ部302、および受信データ量計測部306によって、閉ループが形成される。
次に、第1の実施形態に係るデータ受信装置3が、送信側でのMPEG2−TSパケットの間隔を再現することができる理由について説明する。
まず、理想的な状況として、以下の条件を満たす状況を考える。
(1)データ送信装置1のクロック生成部102が出力するクロックの周波数と、データ受信装置3の可変クロック生成部307が出力するデフォルトのクロックの周波数とが完全に一致している。
(2)伝送路上で生じる遅延は、常に一定である。
(3)オフセット部309におけるオフセット時間は、伝送路上で生じる遅延およびMPEG2−TSパケットを結合した際に生じる時間軸上のずれを考慮して適切な値に設定されている。
最初のMPEG2−TSパケットに付随するタイムスタンプ内の第1の時間情報がタイマ部308の初期値として設定される。したがって、上記のような理想的な状態の場合、上記(1)の条件より、データ送信装置1のタイマ部103の時間情報とデータ受信装置3のタイマ部308の第3の時間情報とは同期することとが分かる。さらに、上記(3)の条件より、オフセット部309から出力される第2の時間情報は、受信データバッファ部302に格納されるMPEG2−TSパケットに付随しているタイムスタンプ内の時間情報よりも先走っていることはないことが分かる。ゆえに、上記のような理想的な状態の場合、可変クロック生成部307から出力されるクロックの周波数を変化させなくても、第1の時間情報比較部311は、データ送信装置1でエンコードされたMPEG2−TSパケットの時間間隔と同じ間隔で受信データバッファ部302に格納されているMPEG2−TSパケットを、受信データバッファ部302に出力させることができる。
しかし、実際は、上記(1),(2)の理想的な条件は、満たされていない。したがって、単に、初期設定部305において、初期設定を行っただけでは、出力するMPEG2−TSパケットの時間間隔を送信側の時間間隔と一致させることはできない。そこで、第1の実施形態では、受信データバッファ部302の蓄積データ平均値に基づいて、クロックの周波数を変化させていくことによって、出力するMPEG2−TSパケットの時間間隔を送信側の時間間隔と一致させることを実現する。以下、出力するMPEG2−TSパケットの時間間隔と送信側の時間間隔とが一致する理由について説明する。
上記(1)の条件が満たされない場合、すなわち、データ送信装置1のクロック生成部102が出力するクロックの周波数と、データ受信装置3の可変クロック生成部307が出力するデフォルトのクロックの周波数とが完全に一致しない場合を考える。
たとえば、可変クロック生成部307が出力するクロックの周波数が、クロック生成部102が出力するクロックの周波数に比べて遅い場合、受信データバッファ部302から出力されるMPEG2−TSパケットの時間間隔は、送信側においてタイムスタンプが付加されたときの時間間隔に比べて、大きくなってしまう。このような場合、出力されずに受信データバッファ部302に格納されたままとなるMPEG2−TSパケットが増加していくので、蓄積データ平均値は、増加することとなる。蓄積データ平均値が増加した場合、可変クロック生成部307から出力されるクロックの周波数は上げられる。クロックの周波数が上げられれば、タイマ部308から出力される第3の時間情報が進み、オフセット部309から出力される第2の時間情報が進むこととなる。第2の時間情報が進めば、第1の時間情報比較部311における時間情報の比較処理が早く進んでいくので、出力されるMPEG2−TSパケットの時間間隔は、狭くなっていき、送信側においてタイムスタンプが付加されたときの時間間隔に近づいていくこととなる。クロック周波数制御のための閉ループによって、出力されるMPEG2−TSパケットの時間間隔は、ある値に収束していき、送信側においてタイムスタンプが付加されたときの時間間隔と一致することとなる。
逆に、可変クロック生成部307が出力するクロックの周波数が、クロック生成部102が出力するクロックの周波数に比べて早い場合、受信データバッファ部302から出力されるMPEG2−TSパケットの時間間隔は、送信側においてタイムスタンプが付加されたときの時間間隔に比べて、狭くなってしまう。このような場合、受信データバッファ部302に格納されたMPEG2−TSパケットは徐々に減少していくので、蓄積データ平均値は、減少することとなる。蓄積データ平均値が減少した場合、可変クロック生成部307から出力されるクロックの周波数は下げられる。クロックの周波数が下げられれば、タイマ部308から出力される第3の時間情報が遅れ、オフセット部309から出力される第2の時間情報が遅れることとなる。第2の時間情報が遅れれば、第1の時間情報比較部311における時間情報の比較処理がゆっくり進んでいくので、出力されるMPEG2−TSパケットの時間間隔は、広くなっていき、送信側においてタイムスタンプが付加されたときの時間間隔に近づいていくこととなる。クロック周波数制御のための閉ループによって、出力されるMPEG2−TSパケットの時間間隔は、ある値に収束していき、送信側においてタイムスタンプが付加されたときの時間間隔と一致することとなる。
次に、上記(2)の条件が満たされない場合、すなわち、伝送路上で生じる遅延が変化している場合について考える。
たとえば、伝送路上での遅延が増大した場合、受信データバッファ部302に格納されているMPEG2−TSパケットは次々に出力されていってしまうので、蓄積データ平均値は、減少する。蓄積データ平均値が減少傾向にあるにもかかわらず、クロックの周波数を下げずに処理を続けると、第2の時間情報が受信データバッファ部302に蓄積されるMPEG2−TSパケットに対応する第1の時間情報よりも先走ってしまうこととなる。結果、出力すべきMPEG2−TSパケットが枯渇してしまう。そのため、蓄積データ平均値データが減少した場合、受信データ量計測部306は、可変クロック生成部307が出力するクロックの周波数を下げる。これによって、第2の時間情報が遅れることとなるので、第2の時間情報が先走ってしまうことがなくなる。結果、受信データバッファ部302内において出力すべきMPEG2−TSパケットが枯渇する事態を回避できる。この場合、出力されるMPEG2−TSパケットの時間間隔は広くなっていく。逆に、もし、伝送路上での遅延が減少してきたら、受信データバッファ部302に格納されているMPEG2−TSパケットは徐々に蓄積されていくこととなり、蓄積データ平均値は、増大する。蓄積データ平均値が増大すれば、クロックの周波数が上げられるので、第2の時間情報が進み、第1の時間情報比較部311における時間情報の比較処理が早く進んでいく。結果、出力されるMPEG2−TSパケットの時間間隔は、狭くなっていく。したがって、伝送路上での遅延に変動があったとしても、データ受信装置3から出力されるMPEG2−TSパケットの時間間隔は、平均的には、送信側においてタイムスタンプが付加されたときの時間間隔と一致することとなる。
実際の状況では、(1)および(2)の条件は、複雑に絡み合っている。しかし、データ受信装置3は、蓄積データ平均値を用いて、可変クロック生成部307が出力するクロックの周波数を制御することとなるので、データ受信装置3から出力されるMPEG2−TSパケットの時間間隔は、平均的には、送信側においてタイムスタンプが付加されたときの時間間隔と一致することとなる。
次に、受信データバッファ部302に蓄積されているデータの平均値を用いて、クロックの周波数を制御する理由について説明する。
データ送信装置1のMPEG2−TSエンコード部100が出力するMPEG2−TSパケットは、パケットの時間間隔が完全に等間隔の場合もあれば、パケットの間隔が等間隔でなく間欠的である場合もある。パケットの間隔が間欠的である場合、受信データバッファ部302に蓄積されるデータ量は、変動することになる。また、MPEGのエンコードの方法には、一定の符号発生量となる固定ビットレート(CBR)と、符号発生量が変動する可変ビットレート(VBR)とがある。VBRの場合も、受信データバッファ部302に蓄積されるデータ量は、変動する。パケットの間隔が間欠的であるエンコード方法を用いる場合であっても、ある単位時間あたりのパケットの間隔の平均は、一定である。また、VBRを用いる場合であっても、ある単位時間あたりの符号発生量の平均は、一定である。したがって、上記のように、蓄積されるデータの量が局所的には変動する場合であっても、受信データバッファ部302に蓄積されるデータ量のある単位時間あたりの平均は、一定である。
したがって、蓄積データ平均値に応じてクロックの周波数が制御されることによって、クロックの周波数を平均的には送信側のクロックの周波数と一致させることができる。したがって、データ受信装置3から出力されるMPEG2−TSパケットの時間間隔は、平均的には、送信側においてタイムスタンプが付加されたときの時間間隔と一致することとなる。
なお、ここでは、受信データ量計測部306は、蓄積データ平均値に応じてクロックの周波数を制御されることとしたが、受信データバッファ部302における瞬時の蓄積データ量に応じてクロックの周波数を制御してもよい。ただし、この場合、受信データ量計測部306は、クロックの周波数の変化が、受信データバッファ部302に蓄積されるデータ量の瞬時的な変動に対して、十分に遅くなるように、クロックの周波数を制御する。
また、オフセット部309によって、タイマ部308の第3の時間情報に所定のオフセット時間が加算される理由は、伝送路による遅延を考慮するためである。上述のように、伝送路上での遅延を無視すれば、データ送信装置1のタイマ部103の時間情報とデータ受信装置3のタイマ部308の第3の時間情報とは一致している。しかし、実際には、伝送路によって遅延が生じているので、データ受信装置3のタイマ部308の第3の時間情報が示す時刻に、MPEG2−TSパケットが届かない場合がある。オフセット時間を加算することによって、受信データバッファ部302から出力されるMPEG2−TSパケットの出力時間に遅延を持たせることができる。したがって、伝送路上での遅延が生じていたために、タイムスタンプに含まれている第1の時間情報がデータ受信装置3内で既に過ぎてしまって、MPEG2−TSパケットがデコードされないといった事態を回避することができる。なお、MPEG2−TSパケットを出力する時間の遅延は、小さいほど望ましい。しかし、あまり小さすぎると、出力すべきデータが受信側に届いていない状況が発生するので、出力するデータが枯渇する場合が発生する。以上のようなことを考慮して、オフセット時間は適切に設定されるべきである。
たとえば、伝送路の状態によっては、伝送されるデータの遅延が大きくなる場合がある。たとえば、Ethernet(登録商標)等を用いて、広域のネットワークを介して、データを伝送する場合、データの遅延のばらつきが大きくなる。また、IEEE802.11の無線LANを介してデータを伝送する場合、伝送誤りがあれば、MAC層において、データの再送が発生する。データの再送が発生すると、データの伝送遅延が大きくなる。データの伝送遅延が大きくなった場合、受信データバッファ部302に蓄積されるべきデータが到着せず、必要な時間に出力すべきデータがなくなる場合が発生する。しかし、オフセット部309において、所定のオフセット時間を加算すれば、このような状態を回避することができる。伝送路の状態が悪化し伝送遅延が大きい場合、オフセット時間の加算によって、第1の時間情報比較部311での比較に用いられる第2の時間情報を時間的に遅らせることができ、受信データバッファ部302に所定の時間分のデータが蓄積されることとなる。結果、データが枯渇する状態を回避することができる。
なお、オフセット部309は、所定のオフセット時間を、受信データバッファ部302に蓄積されているデータ量に応じて、変化させてもよい。具体的には、オフセット部309は、所定のオフセット時間を、受信データバッファ部302に蓄積されているデータ量が多い場合に小さくなるようにし、受信データバッファ部302に蓄積されているデータ量が少ない場合に大きくなるように制御するとよい。これにより、受信データバッファ部302に保持されるデータ量を最小限に保ちながら、受信データが枯渇しないように制御することができる。ただし、受信データ量計測部306による閉ループ制御に影響を与えないように、オフセット時間は、制御されなければならない。
また、伝送に使用する物理層、またはMAC層等の種類を示す通信プロトコルの種類に応じて、伝送遅延量はばらつく。したがって、オフセット部309は、通信プロトコルの種類に応じて、所定のオフセット時間を変更するようにしても、受信データバッファ部302に保持されるデータ量を最適化することができる。
また、オフセット部309は、伝送路の状態に応じて、所定のオフセット時間を変化させてもよい。例えば、無線LANの場合、伝送路誤りがあるとデータが再送される。再送回数を計測することによって、伝送路の状態を知ることができる。再送回数が多い場合には、伝送遅延が増えるため、オフセット部309は、オフセット時間を大きくする。
なお、第1の実施形態において、図5に示した各機能ブロックの動作は、並行に行われてもよいことは言うまでもない。
なお、バッファ量を計測してクロックの周波数を制御する第1の実施形態に係る方法では、IPパケットを受信した当初、すなわち受信データバッファ部302に所定量以上のデータが蓄積されるまで、バッファ量によるフィードバックが得られないため、開ループとなってしまい、誤作動が生じるおそれがある。このように、IPパケットの受信を開始した時点から所定の期間の間、受信データ量計測部306は、可変クロック生成部307から出力されるクロックの周波数をデフォルト値に固定させるとよい。これによって、開ループによる誤動作を回避することができる。すなわち、受信データ量計測部306は、所定の時間経過後に、クロックの周波数の制御を開始するとよい。
(第2の実施形態)
第2の実施形態において、データ送信装置の構造およびMPEG2−TSパケットを含むIPパケットの構造は、第1の実施形態と同様であるので、図1〜4を援用することとする。
図7は、本発明の第2の実施形態に係るデータ受信装置4の機能的構成を示すブロック図である。図7において、第1の実施形態におけるデータ受信装置3と同様の機能を有する部分については、同一の参照符号を付し、詳しい説明を省略することとする。
図7において、データ受信装置4は、通信部300と、通信プロトコル処理部301と、受信データバッファ部302と、MPEG2−TSデコード部303と、第1の時間情報抽出部304と、初期設定部305と、可変クロック生成部307と、タイマ部308と、オフセット部309と、第2の時間情報抽出部310と、第1の時間情報比較部311と、第2の時間情報比較部400とを備える。
図7に示すように、第2の実施形態に係るデータ受信装置4には、第1の実施形態に係る受信データ量計測部306の代わりに、第2の時間情報比較部400が設けられている。
第2の時間情報抽出部310は、通信プロトコル処理部301が出力するデータブロックからタイムスタンプを抽出して、当該タイムスタンプに含まれる第1の時間情報を抽出して、当該第1の時間情報を初期設定部305に入力すると共に、第2の時間情報比較部400に入力する。
第2の時間情報比較部400は、第2の時間情報抽出部310が抽出した第1の時間情報と、タイマ部308が出力する第3の時間情報とを比較し、時間差に応じた制御信号を可変クロック生成部307に入力する。可変クロック生成部307は、第2の時間情報比較部400からの制御信号に応じて、生成するクロックの周波数を増減する。第2の時間情報抽出部310が抽出した第1の時間情報がタイマ部308が出力する第3の時間情報より遅れている場合、第2の時間情報比較部400は、可変クロック生成部307の生成するクロックの周波数が上がるような制御信号を出力する。一方、第2の時間情報抽出部310が抽出した第1の時間情報がタイマ部308が出力する第3の時間情報より進んでいる場合、第2の時間情報比較部400は、可変クロック生成部307の生成するクロックの周波数が下がるような制御信号を出力する。なお、第2の時間情報抽出部310が抽出した第1の時間情報とタイマ部308が出力する第3の時間情報とが一致している場合、第2の時間情報比較部400は、可変クロック生成部307の生成するクロックの周波数を変化させない。
図8は、本発明の第2の実施形態に係るデータ受信装置4の動作を示すフローチャートである。以下、図8を参照しながら、本発明の第2の実施形態に係るデータ受信装置4の動作について説明する。
IPパケットの受信を開始する際、第2の時間情報抽出部310は、受信したIPパケット中のデータブロックに含まれるタイムスタンプ内の第1の時間情報を抽出する(ステップS201)。
次に、初期設定部305は、タイマ部308が出力する第3の時間情報を第2の時間情報抽出部310が抽出した第1の時間情報に一致させ、初期設定する(ステップS202)。
次に、可変クロック生成部307は、デフォルトの周波数を有するクロックを生成する(ステップS203)。
次に、データ受信装置4は、通信プロトコル処理部301によって受信されたデータが存在するか否かを判断する(ステップS204)。データが存在しない場合、データ受信装置4は、ステップS211の動作に進む。一方、データが存在する場合、データ受信装置4は、ステップS205の動作に進む。
ステップS205において、第2の時間情報抽出部310は、通信プロトコル処理部301が受信したデータから第1の時間情報を抽出する。
次に、第2の時間情報比較部400は、タイマ部308が出力する第3の時間情報と第2の時間情報抽出部310がステップS205において抽出した第1の時間情報とを比較する(ステップS206)。タイマ部308が出力する第3の時間情報が遅れている場合、第2の時間情報比較部400は、クロックの周波数を上げるように可変クロック生成部307を制御し(ステップS207)、ステップS209の動作に進む。一方、タイマ部308が出力する第3の時間情報が進んでいる場合、第2の時間情報比較部400は、クロックの周波数を下げるように可変クロック生成部307を制御し(ステップS208)、ステップS209の動作に進む。また一方、時間情報が一致している場合、第2の時間情報比較部400は、クロックの周波数を変化させることなく、ステップS209の動作に進む。
ステップS209において、オフセット部309は、タイマ部308からの第3の時間情報からオフセット時間を減算して、タイマ部308からの第3の時間情報を遅らせ、第2の時間情報を出力する。
次に、第1の時間情報抽出部304は、次にデコードすべきMPEG2−TSパケットに対応するタイムスタンプを受信データバッファ部302から抽出する(ステップS210)。
次に、第1の時間情報比較部311は、第1の時間情報抽出部304が抽出したタイムスタンプに含まれる第1の時間情報と第2の時間情報とが一致するか否かを判断する(ステップS211)。一致する場合、第1の時間情報比較部311は、受信データバッファ部302に抽出した第1の時間情報に対応するMPEG2−TSパケットを出力させ、ステップS212の動作に進む。一方、一致しない場合、第1の時間情報比較部311は、ステップS204の動作に戻る。
ステップS212において、第1の時間情報比較部311は、今回送信されてきたIPパケットに含まれる全てのMPEG2−TSパケットを受信データバッファ部302に出力させたか否かを判断する。全てのMPEG2−TSパケットを出力させていない場合、データ受信装置4は、ステップS204の動作に戻る。一方、全てのMPEG2−TSパケットを出力させている場合、データ受信装置4は、処理を終了する。
以上の処理から分かるように、可変クロック生成部307と、タイマ部308と、第2の時間情報比較部400によって、閉ループが形成される。
このように、第2の時間情報比較部400によって、第2の時間情報抽出部310からの第1の時間情報と、タイマ部308の出力する第3の時間情報とが比較され、時間差に応じて、可変クロック生成部307の出力するクロックの周波数が制御される。もし、タイマ部308の第3の時間情報が受信したMPEG2−TSパケットに付随する第1の時間情報よりも遅れている場合、クロックの周波数が低いことを意味するので、第2の時間情報比較部400によってクロックの周波数が上げられることによって、可変クロック生成部307の生成するクロックの周波数は、図1のデータ送信装置1におけるクロック生成部102の発生するクロックの周波数と一致する方向に変化する。一方、もし、タイマ部308の第3の時間情報が受信したMPEG2−TSパケットに付随する第1の時間情報よりも進んでいる場合、クロックの周波数が高いことを意味するので、第2の時間情報比較部400によってクロックの周波数が下げられることによって、可変クロック生成部307の生成するクロックの周波数は、図1のデータ送信装置1におけるクロック生成部102の発生するクロックの周波数と一致する方向に変化する。
従って、データ受信装置4のタイマ部308が出力する第3の時間情報とデータ送信装置1のタイマ部103が出力する時間情報とは、同期することになる。
データ送信装置1のタイマ部103とデータ受信装置4のタイマ部308とが同期することによって、データ送信装置1のMPEG2−TSエンコード部100が出力したMPEG2−TSパケットの時間間隔と、受信データバッファ部302からMPEG2−TSデコード部303に入力されるMPEG2−TSパケットの時間間隔とは、一致することとなる。
ここで、第2の時間情報比較部400は、クロックの周波数の変化が、比較した時間差の変動に対して、十分遅くなるように、クロックの周波数を制御するものとする。たとえば、第2の時間情報比較部400は、ある単位時間あたりにおける時間差の平均値を算出し、時間差の平均値に基づいて、タイマ部308の第3の時間情報が進んでいるかそれとも遅れているかを求めて(ステップS206)、クロックの制御を行う(ステップS207,S208)。データ送信装置1は、MPEG2−TSパケットを結合して、IPパケット化する際、タイムスタンプに含まれる時間情報によって示される時間から時間軸上でずれるように、MPEG2−TSパケットを結合する場合がある。したがって、データ受信装置4にIPパケットが届いた瞬間のタイマ部308が出力する第3の時間情報とタイムスタンプに含まれる第1の時間情報とが一致しない場合がある。そのため、時間情報の時間差がゼロにならず、時間差が大きく変動する場合がある。しかし、MPEG2−TSパケットを結合するときのずれは、平均的には、一定である。ゆえに、第2の時間情報比較部400が上述のようにクロックの周波数を制御することによって、データ受信装置4のタイマ部308が出力する第3の時間情報とデータ送信装置1のタイマ部103が出力する第1の時間情報とを一致させることができる。
なお、時間差の平均値を求める場合、平均値を求める期間の長さによっては、ステップS211において、時間情報が一致するまで処理を繰り返すようにするとよい。
なお、第2の時間情報比較部400は、第2の時間情報抽出部310が抽出した全てのタイムスタンプ値を用いて、時間差を求めなくてもよい。たとえば、第2の時間情報比較部400は、複数のデータブロックの内、IPパケットの最初の位置にあるデータブロック211に含まれる第1の時間情報のみをタイマ部308の出力する第3の時間情報と比較してもよい。また、第2の時間情報比較部400は、定期的に時間情報を比較するようにしてもよい。
(第3の実施形態)
第3の実施形態において、データ送信装置の構造およびMPEG2−TSパケットを含むIPパケットの構造は、第1の実施形態と同様であるので、図1〜4を援用することとする。
図9は、本発明の第3の実施形態に係るデータ受信装置5の機能的構成を示すブロック図である。図9において、第1および第2の実施形態におけるデータ受信装置3,4と同様の機能を有する部分については、同一の参照符号を付し、詳しい説明を省略することとする。
図9において、データ受信装置5は、通信部300と、通信プロトコル処理部301と、受信データバッファ部302と、MPEG2−TSデコード部303と、第1の時間情報抽出部304と、初期設定部305と、受信データ量計測部306と、バッファ量可変クロック生成部307と、タイマ部308と、オフセット部309と、第2の時間情報抽出部310と、第1の時間情報比較部311と、第2の時間情報比較部400と、切り替え制御部500とを備える。
切り替え制御部500は、データの受信開始時から所定の期間、第2の時間情報比較部400にクロックの周波数を制御させる。当該所定の期間の後、切り替え制御部500は、受信データ量計測部306にクロックの周波数を制御させる。
図10は、第3の実施形態に係るデータ受信装置5の動作を示すフローチャートである。以下、図10を参照しながら、第3の実施形態に係るデータ受信装置5の動作について説明する。
IPパケットの受信を開始する際、第2の時間情報抽出部310は、受信したIPパケット中のデータブロックに含まれるタイムスタンプを抽出する(ステップS301)。
次に、初期設定部305は、第2の時間情報抽出部310が抽出したタイムスタンプに含まれる時間情報を、タイマ部308の初期値に設定する(ステップS302)。
次に、可変クロック生成部307は、デフォルトの周波数を有するクロックを生成する(ステップS303)。
次に、切り替え制御部500は、IPパケットの受信から所定の時間が経過したか否か(または受信データバッファ部302に所定量以上のデータが蓄積されたか否か)を判断する(ステップS304)。所定の時間が経過していない場合(所定量以上のデータが蓄積されていない場合)、データ受信装置5は、ステップS305の動作に進む。一方、所定の時間が経過している場合(所定量以上のデータが蓄積されている場合)、データ受信装置5は、ステップS306の動作に進む。
ステップS305において、データ受信装置5は、第2の時間情報比較部400を用いて、クロックの周波数を制御するために、図8に示すステップS204〜S211と同様の処理を実行する。ステップS305の処理が終了すれば、データ受信装置5は、ステップS304の動作に戻る。
ステップS306において、データ受信装置5は、受信データ量計測部306を用いて、クロックの周波数を制御するために、図6に示すステップS104〜S110と同様の処理を実行する。ステップS306の処理が終了すれば、データ受信装置5は、ステップS307の動作に進む。
ステップS307において、第1の時間情報比較部311は、今回送信されてきたIPパケットに含まれる全てのMPEG2−TSパケットを受信データバッファ部302に出力させたか否かを判断する。全てのMPEG2−TSパケットを出力させていない場合、データ受信装置5は、ステップS304の動作に戻る。一方、全てのMPEG2−TSパケットを出力させている場合、データ受信装置5は、処理を終了する。
第1の実施形態でも指摘したように、IPパケットを受信した当初、開ループによって、誤作動が生じるおそれがある。しかし、第3の実施形態のように、IPパケットの受信開始時には、データ受信装置5は、第2の時間情報比較部400を用いて、クロックの周波数を制御することによって、クロックの周波数を送信側に追従させることができる。所定の時間の経過後(または受信バッファに所定の量の受信データが溜まった後)、データ受信装置5は、バッファ量計測によるフィードバック制御に切り替える。第3の実施形態では、データの受信開始時、クロックが早急に収束して効果的である。また、バッファ量計測によるフィードバックの方が、タイムスタンプ抽出によるフィードバックよりも、変動の積分値をフィードバックすることができるので、定常時には、安定的に時間間隔を一致させることができる。
なお、第1〜第3のデータ受信装置3,4,および5は、汎用のコンピュータ装置であってもよい。この場合、図6,図8,または図10の動作を当該コンピュータ装置の中央演算装置に実行させるためのプログラムが、コンピュータ読み取り可能な記録媒体に格納されているとよい。そして、当該プログラムは、中央演算装置に読み込まれる。当該プログラムを読み込んだ中央演算装置は、データ受信装置であるコンピュータ装置を図6,図8,または図10に示すように動作させる。
なお、図5,図7,および図9に示した各機能ブロックは、集積回路であるLSIとして実現されてもよい。これらの機能ブロックは、1チップ化されていてもよいし、一部又は全てを含むように1チップ化されていてもよい。典型的には、受信データバッファ部302は、集積回路の外部に設けられた記憶装置となる。ここでは、LSIといったが、集積度の違いによっては、IC、システムLSI、スーパーLSI、ウルトラLSIと称呼されることもある。また、集積回路化の手法は、LSIに限られるものではなく、専用回路または汎用プロセッサで集積回路化を行ってもよい。また、LSI製造後にプログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを用いてもよい。さらには、半導体技術の進歩または派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックを集積化してもよい。バイオ技術の適応等が可能性としてあり得る。
なお、第1〜第3の実施形態では、通信部300は、Ethernet(登録商標)のMAC層および物理層を処理するものとしたが、これに限定されるものではない。たとえば、通信部300は、IEEE802.11など、如何なるMAC層および物理層を処理してもよい。また、通信プロトコル処理部301は、RTP,HTTPを用いることとしたが、これに限定されるものではない。本発明は特定の通信プロトコルに限定されるものではない。また、送受信されるデータパケットは、IPパケットに限定されるものではない。また、第1〜第3の実施形態では、送受信されるデータパケット内のデータブロックに含まれるパケットはMPEG2−TSパケットであるとしたが、データブロックに含まれるパケットはこれに限定されるものではない。
なお、第1の時間情報抽出部304と第2の時間情報抽出部とは、一体化され、一つの時間情報抽出部となっていてもよい。
なお、初期設定部305は、最初に受信するMPEG2−TSパケット以外のMPEG2−TSパケットに付随する第1の時間情報を用いて、タイマ部308から出力される第3の時間情報の初期値を設定してもよい。
なお、第3の実施形態における第2の時間情報比較部400および受信データ量計測部306によるクロックの周波数の制御は、第3の実施形態で示したタイミング以外で行われてもよい。
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。
本発明に係るデータ受信装置は、データパケットに含まれるパケットの時間間隔を再現することができ、Ethernet(登録商標)やIEEE802.11等の非同期の伝送路を介してMPEG2−TS等のパケットを伝送する映像配信や映像伝送等の用途に有用である。
本発明は、有線回線や無線回線を介して伝送されてくるMPEG2−TS等の映像信号や音響信号等を受信するためのデータ受信装置に関し、より特定的には、伝送される映像信号や音響信号等の同期を確保することができるデータ受信装置に関する。
従来、IEEE802.11に代表される無線ローカルエリアネットワーク等の無線回線を介して、映像信号や音響信号等を伝送するために、送信側と受信側との間で信号の同期を実現する技術が存在する(例えば、特許文献1参照)。
図11は、特許文献1に記載されている従来の送信側の無線親機900の機能的構成を示すブロック図である。図12は、特許文献1に記載されている従来の受信側の無線子機920の機能的構成を示すブロック図である。図13は、特許文献1に記載されている従来の送信側の無線親局から送信されるデータパケット990のフレーム構造を示す図である。以下、図11,図12,および図13を参照しながら、特許文献1に記載されている無線親機900および無線子機920の動作について説明する。
無線親機900において、MPEG2−TSエンコード部901に入力した映像信号は、MPEG2−TSパケット950に変換されて出力される。タイムスタンプ付加部902は、MPEG2−TSパケット950がMPEG2−TSエンコード部901から出力される時間に応じたタイムスタンプ951を、MPEG2−TSパケット950に付加する。ここで付加されるタイムスタンプ951は、ビーコン用タイマ部908からのタイマ値を含む。
通信プロトコル処理部903は、タイムスタンプ951が付加されたMPEG2−TSパケット950を一つのデータブロック941とし、データブロック941と複数のデータブロック942〜94Nとを結合して、データヘッダ980を付加して出力する。MAC処理部904のフレーム組み立て部909は、通信プロトコル処理部903からの出力に対して、MACヘッダ970を付加して、出力する。RF部905は、フレーム組み立て部909からの出力に対して、物理層ヘッダ960を付加して出力する。アンテナ906は、RF部905からの出力を無線信号として、無線通信回線路に放射する。
クロック生成部907は、クロックを生成して、ビーコン用タイマ部908に入力する。ビーコン用タイマ部908は、クロックに基づいて、現在のタイマ値(たとえば、現在時刻)を設定して出力する。ビーコン生成部910は、ビーコン用タイマ部908からのタイマ値を含むビーコンを生成する。フレーム組み立て部909は、ビーコン生成部910が生成したビーコンに対して、MACヘッダを付加して出力する。RF部905は、フレーム組み立て部909からの出力に対して、物理層ヘッダ960を付加して出力する。アンテナ906は、RF部905からの出力をビーコン信号として、無線通信回線路に放射する。
無線子機920において、無線通信回線路を介して伝送された無線信号は、アンテナ921で受信される。アンテナ921で受信された無線信号は、RF部922を介して、MAC処理部923のフレーム解析部925に入力される。フレーム解析部925は、受信した信号が自機器宛であるか否か解析する。自機器宛である場合、フレーム解析部925は、受信した信号を受信データ処理部927に入力する。受信データ処理部927は、受信した信号がデータパケット990である場合、当該データパケット990を通信プロトコル処理部924に入力する。一方、受信した信号がビーコン信号である場合、受信データ処理部927は、当該ビーコン信号をビーコン用タイマ部926に入力する。
通信プロトコル処理部924は、受信したデータパケット990の物理層ヘッダ960,MACヘッダ970,データヘッダ980を解析して、データブロック941〜94Nを抽出して、抽出したデータブロック941〜94Nを受信データバッファ部933に格納する。
ビーコン用タイマ部926は、クロック生成部928から出力されるクロックに基づいて、現在のタイマ値(たとえば、現在時刻)を設定する。ビーコン用タイマ部926は、受信データ処理部927からビーコン信号が入力された場合、当該ビーコン信号に含まれるタイマ値と一致するように、現在のタイマ値を設定し直す。これにより、無線親機900におけるビーコン用タイマ部908と無線子機920におけるビーコン用タイマ部926とが同期する。
PLL処理部929は、ビーコン用タイマ部926からのタイマ値をPLL処理して、PLL処理したタイマ値をタイマ部930に入力する。タイマ部930は、PLL処理された現在のタイマ値をタイムスタンプ比較部931に入力する。タイムスタンプ抽出部932は、受信データバッファ部933に格納されているデータブロックに含まれるタイムスタンプを抽出する。タイムスタンプ比較部931は、タイムスタンプ抽出部932が抽出したタイムスタンプに含まれるタイマ値とタイマ部930から入力される現在のタイマ値とが一致するか否かを判断する。刻々と変化する現在のタイマ値に対して、タイムスタンプに含まれるタイマ値が一致した場合、タイムスタンプ比較部931は、タイマ値が一致したタイムスタンプを含むデータブロック内のMPEG2−TSパケットを、受信データバッファ部933に出力させる。MPEG2−TSデコード部934は、受信データバッファ部933から出力されるMPEG2−TSパケットをデコードして、映像信号を出力する。
このようにして、無線子機920は、MPEG2−TSデコード部934に入力させるMPEG2−TSパケット間の時間間隔を、無線親機900のMPEG2−TSエンコード部901から出力されたMPEG2−TSパケット間の時間間隔と一致させることができる。
ところで、MPEG2−TSパケットには、MPEG2−TSエンコード部901におけるシステムクロック情報(PCR:Program Clock Reference)が含まれている。MPEG2−TSデコード部934は、このシステムクロック情報に基づいて、MPEG2−TSエンコード部901のシステムクロックを再現している。
しかし、システムクロックを再現するためには、それぞれのMPEG2−TSパケットが伝送される際の伝送時間ばらつきが、充分小さくなければならない。ISO/IEC13818 Part9(MPEG2 Extention for real time interface)では、伝送時間ばらつきの値を25マイクロ秒以内と規定している。
上述したように、従来のデータ伝送システムでは、送信側の無線親機900は、MPEG2−TSパケットにビーコン用タイマ値に基づいたタイムスタンプを付加する。受信側の無線子機920は、無線親機900と同期したビーコン用タイマ値を利用し、MPEG2−TSパケットのタイムスタンプに基づいてMPEG2−TSパケットの出力タイミングを制御する。これによって、無線パケットに複数のMPEG2−TSパケットを結合した際の時間軸上のずれと、伝送回線上で生じた伝送時間のばらつきとを補正することができる。したがって、受信側は、MPEG2−TSパケット間における元々の時間間隔を再現することができ、伝送する映像・音響信号を送信側と受信側とで同期させることが可能となる。
特開2003−60652号公報
しかし、例えばEthernet(登録商標)のように、ビーコン信号が送受信されないシステムでは、従来の技術を用いて、MPEG2−TSパケット間の時間間隔のずれを補正することはできない。
それゆえ、本発明の目的は、Ethernet(登録商標)等、送信側と受信側との間でビーコン信号等によってタイマ値を同期しないシステムにおいても、パケット間の時間間隔のずれを補正し、送信側でのパケットの間隔を受信側で再現することができ、伝送される映像・音響信号等を送信側と受信側とで同期させることができるデータ受信装置を提供することである。
上記目的を達成するために、本発明は、以下のような特徴を有する。本発明は、複数のパケットを含んでいるデータパケットを受信するためのデータ受信装置であって、複数のパケットには、それぞれ、パケット生成時の時間に関する情報である第1の時間情報が付加されており、データパケットに含まれる複数のパケットを格納するための受信データバッファ部と、受信データバッファ部に格納されているデータの量を計測する受信データ量計測部と、周波数が可変なクロックを生成する可変クロック生成部と、可変クロック生成部が生成するクロックの周波数に応じてカウントされる第2の時間情報を出力する時間情報出力部と、パケットに付加されている第1の時間情報と時間情報出力部から出力される第2の時間情報とを比較して、受信データバッファ部に格納されているパケットを出力するタイミングを制御する第1の時間情報比較部とを備え、受信データ量計測部は、可変クロック生成部が生成するクロックの周波数を受信データ量計測部による計測値に応じて制御する。
本発明によれば、蓄積されたデータ量に応じて、クロックの周波数が制御されることとなるので、送信側と受信側との間でビーコン信号等によってタイマ値を同期しないシステムにおいても、データパケット間の時間間隔のずれを補正し、送信側でのデータパケットの間隔を受信側で再現することができ、伝送される映像・音響信号等を送信側と受信側とで同期させることができるデータ受信装置が提供されることとなる。
好ましくは、時間情報比較部が出力する第2の時間情報は、所定のオフセット時間だけ遅れているとよい。
これにより、データパケットが遅延して届いたとしても、データ受信装置は、パケットを出力することができる。
好ましくは、時間情報出力部は、可変クロック生成部が生成するクロックの周波数に応じてカウントされる第3の時間情報を出力するタイマ部と、受信データバッファ部に格納されるパケットに付加されている第1の時間情報を抽出する時間情報抽出部と、タイマ部が出力する第3の時間情報を時間情報抽出部が抽出した第1の時間情報に一致させる初期設定部と、タイマ部が出力する第3の時間情報を所定のオフセット時間だけ遅らせることによって第2の時間情報を出力するオフセット部とを備えるとよい。
これにより、初期設定がなされるので、送信側での時間情報と受信側での時間情報とがほぼ一致することとなる。さらに、第2の時間情報は、オフセット時間だけ遅らされているので、データパケットが遅延して届いたとしても、データ受信装置は、パケットを出力することができる。
好ましくは、オフセット部は、データ受信装置が接続される伝送路の状態に応じて、所定のオフセット時間を変化させるとよい。
これにより、遅延量が変化したとしても、データ受信装置は、パケットを出力することができる。
好ましくは、オフセット部は、受信データバッファ部に蓄積されているデータの量に応じて、所定のオフセット時間を変化させるとよい。
これにより、遅延量が変化したとしても、データ受信装置は、パケットを出力することができる。
好ましくは、オフセット部は、通信プロトコルの種類に応じて、所定のオフセット時間を変化させるとよい。
これにより、遅延量が変化したとしても、データ受信装置は、パケットを出力することができる。
好ましくは、さらに、タイマ部が出力する第3の時間情報と時間情報抽出部が抽出する第1の時間情報とを比較し、比較結果に応じて、可変クロック生成部が生成するクロックの周波数を制御する第2の時間情報比較部を備えるとよい。
これにより、タイマ部が出力する第3の時間情報と送信側での時間情報とをほぼ一致させることができ、パケットの間隔のずれが補正されることとなる。
好ましくは、データパケットの受信を開始した時点から所定の時間が経過するまで、可変クロック生成部が生成するクロックの周波数は、第2の時間情報比較部によって制御され、所定の時間の経過後、可変クロック生成部が生成するクロックの周波数は、受信データ量計測部によって制御されるとよい。
これにより、パケットがある程度蓄積されるまでの間は、時間差を用いてクロックの周波数が制御されることとなり、パケットがある程度蓄積された後は、蓄積されているデータ量に応じてクロックの周波数が制御されることとなるので、安定したクロックの制御が可能となる。
好ましくは、受信データ量計測部は、所定の時間経過後に、可変クロック生成部が生成するクロックの周波数の制御を開始するとよい。
これにより、安定したクロックの制御が可能となる。
好ましくは、受信データ量計測部は、受信データバッファ部に蓄積されているデータの量の平均値を計測値とし、計測値に応じて、可変クロック生成部が生成するクロックの周波数を制御するとよい。
これにより、安定したクロックの制御が可能となる。
たとえば、データパケットに含まれるパケットは、MPEG2−TSパケットである。
たとえば、データパケットは、映像および/または音声信号をエンコードして複数のMPEG2−TSパケットを生成して、各MPEG2−TSパケットに対して、エンコード時の時間に関する情報を第1の時間情報として付加して、第1の時間情報が付加された複数のMPEG2−TSパケットを結合して、データパケットを生成するデータ送信装置から送信されている。
また、本発明は、複数のパケットを含んでいるデータパケットを受信するための集積回路であって、複数のパケットには、それぞれ、パケット生成時の時間に関する情報である第1の時間情報が付加されており、集積回路に接続されるデータパケットに含まれる複数のパケットを格納するための受信データバッファ部に格納されているデータの量を計測する受信データ量計測部と、周波数が可変なクロックを生成する可変クロック生成部と、可変クロック生成部が生成するクロックの周波数に応じてカウントされる第2の時間情報を出力する時間情報出力部と、パケットに付加されている第1の時間情報と時間情報出力部から出力される第2の時間情報とを比較して、受信データバッファ部に格納されているパケットを出力するタイミングを制御する第1の時間情報比較部とを備え、受信データ量計測部は、可変クロック生成部が生成するクロックの周波数を受信データ量計測部による計測値に応じて制御する。
本発明に係るデータ受信装置は、非同期の伝送路を介した映像・音声信号等のストリーム伝送において、送信側でのパケットの送信間隔を受信側で再現することができるため、MPEG2−TSパケット等を非同期の伝送路を介して伝送した場合にも、受信側で正しく再生することができる。
本発明のこれらおよび他の目的、特徴、局面、効果は、添付図面と照合して、以下の詳細な説明から一層明らかになるであろう。
以下、本発明の実施の形態について、図面を参照しながら説明する。
(第1の実施形態)
図1は、本発明の第1の実施形態に係るデータ送信装置1の機能的構成を示すブロック図である。図1において、データ送信装置1は、MPEG2−TSエンコード部100と、タイムスタンプ付加部101と、クロック生成部102と、タイマ部103と、通信プロトコル処理部104と、通信部105とを備える。
MPEG2−TSエンコード部100は、入力する映像および/または音声信号をMPEG2−TSパケットに変換して出力する。図2Aは、MPEG2−TSエンコード部100から出力される複数のMPEG2−TSパケットのデータ構造を示す図である。図2Aに示すように、MPEG2−TSエンコード部100から、複数のMPEG2−TSパケット200が出力される。
クロック生成部102は、独立したクロックを生成して出力する。クロック生成部102によって生成されるクロックは、ISO/IEC13818 Part9(MPEG2 Extention for real time interface)で規定されたPCRジッタ許容値である25マイクロ秒以内に対して、十分な分解能を有する。なお、クロックとして、MPEG2−TSエンコード部100におけるシステムクロック(STC:System Time Clock)が用いられてもよい。
タイマ部103は、クロック生成部102が出力するクロックを計数(パルスの数を数えることをいう。以下同様)して、計数結果を時間情報として出力する。時間情報として現在時刻が用いられてもよいし、現在の総カウント数が用いられてもよい。時間に関する情報であれば、時間情報は、上記の例に限られない。
タイムスタンプ付加部101は、MPEG2−TSエンコード部100からMPEG2−TSパケットが入力されると、入力された時点における時間情報をタイマ部103から取得し、取得した時間情報を第1の時間情報とし、当該第1の時間情報を含むタイムスタンプをMPEG2−TSパケットに付加し、タイムスタンプが付加されたパケットとして、MPEG2−TSパケットを出力する。このように、第1の時間情報は、パケット生成時の時間に関する情報である。
図2Bは、タイムスタンプ付加部101から出力されるタイムスタンプ201が付加された複数のMPEG2−TSパケット200のデータ構造を示す図である。図2Bに示すように、タイムスタンプ付加部101から、タイムスタンプ201が付加された複数のMPEG2−TSパケット200が出力される。
第1の実施形態におけるデータ送信装置1では、タイマ部103が出力する時間情報を基準とする時間軸が想定されている。上述のように、MPEG2−TSエンコード部100がMPEG2−TSパケットを出力するタイミングにおける時間情報が、タイムスタンプとして、MPEG2−TSパケットに付加される。したがって、MPEG2−TSエンコード部100がMPEG2−TSパケットを出力するタイミングを基準として、タイマ部103の出力する時間情報が、MPEG2−TSパケットに、第1の時間情報として付加されることになる。
通信プロトコル処理部104は、タイムスタンプ付加部101から出力されたタイムスタンプが付加された複数のMPEG2−TSパケットを結合して、IPパケット化し、通信部105に入力する。
図3は、通信プロトコル処理部104によってIPパケット化されたデータパケット(IPパケット)2のデータ構造の一例を示す図である。図3では、通信プロトコルとして、RTP(Realtime Tranport Protocol)を用いた場合の例が示されている。通信プロトコル処理部104に入力されたタイムスタンプ201が付加されたMPEG2−TSパケット200は、データブロック211となる。通信プロトコル処理部104に入力されたタイムスタンプ201が付加された他のMPEG2−TSパケット200は、それぞれ、データブロック212〜21Nとなる。これは、複数のデータブロックをまとめて伝送することによって、通信上の冗長性を小さくするためである。複数のデータブロック211〜21Nには、著作権情報221が付加される。著作権情報221は、MPEG2−TSパケットが著作権保護等の目的で暗号化されている場合に用いられる情報であって、たとえばコピーの可否、暗号化に関する情報等である。たとえば、著作権情報221は、DTCP(Digital Transmission Content Protection)で規定されるDTCP−IPのためのヘッダである。さらに、複数のデータブロック211〜21Nには、RTPヘッダ222、UDPヘッダ223、IPヘッダ224が付加される。なお、RTPヘッダ内にはタイムスタンプを格納する領域がある。MPEG2−TSパケットをRTPで伝送する際には、MPEG2−TSパケットのPCR(Program Clock Reference)の値とRTPヘッダ内のタイムスタンプ値とを一致させなければならない場合がある。しかし、本発明では、RTPヘッダ内のタイムスタンプは用いないので、MPEG2−TSパケットのPCRの値とRTPヘッダ内のタイムスタンプ値とは、一致させなくてもよいものとする。
図4は、通信プロトコル処理部104によってIPパケット化されたデータパケット(IPパケット)2aのデータ構造の他の例を示す図である。図4では、通信プロトコルとして、HTTP(Hyper Text Transfer Protocol)を用いた場合の例が示されている。通信プロトコル処理部104に入力されたタイムスタンプ201が付加されたMPEG2−TSパケット200は、図3に示したRTPの例と同様に、データブロック211となる。また、通信プロトコル処理部104に入力されたタイムスタンプ201が付加された他のMPEG2−TSパケット200は、それぞれ、データブロック212〜21Nとなる。さらに、複数のデータブロック211〜21Nには、著作権情報221、HTTPヘッダ232、TCPヘッダ233、IPヘッダ234が付加される。
なお、通信プロトコル処理部104で結合されるデータブロックの数が多くなる程、伝送時の冗長性が低くなる。通常、通信プロトコル処理部104は、IPプロトコルを用いて伝送する際、IPヘッダ224以下のデータの総バイト数、すなわち、図3の例では、UDPヘッダ223、RTPヘッダ222、著作権情報221、およびデータブロック211〜21Nの総バイト数が、1500バイト以下の最も大きいバイト数となるように、データブロックの数を設定する。また、通信プロトコル処理部104は、IPヘッダ224以下のデータの総バイト数、すなわち、TCPヘッダ233、HTTPヘッダ232、著作権情報221、およびデータブロック211〜21Nの総バイト数が、1500バイト以下の最も大きいバイト数となるように、データブロックの数を設定する。
通信プロトコル処理部104は、図3、図4に示したようなIPパケット化を行うと共に、所定の通信プロトコル処理を実行する。
通信プロトコル処理部104から出力されたパケットは、通信部105に入力される。通信部105は、たとえば、Ethernet(登録商標)のMAC層および物理層に相当する処理を行い、処理後の信号を伝送路に出力する。
図5は、本発明の第1の実施形態に係るデータ受信装置3の機能的構成を示すブロック図である。図5において、データ受信装置3は、通信部300と、通信プロトコル処理部301と、受信データバッファ部302と、MPEG2−TSデコード部303と、第1の時間情報抽出部304と、初期設定部305と、受信データ量計測部306と、可変クロック生成部307と、タイマ部308と、オフセット部309と、第2の時間情報抽出部310と、第1の時間情報比較部311とを備える。初期設定部305と、タイマ部308と、オフセット部309と、第2の時間情報抽出部310とによって、時間情報出力部312が構成される。
伝送路からの信号は、通信部300に入力される。通信部300は、入力する信号に対して、Ethernet(登録商標)のMAC層および物理層に相当する処理を行い、処理後の信号を通信プロトコル処理部301に入力する。
通信プロトコル処理部301は、所定の通信プロトコル処理を行うと共に、受信した信号に含まれるデータブロックを抽出して、抽出したデータブロックを受信データバッファ部302に格納する。
受信データバッファ部302には、複数のデータブロックが蓄積される。
受信データ量計測部306は、受信データバッファ部302に蓄積された複数のデータブロックの総データ量の平均値(以下、蓄積データ平均値という)を計測し、計測値である蓄積データ平均値の増減に応じた制御信号を可変クロック生成部307に入力する。
可変クロック生成部307は、受信データ量計測部306からの制御信号に基づいて、生成するクロックの周波数を増減する。
受信データ量計測部306は、蓄積データ平均値が増加した場合、可変クロック生成部307が生成するクロックの周波数が上がるような制御信号を出力する。一方、蓄積データ平均値が減少した場合、受信データ量計測部306は、可変クロック生成部307が生成するクロックの周波数が下がるような制御信号を出力する。また一方、蓄積データ平均値が変化していない場合、受信データ量計測部306は、可変クロック生成部307が生成するクロックの周波数を変化させない。
タイマ部308は、可変クロック生成部307が出力するクロックを計数することによって第2の時間情報を出力する。クロックの計数に基づく時間情報として、現在時刻が用いられてもよいし、現在の総カウント数が用いられてもよい。時間に関する情報であれば、時間情報は、上記の例に限られない。
オフセット部309は、タイマ部308が出力する時間情報で表されている時間を遅らせるように、タイマ部308が出力する時間情報に対して、所定のオフセット時間を減算する。以下、オフセット部309から出力される時間情報を第2の時間情報という。所定のオフセット時間を減算することによって遅らせる時間は、おおよそ、伝送遅延時間とバッファリングに要する時間との和である。第2の時間情報は、可変クロック生成部307が生成するクロックの周波数に応じてカウントされる時間情報である。なお、タイマ部308から出力される時間情報を第3の時間情報という。第3の時間情報も可変クロック生成部307が生成するクロックの周波数に応じてカウントされる時間情報である。第2の時間情報と第3の時間情報との違いは、第2の時間情報の方が、所定のオフセット時間だけ、遅れている点である。
第1の時間情報抽出部304は、受信データバッファ部302を参照して、次に出力すべきMPEG2−TSパケット、すなわち、受信データバッファ部302に蓄積されたMPEG2−TSパケットの内、時間的に最も古い時点で蓄積された(最も前に蓄積された)MPEG2−TSパケットに付随するタイムスタンプ内の第1の時間情報を抽出する。
第1の時間情報比較部311は、第1の時間情報抽出部304によって抽出された第1の時間情報とオフセット部309から出力される第2の時間情報とが一致するか否かを判断する。第2の時間情報が刻々とカウントされる中、第1の時間情報比較部311は、第1の時間情報抽出部304からの第1の時間情報とオフセット部309から出力される第2の時間情報とが一致した時点において、MPEG2−TSパケットの出力を受信データバッファ部302に指示するための制御信号を受信データバッファ部302に入力する。
受信データバッファ部302は、第1の時間情報比較部311からの制御信号が入力されれば、蓄積されたMPEG2−TSパケットの内、時間的に最も古い時点で蓄積されたデータブロック内のMPEG2−TSパケットを抜き出し、MPEG2−TSデコード部303に入力する。
受信データバッファ部302によってMPEG2−TSパケットが出力された後、次に出力すべきデータブロックに付随するタイムスタンプ内の第1の時間情報が、第1の時間情報抽出部304によって抽出される。第1の時間情報抽出部304によって抽出された第1の時間情報は、第1の時間情報比較部311において、第2の時間情報と比較される。当該第1の時間情報と第2の時間情報とが一致した時点で、受信データバッファ部302は、次のMPEG2−TSパケットを出力する。このようにして、受信データバッファ部302から、MPEG2−TSパケットが順次出力される。
MPEG2−TSデコード部303は、受信データバッファ部302から出力されるデータブロックを映像および/または音声信号に変換して、出力する。
第2の時間情報抽出部310は、通信プロトコル処理部301が出力するデータブロックからタイムスタンプを抽出し、抽出したタイムスタンプ内から第1の時間情報を抽出し、抽出した第1の時間情報を初期設定部305に入力する。
初期設定部305は、初期設定として、タイマ部308が出力する第3の時間情報を第2の時間情報抽出部310が抽出した第1の時間情報に一致させる。
これにより、データ送信装置1のタイマ部103に設定されている時間情報とデータ受信装置3のタイマ部308に設定されている時間情報とが、伝送路上の遅延を無視すれば、一致することとなる。初期設定部305における初期設定は、データ送信装置1とデータ受信装置3との間で、データが送受信される最初の段階で行われる。こうして、データ受信装置3のタイマ部308の時間情報は、初期設定部305によって初期設定が行われた時点で、伝送路上の遅延を無視すれば、データ送信装置1のタイマ部103の時間情報と一致する。
図6は、データ受信装置3の動作の流れを示すフローチャートである。以下、図6を参照しながら、データ受信装置3の動作の流れについて説明する。
データパケットであるIPパケットの受信を開始する際、第2の時間情報抽出部310は、受信したIPパケット中のデータブロックに含まれる第1の時間情報を抽出する(ステップS101)。
次に、初期設定部305は、タイマ部308が出力する第3の時間情報を第2の時間情報抽出部310が抽出した第1の時間情報に一致させ、初期値設定する(ステップS102)。
次に、可変クロック生成部307は、デフォルトの周波数を有するクロックを生成する(ステップS103)。なお、デフォルトの周波数は、データ送信装置1のクロック生成部102が生成するクロックの周波数とほぼ一致する。ただし、誤差の影響や、精度の違いがあるので、二つの周波数は完全には一致していない場合が多い。
次に、受信データ量計測部306は、受信データバッファ部302を参照して、蓄積データ平均値を計測する(ステップS104)。
次に、受信データ量計測部306は、計測した蓄積データ平均値が前回計測した蓄積データ平均値と比べて増加しているか、減少しているか、それとも変化が無いか否かを判断する(ステップS105)。なお、ステップS104において、初めて蓄積データ平均値を計測した場合、ステップS105,S106,S107の処理は、省略される。
蓄積データ平均値が増加している場合、受信データ量計測部306は、所定の値だけ、または増加量に応じた値だけ、クロックの周波数を上げるように可変クロック生成部307を制御して(ステップS106)、ステップS108の動作に進む。一方、蓄積データ平均値が減少している場合、受信データ量計測部306は、所定の値だけ、または減少量に応じた値だけ、クロックの周波数を下げるように可変クロック生成部307を制御して(ステップS107)、ステップS108の動作に進む。これにより、クロックの周波数が変化して、タイマ部308から出力される第3の時間情報が進むまたは遅れる。また一方、蓄積データ平均値が変化していない場合、データ受信装置3は、そのままステップS108の動作に進む。蓄積データ平均値に変化がないということは、送信側でのMPEG2−TSパケットの時間間隔と出力するMPEG2−TSパケットの時間間隔とが一致していることを示しているので、クロックの周波数を変化させなくてもよい。
ステップS108において、オフセット部309は、タイマ部308からの第3の時間情報からオフセット時間を減算して、タイマ部308からの第3の時間情報を遅らせ、第2の時間情報を出力する。
次に、第1の時間情報抽出部304は、次にデコードすべきMPEG2−TSパケットに対応するタイムスタンプ内の第1の時間情報を受信データバッファ部302から抽出する(ステップS109)。
次に、第1の時間情報比較部311は、第1の時間情報抽出部304が抽出した第1の時間情報と第2の時間情報とが一致するか否かを判断する(ステップS110)。一致する場合、第1の時間情報比較部311は、受信データバッファ部302に、当該第1の時間情報に対応するMPEG2−TSパケットを出力させ、ステップS111の動作に進む。一方、一致しない場合、第1の時間情報比較部311は、第1の時間情報と第2の時間情報とが一致するまで、ステップS110の動作を繰り返す。なお、蓄積データ平均値を求める処理時間がMPEG2−TSパケット間の時間間隔よりも短いならば、ステップS110において一致しないと判断された場合、データ受信装置3は、ステップS104の動作に戻ってもよい。
ステップS111において、第1の時間情報比較部311は、今回送信されてきたIPパケットに含まれる全てのMPEG2−TSパケットを受信データバッファ部302に出力させたか否かを判断する。全てのMPEG2−TSパケットを出力させていない場合、データ受信装置3は、ステップS104の動作に戻る。一方、全てのMPEG2−TSパケットを出力させている場合、データ受信装置3は、処理を終了する。
以上の処理から分かるように、一つのIPパケットを受信している間、可変クロック生成部307、タイマ部308、オフセット部309、第1の時間情報比較部311、第1の時間情報抽出部304、受信データバッファ部302、および受信データ量計測部306によって、閉ループが形成される。
次に、第1の実施形態に係るデータ受信装置3が、送信側でのMPEG2−TSパケットの間隔を再現することができる理由について説明する。
まず、理想的な状況として、以下の条件を満たす状況を考える。
(1)データ送信装置1のクロック生成部102が出力するクロックの周波数と、データ受信装置3の可変クロック生成部307が出力するデフォルトのクロックの周波数とが完全に一致している。
(2)伝送路上で生じる遅延は、常に一定である。
(3)オフセット部309におけるオフセット時間は、伝送路上で生じる遅延およびMPEG2−TSパケットを結合した際に生じる時間軸上のずれを考慮して適切な値に設定されている。
最初のMPEG2−TSパケットに付随するタイムスタンプ内の第1の時間情報がタイマ部308の初期値として設定される。したがって、上記のような理想的な状態の場合、上記(1)の条件より、データ送信装置1のタイマ部103の時間情報とデータ受信装置3のタイマ部308の第3の時間情報とは同期することとが分かる。さらに、上記(3)の条件より、オフセット部309から出力される第2の時間情報は、受信データバッファ部302に格納されるMPEG2−TSパケットに付随しているタイムスタンプ内の時間情報よりも先走っていることはないことが分かる。ゆえに、上記のような理想的な状態の場合、可変クロック生成部307から出力されるクロックの周波数を変化させなくても、第1の時間情報比較部311は、データ送信装置1でエンコードされたMPEG2−TSパケットの時間間隔と同じ間隔で受信データバッファ部302に格納されているMPEG2−TSパケットを、受信データバッファ部302に出力させることができる。
しかし、実際は、上記(1),(2)の理想的な条件は、満たされていない。したがって、単に、初期設定部305において、初期設定を行っただけでは、出力するMPEG2−TSパケットの時間間隔を送信側の時間間隔と一致させることはできない。そこで、第1の実施形態では、受信データバッファ部302の蓄積データ平均値に基づいて、クロックの周波数を変化させていくことによって、出力するMPEG2−TSパケットの時間間隔を送信側の時間間隔と一致させることを実現する。以下、出力するMPEG2−TSパケットの時間間隔と送信側の時間間隔とが一致する理由について説明する。
上記(1)の条件が満たされない場合、すなわち、データ送信装置1のクロック生成部102が出力するクロックの周波数と、データ受信装置3の可変クロック生成部307が出力するデフォルトのクロックの周波数とが完全に一致しない場合を考える。
たとえば、可変クロック生成部307が出力するクロックの周波数が、クロック生成部102が出力するクロックの周波数に比べて遅い場合、受信データバッファ部302から出力されるMPEG2−TSパケットの時間間隔は、送信側においてタイムスタンプが付加されたときの時間間隔に比べて、大きくなってしまう。このような場合、出力されずに受信データバッファ部302に格納されたままとなるMPEG2−TSパケットが増加していくので、蓄積データ平均値は、増加することとなる。蓄積データ平均値が増加した場合、可変クロック生成部307から出力されるクロックの周波数は上げられる。クロックの周波数が上げられれば、タイマ部308から出力される第3の時間情報が進み、オフセット部309から出力される第2の時間情報が進むこととなる。第2の時間情報が進めば、第1の時間情報比較部311における時間情報の比較処理が早く進んでいくので、出力されるMPEG2−TSパケットの時間間隔は、狭くなっていき、送信側においてタイムスタンプが付加されたときの時間間隔に近づいていくこととなる。クロック周波数制御のための閉ループによって、出力されるMPEG2−TSパケットの時間間隔は、ある値に収束していき、送信側においてタイムスタンプが付加されたときの時間間隔と一致することとなる。
逆に、可変クロック生成部307が出力するクロックの周波数が、クロック生成部102が出力するクロックの周波数に比べて早い場合、受信データバッファ部302から出力されるMPEG2−TSパケットの時間間隔は、送信側においてタイムスタンプが付加されたときの時間間隔に比べて、狭くなってしまう。このような場合、受信データバッファ部302に格納されたMPEG2−TSパケットは徐々に減少していくので、蓄積データ平均値は、減少することとなる。蓄積データ平均値が減少した場合、可変クロック生成部307から出力されるクロックの周波数は下げられる。クロックの周波数が下げられれば、タイマ部308から出力される第3の時間情報が遅れ、オフセット部309から出力される第2の時間情報が遅れることとなる。第2の時間情報が遅れれば、第1の時間情報比較部311における時間情報の比較処理がゆっくり進んでいくので、出力されるMPEG2−TSパケットの時間間隔は、広くなっていき、送信側においてタイムスタンプが付加されたときの時間間隔に近づいていくこととなる。クロック周波数制御のための閉ループによって、出力されるMPEG2−TSパケットの時間間隔は、ある値に収束していき、送信側においてタイムスタンプが付加されたときの時間間隔と一致することとなる。
次に、上記(2)の条件が満たされない場合、すなわち、伝送路上で生じる遅延が変化している場合について考える。
たとえば、伝送路上での遅延が増大した場合、受信データバッファ部302に格納されているMPEG2−TSパケットは次々に出力されていってしまうので、蓄積データ平均値は、減少する。蓄積データ平均値が減少傾向にあるにもかかわらず、クロックの周波数を下げずに処理を続けると、第2の時間情報が受信データバッファ部302に蓄積されるMPEG2−TSパケットに対応する第1の時間情報よりも先走ってしまうこととなる。結果、出力すべきMPEG2−TSパケットが枯渇してしまう。そのため、蓄積データ平均値データが減少した場合、受信データ量計測部306は、可変クロック生成部307が出力するクロックの周波数を下げる。これによって、第2の時間情報が遅れることとなるので、第2の時間情報が先走ってしまうことがなくなる。結果、受信データバッファ部302内において出力すべきMPEG2−TSパケットが枯渇する事態を回避できる。この場合、出力されるMPEG2−TSパケットの時間間隔は広くなっていく。逆に、もし、伝送路上での遅延が減少してきたら、受信データバッファ部302に格納されているMPEG2−TSパケットは徐々に蓄積されていくこととなり、蓄積データ平均値は、増大する。蓄積データ平均値が増大すれば、クロックの周波数が上げられるので、第2の時間情報が進み、第1の時間情報比較部311における時間情報の比較処理が早く進んでいく。結果、出力されるMPEG2−TSパケットの時間間隔は、狭くなっていく。したがって、伝送路上での遅延に変動があったとしても、データ受信装置3から出力されるMPEG2−TSパケットの時間間隔は、平均的には、送信側においてタイムスタンプが付加されたときの時間間隔と一致することとなる。
実際の状況では、(1)および(2)の条件は、複雑に絡み合っている。しかし、データ受信装置3は、蓄積データ平均値を用いて、可変クロック生成部307が出力するクロックの周波数を制御することとなるので、データ受信装置3から出力されるMPEG2−TSパケットの時間間隔は、平均的には、送信側においてタイムスタンプが付加されたときの時間間隔と一致することとなる。
次に、受信データバッファ部302に蓄積されているデータの平均値を用いて、クロックの周波数を制御する理由について説明する。
データ送信装置1のMPEG2−TSエンコード部100が出力するMPEG2−TSパケットは、パケットの時間間隔が完全に等間隔の場合もあれば、パケットの間隔が等間隔でなく間欠的である場合もある。パケットの間隔が間欠的である場合、受信データバッファ部302に蓄積されるデータ量は、変動することになる。また、MPEGのエンコードの方法には、一定の符号発生量となる固定ビットレート(CBR)と、符号発生量が変動する可変ビットレート(VBR)とがある。VBRの場合も、受信データバッファ部302に蓄積されるデータ量は、変動する。パケットの間隔が間欠的であるエンコード方法を用いる場合であっても、ある単位時間あたりのパケットの間隔の平均は、一定である。また、VBRを用いる場合であっても、ある単位時間あたりの符号発生量の平均は、一定である。したがって、上記のように、蓄積されるデータの量が局所的には変動する場合であっても、受信データバッファ部302に蓄積されるデータ量のある単位時間あたりの平均は、一定である。
したがって、蓄積データ平均値に応じてクロックの周波数が制御されることによって、クロックの周波数を平均的には送信側のクロックの周波数と一致させることができる。したがって、データ受信装置3から出力されるMPEG2−TSパケットの時間間隔は、平均的には、送信側においてタイムスタンプが付加されたときの時間間隔と一致することとなる。
なお、ここでは、受信データ量計測部306は、蓄積データ平均値に応じてクロックの周波数を制御されることとしたが、受信データバッファ部302における瞬時の蓄積データ量に応じてクロックの周波数を制御してもよい。ただし、この場合、受信データ量計測部306は、クロックの周波数の変化が、受信データバッファ部302に蓄積されるデータ量の瞬時的な変動に対して、十分に遅くなるように、クロックの周波数を制御する。
また、オフセット部309によって、タイマ部308の第3の時間情報に所定のオフセット時間が加算される理由は、伝送路による遅延を考慮するためである。上述のように、伝送路上での遅延を無視すれば、データ送信装置1のタイマ部103の時間情報とデータ受信装置3のタイマ部308の第3の時間情報とは一致している。しかし、実際には、伝送路によって遅延が生じているので、データ受信装置3のタイマ部308の第3の時間情報が示す時刻に、MPEG2−TSパケットが届かない場合がある。オフセット時間を加算することによって、受信データバッファ部302から出力されるMPEG2−TSパケットの出力時間に遅延を持たせることができる。したがって、伝送路上での遅延が生じていたために、タイムスタンプに含まれている第1の時間情報がデータ受信装置3内で既に過ぎてしまって、MPEG2−TSパケットがデコードされないといった事態を回避することができる。なお、MPEG2−TSパケットを出力する時間の遅延は、小さいほど望ましい。しかし、あまり小さすぎると、出力すべきデータが受信側に届いていない状況が発生するので、出力するデータが枯渇する場合が発生する。以上のようなことを考慮して、オフセット時間は適切に設定されるべきである。
たとえば、伝送路の状態によっては、伝送されるデータの遅延が大きくなる場合がある。たとえば、Ethernet(登録商標)等を用いて、広域のネットワークを介して、データを伝送する場合、データの遅延のばらつきが大きくなる。また、IEEE802.11の無線LANを介してデータを伝送する場合、伝送誤りがあれば、MAC層において、データの再送が発生する。データの再送が発生すると、データの伝送遅延が大きくなる。データの伝送遅延が大きくなった場合、受信データバッファ部302に蓄積されるべきデータが到着せず、必要な時間に出力すべきデータがなくなる場合が発生する。しかし、オフセット部309において、所定のオフセット時間を加算すれば、このような状態を回避することができる。伝送路の状態が悪化し伝送遅延が大きい場合、オフセット時間の加算によって、第1の時間情報比較部311での比較に用いられる第2の時間情報を時間的に遅らせることができ、受信データバッファ部302に所定の時間分のデータが蓄積されることとなる。結果、データが枯渇する状態を回避することができる。
なお、オフセット部309は、所定のオフセット時間を、受信データバッファ部302に蓄積されているデータ量に応じて、変化させてもよい。具体的には、オフセット部309は、所定のオフセット時間を、受信データバッファ部302に蓄積されているデータ量が多い場合に小さくなるようにし、受信データバッファ部302に蓄積されているデータ量が少ない場合に大きくなるように制御するとよい。これにより、受信データバッファ部302に保持されるデータ量を最小限に保ちながら、受信データが枯渇しないように制御することができる。ただし、受信データ量計測部306による閉ループ制御に影響を与えないように、オフセット時間は、制御されなければならない。
また、伝送に使用する物理層、またはMAC層等の種類を示す通信プロトコルの種類に応じて、伝送遅延量はばらつく。したがって、オフセット部309は、通信プロトコルの種類に応じて、所定のオフセット時間を変更するようにしても、受信データバッファ部302に保持されるデータ量を最適化することができる。
また、オフセット部309は、伝送路の状態に応じて、所定のオフセット時間を変化させてもよい。例えば、無線LANの場合、伝送路誤りがあるとデータが再送される。再送回数を計測することによって、伝送路の状態を知ることができる。再送回数が多い場合には、伝送遅延が増えるため、オフセット部309は、オフセット時間を大きくする。
なお、第1の実施形態において、図5に示した各機能ブロックの動作は、並行に行われてもよいことは言うまでもない。
なお、バッファ量を計測してクロックの周波数を制御する第1の実施形態に係る方法では、IPパケットを受信した当初、すなわち受信データバッファ部302に所定量以上のデータが蓄積されるまで、バッファ量によるフィードバックが得られないため、開ループとなってしまい、誤作動が生じるおそれがある。このように、IPパケットの受信を開始した時点から所定の期間の間、受信データ量計測部306は、可変クロック生成部307から出力されるクロックの周波数をデフォルト値に固定させるとよい。これによって、開ループによる誤動作を回避することができる。すなわち、受信データ量計測部306は、所定の時間経過後に、クロックの周波数の制御を開始するとよい。
(第2の実施形態)
第2の実施形態において、データ送信装置の構造およびMPEG2−TSパケットを含むIPパケットの構造は、第1の実施形態と同様であるので、図1〜4を援用することとする。
図7は、本発明の第2の実施形態に係るデータ受信装置4の機能的構成を示すブロック図である。図7において、第1の実施形態におけるデータ受信装置3と同様の機能を有する部分については、同一の参照符号を付し、詳しい説明を省略することとする。
図7において、データ受信装置4は、通信部300と、通信プロトコル処理部301と、受信データバッファ部302と、MPEG2−TSデコード部303と、第1の時間情報抽出部304と、初期設定部305と、可変クロック生成部307と、タイマ部308と、オフセット部309と、第2の時間情報抽出部310と、第1の時間情報比較部311と、第2の時間情報比較部400とを備える。
図7に示すように、第2の実施形態に係るデータ受信装置4には、第1の実施形態に係る受信データ量計測部306の代わりに、第2の時間情報比較部400が設けられている。
第2の時間情報抽出部310は、通信プロトコル処理部301が出力するデータブロックからタイムスタンプを抽出して、当該タイムスタンプに含まれる第1の時間情報を抽出して、当該第1の時間情報を初期設定部305に入力すると共に、第2の時間情報比較部400に入力する。
第2の時間情報比較部400は、第2の時間情報抽出部310が抽出した第1の時間情報と、タイマ部308が出力する第3の時間情報とを比較し、時間差に応じた制御信号を可変クロック生成部307に入力する。可変クロック生成部307は、第2の時間情報比較部400からの制御信号に応じて、生成するクロックの周波数を増減する。第2の時間情報抽出部310が抽出した第1の時間情報がタイマ部308が出力する第3の時間情報より遅れている場合、第2の時間情報比較部400は、可変クロック生成部307の生成するクロックの周波数が上がるような制御信号を出力する。一方、第2の時間情報抽出部310が抽出した第1の時間情報がタイマ部308が出力する第3の時間情報より進んでいる場合、第2の時間情報比較部400は、可変クロック生成部307の生成するクロックの周波数が下がるような制御信号を出力する。なお、第2の時間情報抽出部310が抽出した第1の時間情報とタイマ部308が出力する第3の時間情報とが一致している場合、第2の時間情報比較部400は、可変クロック生成部307の生成するクロックの周波数を変化させない。
図8は、本発明の第2の実施形態に係るデータ受信装置4の動作を示すフローチャートである。以下、図8を参照しながら、本発明の第2の実施形態に係るデータ受信装置4の動作について説明する。
IPパケットの受信を開始する際、第2の時間情報抽出部310は、受信したIPパケット中のデータブロックに含まれるタイムスタンプ内の第1の時間情報を抽出する(ステップS201)。
次に、初期設定部305は、タイマ部308が出力する第3の時間情報を第2の時間情報抽出部310が抽出した第1の時間情報に一致させ、初期設定する(ステップS202)。
次に、可変クロック生成部307は、デフォルトの周波数を有するクロックを生成する(ステップS203)。
次に、データ受信装置4は、通信プロトコル処理部301によって受信されたデータが存在するか否かを判断する(ステップS204)。データが存在しない場合、データ受信装置4は、ステップS211の動作に進む。一方、データが存在する場合、データ受信装置4は、ステップS205の動作に進む。
ステップS205において、第2の時間情報抽出部310は、通信プロトコル処理部301が受信したデータから第1の時間情報を抽出する。
次に、第2の時間情報比較部400は、タイマ部308が出力する第3の時間情報と第2の時間情報抽出部310がステップS205において抽出した第1の時間情報とを比較する(ステップS206)。タイマ部308が出力する第3の時間情報が遅れている場合、第2の時間情報比較部400は、クロックの周波数を上げるように可変クロック生成部307を制御し(ステップS207)、ステップS209の動作に進む。一方、タイマ部308が出力する第3の時間情報が進んでいる場合、第2の時間情報比較部400は、クロックの周波数を下げるように可変クロック生成部307を制御し(ステップS208)、ステップS209の動作に進む。また一方、時間情報が一致している場合、第2の時間情報比較部400は、クロックの周波数を変化させることなく、ステップS209の動作に進む。
ステップS209において、オフセット部309は、タイマ部308からの第3の時間情報からオフセット時間を減算して、タイマ部308からの第3の時間情報を遅らせ、第2の時間情報を出力する。
次に、第1の時間情報抽出部304は、次にデコードすべきMPEG2−TSパケットに対応するタイムスタンプを受信データバッファ部302から抽出する(ステップS210)。
次に、第1の時間情報比較部311は、第1の時間情報抽出部304が抽出したタイムスタンプに含まれる第1の時間情報と第2の時間情報とが一致するか否かを判断する(ステップS211)。一致する場合、第1の時間情報比較部311は、受信データバッファ部302に抽出した第1の時間情報に対応するMPEG2−TSパケットを出力させ、ステップS212の動作に進む。一方、一致しない場合、第1の時間情報比較部311は、ステップS204の動作に戻る。
ステップS212において、第1の時間情報比較部311は、今回送信されてきたIPパケットに含まれる全てのMPEG2−TSパケットを受信データバッファ部302に出力させたか否かを判断する。全てのMPEG2−TSパケットを出力させていない場合、データ受信装置4は、ステップS204の動作に戻る。一方、全てのMPEG2−TSパケットを出力させている場合、データ受信装置4は、処理を終了する。
以上の処理から分かるように、可変クロック生成部307と、タイマ部308と、第2の時間情報比較部400によって、閉ループが形成される。
このように、第2の時間情報比較部400によって、第2の時間情報抽出部310からの第1の時間情報と、タイマ部308の出力する第3の時間情報とが比較され、時間差に応じて、可変クロック生成部307の出力するクロックの周波数が制御される。もし、タイマ部308の第3の時間情報が受信したMPEG2−TSパケットに付随する第1の時間情報よりも遅れている場合、クロックの周波数が低いことを意味するので、第2の時間情報比較部400によってクロックの周波数が上げられることによって、可変クロック生成部307の生成するクロックの周波数は、図1のデータ送信装置1におけるクロック生成部102の発生するクロックの周波数と一致する方向に変化する。一方、もし、タイマ部308の第3の時間情報が受信したMPEG2−TSパケットに付随する第1の時間情報よりも進んでいる場合、クロックの周波数が高いことを意味するので、第2の時間情報比較部400によってクロックの周波数が下げられることによって、可変クロック生成部307の生成するクロックの周波数は、図1のデータ送信装置1におけるクロック生成部102の発生するクロックの周波数と一致する方向に変化する。
従って、データ受信装置4のタイマ部308が出力する第3の時間情報とデータ送信装置1のタイマ部103が出力する時間情報とは、同期することになる。
データ送信装置1のタイマ部103とデータ受信装置4のタイマ部308とが同期することによって、データ送信装置1のMPEG2−TSエンコード部100が出力したMPEG2−TSパケットの時間間隔と、受信データバッファ部302からMPEG2−TSデコード部303に入力されるMPEG2−TSパケットの時間間隔とは、一致することとなる。
ここで、第2の時間情報比較部400は、クロックの周波数の変化が、比較した時間差の変動に対して、十分遅くなるように、クロックの周波数を制御するものとする。たとえば、第2の時間情報比較部400は、ある単位時間あたりにおける時間差の平均値を算出し、時間差の平均値に基づいて、タイマ部308の第3の時間情報が進んでいるかそれとも遅れているかを求めて(ステップS206)、クロックの制御を行う(ステップS207,S208)。データ送信装置1は、MPEG2−TSパケットを結合して、IPパケット化する際、タイムスタンプに含まれる時間情報によって示される時間から時間軸上でずれるように、MPEG2−TSパケットを結合する場合がある。したがって、データ受信装置4にIPパケットが届いた瞬間のタイマ部308が出力する第3の時間情報とタイムスタンプに含まれる第1の時間情報とが一致しない場合がある。そのため、時間情報の時間差がゼロにならず、時間差が大きく変動する場合がある。しかし、MPEG2−TSパケットを結合するときのずれは、平均的には、一定である。ゆえに、第2の時間情報比較部400が上述のようにクロックの周波数を制御することによって、データ受信装置4のタイマ部308が出力する第3の時間情報とデータ送信装置1のタイマ部103が出力する第1の時間情報とを一致させることができる。
なお、時間差の平均値を求める場合、平均値を求める期間の長さによっては、ステップS211において、時間情報が一致するまで処理を繰り返すようにするとよい。
なお、第2の時間情報比較部400は、第2の時間情報抽出部310が抽出した全てのタイムスタンプ値を用いて、時間差を求めなくてもよい。たとえば、第2の時間情報比較部400は、複数のデータブロックの内、IPパケットの最初の位置にあるデータブロック211に含まれる第1の時間情報のみをタイマ部308の出力する第3の時間情報と比較してもよい。また、第2の時間情報比較部400は、定期的に時間情報を比較するようにしてもよい。
(第3の実施形態)
第3の実施形態において、データ送信装置の構造およびMPEG2−TSパケットを含むIPパケットの構造は、第1の実施形態と同様であるので、図1〜4を援用することとする。
図9は、本発明の第3の実施形態に係るデータ受信装置5の機能的構成を示すブロック図である。図9において、第1および第2の実施形態におけるデータ受信装置3,4と同様の機能を有する部分については、同一の参照符号を付し、詳しい説明を省略することとする。
図9において、データ受信装置5は、通信部300と、通信プロトコル処理部301と、受信データバッファ部302と、MPEG2−TSデコード部303と、第1の時間情報抽出部304と、初期設定部305と、受信データ量計測部306と、バッファ量可変クロック生成部307と、タイマ部308と、オフセット部309と、第2の時間情報抽出部310と、第1の時間情報比較部311と、第2の時間情報比較部400と、切り替え制御部500とを備える。
切り替え制御部500は、データの受信開始時から所定の期間、第2の時間情報比較部400にクロックの周波数を制御させる。当該所定の期間の後、切り替え制御部500は、受信データ量計測部306にクロックの周波数を制御させる。
図10は、第3の実施形態に係るデータ受信装置5の動作を示すフローチャートである。以下、図10を参照しながら、第3の実施形態に係るデータ受信装置5の動作について説明する。
IPパケットの受信を開始する際、第2の時間情報抽出部310は、受信したIPパケット中のデータブロックに含まれるタイムスタンプを抽出する(ステップS301)。
次に、初期設定部305は、第2の時間情報抽出部310が抽出したタイムスタンプに含まれる時間情報を、タイマ部308の初期値に設定する(ステップS302)。
次に、可変クロック生成部307は、デフォルトの周波数を有するクロックを生成する(ステップS303)。
次に、切り替え制御部500は、IPパケットの受信から所定の時間が経過したか否か(または受信データバッファ部302に所定量以上のデータが蓄積されたか否か)を判断する(ステップS304)。所定の時間が経過していない場合(所定量以上のデータが蓄積されていない場合)、データ受信装置5は、ステップS305の動作に進む。一方、所定の時間が経過している場合(所定量以上のデータが蓄積されている場合)、データ受信装置5は、ステップS306の動作に進む。
ステップS305において、データ受信装置5は、第2の時間情報比較部400を用いて、クロックの周波数を制御するために、図8に示すステップS204〜S211と同様の処理を実行する。ステップS305の処理が終了すれば、データ受信装置5は、ステップS304の動作に戻る。
ステップS306において、データ受信装置5は、受信データ量計測部306を用いて、クロックの周波数を制御するために、図6に示すステップS104〜S110と同様の処理を実行する。ステップS306の処理が終了すれば、データ受信装置5は、ステップS307の動作に進む。
ステップS307において、第1の時間情報比較部311は、今回送信されてきたIPパケットに含まれる全てのMPEG2−TSパケットを受信データバッファ部302に出力させたか否かを判断する。全てのMPEG2−TSパケットを出力させていない場合、データ受信装置5は、ステップS304の動作に戻る。一方、全てのMPEG2−TSパケットを出力させている場合、データ受信装置5は、処理を終了する。
第1の実施形態でも指摘したように、IPパケットを受信した当初、開ループによって、誤作動が生じるおそれがある。しかし、第3の実施形態のように、IPパケットの受信開始時には、データ受信装置5は、第2の時間情報比較部400を用いて、クロックの周波数を制御することによって、クロックの周波数を送信側に追従させることができる。所定の時間の経過後(または受信バッファに所定の量の受信データが溜まった後)、データ受信装置5は、バッファ量計測によるフィードバック制御に切り替える。第3の実施形態では、データの受信開始時、クロックが早急に収束して効果的である。また、バッファ量計測によるフィードバックの方が、タイムスタンプ抽出によるフィードバックよりも、変動の積分値をフィードバックすることができるので、定常時には、安定的に時間間隔を一致させることができる。
なお、第1〜第3のデータ受信装置3,4,および5は、汎用のコンピュータ装置であってもよい。この場合、図6,図8,または図10の動作を当該コンピュータ装置の中央演算装置に実行させるためのプログラムが、コンピュータ読み取り可能な記録媒体に格納されているとよい。そして、当該プログラムは、中央演算装置に読み込まれる。当該プログラムを読み込んだ中央演算装置は、データ受信装置であるコンピュータ装置を図6,図8,または図10に示すように動作させる。
なお、図5,図7,および図9に示した各機能ブロックは、集積回路であるLSIとして実現されてもよい。これらの機能ブロックは、1チップ化されていてもよいし、一部又は全てを含むように1チップ化されていてもよい。典型的には、受信データバッファ部302は、集積回路の外部に設けられた記憶装置となる。ここでは、LSIといったが、集積度の違いによっては、IC、システムLSI、スーパーLSI、ウルトラLSIと称呼されることもある。また、集積回路化の手法は、LSIに限られるものではなく、専用回路または汎用プロセッサで集積回路化を行ってもよい。また、LSI製造後にプログラムすることが可能なFPGA(Field Programmable Gate Array)や、LSI内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサーを用いてもよい。さらには、半導体技術の進歩または派生する別技術によりLSIに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックを集積化してもよい。バイオ技術の適応等が可能性としてあり得る。
なお、第1〜第3の実施形態では、通信部300は、Ethernet(登録商標)のMAC層および物理層を処理するものとしたが、これに限定されるものではない。たとえば、通信部300は、IEEE802.11など、如何なるMAC層および物理層を処理してもよい。また、通信プロトコル処理部301は、RTP,HTTPを用いることとしたが、これに限定されるものではない。本発明は特定の通信プロトコルに限定されるものではない。また、送受信されるデータパケットは、IPパケットに限定されるものではない。また、第1〜第3の実施形態では、送受信されるデータパケット内のデータブロックに含まれるパケットはMPEG2−TSパケットであるとしたが、データブロックに含まれるパケットはこれに限定されるものではない。
なお、第1の時間情報抽出部304と第2の時間情報抽出部とは、一体化され、一つの時間情報抽出部となっていてもよい。
なお、初期設定部305は、最初に受信するMPEG2−TSパケット以外のMPEG2−TSパケットに付随する第1の時間情報を用いて、タイマ部308から出力される第3の時間情報の初期値を設定してもよい。
なお、第3の実施形態における第2の時間情報比較部400および受信データ量計測部306によるクロックの周波数の制御は、第3の実施形態で示したタイミング以外で行われてもよい。
以上、本発明を詳細に説明してきたが、前述の説明はあらゆる点において本発明の例示にすぎず、その範囲を限定しようとするものではない。本発明の範囲を逸脱することなく種々の改良や変形を行うことができることは言うまでもない。
本発明に係るデータ受信装置は、データパケットに含まれるパケットの時間間隔を再現することができ、Ethernet(登録商標)やIEEE802.11等の非同期の伝送路を介してMPEG2−TS等のパケットを伝送する映像配信や映像伝送等の用途に有用である。
本発明の第1の実施形態に係るデータ送信装置1の機能的構成を示すブロック図
MPEG2−TSエンコード部100から出力される複数のMPEG2−TSパケットのデータ構造を示す図
タイムスタンプ付加部101から出力されるタイムスタンプ201が付加された複数のMPEG2−TSパケット200のデータ構造を示す図
通信プロトコル処理部104によってIPパケット化されたデータパケット(IPパケット)2のデータ構造の一例を示す図
通信プロトコル処理部104によってIPパケット化されたデータパケット(IPパケット)2aのデータ構造の他の例を示す図
本発明の第1の実施形態に係るデータ受信装置3の機能的構成を示すブロック図
データ受信装置3の動作の流れを示すフローチャート
本発明の第2の実施形態に係るデータ受信装置4の機能的構成を示すブロック図
本発明の第2の実施形態に係るデータ受信装置4の動作を示すフローチャート
本発明の第3の実施形態に係るデータ受信装置5の機能的構成を示すブロック図
第3の実施形態に係るデータ受信装置5の動作を示すフローチャート
特許文献1に記載されている従来の送信側の無線親機900の機能的構成を示すブロック図
特許文献1に記載されている従来の受信側の無線子機920の機能的構成を示すブロック図
特許文献1に記載されている従来の送信側の無線親局から送信されるデータパケット990のフレーム構造を示す図
符号の説明
1 データ送信装置
3,4,5 データ受信装置
100 MPEG2−TSエンコード部
101 タイムスタンプ付加部
102 クロック生成部
103 タイマ部
104,301 通信プロトコル処理部
105,300 通信部
200 MPEG2−TSパケット
201 タイムスタンプ
2,2a IPパケット
302 受信データバッファ部
303 MPEG2−TSデコード部
304 第1の時間情報抽出部
305 初期設定部
306 受信データ量計測部
307 可変クロック生成部
308 タイマ部
309 オフセット部
310 第2の時間情報抽出部
311 第1の時間情報比較部
312 時間情報出力部
400 第2の時間情報比較部
500 切り替え制御部