JP2007082045A - 通信装置、その通信方法、通信プログラム及び通信プログラムを記録したコンピュータ読み取り可能な記録媒体 - Google Patents

通信装置、その通信方法、通信プログラム及び通信プログラムを記録したコンピュータ読み取り可能な記録媒体 Download PDF

Info

Publication number
JP2007082045A
JP2007082045A JP2005269638A JP2005269638A JP2007082045A JP 2007082045 A JP2007082045 A JP 2007082045A JP 2005269638 A JP2005269638 A JP 2005269638A JP 2005269638 A JP2005269638 A JP 2005269638A JP 2007082045 A JP2007082045 A JP 2007082045A
Authority
JP
Japan
Prior art keywords
buffer
amount
clock
reception
capture
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2005269638A
Other languages
English (en)
Other versions
JP4597826B2 (ja
Inventor
Tomofumi Kariya
友史 苅谷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toa Corp
Original Assignee
Toa Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toa Corp filed Critical Toa Corp
Priority to JP2005269638A priority Critical patent/JP4597826B2/ja
Publication of JP2007082045A publication Critical patent/JP2007082045A/ja
Application granted granted Critical
Publication of JP4597826B2 publication Critical patent/JP4597826B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)
  • Communication Control (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Abstract

【課題】 本発明は、双方向通信を安定に行うことができる通信装置を提供することを目的とする。
【解決手段】 通信網を介し、送信情報を含む複数のパケットを、相手方の通信装置から順次受信する受信部41と、複数のパケットに含まれる符号化データを蓄積する受信バッファ43と、送受信処理の時間を制御する基準クロックを発生させる基準クロック発生部84と、基準クロックに基づいて第1読出クロックを発生する制御クロック発生部84と、第1読出クロックに従って、符号化データを受信バッファから読み出して復号化する復号化部47と、所定数k(k≧2)個のパケットを受信するのに要する理論時間Trstdと、k個のパケットを受信手段が受信するのに要する受信間隔ΔTrとのずれ時間を算出するずれ時間算出部81とを含み、制御クロック発生部84又は受信バッファ量読出制御部61はずれ時間の調整を行う。
【選択図】 図4

Description

本発明は、通信装置、その通信方法、通信プログラム及び通信プログラムを記録したコンピュータ読み取り可能な記録媒体に関する。
LANなどのネットワーク上でのディジタルデータ通信システムでは、テキストや静止画像だけでなく、音声や動画像などのデータをパケット化して通信を行う。ディジタル通信及び再生方式の1つに、データの最後までの受信を待たずに再生する「ストリーミング再生方式」がある。ストリーミング再生方式では、相手方の通信装置と自身の通信装置との間で音声や動画像をリアルタイムに伝送する方式である。特許文献1には、このような再生方式において安定した再生が可能な受信装置が開示されている。特許文献1の受信装置には、データを一時的に蓄積する受信バッファ、データを蓄積する再生バッファ、受信バッファから受信データ読み出して再生バッファに書き込む書込制御手段及び受信データの破棄手段が設けられている。破棄手段は、受信バッファ量及び再生バッファ量を監視することにより、パケットの受信遅延や受信装置での処理遅延を判定する。そして、破棄手段は、判定結果に基づいて受信したデータを破棄する。このように受信遅延や処理遅延に応じてデータ量の補正を行うことで、リアルタイム通信において送受信されるデータを安定に再生することができる。
特許文献2には、音切れの防止が可能なパケット処理装置が開示されている。特許文献2のパケット処理装置は、受信パケットを格納する受信バッファ、受信バッファを再生クロックに基づいて再生する再生手段及び再生処理を制御する制御手段を含む。ここで、制御手段は、受信バッファの状態を監視して状態に応じて再生処理を行う。これにより、ネットワークのジッタ、もしくは通信端末間の基準クロックの偏差によるオーバーフロー、アンダーフローが生じても最適な再生処理を行うことができる。
特開2001-045065号公報 特開2004-289683号公報
しかし、上記特許文献1及び特許文献2は、ネットワークの揺らぎなどによるパケットの受信遅延、受信装置での受信処理の遅延や相手方の通信装置との基準クロックの偏差がある場合でもパケットの受信・再生処理を安定に行うことを対象にしているのみである。つまり、受信・再生処理のみを対象にしており、相手方の通信装置にパケットを送信するキャプチャ・送信処理については何ら記載されていない。この場合、相手方の通信装置との間の双方向通信において、お互いの通信装置内のそれぞれの受信装置が、受信・再生処理を調整すれば双方向の通信を安定に行うことも可能となり得る。つまり、お互いの通信装置が受信・再生処理のみを調整すれば、送信処理を調整しないくても双方向通信を安定にし得る。しかし、このような方法では、互いの通信装置の両方ともが同様の受信・再生処理を行えなければ、双方向通信を安定に行うことができない。
そこで、本発明は、双方向通信を安定に行うことができる通信装置を提供することを目的とする。
本願第1発明は、相手方の通信装置に通信網を介して接続される通信装置を提供する。この通信装置は、前記通信網を介し、パケットの送信に関連する送信情報を含む複数のパケットを、前記相手方の通信装置から順次受信する受信手段と、前記複数のパケットそれぞれに含まれる符号化データを一時的に蓄積する受信バッファと、前記通信装置内で行われる送受信処理の時間を制御するクロックであり、所定時間間隔の周期を有する基準クロックを発生させる基準クロック発生手段と、前記基準クロックに基づいて第1読出クロックを発生する第1読出クロック発生手段と、前記第1読出クロックに従って、前記符号化データを前記受信バッファから読み出し、ディジタルデータに復号化する復号化手段と、前記送信情報に基づいて前記k個のパケットを受信するのに要する理論時間Trstdを取得する理論時間取得手段と、前記k個のパケットを前記受信手段が受信するのに要する受信間隔ΔTrを、前記基準クロックに基づいて取得する受信間隔取得手段と、前記理論時間Trstdと前記受信間隔ΔTrとのずれ時間を算出するずれ時間算出手段と、前記ずれ時間に応じて前記基準クロックの調整又は前記受信バッファからの読出量を調整する第1調整手段とを含む。
ここで、パケットの送信に関連する送信情報とは、パケットのシーケンシャル番号やパケットの送信間隔を含む情報である。また、パケットの送信間隔とは、相手方の通信装置によるパケットの送信間隔そのもの、あるいは何個のパケットをどのような送信間隔で送信するかなどに関する情報である。また、相手方の通信装置は自分の基準クロックに基づく送信間隔でパケットを送信している。一方の通信装置は、この送信間隔を例えば相手方の通信装置との通信開始時に受信し、k個のパケットを受信するのに要する理論時間Trstdを取得する。さらに、一方の通信装置は、自分の基準クロックに基づいてk個のパケットを受信するのに要する受信間隔ΔTrを取得し、受信間隔ΔTrと理論時間Trstdとのずれ時間Δtを算出する。ここで、受信間隔ΔTrは一方の通信装置の基準クロックに基づいて測定されており、理論時間Trstdは相手方の通信装置の基準クロックに基づいている。そのため、受信間隔ΔTrと理論時間Trstdとのずれ時間Δtから互いの通信装置の基準クロックのずれを算出することができる。そして、一方の通信装置は、このずれ時間Δtがなくなるように自身の基準クロック自体を調整又は受信バッファからの読出量を調整する。以上のような処理により、受信処理における相手方の通信装置との基準クロックのずれをなくし、受信バッファにおけるオーバーフローやアンダーフローを防止し、再生されるデータの品質を高めることができる。
なお、基準クロック自体の調整によりずれ時間Δtの調整を行う場合は、基準クロック自体の調整によりまず第1読出クロックを調整する。そして、これにより受信バッファに蓄積されていくデータ量と受信バッファから読み出されるデータ量とのバランスをとり受信バッファ量を調整する。また、受信バッファからの読出量の調整によりずれ時間Δtの調整を行う場合は、次のような手順により調整を行う。第1読出クロックは基準クロックに基づいて生成されているため、基準クロックがずれ時間Δt分ずれている場合は、第1読出クロックもずれ時間Δt分ずれる。ここで、受信バッファは、相手方の基準クロックに応じてデータを受信して蓄積していくため、第1読出クロックが相手方の基準クロックとずれていると、受信バッファ量がずれ時間分だけ増減してしまう。そこで、上記のように受信バッファからの読出量を基準クロックのずれ時間Δtに応じて調整することで、受信バッファ量を調整する。以上のような処理により相手方の通信装置との基準クロックのずれをなくすことができる。
また、通信装置は、受信側処理だけでなく送信側処理も可能であり、相手方の通信装置と双方向通信を行うことが可能である。このような双方向通信が可能な通信装置は、受信側処理を行う受信機能部と送信側処理を行う送信機能部とが通信装置内に設けられている。そして、受信機能部には、受信したデータを蓄積する受信バッファ及び再生するデータを蓄積する再生バッファが設けられている。一方、送信機能部には、キャプチャしたデータを蓄積するキャプチャバッファ及び送信するデータを蓄積する送信バッファが設けられている。上述の通り基準クロックは送受信処理を制御するクロックであり、具体的には受信側処理においては受信バッファからデータを読み出す第1読出クロックが基準クロックに基づいて生成されている。また、送信側処理においては、キャプチャバッファからデータを読み出す第2読出クロック及び送信バッファからデータを読み出す送信クロックが基準クロックに基づいて生成されている。このように基準クロックに基づいて送受信処理が制御されている場合には、受信側処理及び送信側処理をともに相手方の基準クロックに合わせて行うことができる。以下に具体的に説明する。
一方の通信装置は、受信側処理については、まず相手方との基準クロックのずれ時間Δtに基づいて基準クロック自体を調整するか、あるいはずれ時間Δtに基づいて受信バッファからの読出量を調整する。これにより、受信バッファからデータを読み出して再生バッファに書き込む処理において、相手方の基準クロックとのずれをなくす。また、再生バッファからのデータの読み出しスピード、つまり再生スピードは、再生バッファ量を監視して調整する。再生スピードの調整方法としては、例えば、再生バッファからデータを読み出してD/A変換を行うための再生クロックの調整、再生周波数の調整又は受信バッファから読み出したデータの間引き・補完等が挙げられる。これにより、受信側処理において、相手方の通信装置との基準クロックのずれをなくすことができる。
一方、送信側処理については、同様に相手方との基準クロックのずれ時間Δtに基づいて基準クロック自体を調整するか、あるいはずれ時間Δtに基づいて送信バッファからの読出量を調整するとともにキャプチャバッファからの読出量を調整する。これにより、キャプチャバッファからデータを読み出して送信バッファに書き込む処理、送信バッファから読み出したデータをパケット化して送信する処理において、相手方の基準クロックとのずれをなくす。また、キャプチャバッファでデータをキャプチャするスピード、つまりキャプチャスピードは、キャプチャバッファ量を監視して調整する。キャプチャスピードの調整方法としては、例えば、受信したアナログデータをA/D変換するためのキャプチャクロックの調整、キャプチャ周波数の調整又は取得したデータの間引き・補完等が挙げられる。これにより送信側処理において、相手方の通信装置との基準クロックのずれをなくすことができる。よって、受信側処理及び送信側処理をともに相手方の通信装置の基準クロックに合わせることができる。そのため、双方向通信におけるリアルタイム通信の品質を高めることができる。
上述のように、受信側処理の第1読出クロック、送信側処理の送信クロック及び第2読出クロックが同一の基準クロックに基づいて形成されている。よって、自分の基準クロックと相手方の通信装置の基準クロックとのずれ時間Δtが分かれば、受信機能部と送信機能部とが別個独立してずれ時間Δtの調整が可能である。つまり、受信側処理では、受信バッファからの読出処理においてずれ時間Δtを補正する処理を行う。これにより、相手方の基準クロックに適合するように再生バッファにデータが格納されていき、そのときの再生バッファ量に応じて再生スピードを調整する。送信側処理では、送信バッファからのパケットの送信処理及びキャプチャバッファからのデータの読出処理においてずれ時間Δtを補正する処理を行う。これにより相手方の基準クロックに適合するようにパケットが送信されるとともにキャプチャバッファからデータが読み出されていき、そのときのキャプチャバッファ量に応じてキャプチャスピードを調整する。このような方法によれば、再生クロックとキャプチャクロックとが異なるような例えばノートパソコンなどの通信装置においても、受信側処理及び送信側処理をともに相手方の通信装置の基準クロックに合わせることができ、多様な再生環境やキャプチャ環境においても双方向通信の品質を高めることができる。
また、双方向通信において一方の通信装置が受信側処理及び送信側処理をともに調整するため、相手方がどのような通信装置であっても双方向通信を安定に行うことができる。例えば、相手方の通信装置がクロック調整が不可能な端末や、他の通信装置の基準クロックとなるような装置であるためにクロック調整を行いたくない端末などの場合であっても、一方の通信装置により安定に双方向通信が可能である。具体的に、相手方の通信装置が自分の基準クロックでパケットを送信すれば、一方の通信装置が相手方の基準クロックとのずれを修正して、修正後の基準クロックにより相手方にパケットを送信する。そのため、相手方の通信装置は、自分の基準クロックに適合した間隔でパケットを受信することができるようになる。よって、相手方の通信装置は、基準クロックのずれを調整するなどの処理を行う必要がなくなる。
さらに、パケットの受信間隔は、一方の通信装置側で取得した受信時刻に基づいて算出される。よって、相手方の通信装置から一方の通信装置に、パケットそれぞれの送信時刻を送信する必要がない。そのため、送信するパケットのパケット構成を簡略化し、パケットのデータ量を削減することで、パケットの伝送効率の向上や使用する帯域幅を減少することができる。
本願第2発明は、第1発明において、所定時間間隔の周期を有するキャプチャクロックに基づいて、アナログデータをディジタルデータに変換する第2変換手段と、前記第2変換手段で変換されたディジタルデータを一時的に蓄積するキャプチャバッファと、前記基準クロックに基づいて第2読出クロックを発生する第2読出クロック発生手段と、前記第2読出クロックに従って、前記ディジタルデータを前記キャプチャバッファから読み出し、符号化データに符号化する符号化手段と、前記符号化手段で符号化された符号化データを一時的に蓄積する送信バッファと、前記基準クロックに基づいて送信クロックを発生する送信クロック発生手段と、前記送信クロックに基づいて、前記送信バッファから符号化データを読み出してパケットを構成し、前記相手方の通信装置に送信する送信手段と、をさらに含む、通信装置を提供する。
キャプチャバッファからのディジタルデータの読み出しは第2読出クロックに基づいて行われ、送信バッファからの符号化データの読み出し及びパケットの送信は送信クロックに基づいて行われる。この第2読出クロック及び送信クロックは基準クロックに基づいて生成されており、前述の第1調整手段によりずれ時間Δtに応じて基準クロック自体を調整することで、これらのクロックも相手方の基準クロックとのずれがなくなるように調整される。よって、受信側処理及び送信側処理をともに相手方の通信装置の基準クロックに合わせることができ、双方向通信におけるリアルタイム通信の品質を高めることができる。また、双方向通信において一方の通信装置が受信側処理及び送信側処理をともに調整するため、相手方がどのような通信装置であっても双方向通信を安定に行うことができる。さらに、相手方の通信装置が自分の基準クロックでパケットを送信すれば、一方の通信装置が相手方の基準クロックとのずれを修正して、修正後の基準クロックにより相手方にパケットを送信する。そのため、相手方の通信装置は、自分の基準クロックに適合した間隔でパケットを受信することができるようになる。よって、相手方の通信装置は、基準クロックのずれを調整するなどの処理を行う必要がなくなる。
また、パケットの受信間隔は、一方の通信装置側で取得した受信時刻に基づいて算出されるため、相手方の通信装置はパケットごとに送信時刻を送信する必要が無い。そのため、送信するパケットのパケット構成を簡略化し、パケットのデータ量を削減することで、パケットの伝送効率の向上や使用する帯域幅を減少することができる。
本願第3発明は、第2発明において、前記ずれ時間Δtに応じて前記送信バッファからの読出量を調整する第2調整手段をさらに含む、通信装置を提供する。
送信クロックが基準クロックに基づいて生成されているため、相手方の通信装置に対して基準クロックのずれ時間Δtがある場合は、送信クロックも相手方の基準クロックからずれる。そこで上記のように、送信バッファから送信するデータ量を基準クロックのずれ時間Δtに応じて調整することで、送信処理における相手方の通信装置との基準クロックのずれをなくすことができる。具体的には、送信バッファから送信するパケット数を調整する。よって、双方向通信におけるリアルタイム通信の品質を高めることができる。また、双方向通信において一方の通信装置が受信側処理及び送信側処理をともに調整するため、相手方がどのような通信装置であっても双方向通信を安定に行うことができる。このとき、相手方の通信装置は自分の基準クロックに適合した受信間隔でパケットを受信することができるようになる。また、パケットの受信間隔は、一方の通信装置側で取得した受信時刻に基づいて算出されるため、相手方の通信装置はパケットごとに送信時刻を送信する必要が無い。そのため、送信するパケットのパケット構成を簡略化し、パケットのデータ量を削減することで、パケットの伝送効率の向上や使用する帯域幅を減少することができる。
また、上記方法は、ずれ時間Δtを基準クロック自体により調整できない場合などにおいて、送信バッファから送信するデータの送信量により基準クロックのずれ時間Δtを調整できる点で有効な方法である。
本願第4発明は、第3発明において、前記ずれ時間Δtに応じて前記キャプチャバッファからの読出量を調整する第3調整手段をさらに含む、通信装置を提供する。
第2読出クロックが基準クロックに基づいて生成されているため、相手方の通信装置に対して基準クロックのずれ時間Δtがある場合は、第2読出クロックも相手方の基準クロックからずれる。そのため、キャプチャバッファから読み出され送信バッファに書き込まれるデータ量がずれ時間Δt分だけずれる。そこで上記のように、キャプチャバッファから読み出すデータ量を基準クロックのずれ時間Δtに応じて調整することで、キャプチャバッファからの読み出し処理における相手方の通信装置との基準クロックのずれをなくすことができる。
また、上記方法は、ずれ時間Δtを基準クロック自体により調整できない場合などにおいて、キャプチャバッファからの読出量により基準クロックのずれ時間Δtを調整できる点で有効な方法である。
本願第5発明は、第2発明において、前記キャプチャバッファに蓄積されているディジタルデータ量(以下、キャプチャバッファ量という)を監視するキャプチャバッファ量監視手段をさらに含み、前記キャプチャバッファ量を参照して前記キャプチャバッファ量を所定量に調整する第4調整手段とをさらに含む、通信装置を提供する。
ずれ時間Δtを調整することにより、キャプチャバッファから読み出したデータの送信バッファへの書き込みや送信バッファからのパケットの送信は、相手方の通信装置の基準クロックに適合するように行われる。ここで、キャプチャバッファ量を所定量にするように調整することで、キャプチャバッファへのデータの蓄積量を制御する。これにより、キャプチャスピードを相手方の基準クロックに対応するように調整することができる。キャプチャスピードの調整としては、例えばキャプチャクロックの調整、キャプチャ周波数の調整及び取得したデータの間引き・補完等が挙げられる。
また、キャプチャバッファ量を監視することで、キャプチャバッファにおけるオーバーフローやアンダーフローを防止することができる。例えば、通信装置においては、キャプチャバッファへのデータの書き込み処理であるキャプチャ処理自体が遅延したりすることにより、キャプチャバッファ量の急な増減が生じる場合がある。このような状況が生じた場合であっても、キャプチャバッファ量を参照して読出量を調整することで、キャプチャバッファ量を適正に保つことができる。特に、通信装置に複数の機能が搭載されているようなマルチタスク環境においては、通信装置内での処理が一定間隔で行われないことがある。上記構成によれば、このようなマルチタスク環境であっても、キャプチャバッファ量を一定に保ちキャプチャ処理や送信処理を安定に行うことができる。
本願第6発明は、第5発明において、前記第4調整手段は、前記キャプチャバッファ量が所定量になるように前記キャプチャクロックを調整する、通信装置を提供する。
アナログデータをキャプチャしてA/D変換するタイミングであるキャプチャクロックを、キャプチャバッファ量が所定量になるように調整することで、相手方の基準クロックに応じたキャプチャスピードに調整することができる。
本願第7発明は、第5発明において、前記第4調整手段は、前記キャプチャバッファ量が所定量になるように前記第2変換手段でのアナログデータのサンプリング周波数を調整する、通信装置を提供する。
第2変換手段でのアナログデータのサンプリング量、つまりキャプチャ周波数を、キャプチャバッファ量が所定量になるように調整することで、相手方の基準クロックに応じたキャプチャスピードに調整することができる。
本願第8発明は、第5発明において、前記第4調整手段は、前記キャプチャバッファ量が所定量になるように、前記第2変換手段による変換後のディジタルデータの間引き量及び補完量を決定し、決定された間引き量及び補完量に基づいて、前記ディジタルデータを間引き又は補完する第2間引き・補完手段をさらに含み、前記キャプチャバッファは、間引き又は補完されたディジタルデータを一時的に蓄積する、通信装置を提供する。
キャプチャバッファに入力されるデータを間引き・補完することにより、キャプチャバッファ量が所定量になるように調整する。これにより、相手方の基準クロックに応じたキャプチャスピードに調整することができる。
本願第9発明は、第2発明において、前記ずれ時間Δtと、前記基準クロック及び前記キャプチャクロックの関係とに応じてキャプチャクロックを調整するキャプチャクロック調整手段をさらに含む、通信装置を提供する。
例えばまず、調整前の基準クロックと調整前のキャプチャクロックとの関係を算出しておく。次に、ずれ時間Δtに応じて基準クロック自体を調整し、さらに調整後の基準クロックとキャプチャクロックとが算出した関係となるようにキャプチャクロックを調整する。また、ずれ時間Δt、及び調整前の基準クロックとキャプチャクロックとの関係に基づいて一度にキャプチャクロックを調整しても良い。これにより、相手方の基準クロックに対応したキャプチャクロックを生成することができる。このキャプチャクロックでA/D変換を行うことで、キャプチャスピードを相手方の基準クロックに合わせることができる。
本願第10発明は、第1発明において、前記受信バッファに蓄積されている符号化データ量(以下、受信バッファ量という)を監視する受信バッファ量監視手段をさらに含み、
前記第1調整手段は、前記受信バッファ量を参照して前記受信バッファからの読出量を調整する、通信装置を提供する。
受信バッファは、相手方の基準クロックに応じて受信したデータを蓄積していくため、第1読出クロックが相手方の基準クロックとずれていると、受信バッファから読み出されるデータ量がずれ時間Δt分だけずれる。そこで、上記のように受信バッファからの読出量を基準クロックのずれ時間Δtに応じて調整することで、相手方の通信装置との基準クロックのずれをなくすことができる。また、上記方法は、ずれ時間Δtを基準クロック自体により調整できない場合などにおいて、受信バッファからの読出量により基準クロックのずれ時間Δtを調整できる点で有効な方法である。
また、ずれ時間Δtが調整された第1読出クロックに基づいて受信バッファからデータを読み出していても、ネットワークのゆらぎ等によりパケットの到着が遅れたり、パケットは到着しているがパケットの受信処理が遅れるなどの状況により受信バッファ量が不安定となる場合がある。受信バッファ量を参照して受信バッファからの読出量を調整することで、このような状況が生じた場合であっても受信バッファ量を適正に保つことができる。よって、受信バッファにおけるオーバーフローやアンダーフローをさらに防止し、再生されるデータの品質を高めることができる。特に、上記構成によれば、通信装置内での処理が一定間隔で行われない可能性のあるマルチタスク環境であっても、受信バッファ量を一定に保つことができる。
本願第11発明は、第1発明において、前記復号化手段で復号化されたディジタルデータを一時的に蓄積する再生バッファと、所定時間間隔の周期を有する再生クロックに基づいて、前記再生バッファからディジタルデータを読み出し、アナログデータに変換する第1変換手段と、をさらに含む通信装置を提供する。
受信バッファ及び再生バッファをともに設けることで、再生バッファへの書き込み間隔を調整することができる。例えば、パケットの受信間隔は2msであるが、再生バッファへの書き込み間隔を8msとする場合には、パケット4つ分を1グループとして受信バッファに蓄積しておき、1グループ毎に再生バッファへ書き込む。特に、再生バッファへの書き込み間隔に制限がかかった場合には、受信したデータを直接再生バッファに書き込むことができない場合がある。このような場合に受信したデータを一旦受信バッファに蓄積しておき、その後再生バッファに書き込むなどの処理を行うことができる。
本願第12発明は、第11発明において、前記再生バッファに蓄積されているディジタルデータ量(以下、再生バッファ量という)を監視する再生バッファ量監視手段と、前記再生バッファ量を参照して前記再生バッファ量を所定量に調整する第5調整手段とをさらに含む、通信装置を提供する。
第1読出クロックの調整又は受信バッファからの読出量の調整により、再生バッファには相手方の通信装置の基準クロックに基づいてディジタルデータが書き込まれる。この再生バッファを所定量に調整することにより、再生バッファから読み出されていくデータ量を調整する。これにより、再生スピードを相手方の基準クロックに対応するように調整することができる。再生スピードの調整としては、例えば再生クロックの調整、再生周波数の調整及び受信バッファから読み出したデータの間引き・補完等が挙げられる。
また、再生バッファ量を監視することで、再生バッファにおけるオーバーフローやアンダーフローを防止し、再生されるデータの品質を高めることができる。例えば、通信装置においては、再生バッファへのデータの書き込み処理である再生処理自体が遅延したりする場合がある。このような状況が生じた場合であっても、再生バッファ量を参照して読出量を調整することで、再生バッファ量を適正に保つことができる。特に、通信装置に複数の機能が搭載されているために通信装置内での処理が一定間隔で行われない場合があるマルチタスク環境であっても、再生バッファ量を一定に保ち再生処理を安定に行うことができる。
本願第13発明は、第12発明において、前記第5調整手段は、前記再生バッファ量が所定量になるように前記再生クロックを調整する、通信装置を提供する。
再生バッファからの読み出しタイミングである再生クロックを、再生バッファ量が所定量になるように調整することで、相手方の基準クロックに応じた再生スピードに調整することができる。
本願第14発明は、第12発明において、前記第5調整手段は、前記再生バッファ量が所定量になるように前記再生バッファからのディジタルデータのサンプリング周波数を調整する、通信装置を提供する。
再生バッファからのディジタルデータのサンプリング量、つまり再生周波数を、再生バッファ量が所定量になるように調整することで、相手方の基準クロックに応じた再生スピードに調整することができる。
本願第15発明は、第12発明において、前記第5調整手段は、前記再生バッファ量が所定量になるように、前記復号化手段による復号化後のディジタルデータの間引き量及び補完量を決定し、
決定された間引き量及び補完量に基づいて、前記ディジタルデータを間引き又は補完する第1間引き・補完手段をさらに含み、
前記再生バッファは、間引き又は補完されたディジタルデータを一時的に蓄積する、通信装置を提供する。
受信バッファから読み出された符号化データを間引き・補完することにより、再生バッファ量が所定量になるように調整する。これにより、相手方の基準クロックに応じた再生スピードに調整することができる。
本願第16発明は、第11発明において、前記ずれ時間Δtと、前記基準クロック及び前記再生クロックの関係とに応じて再生クロックを調整する再生クロック調整手段をさらに含む、通信装置を提供する。
調整前の基準クロックと調整前の再生クロックとの関係を算出しておく。次に、ずれ時間Δtに応じて基準クロック自体を調整し、さらに調整後の基準クロックと再生クロックとが算出した関係となるように再生クロックを調整する。また、ずれ時間Δt、及び調整前の基準クロックと再生クロックとの関係に基づいて一度に再生クロックを調整しても良い。これにより、相手方の基準クロックに対応した再生クロックを生成することができる。この再生クロックで再生バッファからの読み出しを行うことで、相手方の基準クロックに応じた再生スピードで再生することができる。
本願第17発明は、第10発明において、前記復号化手段で復号化されたディジタルデータを一時的に蓄積する再生バッファと、前記再生バッファに蓄積されているディジタルデータ量(以下、再生バッファ量という)を監視する再生バッファ量監視手段をさらに含み、前記第1調整手段は、さらに前記再生バッファ量監視手段から再生バッファ量を取得し、さらに前記再生バッファ量を参照して前記受信バッファからの読出量を調整する、通信装置を提供する。
受信バッファ量だけでなく再生バッファ量を参照して受信バッファ量を調整するため、受信バッファのみならず再生バッファにおけるオーバーフローやアンダーフローをさらに防止し、再生されるデータの品質を高めることができる。
本願第18発明は、相手方の通信装置に通信網を介して接続される通信装置における通信方法であって、前記通信網を介し、パケットの送信に関連する送信情報を含む複数のパケットを、前記相手方の通信装置から順次受信する受信ステップと、前記複数のパケットそれぞれに含まれる符号化データを一時的に蓄積する受信バッファと、前記通信装置内で行われる送受信処理の時間を制御するクロックであり、所定時間間隔の周期を有する基準クロックを発生させる基準クロック発生ステップと、前記基準クロックに基づいて第1読出クロックを発生する第1読出クロック発生ステップと、前記第1読出クロックに従って、前記符号化データを前記受信バッファから読み出し、ディジタルデータに復号化する復号化ステップと、前記送信情報に基づいて所定数k(k≧2)個のパケットを受信するのに要する理論時間Trstdを取得する理論時間取得ステップと、前記受信ステップにおいて前記k個のパケットを受信するのに要する受信間隔ΔTrを、前記基準クロックに基づいて取得する受信間隔取得ステップと、前記理論時間Trstdと前記受信間隔ΔTrとのずれ時間を算出するずれ時間算出ステップと、前記ずれ時間に応じて前記基準クロックの調整又は前記受信バッファからの読出量を調整する第1調整ステップと、を含む通信方法を提供する。
この通信方法は、本願第1発明と同様の作用効果を奏する。
本願第19発明は、相手方の通信装置に通信網を介して接続される通信装置が実行する通信プログラムであって、前記通信網を介し、パケットの送信に関連する送信情報を含む複数のパケットを、前記相手方の通信装置から順次受信する受信手段、前記複数のパケットそれぞれに含まれる符号化データを一時的に蓄積する受信バッファ、前記通信装置内で行われる送受信処理の時間を制御するクロックであり、所定時間間隔の周期を有する基準クロックを発生させる基準クロック発生手段、前記基準クロックに基づいて第1読出クロックを発生する第1読出クロック発生手段、前記第1読出クロックに従って、前記符号化データを前記受信バッファから読み出し、ディジタルデータに復号化する復号化手段、前記送信情報に基づいて所定数k(k≧2)個のパケットを受信するのに要する理論時間Trstdを取得する理論時間取得手段、前記k個のパケットを前記受信手段が受信するのに要する受信間隔ΔTrを、前記基準クロックに基づいて取得する受信間隔取得手段、前記理論時間Trstdと前記受信間隔ΔTrとのずれ時間を算出するずれ時間算出手段、及び前記ずれ時間に応じて前記基準クロックの調整又は前記受信バッファからの読出量を調整する第1調整手段、として通信装置を機能させる通信プログラムを提供する。
この通信プログラムは、本願第1発明と同様の作用効果を奏する。
本願第20発明は、相手方の通信装置に通信網を介して接続される通信装置が実行する通信プログラムを記録した、コンピュータ読み取り可能な記録媒体であって、前記通信網を介し、パケットの送信に関連する送信情報を含む複数のパケットを、前記相手方の通信装置から順次受信する受信ステップと、前記複数のパケットそれぞれに含まれる符号化データを一時的に蓄積する受信バッファと、前記通信装置内で行われる送受信処理の時間を制御するクロックであり、所定時間間隔の周期を有する基準クロックを発生させる基準クロック発生ステップと、前記基準クロックに基づいて第1読出クロックを発生する第1読出クロック発生ステップと、前記第1読出クロックに従って、前記符号化データを前記受信バッファから読み出し、ディジタルデータに復号化する復号化ステップと、前記送信情報に基づいて所定数k(k≧2)個のパケットを受信するのに要する理論時間Trstdを取得する理論時間取得ステップと、前記受信ステップにおいて前記k個のパケットを受信するのに要する受信間隔ΔTrを、前記基準クロックに基づいて取得する受信間隔取得ステップと、前記理論時間Trstdと前記受信間隔ΔTrとのずれ時間を算出するずれ時間算出ステップと、前記ずれ時間に応じて前記基準クロックの調整又は前記受信バッファからの読出量を調整する第1調整ステップと、を含む通信プログラムを記録した、コンピュータ読み取り可能な記録媒体を提供する。
この記録媒体は、本願第1発明と同様の作用効果を奏する。
本発明を用いれば、相手方の通信装置との基準クロックのずれを補正して、双方向通信を安定に行うことができる通信装置を提供することができる。
<発明の概要>
(1)構成
図1は本発明の通信装置内での処理を制御するクロックを説明するための説明図である。一方の通信装置Aと相手方の通信装置Bとの間でパケットの送受信を行い、双方向通信を行っている。通信装置Aは、キャプチャ・送信処理を行う送信機能部1、受信・再生処理を行う受信機能部2、基準クロック発生部5及び制御クロック発生部6を含む。基準クロック発生部5は通信装置Aの送受信処理を制御する基準クロックを発生し、制御クロック発生部6は基準クロックに基づいて制御クロックを発生する。ここで、制御クロックとは、少なくとも第1読出クロック、第2読出クロック及び送信クロック(図1中イタリック体で記載された3つのクロック)を含む。つまり、少なくとも第1読出クロック、第2読出クロック及び送信クロックは基準クロックに基づいて生成される。
また、受信機能部2は受信バッファ9及び再生バッファ10を含み、送信機能部1はキャプチャバッファ7及び送信バッファ8を含む。受信バッファ9は、相手方の通信装置Bから受信したパケットから取得したデータを一時的に蓄積する。受信バッファ9からは第1読出クロックに基づいてデータが読み出される。再生バッファ10は、第1読出クロックに基づいて受信バッファから読み出されたデータが書き込まれ蓄積される。そして、再生バッファ10内に蓄積されたデータは、再生クロックに基づいて読み出されスピーカー等を介して出力される。送信機能部1のキャプチャバッファ7は、送信機能部1がキャプチャクロックに基づいて取得したデータを一時的に蓄積する。キャプチャバッファ7からは第2読出クロックに基づいてデータが読み出される。送信バッファ8は、第2読出クロックに基づいてキャプチャバッファから読み出されたデータが書き込まれ蓄積される。そして、送信バッファ8内に蓄積されたデータは、送信クロックに基づいて読み出され相手方の通信装置Bに出力される。
なお、上記では第1読出クロック、第2読出クロック及び送信クロックのみが基準クロックに基づいて生成される制御クロックとしているが、さらに再生クロック及びキャプチャクロックもまた、基準クロックに基づいて生成される制御クロックとしても良い。
(2)基準クロックのずれ時間Δtの調整
相手方の通信装置Bは、自分の基準クロックに基づく送信クロックで通信装置Aにパケットを送信している。よって、通信装置Aは、相手方の通信装置Bの基準クロックに基づく送信クロックでパケットを受信して受信バッファ9に蓄積している。ここで、通信装置Aと通信装置Bとの基準クロックとにずれがある場合は、受信バッファ9内のデータ量が不安定となり受信機能部2において安定に出力することができない。そこで、通信装置Aは、自身の基準クロックと相手方の通信装置Bの基準クロックとのずれ時間Δtを算出して、ずれ時間Δtをなくすように基準クロック自体の調整又は受信バッファからのデータの読出量を調整する。
図2は、通信装置間の基準クロックのずれ時間Δtの算出方法を説明するための説明図である。図2に示すように、通信装置Aの基準クロックCLKaのクロック間隔Δaと通信装置Bの基準クロックCLKbのクロック間隔Δbとがずれている。
通信装置Aは、例えば通信装置Bとの通信開始時に通信装置Bによるパケットの送信に関連する送信情報を取得している。ここで、パケットの送信に関連する送信情報とは、パケットのシーケンシャル番号やパケットの送信間隔を含む情報である。また、パケットの送信間隔とは、相手方の通信装置のパケットの送信間隔そのもの、あるいは何個のパケットをどのような送信間隔で送信するかなどに関する情報などである。具体的に例を挙げると、通信装置A及びB間での通信開始時に、通信装置Aは、相手方の通信装置Bからデータのサンプリング周波数と、1パケットのデータサイズと、1サンプルあたりのバイト数smpと圧縮方式などを示すデータフォーマットとを送信情報として受信しているとする。例えば、サンプリング周波数が32kHz、1パケットのデータサイズが256バイト、データフォーマットが1サンプルあたり2バイトで圧縮無しである場合、パケット送信間隔は次のように算出される。
パケット送信間隔=(1パケットのデータサイズ)/(サンプリング周波数×1サンプルあたりのデータ数)
=256/(32000×2)=4ms
通信装置Aは、例えばパケット100個を受信するのに要する理論時間Trstdを、通信装置Bからのパケットの送信間隔に基づいて算出する。次に、通信装置Aは、実際にパケット100個を受信するに要した受信時間ΔTrを測定する。ここで、通信装置Aは、受信時間ΔTrを自分の基準クロックCLKaに基づいて取得している。一方、理論時間はTrstdは、相手方の通信装置Bのパケットの送信間隔に基づいて算出しているため、通信装置Bの基準クロックCLKbに基づいている。よって、受信間隔ΔTrと理論時間Trstdとの差分を算出することで、通信装置Aと相手方の通信装置Bとの基準クロックのずれ時間Δtを算出することができる。
次に、通信装置Aは、このずれ時間Δtがなくなるように自身の基準クロック自体を調整又は受信バッファ9からの読出量を調整する。ここで、基準クロック発生部5において、ずれ時間Δtに応じて通信装置Aの基準クロック自体を調整すれば、制御クロック発生部6は調整された基準クロックに基づいて制御クロックを調整することができる。よって、第1読出クロック、第2読出クロック及び送信クロックについて、通信装置Bの基準クロックとのずれ時間Δtをなくすことができる。つまり、受信側処理においては、受信バッファ9からのデータの読み出しおよび再生バッファ10へのデータの書き込みを通信装置Bの基準クロックに合わせることができる。同様に、送信側処理においては、キャプチャバッファ7からのデータの読み出し、送信バッファ8へのデータの書き込み及び送信バッファ8からのパケットの送信を通信装置Bの基準クロックに合わせることができる。
(3)再生スピードの調整
次に、再生バッファ10からのデータの出力処理における通信装置Bの基準クロックとのずれ時間Δtを調整する方法について説明する。
前述のずれ時間Δtの調整により第1読出クロックを相手方の通信装置Bの基準クロックに合わせることができる。よって、再生バッファ10には、相手方の通信装置の基準クロックに基づいて受信バッファから読み出されたデータが書き込まれる。ここで、通信装置Aは、再生バッファ10内のデータ量を所定量に調整する。つまり、再生バッファ10から読み出されていくデータ量を調整することで再生スピードを調整する。これにより、再生スピードを相手方の基準クロックに対応するように調整することができる。再生スピードの調整としては、例えば再生クロックの調整、再生周波数の調整及び受信バッファ9から読み出したデータの間引き・補完等が挙げられる。
(4)キャプチャスピードの調整
次に、キャプチャバッファ7でのデータのキャプチャ処理における通信装置Bの基準クロックとのずれ時間Δtを調整する方法について説明する。
前述のずれ時間Δtの調整により第2読出クロック及び送信クロックを相手方の通信装置の基準クロックに合わせることができる。よって、キャプチャバッファ7及び送信バッファ8からは相手方の通信装置Bの基準クロックに基づいてデータが読み出される。ここで、通信装置Aは、キャプチャバッファ7内のデータ量を所定量に調整する。つまり、キャプチャバッファへ蓄積されていくデータ量を調整することでキャプチャスピードを調整する。これにより、キャプチャスピードを相手方の基準クロックに対応するように調整することができる。キャプチャスピードの調整としては、例えばキャプチャクロックの調整、キャプチャ周波数の調整及び取得したデータの間引き・補完等が挙げられる。
(5)作用効果
このように基準クロックに基づいて送受信処理が制御されている場合には、受信側処理及び送信側処理をともに相手方の基準クロックに合わせて行うことができる。そのため、双方向通信におけるリアルタイム通信の品質を高めることができる。
また、受信側処理の第1読出クロック、送信側処理の送信クロック及び第2読出クロックが同一の基準クロックに基づいて形成されている。よって、自分の通信装置Aの基準クロックと相手方の通信装置Bの基準クロックとのずれ時間Δtが分かれば、受信機能部2と送信機能部1とが別個独立してずれ時間Δtの調整が可能である。
また、双方向通信において一方の通信装置が受信側処理及び送信側処理をともに調整するため、相手方がどのような通信装置であっても双方向通信を安定に行うことができる。例えば、相手方の通信装置Bが自分の基準クロックでパケットを送信すれば、一方の通信装置Aが相手方の基準クロックとのずれを修正して、修正後の基準クロックにより相手方にパケットを送信する。そのため、相手方の通信装置Bは自分の基準クロックに適合した受信間隔でパケットを受信することができるようになる。よって、相手方の通信装置Bは、基準クロックのずれを調整するなどの処理を行う必要がなくなる。
さらに、パケットの受信間隔は一方の通信装置自身が取得するため、相手方の通信装置はパケットそれぞれの送信時刻を送信する必要がない。そのため、送信するパケットのパケット構成を簡略化し、パケットのデータ量を削減することで、パケットの伝送効率の向上や使用する帯域幅を減少することができる。
(6)ずれ時間Δtの調整方法の場合分け
図3はずれ時間Δtの調整方法の場合分けを示す説明図であり、パターンとしては例えば次の3種類が挙げられる。
(6−1)パターンA
パターンAの場合、基準クロック自体の調整によりいずれの制御クロックの調整もできない(ステップS1、S2参照)。ここで、第1読出クロック、第2読出クロック及び送信クロックが基準クロックに基づいて生成されている。しかし、基準クロック自体の調整ができず、基準クロックから生成される第1読出クロック、第2読出クロック及び送信クロックを調整することができない。また、再生クロック及びキャプチャクロックは、基準クロックに基づいて生成されていないため、基準クロック自体の調整ではそれらのクロックを調整することができない。
そこで、受信バッファ9からの読出量を調整することにより、第1読出クロックと相手方の通信装置Bの基準クロックとのずれ時間Δtを調整する。同様に、キャプチャバッファ7からの読出量及び送信バッファ8からの読出量を調整することによりそれぞれ第2読出クロック及び送信クロックと相手方の通信装置Bの基準クロックとのずれ時間Δtを調整する(ステップS3参照)。
さらに、再生スピードを調整することにより受信機能部2での処理全体を相手方の通信装置Bの基準クロックに適合させる。同様に、さらにキャプチャスピードを調整することにより送信機能部1での処理全体を相手方の通信装置Bの基準クロックに適合させる(ステップS4参照)。
(6−2)パターンB
パターンBの場合、基準クロック自体の調整によりいずれの制御クロックの調整も可能である(ステップS1、S5参照)。よって、基準クロック自体の調整により、第1読出クロック、再生クロック、キャプチャクロック、第2読出クロック及び送信クロックにおける相手方の基準クロックとのずれを調整する。ここで、再生スピードの調整は再生クロックの調整により行われており、キャプチャスピードの調整はキャプチャクロックの調整により行われている。そのため、前述のステップS4の調整は行わなくても良い。
なお、再生クロック及びキャプチャクロックの調整によっても、再生スピード及びキャプチャスピードを相手の基準クロックと合わせることができない場合は、ステップS4の処理を行っても良い。
(6−3)パターンC
パターンCの場合、基準クロック自体の調整により、少なくとも第1読出クロック、第2読出クロック及び送信クロックにおいて、相手方の通信装置Bの基準クロックが調整されている(ステップS1、S2、S6参照)。しかし、再生クロック及びキャプチャクロックのクロック自体の調整が行われていないので、再生スピードの調整及びキャプチャスピードの調整により相手方の基準クロックとのずれを調整する必要がある(ステップS4参照)。
<第1実施形態例>
まず、上記パターンAの場合を例に挙げて第1実施形態例を説明する。つまり、第1実施形態例に係る通信装置では、基準クロック自体の調整により制御クロックの調整ができない。
(1)機能構成
図4は、本発明の第1実施形態例に係る通信装置の機能構成図である。通信装置Aは、通信の相手方の通信装置B(図示せず)とLANなどのネットワーク3を介して接続されている。通信装置Aは、送信機能部1、受信機能部2及びクロック機能部4を含む。送信機能部1は、キャプチャ処理及び送信処理を含む送信側処理を行う。受信機能部2は、受信処理及び再生処理を含む受信側処理を行う。クロック機能部4は、通信装置内の受信側処理及び送信側処理に用いられるクロックを制御する。以下に、送信機能部1、受信機能部2及びクロック機能部4の構成について説明する。
(1−1)クロック機能部
まず、クロック機能部4について説明する。クロック機能部4は、ずれ時間Δt算出部81、Tclk算出部82、基準クロック発生部83、制御クロック発生部84、キャプチャクロック発生部85及び再生クロック発生部86を含む。
(a)ずれ時間Δt算出部
図5は、ずれ時間Δtの算出方法を示す説明図である。ずれ時間Δt算出部81は、受信間隔取得部67から理論時間Trstd及び受信間隔ΔTrを取得し、その差分からずれ時間Δtを算出する。ここで、理論時間Trstdは、1つのパケット群を構成する所定数k(k自然数でk≧2)個のパケットを受信するのに要する理論時間である。受信間隔取得部67は、受信部41が相手方の通信装置Bから受信した送信間隔に関連する送信情報に基づいて理論時間Trstdを算出する。理論時間Trstdは、相手方の通信装置Bのパケットの送信間隔に基づいて算出しているため、通信装置Bの基準クロックCLKbに基づいている。一方、受信間隔ΔTrは、実際に受信部41が所定数k個のパケットを受信するのに要した時間であり、受信間隔取得部67が通信装置Aの基準クロックCLKaに基づいて取得する。
前述の通り、理論時間Trstdは通信装置Bの基準クロックClkbに基づいて、つまり通信装置Bの時間軸に基づいて取得する。一方、受信間隔ΔTrは通信装置Aの基準クロックClkaに基づいて、つまり通信装置Aの時間軸に基づいて取得する。よって、理論時間Trstd及び受信間隔ΔTrの差分を算出することで、通信装置Aと相手方の通信装置Bとの基準クロックのずれ時間Δtを算出することができる。
なお、図5に示すように、ずれ時間Δt算出部81は、パケットの送信情報の更新、通信装置Aの基準クロックの更新やネットワークのゆらぎ等を考慮してパケット群毎に随時ずれ時間Δt1、Δt2・・・を算出する。
(b)Tclk算出部
Tclk算出部82は、ずれ時間Δt算出部81から取得したずれ時間Δtに基づいて、ずれ時間Δtが1msになる時間Tclkを算出する。そして、Tclk算出部82は、ずれ時間Δtを受信機能部2及び送信機能部1に送信する。
図6は、Tclkの算出方法を示す説明図である。ずれ時間Δt算出部81では、パケット群毎にずれ時間Δt1、Δt2が算出されている。Tclk算出部82は、そのずれ時間Δt1+Δt2+・・・が1msになる時間Tclkを算出する。例えば、Tclkを算出するための式は、次のように表される。図6の場合、ずれ時間Δt1+Δt2+Δt3+Δt4=1msであり、よって、理論時間Trstd1+Trstd2+Trstd3+Trstd4=Tclkとなる。例えば、ずれ時間Δtで一定、理論時間がTrstdで一定の場合は、Tclkは次式で表すことができる。
Tclk=理論時間Trstd×(1ms/ずれ時間Δt)
ここでは、Tclkの算出にあたって“1ms”を用いているが、単に計算の基準として最適な時間として1msを用いているだけであり、1msに限定されない。
(c)基準クロック発生部、制御クロック発生部
基準クロック発生部83は、通信装置Aの送受信処理を制御する基準クロックを発生する。制御クロック発生部84は基準クロックに基づいて各種の制御クロックを発生する。第1実施形態例の制御クロックとは、第1読出クロック、第2読出クロック及び送信クロックである。ここで、第1読出クロックとは、後述の受信バッファ43に蓄積されている符号化データを読み出す際に用いるクロックである。第2読出クロックとは、後述のキャプチャバッファ17に蓄積されているディジタルデータを読み出す際に用いるクロックである。送信クロックとは、後述の送信バッファ25に蓄積されている符号化データを読み出す際に用いるクロックである。
(d)再生クロック発生部、キャプチャクロック発生部
再生クロック発生部86は、後述のDAC53が再生バッファ51に蓄積されているディジタルデータを読み出して、アナログデータに変換する際に用いる再生クロックを発生する。キャプチャクロック発生部85は、後述のADC15がアナログデータをディジタルデータに変換する際に用いるキャプチャクロックを発生する。
なお、再生クロック発生部86は、後述の再生制御部65からずれ時間Δtに基づいた再生クロックの調整量を取得し、これに応じて再生クロックを補正することもできる。DAC53が、補正された再生クロックにより再生バッファ51からのディジタルデータの読み出しを行うことで再生スピードを相手方の通信装置Bの基準クロックに合わせることができる。また、キャプチャクロック発生部85は、後述のキャプチャ制御部29からずれ時間Δtに基づいたキャプチャクロックの調整量を取得し、これに応じてキャプチャクロックを補正することもできる。ADC15が、補正されたキャプチャクロックによりデータをA/D変換することでキャプチャスピードを相手方の通信装置Bの基準クロックに合わせることができる。
さらに、再生クロック発生部86及びキャプチャクロック発生部85は、ずれ時間Δt算出部81からずれ時間Δtを取得し、ずれ時間Δtに応じてそれぞれ再生クロック及びキャプチャクロックを補正しても良い。例えばまず、調整前の基準クロックと調整前のキャプチャクロックとの関係を算出しておく。次に、ずれ時間Δtに応じて基準クロック自体を調整し、さらに調整後の基準クロックと調整後のキャプチャクロックとが算出した関係となるようにキャプチャクロックを調整する。また、ずれ時間Δt、及び調整前の基準クロックとキャプチャクロックとの関係に基づいて一度にキャプチャクロックを調整しても良い。再生クロックもずれ時間Δtに基づいて同様に調整可能である。
(1−2)受信機能部
次に、受信機能部2の構成について説明する。受信機能部2は、受信部41、受信バッファ43、受信バッファ読出部45、復号化部47、間引き・補完部49、再生バッファ51、DAC53、増幅器55、出力部57、受信バッファ量監視部59、受信バッファ読出制御部61、再生バッファ量監視部63、再生制御部65及び受信間隔取得部67を含む。
(a)受信部、受信バッファ、受信バッファ量監視部
受信部41は、ネットワーク3を介して相手方の通信装置Bから送信されたパケットを受信する。パケットには、それぞれに含まれる符号化データの他に、パケットの送信に関連する送信情報やパケットのシーケンシャル番号が含まれている。ここで、パケットの送信に関連する送信情報とは、パケットのシーケンシャル番号やパケットの送信間隔を含む情報である。また、パケットの送信間隔とは、相手方の通信装置のパケットの送信間隔そのもの、あるいは何個のパケットをどのような送信間隔で送信するかなどに関する情報である。受信バッファ43は、受信部41が受信したパケットそれぞれに含まれる符号化データを一時的に蓄積する。受信バッファ量監視部59は、受信バッファ43に蓄積されている符号化データ量(以下、受信バッファ量という)を監視し、後述の受信バッファ読出制御部61に出力する。
(b)受信バッファ読出部
受信バッファ読出部45は、制御クロック発生部84が生成した第1読出クロックに基づいて、受信バッファ43から符号化データを読み出す。なお、この第1読出クロックは、通信装置Aの基準クロックに基づいて生成されている。ここで、受信バッファ読出部45は、受信バッファ読出制御部61が決定した読出量に基づいて符号化データを読み出す。
(c)間引き・補完部、復号化部、再生バッファ、再生バッファ量監視部
復号化部47は、受信バッファ読出部45により受信バッファ43から読み出された符号化データを復号化及び伸長してディジタルデータとする。間引き・補完部49は、後述の再生制御部65において決定された間引き量及び補完量に基づいて、復号化部47により復号化されたディジタルデータを間引き又は補完する。再生バッファ51はこのディジタルデータを一時的に蓄積する。このように受信バッファ43から読み出されたディジタルデータを間引き又は補完することにより、再生バッファ量が所定量になるように調整する。これにより、相手方の基準クロックに応じた再生スピードに調整することができる。
再生バッファ量監視部63は、再生バッファ51に蓄積されているディジタルデータ量(以下、再生バッファ量という)を監視し、後述の受信バッファ読出制御部61に出力する。
なお、受信バッファ43及び再生バッファ51をともに設けることで、再生バッファ51への書き込み間隔を調整することができる。例えば、パケットの受信間隔は2msであるが、再生バッファ51への書き込み間隔を8msとする場合には、パケット4つ分を1グループとして受信バッファ43に蓄積しておき、1グループ毎に再生バッファ51へ書き込むことができる。特に、再生バッファ51への書き込み間隔に制限がかかった場合には、受信したデータを直接再生バッファ51に書き込むことができない場合がある。このような場合に受信したデータを一旦受信バッファ43に蓄積しておき、その後再生バッファ51に書き込むなどの処理を行うことができる。
(d)受信バッファ読出制御部
(i)ずれ時間Δtの調整
受信バッファ読出制御部61は、受信バッファ量監視部59から受信バッファ量を取得するとともに、再生バッファ量監視部63から再生バッファ量を取得し、Tclk算出部82からずれ時間Δtに基づくTclkを取得する。そして、受信バッファ読出制御部61は、受信バッファ量、再生バッファ量及びずれ時間Δtに基づいて、通信装置Aと相手方の通信装置Bとの基準クロックのずれ調整するための受信バッファ43からの読出量を決定する。ここで、Tclk算出部81は、基準クロックのずれを表すずれ時間Δtが1msになる時間Tclkを算出し、受信バッファ読出制御部61はこのTclkを受信する。受信バッファ読出制御部61は、ずれ時間Δtに応じて読出量を増やしたり減らしたりする間隔Tpa(以下、読出量調整間隔Tpaという)をTclkに基づいて算出する。この受信バッファの読出量調整間隔Tpaは、次式で表すことができる。
読出量調整間隔Tpa=Tclk×(第1読出クロック間隔Tread1/1ms)
ここで、第1読出クロック間隔Tread1とは、受信バッファ43から符号化データを読み出し再生バッファ51に書き込む間隔である。
通常、受信バッファ43からは第1読出クロック毎に符号化データが読み出される。基準クロックのずれ時間Δtを補正するために、第1読出クロック何回か毎、つまり読出量調整間隔Tpa毎にずれ時間Δt分だけ読出量を増減する。具体的に、受信バッファ読出制御部61は、まず通信装置Aの基準クロックと相手方の通信装置Bの基準クロックとのずれに基づいて、読出量を多くする(以下、プラス調整という)のか、減らす(以下、マイナス調整という)のか、プラスでもマイナス調整でもない(以下、ゼロ調整という)のかを決定する。例えば、ずれ時間Δtの正負に基づいて、又はずれ時間Δtに起因する受信バッファ量の増減に基づいてプラス調整又はマイナス調整を決定する。そして、受信バッファ読出制御部61は、プラス調整のときは+調整フラグFr+、−調整のときは−調整フラグFr−を立て、ゼロ調整のときはフラグを立てない。ここで、受信バッファ読出制御部61は、読出量調整間隔Tpaごとにプラス調整、マイナス調整又はゼロ調整を決定してフラグを設定する。そして、受信バッファ読出制御部61は、読出量調整間隔Tpa毎に、フラグの状態に基づいて読出量を決定する。
例えば基準クロックのずれのために、通信装置Bから受信バッファ43に入力される符号化データ量が、第1読出クロックに基づいて受信バッファ43から読み出される符号化データ量より多い場合は、受信バッファ量が過剰となる。この場合には、読出量調整間隔Tpa毎に、受信バッファ43からの読み出し量をプラス調整して受信バッファ量を適正に調整する。逆に、基準クロックのずれにより、受信バッファ43に入力される符号化データ量が読み出される符号化データ量より少ない場合は、受信バッファ量が少なくなる。この場合には、読出量調整間隔Tpa毎に、受信バッファ43からの読み出し量をマイナス調整する。このようにすることで、受信バッファ43からの読み出しの処理における基準クロックのずれを受信バッファ43からの読出量により補正する。
上記のように、読出量により基準クロックのずれを調整するのは、第1実施形態例においては、例えば基準クロックを調整することができない等の理由により、基準クロック自体の調整では相手方の通信装置Bとの基準クロックのずれを調整することができないからである。言い換えれば、上記方法は、基準クロック自体が調整できない場合に、相手方の通信装置の基準クロックとのずれを合わせるのに有効な方法である。
また、受信バッファ読出制御部61は、受信バッファ量及び再生バッファ量に基づいて読出量を決定するため、受信バッファ43及び再生バッファ51におけるオーバーフローやアンダーフローを防止し、再生されるデータの品質を高めることができる。
また、ずれ時間Δtが調整された第1読出クロックに基づいて受信バッファからデータを読み出していても、ネットワークのゆらぎ等によりパケットの到着が遅れたり、パケットは到着しているがパケットの受信処理が遅れるなどの状況により受信バッファ量が不安定となる場合がある。受信バッファ量を参照して受信バッファからの読出量を調整することで、このような状況が生じた場合であっても受信バッファ量を適正に保つことができる。よって、受信バッファにおけるオーバーフローやアンダーフローをさらに防止し、再生されるデータの品質を高めることができる。特に、上記構成によれば、通信装置内での処理が一定間隔で行われない可能性のあるマルチタスク環境であっても、受信バッファ量を一定に保つことができる。
(ii)再生バッファ量大フラグ、再生バッファ量小フラグ、逆転対策中フラグ
また、受信バッファ読出制御部61は、受信バッファ量及び再生バッファ量に基づいて、再生バッファ量大フラグFpb、再生バッファ量小フラグFps及び逆転対策中フラグなど各種フラグを設定する。
(iii)再生スピード調整間隔
送受信バッファ読出制御部61は、再生バッファ量に基づいて再生スピードを調整する間隔である再生スピード調整間隔を調整する。後述のステップS59では、再生スピード調整間隔は規定数Nとして記述されており、例えば第1読出クロックのカウント数で表される。この規定数Nを大きくしたり小さくすることで、再生スピードを調整する間隔を調整する。例えば、再生スピード調整間隔を小さくすることで調整頻度を多くすることができる。
(e)DAC、再生制御部
DAC53は、再生バッファ51に蓄積されているディジタルデータを再生クロックに応じて読み出して、アナログデータに変換する。本実施形態例においては、この再生クロックは、図4に示すように制御クロック発生部84の出力ではなく、基準クロックに基づいて生成されていないものとする。
再生制御部65は、再生バッファ量監視部63から再生バッファ量を取得し、また受信バッファ読出制御部61が設定した再生バッファ量大フラグFpb、再生バッファ量小フラグFps、+調整フラグFr+、−調整フラグFr−及び再生バッファ量を参照して再生バッファ量を所定量に調整する。上述の通り、受信バッファ43からの読出量の調整により基準クロックのずれ時間Δtを調整することで、再生バッファ51には相手方の通信装置Bの基準クロックに基づいてディジタルデータが書き込まれる。再生制御部65によってこの再生バッファ51を所定量に調整することで、再生バッファ51から読み出されていくディジタルデータ量を調整することができる。これにより、再生スピードを相手方の通信装置Bの基準クロックに対応するように調整することができる。再生スピードの調整としては、例えば再生クロックの調整、再生周波数の調整及び受信バッファ43から読み出したデータの間引き・補完等が挙げられる。
例えば、再生制御部65は、再生バッファ量等に応じて再生クロックの調整量を決定して再生クロック発生部86に出力し、再生クロック発生部86はこれの調整量に応じて補正した再生クロックをDAC53に出力する。DAC53が、補正された再生クロックにより再生バッファ51からのディジタルデータの読み出しを行うことで再生スピードを調整することができる。また、再生クロック発生部86が、ずれ時間Δtに応じて再生クロックを補正しても良い。例えば、再生クロック発生部86は、ずれ時間Δt算出部81からずれ時間Δtを取得する。また、再生クロック発生部86は、調整前の基準クロックと調整前の再生クロックとの関係を算出しておく。次に、ずれ時間Δtに応じて基準クロック自体を調整し、さらに調整後の基準クロックと再生クロックとが算出した関係となるように再生クロックを調整する。また、ずれ時間Δt、及び調整前の基準クロックと再生との関係に基づいて一度に再生クロックを調整しても良い。この再生クロックに基づいて再生バッファ51からの読み出しを行うことで再生スピードを調整することができる。
さらに、再生制御部65は、再生バッファ51からのディジタルデータのサンプリング量を決定してDAC53に出力する。DAC53が、補正されたサンプリング量により再生バッファ51からのディジタルデータの読み出しを行うことで、再生スピードを調整することができる。また、再生制御部65は、再生バッファ量等に応じて、復号化部47により復号化されたディジタルデータの間引き量又は補完量を決定し、間引き・補完部49に出力する。再生バッファ51に書き込むディジタルデータ量を間引き又は補完することで、DAC53における処理量を減らしたり増やしたりして再生スピードを調整することができる。

このように、再生バッファ量を制御することで、再生バッファ51におけるオーバーフローやアンダーフローを防止し、再生されるデータの品質を高めることができる。例えば、通信装置においては、再生バッファ51へのデータの書き込み処理である再生処理自体が遅延したりする場合がある。このような状況が生じた場合であっても、再生バッファ量を参照して調整することで、再生バッファ量を適正に保つことができる。特に、通信装置に複数の機能が搭載されているために通信装置内での処理が一定間隔で行われない場合があるマルチタスク環境であっても、再生バッファ量を一定に保ち再生処理を安定に行うことができる。
(e)増幅器、出力部
DAC53により変換されたアナログデータは増幅器55により増幅され、スピーカなどの出力部57から空気中に拡声される。
(f)受信間隔取得部
受信間隔取得部67は、基準クロック発生部83から通信装置Aの基準クロックを受信している。そして、受信間隔取得部67は、1つのパケット群を構成する所定数k(k自然数でk≧2)個のパケットを受信するのに要した受信時間ΔTrを、通信装置Aの基準クロックに基づいて取得する。なお、受信部41がパケットそれぞれのシーケンス番号を取得しているため、受信間隔取得部67はこのシーケンス番号を参照して所定数k個分のパケットを受信したことを知ることができる。例えば、図5に示すように、通常のパケットはシーケンス番号順に送信されるため、シーケンス番号の間隔がk毎に、つまりシーケンス番号S0、Sk、S2k・・・のパケットを受信したときに受信時刻を取得する。そして、それぞれの受信時刻の差から1つのパケット群を構成する所定数k個のパケットを受信するのに要した時間として受信間隔ΔTrを算出する。また、受信間隔取得部67は、受信部41が受信した送信情報に基づいて、所定数k(k≧2)個のパケットを受信するのに要する理論時間Trstdを算出する。受信間隔取得部67は、例えば1つのパケットの送信間隔と所定数kとを掛け合わせることによって理論時間Trstdを算出する。
なお、パケットの送信間隔などの送信情報が更新される場合もあるため、受信時間取得部67は、図5に示すようにパケット群毎に理論時間Trstd1、Trstd2・・・を取得する。また、通信装置Aの基準クロックの更新やネットワークのゆらぎ等により受信間隔ΔTrが変化する場合もある。よって、受信時間取得部67は、パケット群毎に受信時間ΔTr1、ΔTr2・・・を取得する。そして、ずれ時間Δt算出部81は、パケット群毎にずれ時間Δt1、Δt2・・・を算出する。
(1−3)送信機能部
送信機能部1は、入力部11、増幅器13、ADC15、キャプチャバッファ17、キャプチャバッファ読出部19、間引き・補完部21、符号化部23、送信バッファ25、送信部27、キャプチャ制御部29、キャプチャバッファ量監視部31、キャプチャバッファ読出制御部33、送信バッファ量監視部35及び送信バッファ読出制御部37を含む。
(a)入力部、増幅器
マイクなどの入力部11に入力された音声は、アナログデータに変換される。増幅器13は、このアナログデータを増幅してADC15に出力する。
(b)ADC、間引き・補完部、キャプチャバッファ、キャプチャバッファ量監視部
ADC15は、増幅器13から入力されたアナログデータを、キャプチャクロックに応じてディジタルデータに変換してキャプチャバッファ17に出力する。本実施形態例においては、このキャプチャクロックは、図4に示すように制御クロック発生部84の出力ではなく、基準クロックに基づいて生成されていないものとする。また、ADC15は、後述のキャプチャ制御部29又はキャプチャクロック発生部85の制御に基づいて、アナログデータをディジタルデータに変換する。
間引き・補完部21は、後述のキャプチャ制御部29が決定した間引き量及び補完量に基づいて、ADC15により変換されたディジタルデータを間引き又は補完する。例えば、キャプチャスピードが大きいためにキャプチャバッファ17に過剰のデータが書き込まれようとしている場合は、間引き・補完部21はADC15からのディジタルデータを間引いてキャプチャバッファ17に書き込む。一方、キャプチャスピードが小さいためにキャプチャバッファ17に過少のデータしか書き込まれない場合は、間引き・補完部21はADC15からのディジタルデータを補完してキャプチャバッファ17に書き込む。これにより、キャプチャクロックの調整やキャプチャ周波数の調整によってキャプチャスピードが調整できない場合であっても、キャプチャバッファ17のキャプチャバッファ量を適正に保つことができる。
キャプチャバッファ17は、ディジタルデータを一時的に蓄積する。キャプチャバッファ量監視部31は、キャプチャバッファ17に蓄積されているディジタルデータ量(以下、キャプチャバッファ量という)を監視し、後述のキャプチャバッファ読出制御部33及びキャプチャ制御部29に出力する。
(c)キャプチャバッファ読出部
キャプチャバッファ読出部19は、制御クロック発生部84が生成した第2読出クロックに基づいてキャプチャバッファ17からディジタルデータを読み出す。なお、この第2読出クロックは、通信装置Aの基準クロックに基づいて生成されている。ここで、キャプチャバッファ読出部19は、キャプチャバッファ読出制御部33が決定した読出量に基づいてディジタルデータを読み出す。
(d)符号化部、送信バッファ、送信バッファ量監視部
符号化部23は、読み出されたディジタルデータを符号化して符号化データとする。送信バッファ25はこの符号化データを蓄積する。送信バッファ量監視部35は、送信バッファ25に蓄積されている符号化データ量(以下、送信バッファ量という)を監視し、キャプチャバッファ読出制御部33に出力する。
なお、キャプチャバッファ17及び送信バッファ25をともに設けることで、送信バッファ25への書き込み間隔を調整することができる。例えば、キャプチャしたデータを直接送信バッファ25に書き込むことができない場合がある。このような場合にキャプチャしたデータを一旦キャプチャバッファ17に蓄積しておき、その後送信バッファ25に書き込むなどの処理を行うことができる。
(e)送信部
送信部27は、送信バッファ25に蓄積されている符号化データを送信クロックに応じて読み出して、パケットを構成して相手方の通信装置Bに送信する。この送信クロックは、基準クロックに基づいて生成されている。
(f)送信バッファ読出制御部
(i)送信パケット数の決定
送信バッファ読出制御部37は、送信バッファ量及び/又は送信パケット調整数Npaに基づいて、送信バッファ25から相手方の通信装置Bへの送信パケット数を決定する。
(ii)ずれ時間Δtの調整
送信バッファ読出制御部37は、送信バッファ量監視部35から送信バッファ量を取得し、Tclk算出部82からずれ時間Δtに基づくTclkを取得する。送信バッファ読出制御部37は、送信バッファ量及びずれ時間Δtに基づいて、通信装置Aと相手方の通信装置Bとの基準クロックのずれ調整するための送信バッファ25からの読出量を決定する。具体的には、送信バッファ25からの読み出すパケット数を決定する。
送信バッファ読出制御部37は、Tclk算出部81からTclkを受信する。送信バッファ読出制御部37は、ずれ時間Δtに応じて読出量を増やしたり減らしたりする間隔Tsa(以下、読出量調整間隔Tsaという)を、Tclkに基づいて算出する。この送信バッファの読出量調整間隔Tsaは、次式で表すことができる。
読出量調整間隔Tsa=Tclk×(送信クロック間隔Ts/1ms)
ここで、送信クロック間隔Tsとは、送信バッファ25から符号化データを読み出す間隔である。
通常、送信バッファ25からは送信クロック毎に符号化データが読み出される。基準クロックのずれ時間Δtを補正するために、送信クロック何回か毎、つまり読出量調整間隔Tsa毎にずれ時間Δt分だけ読出量を増減する。具体的に、送信バッファ読出制御部37は、まず通信装置Aの基準クロックと相手方の通信装置Bの基準クロックとのずれ時間Δtに基づいて、読み出すパケット数を増やすのか、減らすのか、そのままであるのかを決定する。例えば、ずれ時間Δtの正負に基づいて、又はずれ時間Δtに起因する送信バッファ量の増減に基づいて送信パケット数を増やすのか減らすのかを決定する。ここで、送信バッファ読出制御部37は、送信パケット数を増やすのか減らすのかに応じて、読出量調整間隔Tsaごとに送信パケット調整数Npacを調整する。そして、送信バッファ読出制御部37は、読出量調整間隔Tsa毎に、この送信パケット調整数Npacに基づいて送信バッファ25からの読出量、つまり送信パケット数を決定する。このようにすることで、基準クロックのずれを送信バッファ25からの送信するパケット数により補正する。
上記のように、読出量により基準クロックのずれを調整するのは、第1実施形態例においては、例えば基準クロックを調整することができない等の理由により、基準クロック自体の調整では相手方の通信装置Bとの基準クロックのずれを調整することができないからである。言い換えれば、上記方法は、基準クロック自体が調整できない場合に、相手方の通信装置の基準クロックとのずれを合わせるのに有効な方法である。
また、送信バッファ読出制御部37は、送信バッファ量に基づいて読出量を決定するため、送信バッファ25におけるオーバーフローやアンダーフローを防止することができる。
(iii)送信バッファ量大フラグ、送信バッファ量小フラグ
送信バッファ読出制御部37は、送信バッファ量に基づいて送信バッファ量が大きいことを示す送信バッファ量大フラグFsb及び送信バッファ量が小さいことを示す送信バッファ量小フラグFssを設定する。
(iv)キャプチャスピード調整間隔
送信バッファ読出制御部37は、送信バッファ量に基づいてキャプチャスピードを調整する間隔であるキャプチャスピード調整間隔Nadjを調整する。このNadjを大きくしたり小さくすることで、キャプチャスピードを調整する間隔を調整する。例えば、キャプチャスピード調整間隔Nadjが第2読出クロックによる割り込み回数である。また、キャプチャスピード調整間隔Nadjを小さくすることで調整頻度を多くすることができる。
(v)キャプチャスピード調整フラグ
送信バッファ読出制御部37は、送信バッファ量及びキャプチャバッファ量に基づいてキャプチャスピードを調整するかしないかを示すキャプチャスピード調整フラグFadjを設定する。
(g)キャプチャバッファ読出制御部
キャプチャバッファ読出制御部33は、通信装置Aと相手方の通信装置Bとの基準クロックのずれ時間Δtをキャプチャバッファ17からの読出量により調整するためにその読出量を決定する。具体的に、キャプチャバッファ読出制御部33は、キャプチャバッファ量監視部31から取得したキャプチャバッファ量、送信バッファ量大フラグFsb及び送信バッファ量小フラグFssを参照して読出量を決定する。これにより、キャプチャバッファ17からの読み出しの処理における基準クロックのずれをキャプチャバッファ17からの読出量により補正する。
また、キャプチャバッファ読出制御部33は、キャプチャバッファ量に基づいて読出量を決定するため、キャプチャバッファ17におけるオーバーフローやアンダーフローを防止することができる。例えば、通信装置においては、キャプチャバッファ17へのデータの書き込み処理であるキャプチャ処理自体が遅延したりすることにより、キャプチャバッファ量の急な増減が生じる場合がある。このような状況が生じた場合であっても、キャプチャバッファ量を参照して読出量を調整することで、キャプチャバッファ量を適正に保つことができる。特に、通信装置に複数の機能が搭載されているようなマルチタスク環境においては、通信装置内での処理が一定間隔で行われないことがある。上記構成によれば、このようなマルチタスク環境であっても、キャプチャバッファ量を一定に保ちキャプチャ処理や送信処理を安定に行うことができる。
(h)キャプチャ制御部
キャプチャ制御部29は、キャプチャバッファ量監視部31からキャプチャバッファ量を取得し、また送信バッファ読出制御部37が設定した送信バッファ量大フラグFsb、送信バッファ量小フラグFss、キャプチャスピード調整間隔Nadj、キャプチャスピード調整フラグFadjを参照してキャプチャバッファ量を所定量に調整する。上述の通り、キャプチャバッファ17からの読出量の調整により、キャプチャバッファ17からは相手方の通信装置Bの基準クロックに基づいてディジタルデータが読み出される。キャプチャ制御部29によってこのキャプチャバッファ17を所定量に調整することで、キャプチャバッファ17に書き込まれるディジタルデータ量を調整することができる。これにより、キャプチャスピードを相手方の通信装置Bの基準クロックに対応するように調整することができる。キャプチャスピードの調整としては、例えばキャプチャクロックの調整、キャプチャ周波数の調整及びキャプチャバッファ17から読み出したデータの間引き・補完等が挙げられる。
例えば、キャプチャ制御部29は、キャプチャバッファ量に応じてキャプチャクロックの調整量を決定してキャプチャクロック発生部85に出力し、キャプチャクロック発生部85はこの調整量に応じたキャプチャクロックをADC15に出力する。ADC15が、補正されたキャプチャクロックに基づいてA/D変換を行い、ディジタルデータをキャプチャバッファ17に書き込むことでキャプチャスピードを調整することができる。また、キャプチャクロック発生部85が、ずれ時間Δtに応じてキャプチャクロックを補正しても良い。例えば、キャプチャクロック発生部85は、ずれ時間Δt算出部81からずれ時間Δtを取得する。そして、キャプチャクロック発生部85は、調整前の基準クロックと調整前のキャプチャクロックとの関係を算出しておく。次に、ずれ時間Δtに応じて基準クロック自体を調整し、さらに調整後の基準クロックとキャプチャクロックとが算出した関係となるようにキャプチャクロックを調整する。また、ずれ時間Δt、及び調整前の基準クロックとキャプチャクロックとの関係に基づいて一度にキャプチャクロックを調整しても良い。このキャプチャクロックに基づいてキャプチャバッファ17からの読み出しを行うことでキャプチャスピードを調整することができる。
さらに、キャプチャ制御部29は、A/D変換を行うアナログデータのサンプリング量を決定してADC15に出力する。ADC15が、補正されたサンプリング量によりA/D変換を行ってキャプチャバッファ17にディジタルデータを書き込む行うことで、キャプチャスピードを調整することができる。また、キャプチャ制御部29は、キャプチャバッファ量に応じて、ADC15により変換されたディジタルデータの間引き量又は補完量を決定し、間引き・補完部21に出力する。間引き・補完部21がこの間引量又は補完量に応じてディジタルデータを間引き又は補完することで、キャプチャバッファ17に書き込みを行うディジタルデータ量を調整することができる。

(2)パケット構成
図7は、送受信されるパケットの構成例である。パケットには、IPヘッダ、UDPヘッダ、RTPヘッダ及びディジタルデータが含まれている。IPヘッダには、送信元のIPアドレス、送信先のIPアドレスなどが記述されている。UDPヘッダには、送信元ポート番号、送信先ポート番号、メッセージ長などが記述されている。なお、IPパケットのデータ部にUDPパケットではなくTCPパケットを用いることもでき、その場合にはUDPヘッダに代えてTCPヘッダが用いられる。RTPヘッダには、例えば下記の情報が含まれている。
a)バージョン
b)パディング
c)CSRC:CSRC識別子を何個含んでいるかを示す。
d)ペイロードタイプ
e)シーケンシャル番号:パケットの順番を示す。
g)SSRC:送信装置の識別子
h)CSRC:元の送信者の識別子リスト。
このようにパケットが構成されている場合、受信時間取得部67は、シーケンシャル番号に基づいて受信時間を取得する。
(3)処理
(3−1)受信側処理及びクロック制御処理
次に、前記構成を有する受信機能部2及びクロック機能部4が行う処理の流れについて詳細に説明する。
(a)受信処理
図8は、受信機能部2が行う受信処理の流れの一例を示すフローチャートである。通信装置Aの受信機能部2は、相手方の通信装置Bから通信の開始を示すコマンドを受信することにより、以下の処理を開始する。
ステップS11:受信部41は、通信の終了を示すコマンドを通信装置Bから受信したり、自装置での終了操作が行われたりするまで、以下の処理を行う。通信の終了を示すコマンドの受信や終了操作が行われると、処理を終了する。
ステップS12:受信部41は、通信装置Bからのパケットを待機しており、パケットを受信すると、ステップS13に移行する。受信したパケットそれぞれには、符号化データが含まれるとともに、パケットの送信間隔に関する送信情報やパケットのシーケンシャル番号が含まれる。
ステップS13:受信部41は、受信したパケットが通信を開始したときの最初のパケットであるかを判断する。最初のパケットの場合ステップS14に進み、そうでない場合はステップS16に進む。
ステップS14、S15:受信部41は、通信開始の最初のパケットの場合は、受信したパケットのシーケンシャル番号をSN0として設定する(S14)。例えば、取得したパケットのシーケンシャル番号が“3”である場合はSN0=3となる。そして、受信間隔取得部67は、その通信装置A自身の基準クロックに基づいて、1番目のパケット群G1に含まれる最初のパケットSN0の受信部41での受信時刻Tr0を取得する(S15)。
ステップS16:受信間隔取得部67は、受信部41から今回受信したパケットのシーケンス番号を取得して、前回受信したパケットのシーケンス番号と比較する。これにより、パケットの欠落や順番の入れ替わりがないかを判断できる。
ステップS17:次に、受信バッファ量監視部59は、受信バッファ43に書き込み可能かを判断する。例えば経路中で複製されることなどにより受信パケットが重複していないかや、パケットの遅延等によりパケットの順番が入り替わってしまい、再生するタイミングに間に合うかどうかなどを判断する。書き込み可能である場合はステップS13に進み、書き込み不可である場合はステップS11に進む。ここで、再生タイミングを過ぎている場合にはパケットの破棄を行う。
ステップS18:受信間隔取得部67は、シーケンシャル番号が規定のSNkになったかどうかを判断する。つまり、パケット群のうちk番目のパケットを受信したか否かを判断する。規定のSNkの場合はステップS19に進み、そうでない場合はステップS22進む。
ステップS19、S20:受信間隔取得部67は、シーケンシャル番号を参照してパケット群のうちk番目のパケットを受信していれば、受信部41において受信されたパケットの受信時刻Trnを、その通信装置A自身の基準クロックに基づいて取得する(S19)。ここで、受信間隔取得部67は、1番目のパケット群G1における所定数kカウント後の受信時刻としてTr1を取得する。また、この受信時刻Tr1は、2番目のパケット群G2における最初のパケットの受信時刻となる。つまり、n番目のパケット群Gnにおける最初のパケットの受信時刻としてTr(n-1)を取得し、それから所定数kカウント後の受信時刻としてTrnを取得する。前述のようにSN0=3である場合は、SNk=k+3となる。次に、後述のTclk算出処理及び読出量調整間隔の算出処理を行う(S20)。
ステップS21:受信間隔取得部67は、シーケンシャル番号をリセットする。
ステップS22:受信部41は、受信したパケットに含まれる符号化データを受信バッファ43に書き込む。
(b)Tclk算出処理及び読出量調整間隔Tpaの算出処理
図9は、受信機能部2及びクロック機能部4が行うTclk算出処理及び読出量調整間隔Tpaの算出処理の流れの一例を示すフローチャートである。
ステップS31:受信間隔取得部67は、パケットの送信間隔に関する送信情報に基づいて、所定数k個のパケットから構成される各パケット群を受信するのに要する理論時間Trstdnを算出する。例えば、受信間隔取得部67は、相手方の通信装置Bから取得した1つのパケットの送信間隔と所定数kとを掛け合わせることによって理論時間Trstdを算出する。
ステップS32:受信間隔取得部67は、受信部41が所定数k個のパケットから構成されるパケット群を受信するのに要した時間として、各パケット群の受信間隔ΔTrnを算出する。例えば、1番目のパケット群のΔTr1、2番目のパケット群のΔTr2というように受信間隔を算出する。また、n番目のパケット群Gnにおける受信間隔としてΔTrn=Trn−Tr(n-1)が算出される。
ステップS33、S34:ずれ時間Δt算出部81は、各パケット群について、理論時間Trstdn及び受信間隔ΔTrnの差分を算出する。これにより、通信装置Aと相手方の通信装置Bとの基準クロックのずれ時間Δtnを算出する(S33)。さらに、Tclk算出部82は、ずれ時間Δt算出部81から取得したずれ時間Δtnに基づいて、各パケット群について、ずれ時間Δtnが1msになる時間Tclknを算出する(S34)。
ステップS35:受信バッファ読出制御部61は、読出量調整間隔Tpaの更新が必要かどうかを判定する。例えば、前回算出したTclk(n-1)と今回算出したTclknとを比較して、大きく変動していないかを判定する。例えば、大きく変動していないかを判定する判断基準をΔTclkとすると、前回算出したTclk(n-1)と今回算出したTclknとが次式の関係を満たすかどうかにより判定する。
(Tclk(n-1)−ΔTclk)≦Tclkn≦(Tclk(n-1)+ΔTclk)
この判断基準をΔTclkは、最初は大きい値に設定しておき、徐々に小さい値に設定していく。
ここで、前回算出したTclk(n-1)と今回算出したTclknとが前述の式の関係を満たす場合は、読出量調整間隔Taの更新が必要と判断してステップS36に進む。一方、そうでない場合は、読出量調整間隔Tpaの更新が不要と判断してステップS38に進む。
ステップS36、S37:受信バッファ読出制御部61は、ずれ時間Δtに応じて読出量を増やしたり減らしたりする間隔である読出量調整間隔Tpaを、Tclkに基づいて算出し(S36)、再設定する(S37)。
ステップS38:次に、受信間隔取得部67は、パケット群を構成するパケットの個数を増やしていく。例えば、最初はパケット1000個を1つのパケット群とし、次にパケット2000個を1つのパケット群とし、さらにパケット5000個を1つのパケット群というように増やしていく。このような処理により、ずれ時間Δtの調整をより精度良く行うことができる。
(c)受信バッファの読出量フラグ設定処理
図10は、受信バッファの読出量フラグ設定処理の流れの一例を示すフローチャートである。
ステップS41:受信部41は、通信装置Bからの通信の終了を示すコマンドの受信や自装置での終了操作が行われると、処理を終了する。
ステップS42:受信バッファ読出制御部61は、読出量調整間隔Tpaが経過したか判断し、経過している場合はステップS43に進む。そうでない場合は読出量調整間隔Tpaが経過するまで待機する。
ステップS43:受信バッファ読出制御部61は、読出量調整間隔Tpaが経過するとずれ時間Δtが0かどうかを判断する。つまり、理論時間Trstdと受信時間ΔTrとの差が0であるかどうかを判断する。ずれ時間Δtが0でない場合は、ステップS44に進む。
ステップS44:ずれ時間Δt=0でない場合は、受信バッファ読出制御部61は、次にずれ時間Δtが0より大きいか否かを判断する。つまり、理論時間Trstdが受信時間ΔTrより大きいか否かを判断する。ずれ時間Δt>0である場合はステップS45に、ずれ時間Δt<0である場合はステップS46に進む。
ステップS45:ずれ時間Δt>0である場合、受信バッファ読出制御部61は、+調整フラグFr+を設定する。より具体的に説明すると、ずれ時間Δt>0である場合とは、時間軸上の1sという幅が相手方の通信装置Bよりも通信装置Aの方が大きく基準クロックが遅い場合である。そのため、同じ時間を測定する場合であっても、幅が狭い通信装置Bの基準クロックではより時間が長くなり、幅が広い通信装置Aの基準クロックでは短くなる。よって、通信装置Aの方が基準クロックが遅い分だけ受信バッファ43からの読出量を増やして基準クロックのずれを補うために、+調整フラグFr+を設定する。
ステップS46:ずれ時間Δt<0である場合、受信バッファ読出制御部61は、−調整フラグFr−を設定する。より具体的に説明すると、ずれ時間Δt<0である場合とは、時間軸上の1sという幅が相手方の通信装置Bよりも通信装置Aの方が小さく基準クロックが早い場合である。そのため、同じ時間を測定する場合であっても、幅が狭い通信装置Bの基準クロックではより時間が短くなり、幅が広い通信装置Aでは長くなる場合である。よって、通信装置Aの方が基準クロックが早い分だけ受信バッファ43からの読出量を減らして基準クロックのずれを補うために、−調整フラグFr−を設定する。
ステップS47:ずれ時間Δt=0である場合は、理論時間Trstdと受信時間ΔTrとが同じであるので、通信装置A及び通信装置B間の基準基準クロックのずれがない。よって、+調整フラグFr+、−調整フラグFr−の設定を行わない。
(d)再生処理
図11は、受信機能部2が行う再生処理の流れの一例を示すフローチャートである。
ステップS51:受信機能部2は、再生処理の各種設定を行う。例えば受信バッファ読出部45は受信バッファ43から再生バッファ51への読み出しの処理を行う第1読出クロックを設定し、再生制御部65は再生スピード調整処理を行う間隔の設定し、受信バッファ読出制御部61及び再生制御部65はそれぞれ受信バッファ量及び再生バッファ量の閾値の設定を行う。
閾値の設定としては、受信バッファ43については、例えば、最も好ましい量として基準量Qrstd、この量を超えると遅延時間が大きくなる受信バッファ量大Qrb、この量より少なくなると読み出し不可になる受信バッファ量小Qrs等を設定する。一方、再生バッファ51については、例えば、最も好ましい量として基準量Qpstd、この量を超えると遅延時間が大きくなる再生バッファ量大Qpb、この量より少なくなると好ましくない再生バッファ量小Qps、この量より少なくなると再生不可となる再生バッファ量最小Qpmin、この量以上の場合ReadポインタとWriteポインタとの位置関係が逆転となっている逆転基準Qprvs等を設定する。
ステップS52:受信バッファ読出制御部61は、第1読出クロックの割り込みがあるかどうかを判断する。割り込みがあればステップS53に進み、なければ第1読出クロックの割り込みを待つ。
ステップS53:第1読出クロックの割り込みがあれば、受信バッファ読出制御部61は、受信バッファ量監視部59から受信バッファ量Qrを取得するとともに、再生バッファ量監視部63から再生バッファ量Qpを取得する。また、再生制御部65も再生バッファ量監視部63から再生バッファ量Qpを取得する。
ステップS54:受信バッファ読出制御部61は、その第1読出クロックの割り込みが初回かどうかを判断し、初回であればステップS55に進み、初回でなければステップS56に進む。
ステップS55:割り込みが初回である場合は、受信バッファ読出制御部61は、後述の再生スピード調整処理で用いる再生バッファ量比較基準Qpcmpとして、現在の再生バッファ量Qpを設定する。
ステップS56:一方、割り込みが初回でない場合は、受信バッファ読出制御部61は、再生バッファ量比較基準Qpcmpとして、前回の再生バッファ量Qpを設定する。
ステップS57:受信バッファ読出制御部61は、受信バッファ43からの読出量算出処理を行う。この読出量算出処理では受信バッファ量及び再生バッファ量に基づいて、第1読出クロック毎の受信バッファ43からの読出量を決定する処理を行うとともに、受信バッファの読出量調整フラグに基づいて読出量調整間隔Tpaごとにずれ時間Δtをなくすための読出量を決定する処理を行う。
ステップS58、S59:次に、再生制御部65は第1読出クロックをカウントし、再生スピード調整タイミングとなったかどうかを判断する。例えば、第1読出クロックを規定数カウントしたかどうかを判断する。この規定数は、再生スピード調整処理を行う時間間隔に基づいて設定されており、再生スピード調整頻度に応じて変更される。規定数をカウントしていればステップS60に進み、規定数に到達していなければステップS62に進む。
ステップS60、S61:再生制御部65は再生スピード調整処理を行い、カウント数をクリアする。
ステップS62:受信バッファ読出部45は、ステップS57で受信バッファ読出制御部61が決定した読出量に基づいて受信バッファ43から符号化データを読み出す。読み出された符号化データは、復号化されて再生バッファ51に書き込まれる。
(e)受信バッファからの読出量算出処理
図12は、受信機能部2が行う受信バッファ43からの符号化データの読出量算出処理の流れの一例を示すフローチャートである。
ステップS71:受信バッファ読出制御部61は、逆転対策中フラグFptが立っているかどうかによって再生バッファ逆転対策中かどうかを判断する。再生バッファ逆転対策中である場合はステップS72に進み、そうでない場合はステップS76に進む。
ここで、再生バッファ逆転対策中とは、ReadポインタとWriteポインタとの位置関係が逆転している状態のときである。図13は、再生バッファ逆転対策中を示す説明図である。図13(a)及び(b)は再生バッファの状態を示す図であり、図13(a)においてReadポインタとWriteポインタに囲まれた色付きの部分が再生バッファ量を表している。再生バッファ51にデータが書き込まれるとWriteポインタは矢印方向に進み、再生バッファ51からデータが読み出されるReadポインタも同じ矢印方向に進む。通常、Writeポインタ及びReadポインタは同程度の速度で同じ矢印方向に進む。しかし、再生バッファ51への書込量よりも読出量が多くなれば、図13(b)のようにReadポインタがWriteポインタを追い抜かす。このとき、再生バッファ量は無くなるはずである。しかし、再生バッファ量はReadポインタとWriteポインタの差分で表されるため、ReadポインタがWriteポインタを追い抜かした途端に、再生バッファ量が0になるのではなく、図13(b)に示す黒塗りの部分のように過剰の状態となる。このような状態でReadポインタが進むと、いまだWriteポインタにより上書きされて更新されていない古いデータが出力されてしまう。そこで、この状態を再生バッファ逆転対策中と判定して、後述の再生バッファ逆転対策処理を行う。
ステップS72:受信バッファ読出制御部61は、受信バッファ量Qr及び再生バッファ量Qpがともに安定閾値内にあるかどうかを判定する。例えば、受信バッファ量についてバッファ量小Qrs≦受信バッファ量Qr≦バッファ量大Qrbを判定し、再生バッファ量についてバッファ量小Qps≦再生バッファ量Qp≦バッファ量大Qpbを判定する。受信バッファ量Qr及び再生バッファ量Qpがともに安定閾値内にある場合はステップS74に進み、そうでない場合はステップS73に進む。なお、受信バッファ読出制御部61は、再生制御部65から再生バッファ量の閾値を取得しているものとする。
ステップS73:受信バッファ読出制御部61は、逆転対策中フラグが立つとともに受信バッファQr及び再々バッファ量Qpが安定閾値内ではないので、再生バッファ逆転対策処理を行うように指示する。
具体的に、受信バッファ読出制御部61は、再生バッファ51及び受信バッファ43において次のように処理を行うように指示する。受信バッファ読出制御部61は、再生バッファ51のWriteポインタがReadポインタより先の位置になるように進めるように再生制御部65に指示する。受信バッファ読出制御部61は、再生バッファ51においてWriteポインタを進めた分に対応するだけ、受信バッファ43のReadポインタを進めるように受信バッファ読出部45に指示する。つまり、Writeポインタを進めた分に対応するだけ受信した符号化データを破棄する。ここで、再生バッファ51及び受信バッファ43ともにポインタの位置関係が正常に戻ったら、再生バッファ逆転対策処理を終了する。ポインタが正常な位置関係に戻っていない場合は、再生バッファ逆転対策処理を継続する。
ステップS74、S75:ステップS72において、受信バッファ量Qr及び再生バッファ量Qpがともに安定閾値内にある場合は、逆転対策中フラグFptを戻す(S74)。そして、受信バッファ読出制御部61は、受信バッファ43からの符号化データを1段読み出すことを決定する(S75)。
ステップS76:ステップS71において再生バッファ逆転対策中ではないと判断された場合は、再生バッファ逆転対策処理が必要かどうかを判定する。WriteポインタがReadポインタよりも先に来た場合は、再生バッファ量が最小になった後、急激に増加して逆転基準Qprvs以上となる。よって、受信バッファ読出制御部61は、再生バッファ量Qrが急に逆転基準Qprvs以上となった場合は、再生バッファ逆転対策処理が必要であると判断する。
ステップS77、S78:再生バッファ逆転対策処理が必要である場合は、受信バッファ読出制御部61は逆転対策中フラグFptを立てて(S77)、再生バッファ逆転対策処理を行う(S78)。
ステップS79:ステップS76において再生バッファ逆転対策処理が必要でないと判断された場合は、受信バッファ読出制御部61は、再生バッファ量Qpが少ないかどうかを判定する。例えば、現在の再生バッファ量Qpと閾値である再生バッファ量最小Qpmin、再生バッファ量小Qps、再生バッファ量大Qpb及び最も好ましい量として基準量Qpstd等とを比較する。ここで、再生バッファ量Qpが少ないと判定された場合、つまり再生バッファ量Qpが例えば再生バッファ量最小Qpmin及び再生バッファ量小Qpsより小さい場合はステップS80に進み、そうでない場合はステップS86に進む。
ステップS80:次に、受信バッファ読出制御部61は、受信バッファ量Qrを参照して、受信バッファ43から複数段の符号化データを読み出し可能かどうかを判断する。このような判断を行うのは、再生バッファ量Qpが少ないため受信バッファ43から多くの符号化データを読み出して再生バッファ51に書き込むためである。
受信バッファ読出制御部61は、受信バッファ量Qrがバッファ量小Qrsより小さい場合はステップS84に進み、受信バッファ量Qrがバッファ量小Qrsより大きい場合はステップS81に進む。
ステップS81:受信バッファ読出制御部61は、読出量調整フラグとして+調整フラグが立っているかどうかを判断する。この+調整フラグFr+は、上述の通り、通常よりも受信バッファ43からの読出量を多くすることで相手方の通信装置Bとの基準クロックのずれを調整するためのものである。なお、この+調整フラグFr+は、読出量調整間隔Tpaごとに立てられている。
ステップS82:+調整フラグFr+が立っている場合は、次のステップS83において読み出しを複数段と決定するため、受信バッファ読出制御部61は+調整フラグFr+を戻す。
ステップS83:受信バッファ読出制御部61は、受信バッファ43から符号化データを複数段読み出すように受信バッファ読出部45に指示する。このように複数段読み出すことで、再生バッファ51への書込量を増やして再生バッファ量を適正に制御したり、相手方の通信装置Bとの基準クロックのずれを補正する。
ステップS84:ステップS80において、受信バッファ読出制御部61は、受信バッファ43から複数段読み出すことができないと判断すると、再生バッファ量小フラグFpsを立てる。これは、再生バッファ量が少ないにもかかわらず受信バッファ43からデータを読み出して再生バッファ51に書き込むことができないため、再生バッファ量が小さいことを示すフラグである。
ステップS85:受信バッファ読出制御部61は、受信バッファ43からの読出量を複数段ではなく1段と決定する。
ステップS86:受信バッファ読出制御部61は、再生バッファ量Qpが多いかどうかを判定する。例えば、現在の再生バッファ量Qpと再生バッファ量大Qpbとを比較する。ここで、再生バッファ量Qpが再生バッファ量大Qpbよりも多い場合はステップS87に進み、そうでない場合つまり再生バッファ量Qpが適切な量である場合はステップS93に進む。
ステップS87:次に、受信バッファ読出制御部61は、受信バッファ量Qrが基準量Qrstd以下であるかどうかを判定する。受信バッファ量Qrが基準量Qrstd以下である場合はステップS88に進み、そうでない場合はステップS91に進む。
ステップS88:受信バッファ読出制御部61は、読出量調整フラグとして−調整フラグFr−が立っているかどうかを判断する。この−調整フラグFr−は、通常よりも受信バッファ43からの読出量を少なくすることで相手方の通信装置Bとの基準クロックのずれを調整するためのものである。なお、この−調整フラグFr−は、読出量調整間隔Tpaごとに立てられている。
ステップS89:−調整フラグFr−が立っている場合は、次のステップS90において読み出しを0段と決定するため、受信バッファ読出制御部61は−調整フラグFr−を戻す。
ステップS90:受信バッファ読出制御部61は、受信バッファ43からの読出量を0段と決定し、受信バッファ読出部45に読み出しを行わないように指示する。このように読出量を抑制することで、再生バッファ51への書込量を減らして再生バッファ量を適正に制御したり、相手方の通信装置Bとの基準クロックのずれを補正する。
ステップS91:ステップS87において、受信バッファ読出制御部61は、受信バッファ量Qrが基準量Qpstdより多いと判断すると、再生バッファ量大フラグFpbを立てる。これは、再生バッファ量が多いことを示すフラグであり、再生バッファからの読出量を多くすることが可能であることを意味する。
ステップS92:受信バッファ量及び再生バッファ量がともに多いため、受信バッファ読出制御部61は、再生バッファ量が過剰とならないように受信バッファ43からの読出量を複数段ではなく1段と決定する。
ステップS93、S94:ステップS86において再生バッファ量Qpが適切な量であると判断された場合は、受信バッファ読出制御部61は再生バッファ量大フラグFpb及び再生バッファ量小フラグFpsを戻す(S93)。そして、受信バッファ読出制御部61は、受信バッファ43からの読出量を、通常の読出量である1段と決定する(S94)。
(f)再生スピード調整処理
図14は、受信機能部2が行う再生スピード調整処理の流れの一例を示すフローチャートである。
ステップS101:再生制御部65は、再生バッファ量小フラグFpsが立っているかどうかを判定し、立っている場合はステップS102に進み、そうでない場合はステップS104に進む。
ステップS102、S103:再生制御部65は、現在の再生バッファ量Qpが再生バッファ量比較基準Qpcmpより小さいかどうかを判定する(S102)。つまり、再生バッファ量比較基準Qpcmpは初回を除いては前回の再生バッファ量Qpであり、現在の再生バッファ量がQpが前回よりも減っているかどうかを判定する。前回よりも減っている場合は、再生制御部65は再生スピードを下げるように調整する(S103)。そうでない場合は終了する。つまり、再生バッファ量小フラグFpsが立っているので再生バッファ51からの読出量を少なく調整する必要あり、又現在の再生バッファ量Qpが再生バッファ量Qpcmpよりも小さいのでより、再生バッファ51からデータを読出して再生する再生スピードを小さくする。
再生スピードを下げる方法としては、例えば再生クロックの間隔を大きく調整する、サンプリング周波数を小さくする、間引き・補完部49での補完量を大きく設定するなどの方法が挙げられる。
ステップS104:再生制御部65は、再生バッファ量大フラグFpbが立っているかどうかを判定し、立っている場合はステップS105に進み、そうでない場合はステップS107に進む。
ステップS105、S106:再生制御部65は、現在の再生バッファ量Qpが再生バッファ量比較基準Qpcmpより大きいどうかを判定する(S105)。つまり、現在の再生バッファ量がQpが前回よりも増えているかどうかを判定する。前回よりも増えている場合は、再生制御部65は再生スピードを上げるように調整する(S106)。そうでない場合は終了する。
つまり、再生バッファ量大フラグFpbが立っているので再生バッファ51からの読出量を大きく調整する必要あり、又現在の再生バッファ量Qpが再生バッファ量Qpcmpよりも大きいのでより、再生バッファ51からデータを読出して再生する再生スピードを大きくする。
再生スピードを上げる方法としては、例えば再生クロックの間隔を小さく調整する、サンプリング周波数を大きくする、間引き・補完部49での間引き量を大きく設定するなどの方法が挙げられる。
ステップS107:再生制御部65は、再生バッファ量大フラグFpb及び再生バッファ量小フラグFpsがいずれも立っていないと判断した場合は、+調整フラグFr+が立っているかどうかを判断する。+調整フラグFr+が立っている場合は、ステップS108に進み、そうでない場合はステップS110に進む。
ステップS108、S109:再生制御部65は、現在の再生バッファ量Qpが再生バッファ量比較基準Qpcmpより大きいどうかを判定する(S108)。大きい場合は、再生制御部65は再生スピードを上げるように調整する(S109)。そうでない場合は終了する。
つまり、再生バッファ量大フラグFpb及び再生バッファ量大フラグFpsがともに立っていないので再生バッファ51からは通常の読出量でディジタルデータが読み出される。ここで、+調整フラグFr+が立っているので受信バッファ43からの符号化データの読出量が増加し、再生バッファ51への書込量が増加する。この状況において、現在の再生バッファ量Qpが再生バッファ量Qpcmpよりも大きいのでより、再生バッファ51からのデータの読出スピードを大きくする。
ステップS110:再生制御部65は、−調整フラグFr−が立っているかどうかを判断する。−調整フラグFr−が立っている場合は、ステップS111に進み、そうでない場合はステップS113に進む。
ステップS111、S112:再生制御部65は、現在の再生バッファ量Qpが再生バッファ量比較基準Qpcmpより小さいかどうかを判定する(S111)。前回よりも小さい場合は、再生制御部65は再生スピードを下げるように調整する(S112)。そうでない場合は終了する。
つまり、再生バッファ量大フラグFpb及び再生バッファ量大フラグFpsがともに立っていないので再生バッファ51からは通常の読出量でディジタルデータが読み出される。ここで、−調整フラグFr−が立っているので受信バッファ43からの符号化データの読出量は減少し、再生バッファ51への書込量が減少する。この状況において、現在の再生バッファ量Qpが再生バッファ量Qpcmpよりも小さいのでより、再生バッファ51からのデータの読出スピードを小さくする。
ステップS113:再生バッファ量大フラグFpb、再生バッファ量小フラグFps、+調整フラグFr+及び−調整フラグFr−のいずれも立っていない場合において、再生制御部65は現在の再生バッファ量Qpが最も好ましい基準量Qpstdより小さいかどうかを判定する。小さい場合はステップS114に進み、そうでない場合はステップS116に進む。
ステップS114、S115:さらに、再生制御部65は、現在の再生バッファ量Qpが再生バッファ量比較基準Qpcmpより小さいかどうかを判定し(S114)、前回よりも小さい場合は再生スピードを下げるように調整する(S115)。そうでない場合は終了する。
つまり、受信バッファ43からは通常の読出量で符号化データが読み出され、また再生バッファ51からも通常の読出量でディジタルデータが読み出される。この状況において、現在の再生バッファ量Qpが再生バッファ量比較基準Qpcmpよりも小さいのでより、再生バッファ51からのデータの読出スピードを小さくする。
ステップS116:再生制御部65は現在の再生バッファ量Qpが最も好ましい基準量Qpstdより大きいかどうかを判定する。大きい場合はステップS117に進み、そうでない場合は終了する。
ステップS117、S118:再生制御部65は、現在の再生バッファ量Qpが再生バッファ量比較基準Qpcmpより大きいどうかを判定する(S117)。大きい場合は、再生制御部65は再生スピードを上げるように調整する(S118)。そうでない場合は終了する。
つまり、受信バッファ43からは通常の読出量で符号化データが読み出され、また再生バッファ51からも通常の読出量でディジタルデータが読み出される。この状況において、現在の再生バッファ量Qpが再生バッファ量比較基準Qpcmpよりも大きいのでより、再生バッファ51からのデータの読出スピードを大きくする。
(3−2)送信側処理
(a)読出量調整間隔Tsaの算出処理
図15は、読出量調整間隔Tsaの算出処理の流れの一例を示すフローチャートである。
ステップS121:送信バッファ読出制御部37は、読出量調整間隔Tsaの更新が必要かどうかを判定する。例えば、前述の読出量調整間隔Tpaの算出処理のステップS34と同様に、前回算出したTclk(n-1)と今回算出したTclknとを比較して、大きく変動していないかを判定する。ここで、更新が必要である場合は、ステップS122に進む。一方、更新が不要な場合はステップを終了し、例えば図9の読出量調整間隔Tpaの算出処理のステップS38に進む。
ステップS122、S123:送信バッファ読出制御部37は、ずれ時間Δtに応じて読出量を増やしたり減らしたりする間隔である読出量調整間隔Tsaを、Tclkに基づいて算出し、再設定する。
(b)送信バッファの読出量フラグ設定処理
図16は、送信バッファの読出量フラグ設定処理の流れの一例を示すフローチャートである。
ステップS131:通信の終了まで以下の処理を行う。
ステップS132:送信バッファ読出制御部37は、読出量調整間隔Tsaが経過したか判断し、経過している場合はステップS133に進む。そうでない場合は読出量調整間隔Tsaが経過するまで待機する。
ステップS133:送信バッファ読出制御部37は、読出量調整間隔Tsaが経過するとずれ時間Δtが0かどうかを判断する。つまり、理論時間Trstdと受信時間ΔTrとの差が0であるかどうかを判断する。ずれ時間Δtが0でない場合は、ステップS134に進む。
ステップS134:ずれ時間Δt=0でない場合は、送信バッファ読出制御部37は、次にずれ時間Δtが0より大きいか否かを判断する。ずれ時間Δt>0である場合はステップS135に、ずれ時間Δt<0である場合はステップS136に進む。
ステップS135:ずれ時間Δt>0である場合、つまり理論時間Trstdが受信時間ΔTrより大きい場合、送信バッファ読出制御部37は、送信パケット調整数Npac=Npac+1と設定する。より具体的に説明すると、ずれ時間Δt>0である場合とは、時間軸上の1sという幅が相手方の通信装置Bよりも通信装置Aの方が大きく基準クロックが遅い場合である。よって、通信装置Aの方が基準クロックが遅い分だけ送信バッファ25からの読出量を増やして、つまり送信パケット数を増やして基準クロックのずれを補う。
ステップS136:ずれ時間Δt<0である場合、つまり理論時間Trstdが受信時間ΔTrより小さい場合は、送信バッファ読出制御部37は、送信パケット調整数Npac=Npac−1と設定する。より具体的に説明すると、ずれ時間Δt<0である場合とは、時間軸上の1sという幅が相手方の通信装置Bよりも通信装置Aの方が小さく基準クロックが早い場合である。よって、通信装置Aの方が基準クロックが早い分だけ送信バッファ25からの読出量を減らして、つまり送信パケット数を減らして基準クロックのずれを補う。
ステップS137:ずれ時間Δt=0である場合は、理論時間Trstdと受信時間ΔTrとが同じであるので、通信装置A及び通信装置B間の基準基準クロックのずれがない。よって、送信パケット調整数Npacを現在のNpacとして送信パケット数の増減の設定を行わない。
(c)送信処理
図17は、送信機能部1が行う送信処理の流れの一例を示すフローチャートである。
ステップS141:送信機能部1は、送信処理の各種設定を行う。例えば、送信部27は送信バッファ25からの読み出しの処理を行う送信クロックを設定し、キャプチャ制御部29はキャプチャスピード調整処理を行う間隔を設定し、送信バッファ読出制御部37及びキャプチャバッファ読出制御部33はそれぞれ送信バッファ量及びキャプチャバッファ量の閾値の設定を行う。また、送信バッファ読出制御部37は、送信バッファ25から読み出して送信する送信パケットの1個分のデータサイズQpacを設定する。
閾値の設定としては、送信バッファ25については、例えば、最も好ましい量として基準量Qsstd、この量を超えると遅延時間が大きくなる送信バッファ量大Qsb、この量より少なくなると読み出し不可になる送信バッファ量小Qss等を設定する。一方、キャプチャバッファ17には、例えば、読み出し1段分の量Q1blk、最も好ましい量として基準量Qcstd、この量を超えると遅延時間が大きくなるキャプチャバッファ量大Qcb、この量より少なくなると好ましくないキャプチャバッファ量小Qcs等を設定する。
ステップS142:送信バッファ読出制御部37は、送信クロックの割り込みがあるかどうかを判断する。割り込みがあればステップS143に進み、なければ送信クロックの割り込みを待つ。
ステップS143:送信クロックの割り込みがあれば、送信バッファ読出制御部37は、送信バッファ量監視部35から送信バッファ量Qsを取得する。また、キャプチャバッファ読出制御部33は、送信バッファ量Qs及びキャプチャバッファ量Qcを取得する。
ステップS144:キャプチャバッファ読出制御部33は、その送信クロックの割り込みが初回かどうかを判断し、初回であればステップS145に進み、初回でなければステップS146に進む。
ステップS145:割り込みが初回である場合は、キャプチャバッファ読出制御部33は、後述のキャプチャスピード調整処理で用いるキャプチャバッファ量比較基準Qccmpとして、現在のキャプチャバッファ量Qcを設定する。
ステップS146:一方、割り込みが初回でない場合は、キャプチャバッファ読出制御部33は、キャプチャバッファ量比較基準Qccmpとして、前回のキャプチャバッファ量Qcを設定する。
ステップS147:送信バッファ読出制御部37は、送信バッファ量を判断するための送信バッファ量判断処理を行う。
ステップS148、S149:キャプチャバッファ読出制御部33は、送信クロックのカウントを行い、キャプチャバッファ17からのデータの読み出しタイミングである第2読出クロックの割り込み時間となったかどうかを判断する。例えば、送信バッファから読み出した送信パケットの送信4回に対して、キャプチャバッファからデータを1回読み出す場合には、送信クロック4回分が第2読出クロック1回分に相当する。よって、キャプチャバッファ読出制御部33は、送信クロックを4カウントすると第2読出クロックの割り込みになったと判断して、ステップS150に進む。
ステップS150:キャプチャバッファ読出制御部33は、キャプチャバッファ17からの読出量算出処理を行う。この読出量算出処理ではキャプチャバッファ量及び送信バッファ量に基づいて、第2読出クロック毎のキャプチャバッファ17からの読出量を決定する処理を行う。
ステップS151、S152:次に、キャプチャ制御部29はキャプチャスピード調整タイミングなったかどうかを判断する。第2読出クロックをカウントし、キャプチャスピード調整タイミングとなったかどうかを判断する。ここで、キャプチャスピード調整間隔Nadjは第2読出クロックによる割り込み回数により定義されている。よって、キャプチャ制御部29は、キャプチャスピード調整間隔Nadj分だけ第2読出クロックがカウントされたかどうかを判断する。キャプチャスピード調整間隔Nadj分をカウントしていればステップS153に進み、そうでなければステップS154に進む。
ステップS153、S154:キャプチャ制御部29はキャプチャスピード調整処理を行い(S153)、カウント数をクリアする(S154)。
ステップS155:キャプチャバッファ読出部19は、ステップS150でキャプチャバッファ読出制御部33が決定した読出量に基づいてキャプチャバッファ17からディジタルデータを読み出す。読み出されたディジタルデータは、符号化されて送信バッファ25に書き込まれる。なお、キャプチャバッファ読出部19は、後述の無音挿入フラグが立っている場合は、キャプチャバッファ17からデータを読み出すことなく、送信バッファ25に無音データを出力する。
ステップS156:送信バッファ読出制御部37は、送信バッファ量及び送信パケット調整数Npacに基づいて送信パケット数を算出する送信パケット数算出処理を行う。
ステップS157:送信バッファ読出制御部37が決定した送信パケット数に基づいて、送信部27は送信バッファ25から読み出した符号化データをパケットに構成して送信する。
(d)送信バッファ量判断処理
図18は、送信機能部1が行う送信バッファ量判断処理の流れの一例を示すフローチャートである。
ステップS161:送信バッファ読出制御部37は、取得した送信バッファ25の送信バッファ量Qsが送信バッファ量小Qssより小さいかどうかを判定する。
ステップS162、S164:送信バッファ量Qsが送信バッファ量小Qssより小さい場合は、送信バッファ読出制御部37は、送信バッファ量が小であることを示す送信バッファ量小フラグFssがFALSEであるか、つまり送信バッファ量小フラグFssが立てられていないかを判断する(S162)。そして、送信バッファ量小フラグFssがFALSEである場合は、送信バッファ量Qsが送信バッファ量小Qssであることを示すために、送信バッファ読出制御部37は、送信バッファ量小フラグFssをTRUEにする(S163)。一方、送信バッファ量小フラグFssがFALSEでない場合、つまり送信バッファ量小フラグFssがTRUEである場合は終了する。
ステップS164:次に、送信バッファ読出制御部37は、送信バッファ量Qsが送信バッファ量小Qssより小さいため、キャプチャスピード調整間隔Nadjを小さくしてキャプチャスピードの調整頻度を多くする。つまり、前回キャプチャスピードを調整してから次にキャプチャスピードを調整するまでの第2読出クロックによる割り込み回数を小さくして、より早く送信バッファ量を適量に調整する。
ステップS165:また、送信バッファ読出制御部37は、送信バッファ量Qsが送信バッファ量小Qssより小さいため、キャプチャ制御部29にADC15でのキャプチャスピードを上げるように指示する。
ステップS166:ステップS161において、送信バッファ量Qsが送信バッファ量小Qssより小さくないと判断した場合は、送信バッファ読出制御部37は、送信バッファ量Qsが送信バッファ量大Qsbより大きいかどうかを判定する。
ステップS167、S168:送信バッファ量Qsが送信バッファ量大Qsbより大きい場合は、送信バッファ読出制御部37は、送信バッファ量が大であることを示す送信バッファ量大フラグFsbがFALSEであるか、つまり送信バッファ量大フラグFsbが立てられていないかを判断する(S167)。そして、送信バッファ量大フラグFsbがFALSEである場合は、送信バッファ量Qsが送信バッファ量大Qsbであることを示すために、送信バッファ読出制御部37は送信バッファ量大フラグFsbをTRUEにする(S168)。一方、送信バッファ量大フラグFsbがTRUEである場合は終了する。
ステップS169:次に、送信バッファ読出制御部37は、送信バッファ量Qsが送信バッファ量大Qsbより大きいため、キャプチャスピード調整間隔Nadjを小さくしてキャプチャスピードの調整頻度を多くしてより早く送信バッファ量を適量に調整する。
ステップS170:また、送信バッファ読出制御部37は、送信バッファ量Qsが送信バッファ量大Qsbより大きいため、キャプチャ制御部29にADC15でのキャプチャスピードを下げるように指示する。
ステップS171:ステップS161及びS166の結果、送信バッファ量Qsが送信バッファ量小Qss以上であり、かつ送信バッファ量大Qsb以下であり、ステップS171では送信バッファ量は適量である。ここで、送信バッファ読出制御部37は、送信バッファ量小フラグFssがTRUEであるか、又は送信バッファ量大フラグFsbがTRUEであるかを判断する。
ステップS172:ステップS171において送信バッファ量小フラグFss又は送信バッファ量大フラグFsbがTRUEであると判断された場合は、現在の送信バッファ量が適量であることを示すため、送信バッファ量小フラグFss及び送信バッファ量大フラグFsbをFALSEにする。
ステップS173:送信バッファ読出制御部37は、送信バッファ量が適量であるので、キャプチャスピードの調整間隔Nadjを元に戻してキャプチャスピードの調整頻度を通常に戻す。
上記ステップS161からステップS171をさらに説明すると次の通りである。上記ステップS161からステップS165では、送信バッファ量Qsが送信バッファ量小Qssより小さい場合に、送信バッファ量小フラグFssがFALSEであれば、ステップS163で送信バッファ量小フラグFssをTRUEに設定する。そして、送信バッファ量小フラグFssがTRUEの間は、次回のステップS161において送信バッファ量Qsが送信バッファ量小Qssより小さいと判断されても、ステップS163からステップS165の処理は行わない。このとき、後述のキャプチャスピード調整処理において、キャプチャバッファ量を参照しながらキャプチャスピードの調整が行われる。次に、送信バッファ量が適量になって、ステップS171からステップS173の処理により送信バッファ量小フラグFssがFALSEに設定されれば、再度ステップS162からステップS165の処理が可能となる。即ち、送信バッファ量Qsが送信バッファ量小Qssより小さいと初めて判断した場合は、キャプチャバッファ量に関係なくキャプチャスピードを上げる。その後は、キャプチャスピード調整処理によりキャプチャバッファ量に応じてキャプチャスピードを調整する。
一方、ステップS166からステップS170では、送信バッファ量Qsが送信バッファ量大Qsbより大きい場合に、送信バッファ量大フラグFsbがFALSEであれば、ステップS168で送信バッファ量小フラグFsbをTRUEに設定する。そして、送信バッファ量大フラグFsbがTRUEの間は、次回のステップS166において送信バッファ量Qsが送信バッファ量大Qsbより大きいと判断されても、ステップS168からステップS170の処理は行わない。このとき、後述のキャプチャスピード調整処理において、キャプチャバッファ量を参照しながらキャプチャスピードの調整が行われる。次に、送信バッファ量が適量になって、ステップS171からステップS173の処理により送信バッファ量大フラグFsbがFALSEに設定されれば、ステップS167からステップS170の処理が可能となる。即ち、送信バッファ量Qsが送信バッファ量大Qsbより大きいと初めて判断した場合は、キャプチャバッファ量に関係なくキャプチャスピードを下げる。その後は、キャプチャスピード調整処理によりキャプチャバッファ量に応じてキャプチャスピードを調整する。
(e)キャプチャバッファからの読出量算出処理
図19は、送信機能部1が行うキャプチャバッファ17からのディジタルデータの読出量算出処理の流れの一例を示すフローチャートである。
ステップS181:キャプチャバッファ読出制御部33は、キャプチャバッファ量Qcが読み出し1段分の量Q1blkよりも小さいかどうかを判断する。読み出し1段分の量Q1blkより小さい場合はステップS182に進み、そうでない場合はステップS187に進む。
ステップS182:次に、キャプチャバッファ読出制御部33は、送信バッファ量Qsが送信バッファ量小Qssより小さいかどうかを判断する。
ステップS183、S184:キャプチャバッファ読出制御部33は、ステップS182において送信バッファ量Qsが送信バッファ量小Qssより小さいと判断した場合は無音挿入フラグを立てて(S183)、1段読み出しを決定する(S184)。ただし、この1段読み出しの決定は、キャプチャバッファ17からのデータの読み出しではなく、無音データを1段読み出すことを意味する。
つまり、キャプチャバッファ量が読み出し1段分の量Q1blkよりも小さいため、キャプチャバッファ17からデータを読み出すことができない。また、送信バッファ量がこの量より少なくなると読み出し不可になる送信バッファ量小Qssより小さいため、送信バッファ25には無音データを書き込む必要がある。そこで、キャプチャバッファ読出制御部33により無音挿入フラグを立てておき、キャプチャバッファ読出部19は、この無音挿入フラグ及び1段読み出し決定を参照して、キャプチャバッファ17からデータを読み出すことなく、送信バッファ25に1段分の無音データを出力する。
ステップS185、S186:キャプチャバッファ読出制御部33は、ステップS182において送信バッファ量Qsが送信バッファ量小Qss以上であると判断した場合はキャプチャスピード調整フラグFadjをFALSEに設定して、キャプチャスピードの調整を行わせないようにする(S185)。そして、キャプチャバッファ読出制御部33は、キャプチャバッファ17から0段のデータを読み出すことを決定、つまりデータを読み出さないことを決定する(S186)。
前述の図13での再生バッファ量の説明と同様に、キャプチャバッファ量は、ReadポインタとWriteポインタに囲まれた領域により定義される。ここで、キャプチャスピードは適正値であるが、OSでの処理の揺らぎなどによって処理応答が無いなどの理由により、一時的にWriteポインタの動作がおかしくなる場合がある。よって、次の動作時にはWriteポインタの動作が正常に戻ってキャプチャ量Qcが適正量であると判断される場合もある。そこで、このような一時的な動作不良であり、かつキャプチャバッファ量が少ない場合には、キャプチャバッファからの読み出しを無しにして、さらに後述のキャプチャスピード調整処理でのキャプチャスピードの調整を行わないようにして、次のキャプチャバッファ量を監視する。
ステップS187:ステップS181においてキャプチャバッファ量Qcが読み出し1段分の量Q1blk以上である場合は、キャプチャバッファ読出制御部33は、キャプチャバッファ量Qcがキャプチャバッファ量大Qcb以上であるかどうかを判断する。
ステップS188、S189:キャプチャバッファ読出制御部33は、キャプチャバッファ量Qcがキャプチャバッファ量大Qcb以上である場合は、キャプチャスピード調整フラグFadjをFALSEに設定して(S188)、キャプチャバッファ17から2段のデータを読み出すことを決定する(S189)。上記と同様の理由により、一時的な動作不良であり、かつキャプチャバッファ量が多い場合には、キャプチャバッファ17からの読み出しを通常の1段よりも多い2段にして、さらにキャプチャスピードの調整を行わないようにして、次のキャプチャバッファ量を監視する。
ステップS190:次に、キャプチャバッファ量Qcがキャプチャバッファ量大Qcbより小さい場合は、キャプチャバッファ読出制御部33は、送信バッファ量が少ないことを示す送信バッファ量小フラグFssがTRUEであるかを判断する。つまり、送信バッファ量が少ないことに対応した処理が行われているかどうかを判断する。
ステップS191:送信バッファ量小フラグFssがTRUEである場合は、キャプチャバッファ読出制御部33は、キャプチャバッファ量Qcが最も好ましい量として基準量Qcstdより大きいかどうかを判断する。
ステップS192:送信バッファ量が少なく、かつキャプチャバッファ量が基準量Qcstdより大きい場合は、キャプチャバッファ読出制御部33はキャプチャバッファ17からの読出量を通常の1段よりも多い2段に決定する。これにより、送信バッファ量を適量に調整することが可能となる。
ステップS193:キャプチャバッファ量Qcが基準量Qcstd以下である場合は、キャプチャバッファ読出制御部33はキャプチャバッファ17からの読出量を通常の1段と決定する。このとき、キャプチャバッファ量Qcは1段以上基準量Qcstd以下であり、かつ送信バッファ量が少ない状態である。ここで、送信バッファ量が少ないと相手方の通信装置Bへのパケットの送信に影響が出るため、キャプチャバッファ量Qcが基準量Qcstd以下であっても読出量を1段と決定する。
ステップS194:キャプチャバッファ読出制御部33は、送信バッファ量小フラグFssがFALSEである場合は、送信バッファ量が多いことを示す送信バッファ量大フラグFsbがTRUEであるかを判断する。つまり、送信バッファ量が多いことに対応した処理が行われているかどうかを判断する。
ステップS195:送信バッファ量大フラグFsbがTRUEである場合は、キャプチャバッファ読出制御部33は、キャプチャバッファ量Qcが基準量Qcstdより小さいかどうかを判断する。
ステップS186:送信バッファ量が多く、かつキャプチャバッファ量が基準量Qcstdより小さい場合は、キャプチャバッファ読出制御部33はキャプチャバッファ17からの読出量を0段と決定する。送信バッファ量が多いためパケットの送信には影響が無いため、キャプチャバッファ17からの読み出しを無しにしてキャプチャバッファ量が基準量Qcstd以上となるのを待つ。
ステップS197:送信バッファ量が多く、かつキャプチャバッファ量が基準量Qcstdより大きい場合は、キャプチャバッファ読出制御部33は、読出量を通常の読み出し段数である1段と決定する。そして、送信バッファ量及びキャプチャバッファ量が適量になるのを待つ。
ステップS198:キャプチャバッファ量Qcが読み出し1段分の量Q1blk以上キャプチャバッファ量大Qcbより小さく、送信バッファ量が適量である場合は、キャプチャバッファ読出制御部33は、読出量を通常の読み出し段数である1段と決定する。
(f)キャプチャスピード調整処理
図20は、送信機能部1が行うキャプチャスピード調整処理の流れの一例を示すフローチャートである。前述の図17の送信処理におけるステップS152において、キャプチャスピード調整間隔Nadj分だけ第2読出クロックがカウントされた場合は、以下のキャプチャスピード調整処理を行う。そして、キャプチャスピード調整処理が終了すると、第2読出クロックのカウントNを0に戻して再度カウントを開始する。
ステップS201:キャプチャ制御部29は、キャプチャスピード調整フラグFadjがTRUEであるかどうかを判断する。TRUEであればステップS202に進み、FALSEであればステップS214に進む。
ステップS202:キャプチャスピード調整フラグFadjがTRUEである場合は、さらに送信バッファ量大フラグFsbがTRUEであるかを判断する。
ステップS203、S204:送信バッファ量大フラグFsbがTRUEである場合は、現在のキャプチャバッファ量Qcがキャプチャバッファ量比較基準Qccmpより大きいかどうかを判定する(S203)。つまり、キャプチャバッファ量比較基準Qccmpは初回を除いては前回のキャプチャバッファ量Qcであり、現在のキャプチャバッファ量Qcが前回よりも多くなっているかどうかを判定する。前回よりも多い場合は、キャプチャ制御部29はキャプチャスピードを下げるように調整する(S204)。そうでない場合はステップS214に進む。
つまり、送信バッファ量が多いことを示す送信バッファ量大フラグFsbが立っており、かつ現在のキャプチャバッファ量Qcがキャプチャバッファ量Qccmpよりも大きいため、キャプチャバッファ17へのデータの書込量を少なく調整する必要ある。よって、アナログデータをディジタルデータに変換するキャプチャスピードを小さくして、キャプチャバッファ量を減らす。
キャプチャスピードを下げる方法としては、例えばキャプチャクロックの間隔を大きく調整する、サンプリング周波数を小さくする、間引き・補完部21でのデータの補完量を大きく設定するなどの方法が挙げられる。
ステップS205:次に、送信バッファ量大フラグFsbがFALSEである場合は、キャプチャ制御部29は、送信バッファ量小フラグFssがTRUEであるかどうかを判断する。
ステップS206、S207:送信バッファ量小フラグFssがTRUEである場合は、キャプチャ制御部29は、現在のキャプチャバッファ量Qcがキャプチャバッファ量比較基準Qccmpより小さいかどうかを判定する(S206)。つまり、現在のキャプチャバッファ量Qcが前回よりも減っているかどうかを判定する。前回よりも減っている場合は、キャプチャ制御部29はキャプチャスピードを上げるように調整する(S207)。そうでない場合はステップS214に進む。
つまり、送信バッファ量が少ないことを示す送信バッファ量小フラグFssが立っており、かつ現在のキャプチャバッファ量Qcがキャプチャバッファ量Qccmpよりも小さいため、キャプチャバッファ17へのデータの書込量を多く調整する。よって、キャプチャスピードを大きくしてキャプチャバッファ量を増やす。
キャプチャスピードを上げる方法としては、例えばキャプチャクロックの間隔を小さく調整する、サンプリング周波数を大きくする、間引き・補完部49での間引き量を大きく設定するなどの方法が挙げられる。
ステップS208:送信バッファ量大フラグFsb、送信バッファ量小フラグFssのいずれもがTRUEでない場合において、キャプチャ制御部29は現在のキャプチャバッファ量Qcが最も好ましい基準量Qcstdより大きいかどうかを判定する。大きい場合はステップS209に進み、そうでない場合はステップS211に進む。
ステップS209、S210:さらに、キャプチャ制御部29は、現在のキャプチャバッファ量Qcがキャプチャバッファ量比較基準Qccmpより大きいかどうかを判定し(S209)、前回よりも大きい場合はキャプチャスピードを下げるように調整する(S210)。そうでない場合はテップS214に進む。
つまり、送信バッファ量が適量である場合において、現在のキャプチャバッファ量Qcがキャプチャバッファ量比較基準Qccmpよりも大きいのでより、キャプチャバッファ17への書き込みのスピードを小さくする。
ステップS211:キャプチャ制御部29は現在のキャプチャバッファ量Qcが最も好ましい基準量Qcstdより小さいかどうかを判定する。小さい場合はステップS212に進み、そうでない場合はステップS214に進む。
ステップS212、S213:キャプチャ制御部29は、現在のキャプチャバッファ量Qcがキャプチャバッファ量比較基準Qccmpより小さいかどうかを判定する(S212)。小さい場合は、キャプチャ制御部29はキャプチャスピードを上げるように調整する(S213)。そうでない場合テップS214に進む。
つまり、送信バッファ量が適量である場合において、現在のキャプチャバッファ量Qcがキャプチャバッファ量比較基準Qccmpよりも小さいのでより、キャプチャバッファ17への書き込みのスピードを大きくする。
ステップS214:キャプチャスピードの調整が終了すると、第2読出クロックのカウントNを0に戻して再度、第2読出クロックのカウントを再度開始する。
(g)送信パケット数算出処理
図21は、送信機能部1が行う送信パケット数算出処理の流れの一例を示すフローチャートである。
ステップS221:送信バッファ読出制御部37は、送信バッファ量Qsが送信パケットの1個分のデータサイズQpacより小さいかどうかを判断する。
ステップS222、S223:送信バッファ量Qsが送信パケットの1個分のデータサイズQpacが小さい場合は、送信バッファ読出制御部37は、送信パケット調整数Npacを“+1”することで、次回の処理の際に用いる送信パケット調整数Npacを大きくする(S222)。そして、送信バッファ読出制御部37は、今の送信パケット数Msendを0と決定し、通常の送信パケット数1よりも小さくする(S223)。送信部27は、送信パケット数Msend=0に基づいて、パケットの送信を行わない。つまり、送信バッファ量が1パケット分に満たないため、今回の送信ではパケットの送信を行わず、次の送信の時に1パケット余分に送信するようにする。ここで、送信パケット調整数Npacは、送信クロックの割り込み毎に前述のステップS222、後述のステップS226、S230により調整される。さらに、送信パケット調整数Npacは、読出量調整間隔Tsa毎に、前述の図16に示される送信バッファの読出量調整フラグ設定処理などにおいても調整される。
ステップS224:送信バッファ量QsがデータサイズQpac以上である場合は、送信パケット調整数Npacが0より大きいかどうかを判断する。送信パケット調整数Npacが0より大きい場合はステップS225に進み、0以下の場合はステップS229に進む。
ステップS225〜227:次に、送信バッファ読出制御部37は、送信バッファ量QsがQpacの2倍以上であるかどうかを判断する(S225)。そして、送信バッファ量QsがQpacの2倍以上である場合は、送信パケット調整数Npacを“−1”することで、次の送信パケット調整数Npacを小さくする(S226)。そして、送信バッファ読出制御部37は、今の送信パケット数Msendを2と決定し、通常の送信パケット数より大きくする(S227)。送信部27は、送信パケット数Msend=2に基づいてパケットの送信を行う。つまり、送信パケット調整数Npacが0より大きく、かつ送信バッファ量が2パケット分以上あるため、今回の送信では送信パケット数を多くし、次回以降の送信時は送信時の状況及び送信パケット調整数Npacに応じてパケットを送信するようにする。
ステップS228:送信バッファ量QsがQpac以上であるがQpacの2倍に満たない場合は、送信バッファ読出制御部37は、今の送信パケット数Msendを1と決定する。
ステップS229:送信バッファ読出制御部37は、送信パケット調整数Npacが0以下である場合は、Npacが0より小さいかどうかを判断する。そして、送信パケット調整数Npacが0より小さい場合はステップS230に進み、送信パケット調整数Npacが0である場合はステップS232に進む。
ステップS230、S231:送信バッファ量QsがデータサイズQpacより小さい場合は、送信バッファ読出制御部37は、送信パケット調整数Npacを“+1”して(S230)今の送信パケット数Msendを0と決定する(S231)。つまり、送信パケット調整数Npacが0以下であることに応じて、今回の送信ではパケットの送信を行わず、次回以降の送信時はその送信時の状況及び送信パケット調整数Npacに応じてパケットを送信するようにする。
ステップS232:送信パケット調整数Npacが0であるため、通常の送信パケット数“1”のまま送信パケット数の増減を行わず、送信パケット数Msend=1と決定する。
(4)作用効果
受信側処理では、自身の基準クロックと相手方の基準クロックとのずれ時間Δtがなくなるように受信バッファからの読出量を調整する。このような処理により、受信処理における相手方の通信装置との基準クロックのずれをなくすことができる。また、受信バッファからの読出量の調整により、再生バッファには相手方の通信装置の基準クロックに基づいてディジタルデータが書き込まれる。この再生バッファを所定量に調整することにより、再生バッファから読み出されていくデータ量を調整する。これにより、再生スピードを相手方の基準クロックに対応するように調整することができる。
一方、送信側処理では、送信バッファから送信する送信パケット数をずれ時間Δtがなくなるように調整し、またキャプチャバッファから読み出され送信バッファに書き込まれるデータ量をずれ時間Δtがなくなるように調整する。これにより、送信処理及びキャプチャバッファからの読み出し処理における、相手方の通信装置との基準クロックのずれをなくすことができる。ここで、キャプチャバッファ量を所定量にするように調整することで、キャプチャバッファへのデータの蓄積を制御する。これにより、キャプチャスピードを相手方の基準クロックに対応するように調整することができる。
以上のような処理により、受信側処理及び送信側処理をともに相手方の通信装置の基準クロックに合わせることができ、双方向通信におけるリアルタイム通信の品質を高めることができる。
また、上述のように、受信側処理の第1読出クロック、送信側処理の送信クロック及び第2読出クロックが同一の基準クロックに基づいて形成されている。よって、自分の基準クロックと相手方の通信装置の基準クロックとのずれ時間Δtが分かれば、受信機能部と送信機能部とが別個独立してずれ時間Δtの調整が可能である。つまり、受信側処理では、受信バッファからの読出処理においてずれ時間Δtを補正する処理を行う。これにより、相手方の基準クロックに適合するように再生バッファにデータが格納されていき、そのときの再生バッファ量に応じて再生スピードを調整する。送信側処理では、送信バッファからの送信処理及びキャプチャバッファからの読出処理においてずれ時間Δtを補正する処理を行う。これにより、相手方の基準クロックに適合するようにパケットが送信されるとともにキャプチャバッファからデータが読み出されていき、そのときのキャプチャバッファ量に応じてキャプチャスピードを調整する。このような方法によれば、再生クロックとキャプチャクロックとが異なるような例えばノートパソコンなどの通信装置においても、受信側処理及び送信側処理をともに相手方の通信装置の基準クロックに合わせることができ、多様な再生環境やキャプチャ環境においても双方向通信の品質を高めることができる。
また、双方向通信において一方の通信装置が受信側処理及び送信側処理をともに調整するため、相手方がどのような通信装置であっても双方向通信を安定に行うことができる。例えば、相手方の通信装置がクロック調整が不可能な端末や、他の通信装置の基準クロックとなるような装置であるためにクロック調整を行いたくない端末などの場合であっても、一方の通信装置により安定に双方向通信が可能である。具体的に、相手方の通信装置が自分の基準クロックでパケットを送信すれば、一方の通信装置が相手方の基準クロックとのずれを修正して、修正後の基準クロックにより相手方にパケットを送信する。そのため、相手方の通信装置は、自分の基準クロックに適合した間隔でパケットを受信することができるようになる。よって、相手方の通信装置は、基準クロックのずれを調整するなどの処理を行う必要がなくなる。
さらに、パケットの受信間隔は、一方の通信装置側で取得した受信時刻に基づいて算出される。よって、相手方の通信装置から一方の通信装置に、パケットそれぞれの送信時刻を送信する必要がない。そのため、送信するパケットのパケット構成を簡略化し、パケットのデータ量を削減できる。
(5)変形例
図22は、本発明の第1実施形態例に係る通信装置の別の機能構成図である。図22に示す通信装置は、上記図4に示す通信装置と同様にパターンAの場合の通信装置であり、基準クロック自体の調整により制御クロックの調整ができない。
上記図4の通信装置の機能構成図と異なる点は、上記の図4では、制御クロック発生部84は基準クロックに基づいて第1読出クロック、第2読出クロック及び送信クロックを生成するのに対し、図22では制御クロック発生部84は基準クロックに基づいて第1読出クロック、第2読出クロック、送信クロック、再生クロック及びキャプチャクロックを生成する点である。よって、図22では再生クロックを生成する再生クロック発生部86及びキャプチャクロックを生成するキャプチャクロック発生部85が設けられていない。そのため、再生クロック発生部86及びキャプチャクロック発生部85による、ずれ時間Δtに応じて再生クロック及びキャプチャクロックを発生する処理は無い。その他の構成は上記図4の機能構成と同様であり、処理及び作用効果も同様であるので説明を省略する。
<第2実施形態例>
次に、図3に示すパターンBの場合を例に挙げて第2実施形態例を説明する。つまり、第2実施形態例に係る通信装置では、基準クロック自体の調整によりいずれの制御クロックの調整も可能である。よって、基準クロック自体の調整により、第1読出クロック、再生クロック、キャプチャクロック、第2読出クロック及び送信クロックにおける相手方の基準クロックとのずれを調整することができる。
(1)機能構成及び処理
図23は、本発明の第2実施形態例に係る通信装置の機能構成図である。前述の図4に示される第1実施形態例に係る図4の通信装置の機能構成とは、クロック機能部4のTclk算出部82、キャプチャクロック発生部85及び再生クロック発生部86と、送信機能部1の間引き・補完部21、キャプチャ制御部29、キャプチャバッファ量監視部31、キャプチャバッファ読出制御部33、送信バッファ量監視部35及び送信バッファ読出制御部37と、受信機能部2の間引き・補完部49、再生制御部65、再生バッファ量監視部63、受信バッファ読出制御部61及び受信バッファ量監視部59とが設けられていない点で異なる。第1実施形態例と異なる機能構成及び処理を以下に説明する。
基準クロック発生部83は、基準クロックを発生して制御クロック発生部84に出力するとともに、ずれ時間Δt算出部81が算出したずれ時間Δtに基づいて基準クロックを補正する。これにより、通信装置Aの基準クロックを相手方の通信装置Bの基準クロックに合わせることができる。また、制御クロック発生部84は、この補正された基準クロックに基づいて第1読出クロック、再生クロック、キャプチャクロック、第2読出クロック及び送信クロックを発生する。よって、これらのクロックにおいて相手方の基準クロックとのずれをなくすことができる。
ここで、受信バッファ読出部45は、補正された第1読出クロックに基づいて受信バッファ43から符号化データを読み出す。読み出された符号化データは、復号化部47で複号化されて再生バッファ51に書き込まれる。また、DAC53は、補正された再生クロックに基づいて再生バッファ51から復号化されたデータを読み出してD/A変換する。このように、受信側処理は、ずれ時間Δtがなくなるように補正された第1読出クロック及び再生クロックに基づいて制御されることで、相手方の通信装置Bの基準クロックに合わせて行われる。
また、ADC15は、補正されたキャプチャクロックに基づいてA/D変換を行ってキャプチャバッファ17にデータを書き込む。また、キャプチャバッファ読出部19は、補正された第1読出クロックに基づいてキャプチャバッファ17からディジタルデータを読み出す。読み出されたディジタルデータは、符号化部23で符号化されて送信バッファ25に書き込まれる。送信部27は、補正された送信クロックに基づいて送信バッファ25から符号化データを読み出して相手方の通信装置Bに送信する。このように、送信側処理は、ずれ時間Δtがなくなるように補正されたキャプチャクロック、第2読出クロック及び送信クロックに基づいて制御されることで、相手方の通信装置Bの基準クロックに合わせて行われる。
図23に記載された他の機能構成は、第1実施形態例の図4と同様であるので説明を省略する。
以上のように、第2実施形態例では、基準クロックの調整を行うことで各制御クロックを調整する。よって、調整された各制御クロックに基づいて受信側処理及び送信側処理を制御することで、受信側処理及び送信側処理をともに相手方の通信装置の基準クロックに合わせることができる。その他、前記第1実施形態例と同様の作用効果も有する。
(2)変形例
受信バッファ43、再生バッファ51、キャプチャバッファ17及び送信バッファ25でのオーバーフローやアンダーフローを防止するために、各バッファ量を監視して制御する処理部を設けても良い。また、基準クロックにより各制御クロックを調整してもずれ時間Δt分の補正をすることができない場合もあるため、第1実施形態例の図4に示す間引き・補完部21、キャプチャ制御部29、キャプチャバッファ量監視部31、キャプチャバッファ読出制御部33、送信バッファ量監視部35、送信バッファ読出制御部37、間引き・補完部49、再生制御部65、再生バッファ量監視部63、受信バッファ読出制御部61及び受信バッファ量監視部59をさらに設けても良い。これらの各処理部での処理は、第1実施形態例と同様である。
<第3実施形態例>
次に、図3に示すパターンCの場合を例に挙げて第3実施形態例を説明する。つまり、第3実施形態例に係る通信装置では、基準クロック自体の調整により第1読出クロック、第2読出クロック及び送信クロックにおいて、相手方の通信装置Bの基準クロックとのずれをなくす。そして、再生スピードの調整及びキャプチャスピードの調整により、再生クロック及びキャプチャクロックにおいて相手方の通信装置Bの基準クロックとのずれをなくす。
(1)機能構成及び処理
図24は、本発明の第2実施形態例に係る通信装置の機能構成図である。前述の図4に示される第1実施形態例に係る図4の通信装置の機能構成とは、クロック機能部4のTclk算出部82と、送信機能部1のキャプチャバッファ読出制御部33、送信バッファ量監視部35及び送信バッファ読出制御部37と、受信機能部2の受信バッファ読出制御部61及び受信バッファ量監視部59とが設けられていない点で異なる。第1実施形態例と異なる機能構成及び処理を以下に説明する。
基準クロック発生部83は、基準クロックを発生して制御クロック発生部84に出力するとともに、ずれ時間Δt算出部81が算出したずれ時間Δtに基づいて基準クロックを補正する。これにより、通信装置Aの基準クロックを相手方の通信装置Bの基準クロックに合わせることができる。また、制御クロック発生部84は、この補正された基準クロックに基づいて第1読出クロック、第2読出クロック及び送信クロックを発生する。よって、これらのクロックにおいて相手方の基準クロックとのずれをなくすことができる。
ここで、受信バッファ読出部45は、補正された第1読出クロックに基づいて受信バッファ43から符号化データを読み出す。読み出された符号化データは、復号化部47で複号化されて再生バッファ51に書き込まれる。これにより、受信バッファ43からの読出処理を相手方の通信装置Bの基準クロックに合わせることができる。また、再生バッファ量監視部63は、再生バッファ51の再生バッファ量を監視しており、再生バッファ量を再生制御部65に出力する。再生制御部65は、再生バッファ51を所定量に調整することで、再生バッファ51から読み出されていくディジタルデータ量を調整する。これにより、再生スピードを相手方の通信装置Bの基準クロックに対応するように調整することができる。再生スピードの調整としては、第1実施形態例と同様に、例えば再生クロックの調整、再生周波数の調整及び受信バッファ43から読み出したデータの間引き・補完部49での間引き・補完等が挙げられる。このように、ずれ時間Δtがなくなるように補正された第1読出クロックにより受信バッファ43からの読出処理を行うともに、再生バッファ51を所定量に調整することで、受信側処理を相手方の通信装置Bの基準クロックに合わせて行うことができる。
また、送信側処理については、まず送信部27は、補正された送信クロックに基づいて送信バッファ25からデータを読み出して相手方通信装置Bにパケットを送信する。キャプチャバッファ読出部19は、補正された第2読出クロックに基づいてキャプチャバッファ17からディジタルデータを読み出す。読み出されたディジタルデータは、符号化部23で符号化されて送信バッファ25に書き込まれる。これにより、送信処理及びキャプチャバッファ17からの読出処理を相手方の通信装置Bの基準クロックに合わせることができる。さらに、キャプチャバッファ量監視部31は、キャプチャバッファ17のキャプチャバッファ量を監視しており、キャプチャバッファ量をキャプチャ制御部29に出力する。キャプチャ制御部29は、キャプチャバッファ17を所定量に調整することで、キャプチャバッファ17に書き込まれるディジタルデータ量を調整する。これにより、キャプチャスピードを相手方の通信装置Bの基準クロックに対応するように調整することができる。キャプチャスピードの調整としては、第1実施形態例と同様に、例えばキャプチャクロックの調整、キャプチャ周波数の調整及びADC15で変換されたディジタルデータの間引き・補完部21での間引き・補完等が挙げられる。このように、ずれ時間Δtがなくなるように補正された第2読出クロック及び送信クロックによりキャプチャバッファ17からの読出処理及び送信処理を行うともに、キャプチャバッファ17を所定量に調整することで、送信側処理を相手方の通信装置Bの基準クロックに合わせて行うことができる。
図24に記載された他の機能構成は、第1実施形態例の図4と同様であるので説明を省略する。
第3実施形態例では、以上のような処理により、受信側処理及び送信側処理をともに相手方の通信装置の基準クロックに合わせることができる。その他、前記第1実施形態例と同様の作用効果も有する。
(2)変形例
各バッファでのオーバーフローやアンダーフローを防止するために、各バッファ量を監視して制御する処理部を設けても良い。また、基準クロックにより各制御クロックを調整してもずれ時間Δt分の補正をすることができない場合もあるため、第1実施形態例の図4に示すキャプチャバッファ読出制御部33、送信バッファ量監視部35、送信バッファ読出制御部37、受信バッファ読出制御部61及び受信バッファ量監視部59をさらに設けても良い。これらの各処理部での処理は、第1実施形態例と同様である。
<その他の実施形態例>
前述した送受信方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、CD−ROM、MO、DVD、DVD−ROM、DVD−RAM、BD(Blue−ray Disc)、半導体メモリを挙げることができる。
前記コンピュータプログラムは、前記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク63等を経由して伝送されるものであってもよい。
受信・再生処理及びキャプチャ・送信処理の両方を含む双方向通信において、相手方の通信装置との安定な通信を行うような場合に好適である。
本発明の通信装置内での処理を制御するクロックを説明するための説明図。 通信装置間の基準クロックのずれ時間Δtの算出方法を説明するための説明図。 ずれ時間Δtの調整方法の場合分けを示す説明図。 本発明の第1実施形態例に係る通信装置の機能構成図。 ずれ時間Δtの算出方法を示す説明図。 Tclkの算出方法を示す説明図。 送受信されるパケットの構成例。 受信機能部2が行う受信処理の流れの一例を示すフローチャート。 受信機能部2及びクロック機能部4が行うTclk算出処理及び読出量調整間隔Tpaの算出処理の流れの一例を示すフローチャート。 受信バッファの読出量フラグ設定処理の流れの一例を示すフローチャート。 受信機能部2が行う再生処理の流れの一例を示すフローチャート。 受信機能部2が行う受信バッファ43からの符号化データの読出量算出処理の流れの一例を示すフローチャート。 再生バッファ逆転対策中を示す説明図。 受信機能部2が行う再生スピード調整処理の流れの一例を示すフローチャート。 読出量調整間隔Tsaの算出処理の流れの一例を示すフローチャート。 送信バッファの読出量フラグ設定処理の流れの一例を示すフローチャート。 送信機能部1が行う送信処理の流れの一例を示すフローチャート。 送信機能部1が行う送信バッファ量判断処理の流れの一例を示すフローチャート。 送信機能部1が行うキャプチャバッファ17からのディジタルデータの読出量算出処理の流れの一例を示すフローチャート。 送信機能部1が行うキャプチャスピード調整処理の流れの一例を示すフローチャート。 送信機能部1が行う送信パケット数算出処理の流れの一例を示すフローチャート。 本発明の第1実施形態例に係る通信装置の別の機能構成図。 本発明の第2実施形態例に係る通信装置の機能構成図。 本発明の第2実施形態例に係る通信装置の機能構成図。
符号の説明
1:送信機能部
2:受信機能部
4:クロック機能部
13:増幅器
15:ADC
17:キャプチャバッファ
19:キャプチャバッファ読出部
21:間引き・補完部
25:送信バッファ
27:送信部
29:キャプチャ制御部
31:キャプチャバッファ量監視部
33:キャプチャバッファ読出制御部
35:送信バッファ量監視部
37:送信バッファ読出制御部
41:受信部
43:受信バッファ
45:受信バッファ読出部
49:間引き・補完部
51:再生バッファ
53:DAC
59:受信バッファ量監視部
61:受信バッファ読出制御部
63:再生バッファ量監視部
65:再生制御部
67:受信間隔取得部
81:ずれ時間Δt算出部
82:Tclk算出部
83:基準クロック発生部
84:制御クロック発生部
85:キャプチャクロック発生部
86:再生クロック発生部

Claims (20)

  1. 相手方の通信装置に通信網を介して接続される通信装置であって、
    前記通信網を介し、パケットの送信に関連する送信情報を含む複数のパケットを、前記相手方の通信装置から順次受信する受信手段と、
    前記複数のパケットそれぞれに含まれる符号化データを一時的に蓄積する受信バッファと、
    前記通信装置内で行われる送受信処理の時間を制御するクロックであり、所定時間間隔の周期を有する基準クロックを発生させる基準クロック発生手段と、
    前記基準クロックに基づいて第1読出クロックを発生する第1読出クロック発生手段と、
    前記第1読出クロックに従って、前記符号化データを前記受信バッファから読み出し、ディジタルデータに復号化する復号化手段と、
    前記送信情報に基づいて所定数k(k≧2)個のパケットを受信するのに要する理論時間Trstdを取得する理論時間取得手段と、
    前記k個のパケットを前記受信手段が受信するのに要する受信間隔ΔTrを、前記基準クロックに基づいて取得する受信間隔取得手段と、
    前記理論時間Trstdと前記受信間隔ΔTrとのずれ時間を算出するずれ時間算出手段と、
    前記ずれ時間に応じて前記基準クロックの調整又は前記受信バッファからの読出量を調整する第1調整手段と、
    を含む通信装置。
  2. 所定時間間隔の周期を有するキャプチャクロックに基づいて、アナログデータをディジタルデータに変換する第2変換手段と、
    前記第2変換手段で変換されたディジタルデータを一時的に蓄積するキャプチャバッファと、
    前記基準クロックに基づいて第2読出クロックを発生する第2読出クロック発生手段と、
    前記第2読出クロックに従って、前記ディジタルデータを前記キャプチャバッファから読み出し、符号化データに符号化する符号化手段と、
    前記符号化手段で符号化された符号化データを一時的に蓄積する送信バッファと、
    前記基準クロックに基づいて送信クロックを発生する送信クロック発生手段と、
    前記送信クロックに基づいて、前記送信バッファから符号化データを読み出してパケットを構成し、前記相手方の通信装置に送信する送信手段と、
    をさらに含む、請求項1に記載の通信装置。
  3. 前記ずれ時間Δtに応じて前記送信バッファからの読出量を調整する第2調整手段をさらに含む、請求項2に記載の通信装置。
  4. 前記ずれ時間Δtに応じて前記キャプチャバッファからの読出量を調整する第3調整手段をさらに含む、請求項3に記載の通信装置。
  5. 前記キャプチャバッファに蓄積されているディジタルデータ量(以下、キャプチャバッファ量という)を監視するキャプチャバッファ量監視手段をさらに含み、
    前記キャプチャバッファ量を参照して前記キャプチャバッファ量を所定量に調整する第4調整手段とをさらに含む、請求項2に記載の通信装置。
  6. 前記第4調整手段は、前記キャプチャバッファ量が所定量になるように前記キャプチャクロックを調整する、請求項5に記載の通信装置。
  7. 前記第4調整手段は、前記キャプチャバッファ量が所定量になるように前記第2変換手段でのアナログデータのサンプリング周波数を調整する、請求項5に記載の通信装置。
  8. 前記第4調整手段は、前記キャプチャバッファ量が所定量になるように、前記第2変換手段による変換後のディジタルデータの間引き量及び補完量を決定し、
    決定された間引き量及び補完量に基づいて、前記ディジタルデータを間引き又は補完する第2間引き・補完手段をさらに含み、
    前記キャプチャバッファは、間引き又は補完されたディジタルデータを一時的に蓄積する、請求項5に記載の通信装置。
  9. 前記ずれ時間Δtと、前記基準クロック及び前記キャプチャクロックの関係とに応じてキャプチャクロックを調整するキャプチャクロック調整手段をさらに含む、請求項2に記載の通信装置。
  10. 前記受信バッファに蓄積されている符号化データ量(以下、受信バッファ量という)を監視する受信バッファ量監視手段をさらに含み、
    前記第1調整手段は、前記受信バッファ量を参照して前記受信バッファからの読出量を調整する、請求項1に記載の通信装置。
  11. 前記復号化手段で復号化されたディジタルデータを一時的に蓄積する再生バッファと、
    所定時間間隔の周期を有する再生クロックに基づいて、前記再生バッファからディジタルデータを読み出し、アナログデータに変換する第1変換手段と、
    をさらに含む請求項1に記載の通信装置。
  12. 前記再生バッファに蓄積されているディジタルデータ量(以下、再生バッファ量という)を監視する再生バッファ量監視手段と、
    前記再生バッファ量を参照して前記再生バッファ量を所定量に調整する第5調整手段とをさらに含む、請求項11に記載の通信装置。
  13. 前記第5調整手段は、前記再生バッファ量が所定量になるように前記再生クロックを調整する、請求項12に記載の通信装置。
  14. 前記第5調整手段は、前記再生バッファ量が所定量になるように前記再生バッファからのディジタルデータのサンプリング周波数を調整する、請求項12に記載の通信装置。
  15. 前記第5調整手段は、前記再生バッファ量が所定量になるように、前記復号化手段による復号化後のディジタルデータの間引き量及び補完量を決定し、
    決定された間引き量及び補完量に基づいて、前記ディジタルデータを間引き又は補完する第1間引き・補完手段をさらに含み、

    前記再生バッファは、間引き又は補完されたディジタルデータを一時的に蓄積する、請求項12に記載の通信装置。
  16. 前記ずれ時間Δtと、前記基準クロック及び前記再生クロックの関係とに応じて再生クロックを調整する再生クロック調整手段をさらに含む、請求項11に記載の通信装置。
  17. 前記復号化手段で復号化されたディジタルデータを一時的に蓄積する再生バッファと、
    前記再生バッファに蓄積されているディジタルデータ量(以下、再生バッファ量という)を監視する再生バッファ量監視手段をさらに含み、
    前記第1調整手段は、さらに前記再生バッファ量監視手段から再生バッファ量を取得し、さらに前記再生バッファ量を参照して前記受信バッファからの読出量を調整する、請求項10に記載の通信装置。
  18. 相手方の通信装置に通信網を介して接続される通信装置における通信方法であって、
    前記通信網を介し、パケットの送信に関連する送信情報を含む複数のパケットを、前記相手方の通信装置から順次受信する受信ステップと、
    前記複数のパケットそれぞれに含まれる符号化データを一時的に蓄積する受信バッファと、
    前記通信装置内で行われる送受信処理の時間を制御するクロックであり、所定時間間隔の周期を有する基準クロックを発生させる基準クロック発生ステップと、
    前記基準クロックに基づいて第1読出クロックを発生する第1読出クロック発生ステップと、
    前記第1読出クロックに従って、前記符号化データを前記受信バッファから読み出し、ディジタルデータに復号化する復号化ステップと、
    前記送信情報に基づいて所定数k(k≧2)個のパケットを受信するのに要する理論時間Trstdを取得する理論時間取得ステップと、
    前記受信ステップにおいて前記k個のパケットを受信するのに要する受信間隔ΔTrを、前記基準クロックに基づいて取得する受信間隔取得ステップと、
    前記理論時間Trstdと前記受信間隔ΔTrとのずれ時間を算出するずれ時間算出ステップと、
    前記ずれ時間に応じて前記基準クロックの調整又は前記受信バッファからの読出量を調整する第1調整ステップと、
    を含む通信方法。
  19. 相手方の通信装置に通信網を介して接続される通信装置が実行する通信プログラムであって、
    前記通信網を介し、パケットの送信に関連する送信情報を含む複数のパケットを、前記相手方の通信装置から順次受信する受信手段、
    前記複数のパケットそれぞれに含まれる符号化データを一時的に蓄積する受信バッファ、
    前記通信装置内で行われる送受信処理の時間を制御するクロックであり、所定時間間隔の周期を有する基準クロックを発生させる基準クロック発生手段、
    前記基準クロックに基づいて第1読出クロックを発生する第1読出クロック発生手段、
    前記第1読出クロックに従って、前記符号化データを前記受信バッファから読み出し、ディジタルデータに復号化する復号化手段、
    前記送信情報に基づいて所定数k(k≧2)個のパケットを受信するのに要する理論時間Trstdを取得する理論時間取得手段、
    前記k個のパケットを前記受信手段が受信するのに要する受信間隔ΔTrを、前記基準クロックに基づいて取得する受信間隔取得手段、
    前記理論時間Trstdと前記受信間隔ΔTrとのずれ時間を算出するずれ時間算出手段、及び
    前記ずれ時間に応じて前記基準クロックの調整又は前記受信バッファからの読出量を調整する第1調整手段、
    として通信装置を機能させる通信プログラム。
  20. 相手方の通信装置に通信網を介して接続される通信装置が実行する通信プログラムを記録した、コンピュータ読み取り可能な記録媒体であって、
    前記通信網を介し、パケットの送信に関連する送信情報を含む複数のパケットを、前記相手方の通信装置から順次受信する受信ステップと、
    前記複数のパケットそれぞれに含まれる符号化データを一時的に蓄積する受信バッファと、
    前記通信装置内で行われる送受信処理の時間を制御するクロックであり、所定時間間隔の周期を有する基準クロックを発生させる基準クロック発生ステップと、
    前記基準クロックに基づいて第1読出クロックを発生する第1読出クロック発生ステップと、
    前記第1読出クロックに従って、前記符号化データを前記受信バッファから読み出し、ディジタルデータに復号化する復号化ステップと、
    前記送信情報に基づいて所定数k(k≧2)個のパケットを受信するのに要する理論時間Trstdを取得する理論時間取得ステップと、
    前記受信ステップにおいて前記k個のパケットを受信するのに要する受信間隔ΔTrを、前記基準クロックに基づいて取得する受信間隔取得ステップと、
    前記理論時間Trstdと前記受信間隔ΔTrとのずれ時間を算出するずれ時間算出ステップと、
    前記ずれ時間に応じて前記基準クロックの調整又は前記受信バッファからの読出量を調整する第1調整ステップと、
    を含む通信プログラムを記録した、コンピュータ読み取り可能な記録媒体。
JP2005269638A 2005-09-16 2005-09-16 通信装置、その通信方法、通信プログラム及び通信プログラムを記録したコンピュータ読み取り可能な記録媒体 Active JP4597826B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2005269638A JP4597826B2 (ja) 2005-09-16 2005-09-16 通信装置、その通信方法、通信プログラム及び通信プログラムを記録したコンピュータ読み取り可能な記録媒体

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005269638A JP4597826B2 (ja) 2005-09-16 2005-09-16 通信装置、その通信方法、通信プログラム及び通信プログラムを記録したコンピュータ読み取り可能な記録媒体

Publications (2)

Publication Number Publication Date
JP2007082045A true JP2007082045A (ja) 2007-03-29
JP4597826B2 JP4597826B2 (ja) 2010-12-15

Family

ID=37941837

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005269638A Active JP4597826B2 (ja) 2005-09-16 2005-09-16 通信装置、その通信方法、通信プログラム及び通信プログラムを記録したコンピュータ読み取り可能な記録媒体

Country Status (1)

Country Link
JP (1) JP4597826B2 (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012215861A (ja) * 2011-03-28 2012-11-08 Yamaha Corp オーディオデータ入力装置および出力装置
WO2012173020A1 (ja) * 2011-06-13 2012-12-20 ソニー株式会社 送信装置、送信方法、及びプログラム
US9467655B2 (en) 2013-11-29 2016-10-11 Brother Kogyo Kabushiki Kaisha Computer readable recording medium, communication terminal device and teleconferencing method
KR20170108746A (ko) * 2016-03-18 2017-09-27 삼성전자주식회사 백그라운드 실시간 2차 입력 인터셉트 포인트 보정을 제공하는 장치 및 방법
JP2020202444A (ja) * 2019-06-06 2020-12-17 ミハル通信株式会社 伝送装置および伝送装置の制御方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000022678A (ja) * 1998-06-30 2000-01-21 Victor Co Of Japan Ltd データ伝送端末装置
JP2001045065A (ja) * 1999-08-03 2001-02-16 Sharp Corp パケット処理装置及びパケット処理プログラムを記録した記憶媒体
JP2001186180A (ja) * 1999-12-24 2001-07-06 Oki Electric Ind Co Ltd Ip端末装置、周波数誤差範囲推定方法、周波数差推定方法及び推定所要時間算出方法
JP2002374319A (ja) * 2001-06-18 2002-12-26 Toa Corp 受信装置及び受信再生方法
JP2004096239A (ja) * 2002-08-29 2004-03-25 Matsushita Electric Ind Co Ltd オーディオ伝送システム、これに用いられる受信端末、送信端末及び復号化処理装置、並びにオーディオ伝送方法
JP2004282441A (ja) * 2003-03-17 2004-10-07 Nippon Telegr & Teleph Corp <Ntt> 端末同期方法及び端末同期回路
JP2004320569A (ja) * 2003-04-18 2004-11-11 Sumitomo Electric Ind Ltd データ伝送装置
JP2005184383A (ja) * 2003-12-18 2005-07-07 Sony Corp リアルタイムデータ通信システム、リアルタイムデータ通信装置及びリアルタイムデータ通信方法

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000022678A (ja) * 1998-06-30 2000-01-21 Victor Co Of Japan Ltd データ伝送端末装置
JP2001045065A (ja) * 1999-08-03 2001-02-16 Sharp Corp パケット処理装置及びパケット処理プログラムを記録した記憶媒体
JP2001186180A (ja) * 1999-12-24 2001-07-06 Oki Electric Ind Co Ltd Ip端末装置、周波数誤差範囲推定方法、周波数差推定方法及び推定所要時間算出方法
JP2002374319A (ja) * 2001-06-18 2002-12-26 Toa Corp 受信装置及び受信再生方法
JP2004096239A (ja) * 2002-08-29 2004-03-25 Matsushita Electric Ind Co Ltd オーディオ伝送システム、これに用いられる受信端末、送信端末及び復号化処理装置、並びにオーディオ伝送方法
JP2004282441A (ja) * 2003-03-17 2004-10-07 Nippon Telegr & Teleph Corp <Ntt> 端末同期方法及び端末同期回路
JP2004320569A (ja) * 2003-04-18 2004-11-11 Sumitomo Electric Ind Ltd データ伝送装置
JP2005184383A (ja) * 2003-12-18 2005-07-07 Sony Corp リアルタイムデータ通信システム、リアルタイムデータ通信装置及びリアルタイムデータ通信方法

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012215861A (ja) * 2011-03-28 2012-11-08 Yamaha Corp オーディオデータ入力装置および出力装置
WO2012173020A1 (ja) * 2011-06-13 2012-12-20 ソニー株式会社 送信装置、送信方法、及びプログラム
US20130141596A1 (en) * 2011-06-13 2013-06-06 Sony Corporation Transmitter, transmission method, and program
CN103262536A (zh) * 2011-06-13 2013-08-21 索尼公司 发送装置、发送方法、和程序
US9467655B2 (en) 2013-11-29 2016-10-11 Brother Kogyo Kabushiki Kaisha Computer readable recording medium, communication terminal device and teleconferencing method
KR20170108746A (ko) * 2016-03-18 2017-09-27 삼성전자주식회사 백그라운드 실시간 2차 입력 인터셉트 포인트 보정을 제공하는 장치 및 방법
KR102479982B1 (ko) * 2016-03-18 2022-12-20 삼성전자주식회사 백그라운드 실시간 2차 입력 인터셉트 포인트 보정을 제공하는 장치 및 방법
JP2020202444A (ja) * 2019-06-06 2020-12-17 ミハル通信株式会社 伝送装置および伝送装置の制御方法
JP7409786B2 (ja) 2019-06-06 2024-01-09 ミハル通信株式会社 伝送装置および伝送装置の制御方法

Also Published As

Publication number Publication date
JP4597826B2 (ja) 2010-12-15

Similar Documents

Publication Publication Date Title
CN109906613B (zh) 音频和视频的多模式同步渲染
JP4361561B2 (ja) データ受信装置及びデータ受信方法
US8279884B1 (en) Integrated adaptive jitter buffer
CN101971629B (zh) 用于适配视频信号的目标速率的设备和方法
US8489758B2 (en) Method of transmitting data in a communication system
US7061863B2 (en) Data communication system, data receiving terminal and data sending terminal
JP4462996B2 (ja) パケット受信方法及びパケット受信装置
JP4597826B2 (ja) 通信装置、その通信方法、通信プログラム及び通信プログラムを記録したコンピュータ読み取り可能な記録媒体
US20110187926A1 (en) Apparatus and method for correcting jitter
US20170048025A1 (en) Communication control apparatus, communication control method, and computer-readable non-transitory recording medium
JP2017069849A (ja) 映像制御装置、映像配信システムおよび映像制御方法
CN104754339B (zh) I帧调整方法、装置及系统
JP2009207084A (ja) 送信装置、送信プログラム、受信装置及び受信プログラム
JP2009231857A (ja) 通信制御装置、通信制御方法および通信制御プログラム
JP4076981B2 (ja) 通信端末装置およびバッファ制御方法
KR20080012920A (ko) 무선 통신 디바이스의 적응적 폴링을 위한 방법 및 장치
JP2007274369A (ja) 通信システム、送信装置および受信装置
JP4376165B2 (ja) 受信装置,クロック調整方法および放送システム
JP2005286749A (ja) 映像復号化装置およびそれを用いた映像伝送システム
JP4909590B2 (ja) メディア信号の受信装置、送信装置及び送受信システム
JP4623867B2 (ja) 受信装置及び受信再生方法
KR102510865B1 (ko) 신호 처리 장치 및 신호 처리 방법, 및 프로그램
JP2007027813A (ja) 通信システム
EP2200025A1 (en) Bandwidth scalable codec and control method thereof
JP2005184383A (ja) リアルタイムデータ通信システム、リアルタイムデータ通信装置及びリアルタイムデータ通信方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20071119

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100118

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100706

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100823

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20100907

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20100922

R150 Certificate of patent or registration of utility model

Ref document number: 4597826

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131001

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131001

Year of fee payment: 3

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131001

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131001

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250