(57)【特許請求の範囲】
【請求項１】
相手方の通信装置と通信網を介して接続され、前記相手方の通信装置との間で双方向通信を行うための通信装置であって、
所定の時間間隔で基準クロックを発生させる基準クロック発生手段と、
前記基準クロックとは別の複数の異なる制御クロックに従って読み出される各種データをそれぞれ一時蓄積する複数のバッファと、
相手方の通信装置から送信される所定数のパケット受信に要する受信間隔と、受信された所定数のパケット内の送信情報に基づいて得られる所定数のパケット受信に要する理論時間とのずれ時間を算出するずれ時間算出手段と、
送信処理時に、前記ずれ時間に基づいて少なくとも１つのバッファのデータ読出量、または、送信処理時又は再生処理時のいずれかのときに、前記ずれ時間と前記基準クロックおよび対応する制御クロックの関係とに基づいて当該対応する制御クロックを調整する調整手段と、
を含む通信装置。
【請求項２】
前記複数のバッファとして、ディジタルデータを一時蓄積するキャプチャバッファ、および、前記ディジタルデータの符号化データを一時蓄積する送信バッファを含んでおり、
前記調整手段は、前記送信処理時に、前記ずれ時間に基づいて前記送信バッファのデータ読出量を調整する、
請求項１に記載の通信装置。
【請求項３】
前記調整手段は、前記送信処理時に、前記ずれ時間に基づいて前記キャプチャバッファのデータ読出量も調整する、
請求項２に記載の通信装置。
【請求項４】
前記複数の制御クロックの一つとして、アナログデータが前記ディジタルデータに変換されるときに用いられるキャプチャクロックを含んでおり、
前記調整手段は、前記送信処理時に、前記ずれ時間と、前記基準クロックおよび前記キャプチャクロックの関係とに応じてキャプチャクロックを調整する、
請求項１に記載の通信装置。
【請求項５】
前記複数のバッファの一つとして、再生クロックに従って読み出されるディジタル信号を一時蓄積する再生バッファを含んでおり、
前記調整手段は、前記再生処理時に、前記ずれ時間と、前記基準クロックおよび前記再生クロックの関係とに応じて再生クロックを調整する、
請求項１に記載の通信装置。
【請求項６】
請求項１ないし５のいずれかに記載の通信装置を機能させる通信プログラム。
【請求項７】
請求項６に記載の通信プログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置、その通信方法、通信プログラム及び通信プログラムを記録したコンピュータ読み取り可能な記録媒体に関する。
【背景技術】
【０００２】
ＬＡＮなどのネットワーク上でのディジタルデータ通信システムでは、テキストや静止画像だけでなく、音声や動画像などのデータをパケット化して通信を行う。ディジタル通信及び再生方式の１つに、データの最後までの受信を待たずに再生する「ストリーミング再生方式」がある。ストリーミング再生方式では、相手方の通信装置と自身の通信装置との間で音声や動画像をリアルタイムに伝送する方式である。特許文献１には、このような再生方式において安定した再生が可能な受信装置が開示されている。特許文献１の受信装置には、データを一時的に蓄積する受信バッファ、データを蓄積する再生バッファ、受信バッファから受信データ読み出して再生バッファに書き込む書込制御手段及び受信データの破棄手段が設けられている。破棄手段は、受信バッファ量及び再生バッファ量を監視することにより、パケットの受信遅延や受信装置での処理遅延を判定する。そして、破棄手段は、判定結果に基づいて受信したデータを破棄する。このように受信遅延や処理遅延に応じてデータ量の補正を行うことで、リアルタイム通信において送受信されるデータを安定に再生することができる。
【０００３】
特許文献２には、音切れの防止が可能なパケット処理装置が開示されている。特許文献２のパケット処理装置は、受信パケットを格納する受信バッファ、受信バッファを再生クロックに基づいて再生する再生手段及び再生処理を制御する制御手段を含む。ここで、制御手段は、受信バッファの状態を監視して状態に応じて再生処理を行う。これにより、ネットワークのジッタ、もしくは通信端末間の基準クロックの偏差によるオーバーフロー、アンダーフローが生じても最適な再生処理を行うことができる。
【特許文献１】特開2001-045065号公報
【特許文献２】特開2004-289683号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、上記特許文献１及び特許文献２は、ネットワークの揺らぎなどによるパケットの受信遅延、受信装置での受信処理の遅延や相手方の通信装置との基準クロックの偏差がある場合でもパケットの受信・再生処理を安定に行うことを対象にしているのみである。つまり、受信・再生処理のみを対象にしており、相手方の通信装置にパケットを送信するキャプチャ・送信処理については何ら記載されていない。この場合、相手方の通信装置との間の双方向通信において、お互いの通信装置内のそれぞれの受信装置が、受信・再生処理を調整すれば双方向の通信を安定に行うことも可能となり得る。つまり、お互いの通信装置が受信・再生処理のみを調整すれば、送信処理を調整しないくても双方向通信を安定にし得る。しかし、このような方法では、互いの通信装置の両方ともが同様の受信・再生処理を行えなければ、双方向通信を安定に行うことができない。
【０００５】
そこで、本発明は、双方向通信を安定に行うことができる通信装置を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明の通信装置は、相手方の通信装置と通信網を介して接続され、相手方の通信装置との間で双方向通信を行うための通信装置であって、所定の時間間隔で基準クロックを発生させる基準クロック発生手段と、基準クロックとは別の複数の異なる制御クロックに従って読み出される各種データをそれぞれ一時蓄積する複数のバッファと、相手方の通信装置から送信される所定数のパケット受信に要する受信間隔と、受信された所定数のパケット内の送信情報に基づいて得られる所定数のパケット受信に要する理論時間とのずれ時間を算出するずれ時間算出手段と、送信処理時に、ずれ時間に基づいて少なくとも１つのバッファのデータ読出量、または、送信処理時又は再生処理時のいずれかのときに、ずれ時間と基準クロックおよび対応する制御クロックの関係とに基づいて当該対応する制御クロックを調整する調整手段とを含む。
【０００７】
ここで、送信情報とは、パケットのシーケンシャル番号やパケットの送信間隔を含む情報である。
【００１７】
複数のバッファとして、ディジタルデータを一時蓄積するキャプチャバッファ、および、ディジタルデータの符号化データを一時蓄積する送信バッファを含んでおり、調整手段は、送信処理時に、ずれ時間に基づいて送信バッファのデータ読出量を調整するようにしてもよい。
【００１９】
調整手段は、送信処理時に、ずれ時間に基づいてキャプチャバッファのデータ読出量も調整するようにしてもよい。
【００２１】
複数の制御クロックの一つとして、アナログデータがディジタルデータに変換されるときに用いられるキャプチャクロックを含んでおり、調整手段は、送信処理時に、ずれ時間と、基準クロックおよびキャプチャクロックの関係とに応じてキャプチャクロックを調整するようにしてもよい。
【００４１】
本発明の通信プログラムは、上述した通信装置を機能させるものである。
【００４２】
本発明のコンピュータ読み取り可能な記録媒体は、上述した通信プログラムを記録したものである。
【発明の効果】
【００４４】
本発明を用いれば、相手方の通信装置との基準クロックのずれを補正して、双方向通信を安定に行うことができる通信装置を提供することができる。
【発明を実施するための最良の形態】
【００４５】
＜発明の概要＞
（１）構成
図１は本発明の通信装置内での処理を制御するクロックを説明するための説明図である。一方の通信装置Ａと相手方の通信装置Ｂとの間でパケットの送受信を行い、双方向通信を行っている。通信装置Ａは、キャプチャ・送信処理を行う送信機能部１、受信・再生処理を行う受信機能部２、基準クロック発生部５及び制御クロック発生部６を含む。基準クロック発生部５は通信装置Ａの送受信処理を制御する基準クロックを発生し、制御クロック発生部６は基準クロックに基づいて制御クロックを発生する。ここで、制御クロックとは、少なくとも第１読出クロック、第２読出クロック及び送信クロック（図１中イタリック体で記載された３つのクロック）を含む。つまり、少なくとも第１読出クロック、第２読出クロック及び送信クロックは基準クロックに基づいて生成される。
【００４６】
また、受信機能部２は受信バッファ９及び再生バッファ１０を含み、送信機能部１はキャプチャバッファ７及び送信バッファ８を含む。受信バッファ９は、相手方の通信装置Ｂから受信したパケットから取得したデータを一時的に蓄積する。受信バッファ９からは第１読出クロックに基づいてデータが読み出される。再生バッファ１０は、第１読出クロックに基づいて受信バッファから読み出されたデータが書き込まれ蓄積される。そして、再生バッファ１０内に蓄積されたデータは、再生クロックに基づいて読み出されスピーカー等を介して出力される。送信機能部１のキャプチャバッファ７は、送信機能部１がキャプチャクロックに基づいて取得したデータを一時的に蓄積する。キャプチャバッファ７からは第２読出クロックに基づいてデータが読み出される。送信バッファ８は、第２読出クロックに基づいてキャプチャバッファから読み出されたデータが書き込まれ蓄積される。そして、送信バッファ８内に蓄積されたデータは、送信クロックに基づいて読み出され相手方の通信装置Ｂに出力される。
【００４７】
なお、上記では第１読出クロック、第２読出クロック及び送信クロックのみが基準クロックに基づいて生成される制御クロックとしているが、さらに再生クロック及びキャプチャクロックもまた、基準クロックに基づいて生成される制御クロックとしても良い。
（２）基準クロックのずれ時間Δｔの調整
相手方の通信装置Ｂは、自分の基準クロックに基づく送信クロックで通信装置Ａにパケットを送信している。よって、通信装置Ａは、相手方の通信装置Ｂの基準クロックに基づく送信クロックでパケットを受信して受信バッファ９に蓄積している。ここで、通信装置Ａと通信装置Ｂとの基準クロックとにずれがある場合は、受信バッファ９内のデータ量が不安定となり受信機能部２において安定に出力することができない。そこで、通信装置Ａは、自身の基準クロックと相手方の通信装置Ｂの基準クロックとのずれ時間Δｔを算出して、ずれ時間Δｔをなくすように基準クロック自体の調整又は受信バッファからのデータの読出量を調整する。
【００４８】
図２は、通信装置間の基準クロックのずれ時間Δｔの算出方法を説明するための説明図である。図２に示すように、通信装置Ａの基準クロックＣＬＫａのクロック間隔Δａと通信装置Ｂの基準クロックＣＬＫｂのクロック間隔Δｂとがずれている。
通信装置Ａは、例えば通信装置Ｂとの通信開始時に通信装置Ｂによるパケットの送信に関連する送信情報を取得している。ここで、パケットの送信に関連する送信情報とは、パケットのシーケンシャル番号やパケットの送信間隔を含む情報である。また、パケットの送信間隔とは、相手方の通信装置のパケットの送信間隔そのもの、あるいは何個のパケットをどのような送信間隔で送信するかなどに関する情報などである。具体的に例を挙げると、通信装置Ａ及びＢ間での通信開始時に、通信装置Ａは、相手方の通信装置Ｂからデータのサンプリング周波数と、１パケットのデータサイズと、１サンプルあたりのバイト数ｓｍｐと圧縮方式などを示すデータフォーマットとを送信情報として受信しているとする。例えば、サンプリング周波数が３２ｋＨｚ、１パケットのデータサイズが２５６バイト、データフォーマットが１サンプルあたり２バイトで圧縮無しである場合、パケット送信間隔は次のように算出される。
【００４９】
パケット送信間隔＝（１パケットのデータサイズ）／（サンプリング周波数×１サンプルあたりのデータ数）
＝２５６／（３２０００×２）＝４ｍｓ
通信装置Ａは、例えばパケット１００個を受信するのに要する理論時間Ｔｒｓｔｄを、通信装置Ｂからのパケットの送信間隔に基づいて算出する。次に、通信装置Ａは、実際にパケット１００個を受信するに要した受信時間ΔＴｒを測定する。ここで、通信装置Ａは、受信時間ΔＴｒを自分の基準クロックＣＬＫａに基づいて取得している。一方、理論時間はＴｒｓｔｄは、相手方の通信装置Ｂのパケットの送信間隔に基づいて算出しているため、通信装置Ｂの基準クロックＣＬＫｂに基づいている。よって、受信間隔ΔＴｒと理論時間Ｔｒｓｔｄとの差分を算出することで、通信装置Ａと相手方の通信装置Ｂとの基準クロックのずれ時間Δｔを算出することができる。
【００５０】
次に、通信装置Ａは、このずれ時間Δｔがなくなるように自身の基準クロック自体を調整又は受信バッファ９からの読出量を調整する。ここで、基準クロック発生部５において、ずれ時間Δｔに応じて通信装置Ａの基準クロック自体を調整すれば、制御クロック発生部６は調整された基準クロックに基づいて制御クロックを調整することができる。よって、第１読出クロック、第２読出クロック及び送信クロックについて、通信装置Ｂの基準クロックとのずれ時間Δｔをなくすことができる。つまり、受信側処理においては、受信バッファ９からのデータの読み出しおよび再生バッファ１０へのデータの書き込みを通信装置Ｂの基準クロックに合わせることができる。同様に、送信側処理においては、キャプチャバッファ７からのデータの読み出し、送信バッファ８へのデータの書き込み及び送信バッファ８からのパケットの送信を通信装置Ｂの基準クロックに合わせることができる。
【００５１】
（３）再生スピードの調整
次に、再生バッファ１０からのデータの出力処理における通信装置Ｂの基準クロックとのずれ時間Δｔを調整する方法について説明する。
前述のずれ時間Δｔの調整により第１読出クロックを相手方の通信装置Ｂの基準クロックに合わせることができる。よって、再生バッファ１０には、相手方の通信装置の基準クロックに基づいて受信バッファから読み出されたデータが書き込まれる。ここで、通信装置Ａは、再生バッファ１０内のデータ量を所定量に調整する。つまり、再生バッファ１０から読み出されていくデータ量を調整することで再生スピードを調整する。これにより、再生スピードを相手方の基準クロックに対応するように調整することができる。再生スピードの調整としては、例えば再生クロックの調整、再生周波数の調整及び受信バッファ９から読み出したデータの間引き・補完等が挙げられる。
【００５２】
（４）キャプチャスピードの調整
次に、キャプチャバッファ７でのデータのキャプチャ処理における通信装置Ｂの基準クロックとのずれ時間Δｔを調整する方法について説明する。
前述のずれ時間Δｔの調整により第２読出クロック及び送信クロックを相手方の通信装置の基準クロックに合わせることができる。よって、キャプチャバッファ７及び送信バッファ８からは相手方の通信装置Ｂの基準クロックに基づいてデータが読み出される。ここで、通信装置Ａは、キャプチャバッファ７内のデータ量を所定量に調整する。つまり、キャプチャバッファへ蓄積されていくデータ量を調整することでキャプチャスピードを調整する。これにより、キャプチャスピードを相手方の基準クロックに対応するように調整することができる。キャプチャスピードの調整としては、例えばキャプチャクロックの調整、キャプチャ周波数の調整及び取得したデータの間引き・補完等が挙げられる。
【００５３】
（５）作用効果
このように基準クロックに基づいて送受信処理が制御されている場合には、受信側処理及び送信側処理をともに相手方の基準クロックに合わせて行うことができる。そのため、双方向通信におけるリアルタイム通信の品質を高めることができる。
また、受信側処理の第１読出クロック、送信側処理の送信クロック及び第２読出クロックが同一の基準クロックに基づいて形成されている。よって、自分の通信装置Ａの基準クロックと相手方の通信装置Ｂの基準クロックとのずれ時間Δｔが分かれば、受信機能部２と送信機能部１とが別個独立してずれ時間Δｔの調整が可能である。
【００５４】
また、双方向通信において一方の通信装置が受信側処理及び送信側処理をともに調整するため、相手方がどのような通信装置であっても双方向通信を安定に行うことができる。例えば、相手方の通信装置Ｂが自分の基準クロックでパケットを送信すれば、一方の通信装置Ａが相手方の基準クロックとのずれを修正して、修正後の基準クロックにより相手方にパケットを送信する。そのため、相手方の通信装置Ｂは自分の基準クロックに適合した受信間隔でパケットを受信することができるようになる。よって、相手方の通信装置Ｂは、基準クロックのずれを調整するなどの処理を行う必要がなくなる。
【００５５】
さらに、パケットの受信間隔は一方の通信装置自身が取得するため、相手方の通信装置はパケットそれぞれの送信時刻を送信する必要がない。そのため、送信するパケットのパケット構成を簡略化し、パケットのデータ量を削減することで、パケットの伝送効率の向上や使用する帯域幅を減少することができる。
（６）ずれ時間Δｔの調整方法の場合分け
図３はずれ時間Δｔの調整方法の場合分けを示す説明図であり、パターンとしては例えば次の３種類が挙げられる。
【００５６】
（６−１）パターンＡ
パターンＡの場合、基準クロック自体の調整によりいずれの制御クロックの調整もできない（ステップＳ１、Ｓ２参照）。ここで、第１読出クロック、第２読出クロック及び送信クロックが基準クロックに基づいて生成されている。しかし、基準クロック自体の調整ができず、基準クロックから生成される第１読出クロック、第２読出クロック及び送信クロックを調整することができない。また、再生クロック及びキャプチャクロックは、基準クロックに基づいて生成されていないため、基準クロック自体の調整ではそれらのクロックを調整することができない。
【００５７】
そこで、受信バッファ９からの読出量を調整することにより、第１読出クロックと相手方の通信装置Ｂの基準クロックとのずれ時間Δｔを調整する。同様に、キャプチャバッファ７からの読出量及び送信バッファ８からの読出量を調整することによりそれぞれ第２読出クロック及び送信クロックと相手方の通信装置Ｂの基準クロックとのずれ時間Δｔを調整する（ステップＳ３参照）。
【００５８】
さらに、再生スピードを調整することにより受信機能部２での処理全体を相手方の通信装置Ｂの基準クロックに適合させる。同様に、さらにキャプチャスピードを調整することにより送信機能部１での処理全体を相手方の通信装置Ｂの基準クロックに適合させる（ステップＳ４参照）。
（６−２）パターンＢ
パターンＢの場合、基準クロック自体の調整によりいずれの制御クロックの調整も可能である（ステップＳ１、Ｓ５参照）。よって、基準クロック自体の調整により、第１読出クロック、再生クロック、キャプチャクロック、第２読出クロック及び送信クロックにおける相手方の基準クロックとのずれを調整する。ここで、再生スピードの調整は再生クロックの調整により行われており、キャプチャスピードの調整はキャプチャクロックの調整により行われている。そのため、前述のステップＳ４の調整は行わなくても良い。
【００５９】
なお、再生クロック及びキャプチャクロックの調整によっても、再生スピード及びキャプチャスピードを相手の基準クロックと合わせることができない場合は、ステップＳ４の処理を行っても良い。
（６−３）パターンＣ
パターンＣの場合、基準クロック自体の調整により、少なくとも第１読出クロック、第２読出クロック及び送信クロックにおいて、相手方の通信装置Ｂの基準クロックが調整されている（ステップＳ１、Ｓ２、Ｓ６参照）。しかし、再生クロック及びキャプチャクロックのクロック自体の調整が行われていないので、再生スピードの調整及びキャプチャスピードの調整により相手方の基準クロックとのずれを調整する必要がある（ステップＳ４参照）。
【００６０】
＜第１実施形態例＞
まず、上記パターンＡの場合を例に挙げて第１実施形態例を説明する。つまり、第１実施形態例に係る通信装置では、基準クロック自体の調整により制御クロックの調整ができない。
（１）機能構成
図４は、本発明の第１実施形態例に係る通信装置の機能構成図である。通信装置Ａは、通信の相手方の通信装置Ｂ（図示せず）とＬＡＮなどのネットワーク３を介して接続されている。通信装置Ａは、送信機能部１、受信機能部２及びクロック機能部４を含む。送信機能部１は、キャプチャ処理及び送信処理を含む送信側処理を行う。受信機能部２は、受信処理及び再生処理を含む受信側処理を行う。クロック機能部４は、通信装置内の受信側処理及び送信側処理に用いられるクロックを制御する。以下に、送信機能部１、受信機能部２及びクロック機能部４の構成について説明する。
【００６１】
（１−１）クロック機能部
まず、クロック機能部４について説明する。クロック機能部４は、ずれ時間Δｔ算出部８１、Ｔｃｌｋ算出部８２、基準クロック発生部８３、制御クロック発生部８４、キャプチャクロック発生部８５及び再生クロック発生部８６を含む。
（ａ）ずれ時間Δｔ算出部
図５は、ずれ時間Δｔの算出方法を示す説明図である。ずれ時間Δｔ算出部８１は、受信間隔取得部６７から理論時間Ｔｒｓｔｄ及び受信間隔ΔＴｒを取得し、その差分からずれ時間Δｔを算出する。ここで、理論時間Ｔｒｓｔｄは、１つのパケット群を構成する所定数ｋ（ｋ自然数でｋ≧２）個のパケットを受信するのに要する理論時間である。受信間隔取得部６７は、受信部４１が相手方の通信装置Ｂから受信した送信間隔に関連する送信情報に基づいて理論時間Ｔｒｓｔｄを算出する。理論時間Ｔｒｓｔｄは、相手方の通信装置Ｂのパケットの送信間隔に基づいて算出しているため、通信装置Ｂの基準クロックＣＬＫｂに基づいている。一方、受信間隔ΔＴｒは、実際に受信部４１が所定数ｋ個のパケットを受信するのに要した時間であり、受信間隔取得部６７が通信装置Ａの基準クロックＣＬＫａに基づいて取得する。
【００６２】
前述の通り、理論時間Ｔｒｓｔｄは通信装置Ｂの基準クロックＣｌｋｂに基づいて、つまり通信装置Ｂの時間軸に基づいて取得する。一方、受信間隔ΔＴｒは通信装置Ａの基準クロックＣｌｋａに基づいて、つまり通信装置Ａの時間軸に基づいて取得する。よって、理論時間Ｔｒｓｔｄ及び受信間隔ΔＴｒの差分を算出することで、通信装置Ａと相手方の通信装置Ｂとの基準クロックのずれ時間Δｔを算出することができる。
【００６３】
なお、図５に示すように、ずれ時間Δｔ算出部８１は、パケットの送信情報の更新、通信装置Ａの基準クロックの更新やネットワークのゆらぎ等を考慮してパケット群毎に随時ずれ時間Δｔ１、Δｔ２・・・を算出する。
（ｂ）Ｔｃｌｋ算出部
Ｔｃｌｋ算出部８２は、ずれ時間Δｔ算出部８１から取得したずれ時間Δｔに基づいて、ずれ時間Δｔが１ｍｓになる時間Ｔｃｌｋを算出する。そして、Ｔｃｌｋ算出部８２は、ずれ時間Δｔを受信機能部２及び送信機能部１に送信する。
【００６４】
図６は、Ｔｃｌｋの算出方法を示す説明図である。ずれ時間Δｔ算出部８１では、パケット群毎にずれ時間Δｔ１、Δｔ２が算出されている。Ｔｃｌｋ算出部８２は、そのずれ時間Δｔ１＋Δｔ２＋・・・が１ｍｓになる時間Ｔｃｌｋを算出する。例えば、Ｔｃｌｋを算出するための式は、次のように表される。図６の場合、ずれ時間Δｔ１＋Δｔ２＋Δｔ３＋Δｔ４＝１ｍｓであり、よって、理論時間Ｔｒｓｔｄ１＋Ｔｒｓｔｄ２＋Ｔｒｓｔｄ３＋Ｔｒｓｔｄ４＝Ｔｃｌｋとなる。例えば、ずれ時間Δｔで一定、理論時間がＴｒｓｔｄで一定の場合は、Ｔｃｌｋは次式で表すことができる。
【００６５】
Ｔｃｌｋ＝理論時間Ｔｒｓｔｄ×（１ｍｓ／ずれ時間Δｔ）
ここでは、Ｔｃｌｋの算出にあたって“１ｍｓ”を用いているが、単に計算の基準として最適な時間として１ｍｓを用いているだけであり、１ｍｓに限定されない。
（ｃ）基準クロック発生部、制御クロック発生部
基準クロック発生部８３は、通信装置Ａの送受信処理を制御する基準クロックを発生する。制御クロック発生部８４は基準クロックに基づいて各種の制御クロックを発生する。第１実施形態例の制御クロックとは、第１読出クロック、第２読出クロック及び送信クロックである。ここで、第１読出クロックとは、後述の受信バッファ４３に蓄積されている符号化データを読み出す際に用いるクロックである。第２読出クロックとは、後述のキャプチャバッファ１７に蓄積されているディジタルデータを読み出す際に用いるクロックである。送信クロックとは、後述の送信バッファ２５に蓄積されている符号化データを読み出す際に用いるクロックである。
【００６６】
（ｄ）再生クロック発生部、キャプチャクロック発生部
再生クロック発生部８６は、後述のＤＡＣ５３が再生バッファ５１に蓄積されているディジタルデータを読み出して、アナログデータに変換する際に用いる再生クロックを発生する。キャプチャクロック発生部８５は、後述のＡＤＣ１５がアナログデータをディジタルデータに変換する際に用いるキャプチャクロックを発生する。
【００６７】
なお、再生クロック発生部８６は、後述の再生制御部６５からずれ時間Δｔに基づいた再生クロックの調整量を取得し、これに応じて再生クロックを補正することもできる。ＤＡＣ５３が、補正された再生クロックにより再生バッファ５１からのディジタルデータの読み出しを行うことで再生スピードを相手方の通信装置Bの基準クロックに合わせることができる。また、キャプチャクロック発生部８５は、後述のキャプチャ制御部２９からずれ時間Δｔに基づいたキャプチャクロックの調整量を取得し、これに応じてキャプチャクロックを補正することもできる。ＡＤＣ１５が、補正されたキャプチャクロックによりデータをＡ／Ｄ変換することでキャプチャスピードを相手方の通信装置Bの基準クロックに合わせることができる。
【００６８】
さらに、再生クロック発生部８６及びキャプチャクロック発生部８５は、ずれ時間Δｔ算出部８１からずれ時間Δｔを取得し、ずれ時間Δｔに応じてそれぞれ再生クロック及びキャプチャクロックを補正しても良い。例えばまず、調整前の基準クロックと調整前のキャプチャクロックとの関係を算出しておく。次に、ずれ時間Δｔに応じて基準クロック自体を調整し、さらに調整後の基準クロックと調整後のキャプチャクロックとが算出した関係となるようにキャプチャクロックを調整する。また、ずれ時間Δｔ、及び調整前の基準クロックとキャプチャクロックとの関係に基づいて一度にキャプチャクロックを調整しても良い。再生クロックもずれ時間Δｔに基づいて同様に調整可能である。
【００６９】
（１−２）受信機能部
次に、受信機能部２の構成について説明する。受信機能部２は、受信部４１、受信バッファ４３、受信バッファ読出部４５、復号化部４７、間引き・補完部４９、再生バッファ５１、ＤＡＣ５３、増幅器５５、出力部５７、受信バッファ量監視部５９、受信バッファ読出制御部６１、再生バッファ量監視部６３、再生制御部６５及び受信間隔取得部６７を含む。
【００７０】
（ａ）受信部、受信バッファ、受信バッファ量監視部
受信部４１は、ネットワーク３を介して相手方の通信装置Ｂから送信されたパケットを受信する。パケットには、それぞれに含まれる符号化データの他に、パケットの送信に関連する送信情報やパケットのシーケンシャル番号が含まれている。ここで、パケットの送信に関連する送信情報とは、パケットのシーケンシャル番号やパケットの送信間隔を含む情報である。また、パケットの送信間隔とは、相手方の通信装置のパケットの送信間隔そのもの、あるいは何個のパケットをどのような送信間隔で送信するかなどに関する情報である。受信バッファ４３は、受信部４１が受信したパケットそれぞれに含まれる符号化データを一時的に蓄積する。受信バッファ量監視部５９は、受信バッファ４３に蓄積されている符号化データ量（以下、受信バッファ量という）を監視し、後述の受信バッファ読出制御部６１に出力する。
【００７１】
（ｂ）受信バッファ読出部
受信バッファ読出部４５は、制御クロック発生部８４が生成した第１読出クロックに基づいて、受信バッファ４３から符号化データを読み出す。なお、この第１読出クロックは、通信装置Ａの基準クロックに基づいて生成されている。ここで、受信バッファ読出部４５は、受信バッファ読出制御部６１が決定した読出量に基づいて符号化データを読み出す。
【００７２】
（ｃ）間引き・補完部、復号化部、再生バッファ、再生バッファ量監視部
復号化部４７は、受信バッファ読出部４５により受信バッファ４３から読み出された符号化データを復号化及び伸長してディジタルデータとする。間引き・補完部４９は、後述の再生制御部６５において決定された間引き量及び補完量に基づいて、復号化部４７により復号化されたディジタルデータを間引き又は補完する。再生バッファ５１はこのディジタルデータを一時的に蓄積する。このように受信バッファ４３から読み出されたディジタルデータを間引き又は補完することにより、再生バッファ量が所定量になるように調整する。これにより、相手方の基準クロックに応じた再生スピードに調整することができる。
【００７３】
再生バッファ量監視部６３は、再生バッファ５１に蓄積されているディジタルデータ量（以下、再生バッファ量という）を監視し、後述の受信バッファ読出制御部６１に出力する。
なお、受信バッファ４３及び再生バッファ５１をともに設けることで、再生バッファ５１への書き込み間隔を調整することができる。例えば、パケットの受信間隔は２ｍｓであるが、再生バッファ５１への書き込み間隔を８ｍｓとする場合には、パケット４つ分を１グループとして受信バッファ４３に蓄積しておき、１グループ毎に再生バッファ５１へ書き込むことができる。特に、再生バッファ５１への書き込み間隔に制限がかかった場合には、受信したデータを直接再生バッファ５１に書き込むことができない場合がある。このような場合に受信したデータを一旦受信バッファ４３に蓄積しておき、その後再生バッファ５１に書き込むなどの処理を行うことができる。
【００７４】
（ｄ）受信バッファ読出制御部
（ｉ）ずれ時間Δｔの調整
受信バッファ読出制御部６１は、受信バッファ量監視部５９から受信バッファ量を取得するとともに、再生バッファ量監視部６３から再生バッファ量を取得し、Ｔｃｌｋ算出部８２からずれ時間Δｔに基づくＴｃｌｋを取得する。そして、受信バッファ読出制御部６１は、受信バッファ量、再生バッファ量及びずれ時間Δｔに基づいて、通信装置Ａと相手方の通信装置Ｂとの基準クロックのずれ調整するための受信バッファ４３からの読出量を決定する。ここで、Ｔｃｌｋ算出部８１は、基準クロックのずれを表すずれ時間Δｔが１ｍｓになる時間Ｔｃｌｋを算出し、受信バッファ読出制御部６１はこのＴｃｌｋを受信する。受信バッファ読出制御部６１は、ずれ時間Δｔに応じて読出量を増やしたり減らしたりする間隔Ｔｐａ（以下、読出量調整間隔Ｔｐａという）をＴｃｌｋに基づいて算出する。この受信バッファの読出量調整間隔Ｔｐａは、次式で表すことができる。
【００７５】
読出量調整間隔Ｔｐａ＝Ｔｃｌｋ×（第１読出クロック間隔Ｔｒｅａｄ１／１ｍｓ）
ここで、第１読出クロック間隔Ｔｒｅａｄ１とは、受信バッファ４３から符号化データを読み出し再生バッファ５１に書き込む間隔である。
通常、受信バッファ４３からは第１読出クロック毎に符号化データが読み出される。基準クロックのずれ時間Δｔを補正するために、第１読出クロック何回か毎、つまり読出量調整間隔Ｔｐａ毎にずれ時間Δｔ分だけ読出量を増減する。具体的に、受信バッファ読出制御部６１は、まず通信装置Ａの基準クロックと相手方の通信装置Ｂの基準クロックとのずれに基づいて、読出量を多くする（以下、プラス調整という）のか、減らす（以下、マイナス調整という）のか、プラスでもマイナス調整でもない（以下、ゼロ調整という）のかを決定する。例えば、ずれ時間Δｔの正負に基づいて、又はずれ時間Δｔに起因する受信バッファ量の増減に基づいてプラス調整又はマイナス調整を決定する。そして、受信バッファ読出制御部６１は、プラス調整のときは＋調整フラグＦｒ＋、−調整のときは−調整フラグＦｒ−を立て、ゼロ調整のときはフラグを立てない。ここで、受信バッファ読出制御部６１は、読出量調整間隔Ｔｐａごとにプラス調整、マイナス調整又はゼロ調整を決定してフラグを設定する。そして、受信バッファ読出制御部６１は、読出量調整間隔Ｔｐａ毎に、フラグの状態に基づいて読出量を決定する。
【００７６】
例えば基準クロックのずれのために、通信装置Ｂから受信バッファ４３に入力される符号化データ量が、第１読出クロックに基づいて受信バッファ４３から読み出される符号化データ量より多い場合は、受信バッファ量が過剰となる。この場合には、読出量調整間隔Ｔｐａ毎に、受信バッファ４３からの読み出し量をプラス調整して受信バッファ量を適正に調整する。逆に、基準クロックのずれにより、受信バッファ４３に入力される符号化データ量が読み出される符号化データ量より少ない場合は、受信バッファ量が少なくなる。この場合には、読出量調整間隔Ｔｐａ毎に、受信バッファ４３からの読み出し量をマイナス調整する。このようにすることで、受信バッファ４３からの読み出しの処理における基準クロックのずれを受信バッファ４３からの読出量により補正する。
【００７７】
上記のように、読出量により基準クロックのずれを調整するのは、第１実施形態例においては、例えば基準クロックを調整することができない等の理由により、基準クロック自体の調整では相手方の通信装置Ｂとの基準クロックのずれを調整することができないからである。言い換えれば、上記方法は、基準クロック自体が調整できない場合に、相手方の通信装置の基準クロックとのずれを合わせるのに有効な方法である。
【００７８】
また、受信バッファ読出制御部６１は、受信バッファ量及び再生バッファ量に基づいて読出量を決定するため、受信バッファ４３及び再生バッファ５１におけるオーバーフローやアンダーフローを防止し、再生されるデータの品質を高めることができる。
また、ずれ時間Δｔが調整された第１読出クロックに基づいて受信バッファからデータを読み出していても、ネットワークのゆらぎ等によりパケットの到着が遅れたり、パケットは到着しているがパケットの受信処理が遅れるなどの状況により受信バッファ量が不安定となる場合がある。受信バッファ量を参照して受信バッファからの読出量を調整することで、このような状況が生じた場合であっても受信バッファ量を適正に保つことができる。よって、受信バッファにおけるオーバーフローやアンダーフローをさらに防止し、再生されるデータの品質を高めることができる。特に、上記構成によれば、通信装置内での処理が一定間隔で行われない可能性のあるマルチタスク環境であっても、受信バッファ量を一定に保つことができる。
【００７９】
（ｉｉ）再生バッファ量大フラグ、再生バッファ量小フラグ、逆転対策中フラグ
また、受信バッファ読出制御部６１は、受信バッファ量及び再生バッファ量に基づいて、再生バッファ量大フラグＦｐｂ、再生バッファ量小フラグＦｐｓ及び逆転対策中フラグなど各種フラグを設定する。
（ｉｉｉ）再生スピード調整間隔
送受信バッファ読出制御部６１は、再生バッファ量に基づいて再生スピードを調整する間隔である再生スピード調整間隔を調整する。後述のステップＳ５９では、再生スピード調整間隔は規定数Ｎとして記述されており、例えば第１読出クロックのカウント数で表される。この規定数Ｎを大きくしたり小さくすることで、再生スピードを調整する間隔を調整する。例えば、再生スピード調整間隔を小さくすることで調整頻度を多くすることができる。
【００８０】
（ｅ）ＤＡＣ、再生制御部
ＤＡＣ５３は、再生バッファ５１に蓄積されているディジタルデータを再生クロックに応じて読み出して、アナログデータに変換する。本実施形態例においては、この再生クロックは、図４に示すように制御クロック発生部８４の出力ではなく、基準クロックに基づいて生成されていないものとする。
【００８１】
再生制御部６５は、再生バッファ量監視部６３から再生バッファ量を取得し、また受信バッファ読出制御部６１が設定した再生バッファ量大フラグＦｐｂ、再生バッファ量小フラグＦｐｓ、＋調整フラグＦｒ＋、−調整フラグＦｒ−及び再生バッファ量を参照して再生バッファ量を所定量に調整する。上述の通り、受信バッファ４３からの読出量の調整により基準クロックのずれ時間Δｔを調整することで、再生バッファ５１には相手方の通信装置Ｂの基準クロックに基づいてディジタルデータが書き込まれる。再生制御部６５によってこの再生バッファ５１を所定量に調整することで、再生バッファ５１から読み出されていくディジタルデータ量を調整することができる。これにより、再生スピードを相手方の通信装置Ｂの基準クロックに対応するように調整することができる。再生スピードの調整としては、例えば再生クロックの調整、再生周波数の調整及び受信バッファ４３から読み出したデータの間引き・補完等が挙げられる。
【００８２】
例えば、再生制御部６５は、再生バッファ量等に応じて再生クロックの調整量を決定して再生クロック発生部８６に出力し、再生クロック発生部８６はこれの調整量に応じて補正した再生クロックをＤＡＣ５３に出力する。ＤＡＣ５３が、補正された再生クロックにより再生バッファ５１からのディジタルデータの読み出しを行うことで再生スピードを調整することができる。また、再生クロック発生部８６が、ずれ時間Δｔに応じて再生クロックを補正しても良い。例えば、再生クロック発生部８６は、ずれ時間Δｔ算出部８１からずれ時間Δｔを取得する。また、再生クロック発生部８６は、調整前の基準クロックと調整前の再生クロックとの関係を算出しておく。次に、ずれ時間Δｔに応じて基準クロック自体を調整し、さらに調整後の基準クロックと再生クロックとが算出した関係となるように再生クロックを調整する。また、ずれ時間Δｔ、及び調整前の基準クロックと再生との関係に基づいて一度に再生クロックを調整しても良い。この再生クロックに基づいて再生バッファ５１からの読み出しを行うことで再生スピードを調整することができる。
【００８３】
さらに、再生制御部６５は、再生バッファ５１からのディジタルデータのサンプリング量を決定してＤＡＣ５３に出力する。ＤＡＣ５３が、補正されたサンプリング量により再生バッファ５１からのディジタルデータの読み出しを行うことで、再生スピードを調整することができる。また、再生制御部６５は、再生バッファ量等に応じて、復号化部４７により復号化されたディジタルデータの間引き量又は補完量を決定し、間引き・補完部４９に出力する。再生バッファ５１に書き込むディジタルデータ量を間引き又は補完することで、ＤＡＣ５３における処理量を減らしたり増やしたりして再生スピードを調整することができる。
このように、再生バッファ量を制御することで、再生バッファ５１におけるオーバーフローやアンダーフローを防止し、再生されるデータの品質を高めることができる。例えば、通信装置においては、再生バッファ５１へのデータの書き込み処理である再生処理自体が遅延したりする場合がある。このような状況が生じた場合であっても、再生バッファ量を参照して調整することで、再生バッファ量を適正に保つことができる。特に、通信装置に複数の機能が搭載されているために通信装置内での処理が一定間隔で行われない場合があるマルチタスク環境であっても、再生バッファ量を一定に保ち再生処理を安定に行うことができる。
【００８４】
（ｅ）増幅器、出力部
ＤＡＣ５３により変換されたアナログデータは増幅器５５により増幅され、スピーカなどの出力部５７から空気中に拡声される。
（ｆ）受信間隔取得部
受信間隔取得部６７は、基準クロック発生部８３から通信装置Ａの基準クロックを受信している。そして、受信間隔取得部６７は、１つのパケット群を構成する所定数ｋ（ｋ自然数でｋ≧２）個のパケットを受信するのに要した受信時間ΔＴｒを、通信装置Ａの基準クロックに基づいて取得する。なお、受信部４１がパケットそれぞれのシーケンス番号を取得しているため、受信間隔取得部６７はこのシーケンス番号を参照して所定数ｋ個分のパケットを受信したことを知ることができる。例えば、図５に示すように、通常のパケットはシーケンス番号順に送信されるため、シーケンス番号の間隔がｋ毎に、つまりシーケンス番号Ｓ０、Ｓｋ、Ｓ２ｋ・・・のパケットを受信したときに受信時刻を取得する。そして、それぞれの受信時刻の差から１つのパケット群を構成する所定数ｋ個のパケットを受信するのに要した時間として受信間隔ΔＴｒを算出する。また、受信間隔取得部６７は、受信部４１が受信した送信情報に基づいて、所定数ｋ（ｋ≧２）個のパケットを受信するのに要する理論時間Ｔｒｓｔｄを算出する。受信間隔取得部６７は、例えば１つのパケットの送信間隔と所定数ｋとを掛け合わせることによって理論時間Ｔｒｓｔｄを算出する。
【００８５】
なお、パケットの送信間隔などの送信情報が更新される場合もあるため、受信時間取得部６７は、図５に示すようにパケット群毎に理論時間Ｔｒｓｔｄ１、Ｔｒｓｔｄ２・・・を取得する。また、通信装置Ａの基準クロックの更新やネットワークのゆらぎ等により受信間隔ΔＴｒが変化する場合もある。よって、受信時間取得部６７は、パケット群毎に受信時間ΔＴｒ１、ΔＴｒ２・・・を取得する。そして、ずれ時間Δｔ算出部８１は、パケット群毎にずれ時間Δｔ１、Δｔ２・・・を算出する。
【００８６】
（１−３）送信機能部
送信機能部１は、入力部１１、増幅器１３、ＡＤＣ１５、キャプチャバッファ１７、キャプチャバッファ読出部１９、間引き・補完部２１、符号化部２３、送信バッファ２５、送信部２７、キャプチャ制御部２９、キャプチャバッファ量監視部３１、キャプチャバッファ読出制御部３３、送信バッファ量監視部３５及び送信バッファ読出制御部３７を含む。
【００８７】
（ａ）入力部、増幅器
マイクなどの入力部１１に入力された音声は、アナログデータに変換される。増幅器１３は、このアナログデータを増幅してＡＤＣ１５に出力する。
（ｂ）ＡＤＣ、間引き・補完部、キャプチャバッファ、キャプチャバッファ量監視部
ＡＤＣ１５は、増幅器１３から入力されたアナログデータを、キャプチャクロックに応じてディジタルデータに変換してキャプチャバッファ１７に出力する。本実施形態例においては、このキャプチャクロックは、図４に示すように制御クロック発生部８４の出力ではなく、基準クロックに基づいて生成されていないものとする。また、ＡＤＣ１５は、後述のキャプチャ制御部２９又はキャプチャクロック発生部８５の制御に基づいて、アナログデータをディジタルデータに変換する。
【００８８】
間引き・補完部２１は、後述のキャプチャ制御部２９が決定した間引き量及び補完量に基づいて、ＡＤＣ１５により変換されたディジタルデータを間引き又は補完する。例えば、キャプチャスピードが大きいためにキャプチャバッファ１７に過剰のデータが書き込まれようとしている場合は、間引き・補完部２１はＡＤＣ１５からのディジタルデータを間引いてキャプチャバッファ１７に書き込む。一方、キャプチャスピードが小さいためにキャプチャバッファ１７に過少のデータしか書き込まれない場合は、間引き・補完部２１はＡＤＣ１５からのディジタルデータを補完してキャプチャバッファ１７に書き込む。これにより、キャプチャクロックの調整やキャプチャ周波数の調整によってキャプチャスピードが調整できない場合であっても、キャプチャバッファ１７のキャプチャバッファ量を適正に保つことができる。
【００８９】
キャプチャバッファ１７は、ディジタルデータを一時的に蓄積する。キャプチャバッファ量監視部３１は、キャプチャバッファ１７に蓄積されているディジタルデータ量（以下、キャプチャバッファ量という）を監視し、後述のキャプチャバッファ読出制御部３３及びキャプチャ制御部２９に出力する。
（ｃ）キャプチャバッファ読出部
キャプチャバッファ読出部１９は、制御クロック発生部８４が生成した第２読出クロックに基づいてキャプチャバッファ１７からディジタルデータを読み出す。なお、この第２読出クロックは、通信装置Ａの基準クロックに基づいて生成されている。ここで、キャプチャバッファ読出部１９は、キャプチャバッファ読出制御部３３が決定した読出量に基づいてディジタルデータを読み出す。
【００９０】
（ｄ）符号化部、送信バッファ、送信バッファ量監視部
符号化部２３は、読み出されたディジタルデータを符号化して符号化データとする。送信バッファ２５はこの符号化データを蓄積する。送信バッファ量監視部３５は、送信バッファ２５に蓄積されている符号化データ量（以下、送信バッファ量という）を監視し、キャプチャバッファ読出制御部３３に出力する。
【００９１】
なお、キャプチャバッファ１７及び送信バッファ２５をともに設けることで、送信バッファ２５への書き込み間隔を調整することができる。例えば、キャプチャしたデータを直接送信バッファ２５に書き込むことができない場合がある。このような場合にキャプチャしたデータを一旦キャプチャバッファ１７に蓄積しておき、その後送信バッファ２５に書き込むなどの処理を行うことができる。
【００９２】
（ｅ）送信部
送信部２７は、送信バッファ２５に蓄積されている符号化データを送信クロックに応じて読み出して、パケットを構成して相手方の通信装置Ｂに送信する。この送信クロックは、基準クロックに基づいて生成されている。
（ｆ）送信バッファ読出制御部
（ｉ）送信パケット数の決定
送信バッファ読出制御部３７は、送信バッファ量及び／又は送信パケット調整数Ｎｐａに基づいて、送信バッファ２５から相手方の通信装置Ｂへの送信パケット数を決定する。
【００９３】
（ｉｉ）ずれ時間Δｔの調整
送信バッファ読出制御部３７は、送信バッファ量監視部３５から送信バッファ量を取得し、Ｔｃｌｋ算出部８２からずれ時間Δｔに基づくＴｃｌｋを取得する。送信バッファ読出制御部３７は、送信バッファ量及びずれ時間Δｔに基づいて、通信装置Ａと相手方の通信装置Ｂとの基準クロックのずれ調整するための送信バッファ２５からの読出量を決定する。具体的には、送信バッファ２５からの読み出すパケット数を決定する。
【００９４】
送信バッファ読出制御部３７は、Ｔｃｌｋ算出部８１からＴｃｌｋを受信する。送信バッファ読出制御部３７は、ずれ時間Δｔに応じて読出量を増やしたり減らしたりする間隔Ｔｓａ（以下、読出量調整間隔Ｔｓａという）を、Ｔｃｌｋに基づいて算出する。この送信バッファの読出量調整間隔Ｔｓａは、次式で表すことができる。
読出量調整間隔Ｔｓａ＝Ｔｃｌｋ×（送信クロック間隔Ｔｓ／１ｍｓ）
ここで、送信クロック間隔Ｔｓとは、送信バッファ２５から符号化データを読み出す間隔である。
【００９５】
通常、送信バッファ２５からは送信クロック毎に符号化データが読み出される。基準クロックのずれ時間Δｔを補正するために、送信クロック何回か毎、つまり読出量調整間隔Ｔｓａ毎にずれ時間Δｔ分だけ読出量を増減する。具体的に、送信バッファ読出制御部３７は、まず通信装置Ａの基準クロックと相手方の通信装置Ｂの基準クロックとのずれ時間Δｔに基づいて、読み出すパケット数を増やすのか、減らすのか、そのままであるのかを決定する。例えば、ずれ時間Δｔの正負に基づいて、又はずれ時間Δｔに起因する送信バッファ量の増減に基づいて送信パケット数を増やすのか減らすのかを決定する。ここで、送信バッファ読出制御部３７は、送信パケット数を増やすのか減らすのかに応じて、読出量調整間隔Ｔｓａごとに送信パケット調整数Ｎｐａｃを調整する。そして、送信バッファ読出制御部３７は、読出量調整間隔Ｔｓａ毎に、この送信パケット調整数Ｎｐａｃに基づいて送信バッファ２５からの読出量、つまり送信パケット数を決定する。このようにすることで、基準クロックのずれを送信バッファ２５からの送信するパケット数により補正する。
【００９６】
上記のように、読出量により基準クロックのずれを調整するのは、第１実施形態例においては、例えば基準クロックを調整することができない等の理由により、基準クロック自体の調整では相手方の通信装置Ｂとの基準クロックのずれを調整することができないからである。言い換えれば、上記方法は、基準クロック自体が調整できない場合に、相手方の通信装置の基準クロックとのずれを合わせるのに有効な方法である。
【００９７】
また、送信バッファ読出制御部３７は、送信バッファ量に基づいて読出量を決定するため、送信バッファ２５におけるオーバーフローやアンダーフローを防止することができる。
（ｉｉｉ）送信バッファ量大フラグ、送信バッファ量小フラグ
送信バッファ読出制御部３７は、送信バッファ量に基づいて送信バッファ量が大きいことを示す送信バッファ量大フラグＦｓｂ及び送信バッファ量が小さいことを示す送信バッファ量小フラグＦｓｓを設定する。
【００９８】
（ｉｖ）キャプチャスピード調整間隔
送信バッファ読出制御部３７は、送信バッファ量に基づいてキャプチャスピードを調整する間隔であるキャプチャスピード調整間隔Ｎａｄｊを調整する。このＮａｄｊを大きくしたり小さくすることで、キャプチャスピードを調整する間隔を調整する。例えば、キャプチャスピード調整間隔Ｎａｄｊが第２読出クロックによる割り込み回数である。また、キャプチャスピード調整間隔Ｎａｄｊを小さくすることで調整頻度を多くすることができる。
【００９９】
（ｖ）キャプチャスピード調整フラグ
送信バッファ読出制御部３７は、送信バッファ量及びキャプチャバッファ量に基づいてキャプチャスピードを調整するかしないかを示すキャプチャスピード調整フラグＦａｄｊを設定する。
（ｇ）キャプチャバッファ読出制御部
キャプチャバッファ読出制御部３３は、通信装置Ａと相手方の通信装置Ｂとの基準クロックのずれ時間Δｔをキャプチャバッファ１７からの読出量により調整するためにその読出量を決定する。具体的に、キャプチャバッファ読出制御部３３は、キャプチャバッファ量監視部３１から取得したキャプチャバッファ量、送信バッファ量大フラグＦｓｂ及び送信バッファ量小フラグＦｓｓを参照して読出量を決定する。これにより、キャプチャバッファ１７からの読み出しの処理における基準クロックのずれをキャプチャバッファ１７からの読出量により補正する。
【０１００】
また、キャプチャバッファ読出制御部３３は、キャプチャバッファ量に基づいて読出量を決定するため、キャプチャバッファ１７におけるオーバーフローやアンダーフローを防止することができる。例えば、通信装置においては、キャプチャバッファ１７へのデータの書き込み処理であるキャプチャ処理自体が遅延したりすることにより、キャプチャバッファ量の急な増減が生じる場合がある。このような状況が生じた場合であっても、キャプチャバッファ量を参照して読出量を調整することで、キャプチャバッファ量を適正に保つことができる。特に、通信装置に複数の機能が搭載されているようなマルチタスク環境においては、通信装置内での処理が一定間隔で行われないことがある。上記構成によれば、このようなマルチタスク環境であっても、キャプチャバッファ量を一定に保ちキャプチャ処理や送信処理を安定に行うことができる。
【０１０１】
（ｈ）キャプチャ制御部
キャプチャ制御部２９は、キャプチャバッファ量監視部３１からキャプチャバッファ量を取得し、また送信バッファ読出制御部３７が設定した送信バッファ量大フラグＦｓｂ、送信バッファ量小フラグＦｓｓ、キャプチャスピード調整間隔Ｎａｄｊ、キャプチャスピード調整フラグＦａｄｊを参照してキャプチャバッファ量を所定量に調整する。上述の通り、キャプチャバッファ１７からの読出量の調整により、キャプチャバッファ１７からは相手方の通信装置Ｂの基準クロックに基づいてディジタルデータが読み出される。キャプチャ制御部２９によってこのキャプチャバッファ１７を所定量に調整することで、キャプチャバッファ１７に書き込まれるディジタルデータ量を調整することができる。これにより、キャプチャスピードを相手方の通信装置Ｂの基準クロックに対応するように調整することができる。キャプチャスピードの調整としては、例えばキャプチャクロックの調整、キャプチャ周波数の調整及びキャプチャバッファ１７から読み出したデータの間引き・補完等が挙げられる。
【０１０２】
例えば、キャプチャ制御部２９は、キャプチャバッファ量に応じてキャプチャクロックの調整量を決定してキャプチャクロック発生部８５に出力し、キャプチャクロック発生部８５はこの調整量に応じたキャプチャクロックをＡＤＣ１５に出力する。ＡＤＣ１５が、補正されたキャプチャクロックに基づいてＡ／Ｄ変換を行い、ディジタルデータをキャプチャバッファ１７に書き込むことでキャプチャスピードを調整することができる。また、キャプチャクロック発生部８５が、ずれ時間Δｔに応じてキャプチャクロックを補正しても良い。例えば、キャプチャクロック発生部８５は、ずれ時間Δｔ算出部８１からずれ時間Δｔを取得する。そして、キャプチャクロック発生部８５は、調整前の基準クロックと調整前のキャプチャクロックとの関係を算出しておく。次に、ずれ時間Δｔに応じて基準クロック自体を調整し、さらに調整後の基準クロックとキャプチャクロックとが算出した関係となるようにキャプチャクロックを調整する。また、ずれ時間Δｔ、及び調整前の基準クロックとキャプチャクロックとの関係に基づいて一度にキャプチャクロックを調整しても良い。このキャプチャクロックに基づいてキャプチャバッファ１７からの読み出しを行うことでキャプチャスピードを調整することができる。
【０１０３】
さらに、キャプチャ制御部２９は、Ａ／Ｄ変換を行うアナログデータのサンプリング量を決定してＡＤＣ１５に出力する。ＡＤＣ１５が、補正されたサンプリング量によりＡ／Ｄ変換を行ってキャプチャバッファ１７にディジタルデータを書き込む行うことで、キャプチャスピードを調整することができる。また、キャプチャ制御部２９は、キャプチャバッファ量に応じて、ＡＤＣ１５により変換されたディジタルデータの間引き量又は補完量を決定し、間引き・補完部２１に出力する。間引き・補完部２１がこの間引量又は補完量に応じてディジタルデータを間引き又は補完することで、キャプチャバッファ１７に書き込みを行うディジタルデータ量を調整することができる。
（２）パケット構成
図７は、送受信されるパケットの構成例である。パケットには、ＩＰヘッダ、ＵＤＰヘッダ、ＲＴＰヘッダ及びディジタルデータが含まれている。ＩＰヘッダには、送信元のＩＰアドレス、送信先のＩＰアドレスなどが記述されている。ＵＤＰヘッダには、送信元ポート番号、送信先ポート番号、メッセージ長などが記述されている。なお、ＩＰパケットのデータ部にＵＤＰパケットではなくＴＣＰパケットを用いることもでき、その場合にはＵＤＰヘッダに代えてＴＣＰヘッダが用いられる。ＲＴＰヘッダには、例えば下記の情報が含まれている。
【０１０４】
ａ）バージョン
ｂ）パディング
ｃ）ＣＳＲＣ：ＣＳＲＣ識別子を何個含んでいるかを示す。
ｄ）ペイロードタイプ
ｅ）シーケンシャル番号：パケットの順番を示す。
【０１０５】
ｇ）ＳＳＲＣ：送信装置の識別子
ｈ）ＣＳＲＣ：元の送信者の識別子リスト。
このようにパケットが構成されている場合、受信時間取得部６７は、シーケンシャル番号に基づいて受信時間を取得する。
（３）処理
（３−１）受信側処理及びクロック制御処理
次に、前記構成を有する受信機能部２及びクロック機能部４が行う処理の流れについて詳細に説明する。
【０１０６】
（ａ）受信処理
図８は、受信機能部２が行う受信処理の流れの一例を示すフローチャートである。通信装置Ａの受信機能部２は、相手方の通信装置Ｂから通信の開始を示すコマンドを受信することにより、以下の処理を開始する。
ステップＳ１１：受信部４１は、通信の終了を示すコマンドを通信装置Ｂから受信したり、自装置での終了操作が行われたりするまで、以下の処理を行う。通信の終了を示すコマンドの受信や終了操作が行われると、処理を終了する。
【０１０７】
ステップＳ１２：受信部４１は、通信装置Ｂからのパケットを待機しており、パケットを受信すると、ステップＳ１３に移行する。受信したパケットそれぞれには、符号化データが含まれるとともに、パケットの送信間隔に関する送信情報やパケットのシーケンシャル番号が含まれる。
ステップＳ１３：受信部４１は、受信したパケットが通信を開始したときの最初のパケットであるかを判断する。最初のパケットの場合ステップＳ１４に進み、そうでない場合はステップＳ１６に進む。
【０１０８】
ステップＳ１４、Ｓ１５：受信部４１は、通信開始の最初のパケットの場合は、受信したパケットのシーケンシャル番号をＳＮ０として設定する（Ｓ１４）。例えば、取得したパケットのシーケンシャル番号が“３”である場合はＳＮ0＝３となる。そして、受信間隔取得部６７は、その通信装置Ａ自身の基準クロックに基づいて、１番目のパケット群Ｇ1に含まれる最初のパケットＳＮ0の受信部４１での受信時刻Ｔｒ0を取得する（Ｓ１５）。
【０１０９】
ステップＳ１６：受信間隔取得部６７は、受信部４１から今回受信したパケットのシーケンス番号を取得して、前回受信したパケットのシーケンス番号と比較する。これにより、パケットの欠落や順番の入れ替わりがないかを判断できる。
ステップＳ１７：次に、受信バッファ量監視部５９は、受信バッファ４３に書き込み可能かを判断する。例えば経路中で複製されることなどにより受信パケットが重複していないかや、パケットの遅延等によりパケットの順番が入り替わってしまい、再生するタイミングに間に合うかどうかなどを判断する。書き込み可能である場合はステップＳ１３に進み、書き込み不可である場合はステップＳ１１に進む。ここで、再生タイミングを過ぎている場合にはパケットの破棄を行う。
【０１１０】
ステップＳ１８：受信間隔取得部６７は、シーケンシャル番号が規定のＳＮkになったかどうかを判断する。つまり、パケット群のうちｋ番目のパケットを受信したか否かを判断する。規定のＳＮkの場合はステップＳ１９に進み、そうでない場合はステップＳ２２進む。
ステップＳ１９、Ｓ２０：受信間隔取得部６７は、シーケンシャル番号を参照してパケット群のうちｋ番目のパケットを受信していれば、受信部４１において受信されたパケットの受信時刻Ｔｒnを、その通信装置Ａ自身の基準クロックに基づいて取得する（Ｓ１９）。ここで、受信間隔取得部６７は、１番目のパケット群Ｇ1における所定数ｋカウント後の受信時刻としてＴｒ1を取得する。また、この受信時刻Ｔｒ1は、２番目のパケット群Ｇ2における最初のパケットの受信時刻となる。つまり、ｎ番目のパケット群Ｇnにおける最初のパケットの受信時刻としてＴｒ(n-1)を取得し、それから所定数ｋカウント後の受信時刻としてＴｒnを取得する。前述のようにＳＮ0＝３である場合は、ＳＮk＝ｋ＋３となる。次に、後述のＴｃｌｋ算出処理及び読出量調整間隔の算出処理を行う（Ｓ２０）。
【０１１１】
ステップＳ２１：受信間隔取得部６７は、シーケンシャル番号をリセットする。
ステップＳ２２：受信部４１は、受信したパケットに含まれる符号化データを受信バッファ４３に書き込む。
（ｂ）Ｔｃｌｋ算出処理及び読出量調整間隔Ｔｐａの算出処理
図９は、受信機能部２及びクロック機能部４が行うＴｃｌｋ算出処理及び読出量調整間隔Ｔｐａの算出処理の流れの一例を示すフローチャートである。
【０１１２】
ステップＳ３１：受信間隔取得部６７は、パケットの送信間隔に関する送信情報に基づいて、所定数ｋ個のパケットから構成される各パケット群を受信するのに要する理論時間Ｔｒｓｔｄnを算出する。例えば、受信間隔取得部６７は、相手方の通信装置Ｂから取得した１つのパケットの送信間隔と所定数ｋとを掛け合わせることによって理論時間Ｔｒｓｔｄを算出する。
【０１１３】
ステップＳ３２：受信間隔取得部６７は、受信部４１が所定数ｋ個のパケットから構成されるパケット群を受信するのに要した時間として、各パケット群の受信間隔ΔＴｒnを算出する。例えば、１番目のパケット群のΔＴｒ1、２番目のパケット群のΔＴｒ2というように受信間隔を算出する。また、ｎ番目のパケット群Ｇnにおける受信間隔としてΔＴｒn＝Ｔｒn−Ｔｒ(n-1)が算出される。
【０１１４】
ステップＳ３３、Ｓ３４：ずれ時間Δｔ算出部８１は、各パケット群について、理論時間Ｔｒｓｔｄn及び受信間隔ΔＴｒnの差分を算出する。これにより、通信装置Ａと相手方の通信装置Ｂとの基準クロックのずれ時間Δｔnを算出する（Ｓ３３）。さらに、Ｔｃｌｋ算出部８２は、ずれ時間Δｔ算出部８１から取得したずれ時間Δｔnに基づいて、各パケット群について、ずれ時間Δｔnが１ｍｓになる時間Ｔｃｌｋnを算出する（Ｓ３４）。
【０１１５】
ステップＳ３５：受信バッファ読出制御部６１は、読出量調整間隔Ｔｐａの更新が必要かどうかを判定する。例えば、前回算出したＴｃｌｋ(n-1)と今回算出したＴｃｌｋnとを比較して、大きく変動していないかを判定する。例えば、大きく変動していないかを判定する判断基準をΔＴｃｌｋとすると、前回算出したＴｃｌｋ(n-1)と今回算出したＴｃｌｋnとが次式の関係を満たすかどうかにより判定する。
（Ｔｃｌｋ(n-1)−ΔＴｃｌｋ）≦Ｔｃｌｋn≦（Ｔｃｌｋ(n-1)＋ΔＴｃｌｋ）
この判断基準をΔＴｃｌｋは、最初は大きい値に設定しておき、徐々に小さい値に設定していく。
【０１１６】
ここで、前回算出したＴｃｌｋ(n-1)と今回算出したＴｃｌｋnとが前述の式の関係を満たす場合は、読出量調整間隔Ｔａの更新が必要と判断してステップＳ３６に進む。一方、そうでない場合は、読出量調整間隔Ｔｐａの更新が不要と判断してステップＳ３８に進む。
ステップＳ３６、Ｓ３７：受信バッファ読出制御部６１は、ずれ時間Δｔに応じて読出量を増やしたり減らしたりする間隔である読出量調整間隔Ｔｐａを、Ｔｃｌｋに基づいて算出し（Ｓ３６）、再設定する（Ｓ３７）。
【０１１７】
ステップＳ３８：次に、受信間隔取得部６７は、パケット群を構成するパケットの個数を増やしていく。例えば、最初はパケット１０００個を１つのパケット群とし、次にパケット２０００個を１つのパケット群とし、さらにパケット５０００個を１つのパケット群というように増やしていく。このような処理により、ずれ時間Δｔの調整をより精度良く行うことができる。
【０１１８】
（ｃ）受信バッファの読出量フラグ設定処理
図１０は、受信バッファの読出量フラグ設定処理の流れの一例を示すフローチャートである。
ステップＳ４１：受信部４１は、通信装置Ｂからの通信の終了を示すコマンドの受信や自装置での終了操作が行われると、処理を終了する。
【０１１９】
ステップＳ４２：受信バッファ読出制御部６１は、読出量調整間隔Ｔｐａが経過したか判断し、経過している場合はステップＳ４３に進む。そうでない場合は読出量調整間隔Ｔｐａが経過するまで待機する。
ステップＳ４３：受信バッファ読出制御部６１は、読出量調整間隔Ｔｐａが経過するとずれ時間Δｔが０かどうかを判断する。つまり、理論時間Ｔｒｓｔｄと受信時間ΔＴｒとの差が０であるかどうかを判断する。ずれ時間Δｔが０でない場合は、ステップＳ４４に進む。
【０１２０】
ステップＳ４４：ずれ時間Δｔ＝０でない場合は、受信バッファ読出制御部６１は、次にずれ時間Δｔが０より大きいか否かを判断する。つまり、理論時間Ｔｒｓｔｄが受信時間ΔＴｒより大きいか否かを判断する。ずれ時間Δｔ＞０である場合はステップＳ４５に、ずれ時間Δｔ＜０である場合はステップＳ４６に進む。
ステップＳ４５：ずれ時間Δｔ＞０である場合、受信バッファ読出制御部６１は、＋調整フラグＦｒ＋を設定する。より具体的に説明すると、ずれ時間Δｔ＞０である場合とは、時間軸上の１ｓという幅が相手方の通信装置Ｂよりも通信装置Ａの方が大きく基準クロックが遅い場合である。そのため、同じ時間を測定する場合であっても、幅が狭い通信装置Ｂの基準クロックではより時間が長くなり、幅が広い通信装置Ａの基準クロックでは短くなる。よって、通信装置Ａの方が基準クロックが遅い分だけ受信バッファ４３からの読出量を増やして基準クロックのずれを補うために、＋調整フラグＦｒ＋を設定する。
【０１２１】
ステップＳ４６：ずれ時間Δｔ＜０である場合、受信バッファ読出制御部６１は、−調整フラグＦｒ−を設定する。より具体的に説明すると、ずれ時間Δｔ＜０である場合とは、時間軸上の１ｓという幅が相手方の通信装置Ｂよりも通信装置Ａの方が小さく基準クロックが早い場合である。そのため、同じ時間を測定する場合であっても、幅が狭い通信装置Ｂの基準クロックではより時間が短くなり、幅が広い通信装置Ａでは長くなる場合である。よって、通信装置Ａの方が基準クロックが早い分だけ受信バッファ４３からの読出量を減らして基準クロックのずれを補うために、−調整フラグＦｒ−を設定する。
【０１２２】
ステップＳ４７：ずれ時間Δｔ＝０である場合は、理論時間Ｔｒｓｔｄと受信時間ΔＴｒとが同じであるので、通信装置Ａ及び通信装置Ｂ間の基準基準クロックのずれがない。よって、＋調整フラグＦｒ＋、−調整フラグＦｒ−の設定を行わない。
（ｄ）再生処理
図１１は、受信機能部２が行う再生処理の流れの一例を示すフローチャートである。
【０１２３】
ステップＳ５１：受信機能部２は、再生処理の各種設定を行う。例えば受信バッファ読出部４５は受信バッファ４３から再生バッファ５１への読み出しの処理を行う第１読出クロックを設定し、再生制御部６５は再生スピード調整処理を行う間隔の設定し、受信バッファ読出制御部６１及び再生制御部６５はそれぞれ受信バッファ量及び再生バッファ量の閾値の設定を行う。
【０１２４】
閾値の設定としては、受信バッファ４３については、例えば、最も好ましい量として基準量Ｑｒｓｔｄ、この量を超えると遅延時間が大きくなる受信バッファ量大Ｑｒｂ、この量より少なくなると読み出し不可になる受信バッファ量小Ｑｒｓ等を設定する。一方、再生バッファ５１については、例えば、最も好ましい量として基準量Ｑｐｓｔｄ、この量を超えると遅延時間が大きくなる再生バッファ量大Ｑｐｂ、この量より少なくなると好ましくない再生バッファ量小Ｑｐｓ、この量より少なくなると再生不可となる再生バッファ量最小Ｑｐｍｉｎ、この量以上の場合ＲｅａｄポインタとＷｒｉｔｅポインタとの位置関係が逆転となっている逆転基準Ｑｐｒｖｓ等を設定する。
【０１２５】
ステップＳ５２：受信バッファ読出制御部６１は、第１読出クロックの割り込みがあるかどうかを判断する。割り込みがあればステップＳ５３に進み、なければ第１読出クロックの割り込みを待つ。
ステップＳ５３：第１読出クロックの割り込みがあれば、受信バッファ読出制御部６１は、受信バッファ量監視部５９から受信バッファ量Ｑｒを取得するとともに、再生バッファ量監視部６３から再生バッファ量Ｑｐを取得する。また、再生制御部６５も再生バッファ量監視部６３から再生バッファ量Ｑｐを取得する。
【０１２６】
ステップＳ５４：受信バッファ読出制御部６１は、その第１読出クロックの割り込みが初回かどうかを判断し、初回であればステップＳ５５に進み、初回でなければステップＳ５６に進む。
ステップＳ５５：割り込みが初回である場合は、受信バッファ読出制御部６１は、後述の再生スピード調整処理で用いる再生バッファ量比較基準Ｑｐｃｍｐとして、現在の再生バッファ量Ｑｐを設定する。
【０１２７】
ステップＳ５６：一方、割り込みが初回でない場合は、受信バッファ読出制御部６１は、再生バッファ量比較基準Ｑｐｃｍｐとして、前回の再生バッファ量Ｑｐを設定する。
ステップＳ５７：受信バッファ読出制御部６１は、受信バッファ４３からの読出量算出処理を行う。この読出量算出処理では受信バッファ量及び再生バッファ量に基づいて、第１読出クロック毎の受信バッファ４３からの読出量を決定する処理を行うとともに、受信バッファの読出量調整フラグに基づいて読出量調整間隔Ｔｐａごとにずれ時間Δｔをなくすための読出量を決定する処理を行う。
【０１２８】
ステップＳ５８、Ｓ５９：次に、再生制御部６５は第１読出クロックをカウントし、再生スピード調整タイミングとなったかどうかを判断する。例えば、第１読出クロックを規定数カウントしたかどうかを判断する。この規定数は、再生スピード調整処理を行う時間間隔に基づいて設定されており、再生スピード調整頻度に応じて変更される。規定数をカウントしていればステップＳ６０に進み、規定数に到達していなければステップＳ６２に進む。
【０１２９】
ステップＳ６０、Ｓ６１：再生制御部６５は再生スピード調整処理を行い、カウント数をクリアする。
ステップＳ６２：受信バッファ読出部４５は、ステップＳ５７で受信バッファ読出制御部６１が決定した読出量に基づいて受信バッファ４３から符号化データを読み出す。読み出された符号化データは、復号化されて再生バッファ５１に書き込まれる。
【０１３０】
（ｅ）受信バッファからの読出量算出処理
図１２は、受信機能部２が行う受信バッファ４３からの符号化データの読出量算出処理の流れの一例を示すフローチャートである。
ステップＳ７１：受信バッファ読出制御部６１は、逆転対策中フラグＦｐｔが立っているかどうかによって再生バッファ逆転対策中かどうかを判断する。再生バッファ逆転対策中である場合はステップＳ７２に進み、そうでない場合はステップＳ７６に進む。
【０１３１】
ここで、再生バッファ逆転対策中とは、ＲｅａｄポインタとＷｒｉｔｅポインタとの位置関係が逆転している状態のときである。図１３は、再生バッファ逆転対策中を示す説明図である。図１３（ａ）及び（ｂ）は再生バッファの状態を示す図であり、図１３（ａ）においてＲｅａｄポインタとＷｒｉｔｅポインタに囲まれた色付きの部分が再生バッファ量を表している。再生バッファ５１にデータが書き込まれるとＷｒｉｔｅポインタは矢印方向に進み、再生バッファ５１からデータが読み出されるＲｅａｄポインタも同じ矢印方向に進む。通常、Ｗｒｉｔｅポインタ及びＲｅａｄポインタは同程度の速度で同じ矢印方向に進む。しかし、再生バッファ５１への書込量よりも読出量が多くなれば、図１３（ｂ）のようにＲｅａｄポインタがＷｒｉｔｅポインタを追い抜かす。このとき、再生バッファ量は無くなるはずである。しかし、再生バッファ量はＲｅａｄポインタとＷｒｉｔｅポインタの差分で表されるため、ＲｅａｄポインタがＷｒｉｔｅポインタを追い抜かした途端に、再生バッファ量が０になるのではなく、図１３（ｂ）に示す黒塗りの部分のように過剰の状態となる。このような状態でＲｅａｄポインタが進むと、いまだＷｒｉｔｅポインタにより上書きされて更新されていない古いデータが出力されてしまう。そこで、この状態を再生バッファ逆転対策中と判定して、後述の再生バッファ逆転対策処理を行う。
【０１３２】
ステップＳ７２：受信バッファ読出制御部６１は、受信バッファ量Ｑｒ及び再生バッファ量Ｑｐがともに安定閾値内にあるかどうかを判定する。例えば、受信バッファ量についてバッファ量小Ｑｒｓ≦受信バッファ量Ｑｒ≦バッファ量大Ｑｒｂを判定し、再生バッファ量についてバッファ量小Ｑｐｓ≦再生バッファ量Ｑｐ≦バッファ量大Ｑｐｂを判定する。受信バッファ量Ｑｒ及び再生バッファ量Ｑｐがともに安定閾値内にある場合はステップＳ７４に進み、そうでない場合はステップＳ７３に進む。なお、受信バッファ読出制御部６１は、再生制御部６５から再生バッファ量の閾値を取得しているものとする。
【０１３３】
ステップＳ７３：受信バッファ読出制御部６１は、逆転対策中フラグが立つとともに受信バッファＱｒ及び再々バッファ量Ｑｐが安定閾値内ではないので、再生バッファ逆転対策処理を行うように指示する。
具体的に、受信バッファ読出制御部６１は、再生バッファ５１及び受信バッファ４３において次のように処理を行うように指示する。受信バッファ読出制御部６１は、再生バッファ５１のＷｒｉｔｅポインタがＲｅａｄポインタより先の位置になるように進めるように再生制御部６５に指示する。受信バッファ読出制御部６１は、再生バッファ５１においてＷｒｉｔｅポインタを進めた分に対応するだけ、受信バッファ４３のＲｅａｄポインタを進めるように受信バッファ読出部４５に指示する。つまり、Ｗｒｉｔｅポインタを進めた分に対応するだけ受信した符号化データを破棄する。ここで、再生バッファ５１及び受信バッファ４３ともにポインタの位置関係が正常に戻ったら、再生バッファ逆転対策処理を終了する。ポインタが正常な位置関係に戻っていない場合は、再生バッファ逆転対策処理を継続する。
【０１３４】
ステップＳ７４、Ｓ７５：ステップＳ７２において、受信バッファ量Ｑｒ及び再生バッファ量Ｑｐがともに安定閾値内にある場合は、逆転対策中フラグＦｐｔを戻す（Ｓ７４）。そして、受信バッファ読出制御部６１は、受信バッファ４３からの符号化データを１段読み出すことを決定する（Ｓ７５）。
ステップＳ７６：ステップＳ７１において再生バッファ逆転対策中ではないと判断された場合は、再生バッファ逆転対策処理が必要かどうかを判定する。ＷｒｉｔｅポインタがＲｅａｄポインタよりも先に来た場合は、再生バッファ量が最小になった後、急激に増加して逆転基準Ｑｐｒｖｓ以上となる。よって、受信バッファ読出制御部６１は、再生バッファ量Ｑｒが急に逆転基準Ｑｐｒｖｓ以上となった場合は、再生バッファ逆転対策処理が必要であると判断する。
【０１３５】
ステップＳ７７、Ｓ７８：再生バッファ逆転対策処理が必要である場合は、受信バッファ読出制御部６１は逆転対策中フラグＦｐｔを立てて（Ｓ７７）、再生バッファ逆転対策処理を行う（Ｓ７８）。
ステップＳ７９：ステップＳ７６において再生バッファ逆転対策処理が必要でないと判断された場合は、受信バッファ読出制御部６１は、再生バッファ量Ｑｐが少ないかどうかを判定する。例えば、現在の再生バッファ量Ｑｐと閾値である再生バッファ量最小Ｑｐｍｉｎ、再生バッファ量小Ｑｐｓ、再生バッファ量大Ｑｐｂ及び最も好ましい量として基準量Ｑｐｓｔｄ等とを比較する。ここで、再生バッファ量Ｑｐが少ないと判定された場合、つまり再生バッファ量Ｑｐが例えば再生バッファ量最小Ｑｐｍｉｎ及び再生バッファ量小Ｑｐｓより小さい場合はステップＳ８０に進み、そうでない場合はステップＳ８６に進む。
【０１３６】
ステップＳ８０：次に、受信バッファ読出制御部６１は、受信バッファ量Ｑｒを参照して、受信バッファ４３から複数段の符号化データを読み出し可能かどうかを判断する。このような判断を行うのは、再生バッファ量Ｑｐが少ないため受信バッファ４３から多くの符号化データを読み出して再生バッファ５１に書き込むためである。
受信バッファ読出制御部６１は、受信バッファ量Ｑｒがバッファ量小Ｑｒｓより小さい場合はステップＳ８４に進み、受信バッファ量Ｑｒがバッファ量小Ｑｒｓより大きい場合はステップＳ８１に進む。
【０１３７】
ステップＳ８１：受信バッファ読出制御部６１は、読出量調整フラグとして＋調整フラグが立っているかどうかを判断する。この＋調整フラグＦｒ＋は、上述の通り、通常よりも受信バッファ４３からの読出量を多くすることで相手方の通信装置Ｂとの基準クロックのずれを調整するためのものである。なお、この＋調整フラグＦｒ＋は、読出量調整間隔Ｔｐａごとに立てられている。
【０１３８】
ステップＳ８２：＋調整フラグＦｒ＋が立っている場合は、次のステップＳ８３において読み出しを複数段と決定するため、受信バッファ読出制御部６１は＋調整フラグＦｒ＋を戻す。
ステップＳ８３：受信バッファ読出制御部６１は、受信バッファ４３から符号化データを複数段読み出すように受信バッファ読出部４５に指示する。このように複数段読み出すことで、再生バッファ５１への書込量を増やして再生バッファ量を適正に制御したり、相手方の通信装置Ｂとの基準クロックのずれを補正する。
【０１３９】
ステップＳ８４：ステップＳ８０において、受信バッファ読出制御部６１は、受信バッファ４３から複数段読み出すことができないと判断すると、再生バッファ量小フラグＦｐｓを立てる。これは、再生バッファ量が少ないにもかかわらず受信バッファ４３からデータを読み出して再生バッファ５１に書き込むことができないため、再生バッファ量が小さいことを示すフラグである。
【０１４０】
ステップＳ８５：受信バッファ読出制御部６１は、受信バッファ４３からの読出量を複数段ではなく１段と決定する。
ステップＳ８６：受信バッファ読出制御部６１は、再生バッファ量Ｑｐが多いかどうかを判定する。例えば、現在の再生バッファ量Ｑｐと再生バッファ量大Ｑｐｂとを比較する。ここで、再生バッファ量Ｑｐが再生バッファ量大Ｑｐｂよりも多い場合はステップＳ８７に進み、そうでない場合つまり再生バッファ量Ｑｐが適切な量である場合はステップＳ９３に進む。
【０１４１】
ステップＳ８７：次に、受信バッファ読出制御部６１は、受信バッファ量Ｑｒが基準量Ｑｒｓｔｄ以下であるかどうかを判定する。受信バッファ量Ｑｒが基準量Ｑｒｓｔｄ以下である場合はステップＳ８８に進み、そうでない場合はステップＳ９１に進む。
ステップＳ８８：受信バッファ読出制御部６１は、読出量調整フラグとして−調整フラグＦｒ−が立っているかどうかを判断する。この−調整フラグＦｒ−は、通常よりも受信バッファ４３からの読出量を少なくすることで相手方の通信装置Ｂとの基準クロックのずれを調整するためのものである。なお、この−調整フラグＦｒ−は、読出量調整間隔Ｔｐａごとに立てられている。
【０１４２】
ステップＳ８９：−調整フラグＦｒ−が立っている場合は、次のステップＳ９０において読み出しを０段と決定するため、受信バッファ読出制御部６１は−調整フラグＦｒ−を戻す。
ステップＳ９０：受信バッファ読出制御部６１は、受信バッファ４３からの読出量を０段と決定し、受信バッファ読出部４５に読み出しを行わないように指示する。このように読出量を抑制することで、再生バッファ５１への書込量を減らして再生バッファ量を適正に制御したり、相手方の通信装置Ｂとの基準クロックのずれを補正する。
【０１４３】
ステップＳ９１：ステップＳ８７において、受信バッファ読出制御部６１は、受信バッファ量Ｑｒが基準量Ｑｐｓｔｄより多いと判断すると、再生バッファ量大フラグＦｐｂを立てる。これは、再生バッファ量が多いことを示すフラグであり、再生バッファからの読出量を多くすることが可能であることを意味する。
ステップＳ９２：受信バッファ量及び再生バッファ量がともに多いため、受信バッファ読出制御部６１は、再生バッファ量が過剰とならないように受信バッファ４３からの読出量を複数段ではなく１段と決定する。
【０１４４】
ステップＳ９３、Ｓ９４：ステップＳ８６において再生バッファ量Ｑｐが適切な量であると判断された場合は、受信バッファ読出制御部６１は再生バッファ量大フラグＦｐｂ及び再生バッファ量小フラグＦｐｓを戻す（Ｓ９３）。そして、受信バッファ読出制御部６１は、受信バッファ４３からの読出量を、通常の読出量である１段と決定する（Ｓ９４）。
【０１４５】
（ｆ）再生スピード調整処理
図１４は、受信機能部２が行う再生スピード調整処理の流れの一例を示すフローチャートである。
ステップＳ１０１：再生制御部６５は、再生バッファ量小フラグＦｐｓが立っているかどうかを判定し、立っている場合はステップＳ１０２に進み、そうでない場合はステップＳ１０４に進む。
【０１４６】
ステップＳ１０２、Ｓ１０３：再生制御部６５は、現在の再生バッファ量Ｑｐが再生バッファ量比較基準Ｑｐｃｍｐより小さいかどうかを判定する（Ｓ１０２）。つまり、再生バッファ量比較基準Ｑｐｃｍｐは初回を除いては前回の再生バッファ量Ｑｐであり、現在の再生バッファ量がＱｐが前回よりも減っているかどうかを判定する。前回よりも減っている場合は、再生制御部６５は再生スピードを下げるように調整する（Ｓ１０３）。そうでない場合は終了する。つまり、再生バッファ量小フラグＦｐｓが立っているので再生バッファ５１からの読出量を少なく調整する必要あり、又現在の再生バッファ量Ｑｐが再生バッファ量Ｑｐｃｍｐよりも小さいのでより、再生バッファ５１からデータを読出して再生する再生スピードを小さくする。
【０１４７】
再生スピードを下げる方法としては、例えば再生クロックの間隔を大きく調整する、サンプリング周波数を小さくする、間引き・補完部４９での補完量を大きく設定するなどの方法が挙げられる。
ステップＳ１０４：再生制御部６５は、再生バッファ量大フラグＦｐｂが立っているかどうかを判定し、立っている場合はステップＳ１０５に進み、そうでない場合はステップＳ１０７に進む。
【０１４８】
ステップＳ１０５、Ｓ１０６：再生制御部６５は、現在の再生バッファ量Ｑｐが再生バッファ量比較基準Ｑｐｃｍｐより大きいどうかを判定する（Ｓ１０５）。つまり、現在の再生バッファ量がＱｐが前回よりも増えているかどうかを判定する。前回よりも増えている場合は、再生制御部６５は再生スピードを上げるように調整する（Ｓ１０６）。そうでない場合は終了する。
【０１４９】
つまり、再生バッファ量大フラグＦｐｂが立っているので再生バッファ５１からの読出量を大きく調整する必要あり、又現在の再生バッファ量Ｑｐが再生バッファ量Ｑｐｃｍｐよりも大きいのでより、再生バッファ５１からデータを読出して再生する再生スピードを大きくする。
再生スピードを上げる方法としては、例えば再生クロックの間隔を小さく調整する、サンプリング周波数を大きくする、間引き・補完部４９での間引き量を大きく設定するなどの方法が挙げられる。
【０１５０】
ステップＳ１０７：再生制御部６５は、再生バッファ量大フラグＦｐｂ及び再生バッファ量小フラグＦｐｓがいずれも立っていないと判断した場合は、＋調整フラグＦｒ＋が立っているかどうかを判断する。＋調整フラグＦｒ＋が立っている場合は、ステップＳ１０８に進み、そうでない場合はステップＳ１１０に進む。
ステップＳ１０８、Ｓ１０９：再生制御部６５は、現在の再生バッファ量Ｑｐが再生バッファ量比較基準Ｑｐｃｍｐより大きいどうかを判定する（Ｓ１０８）。大きい場合は、再生制御部６５は再生スピードを上げるように調整する（Ｓ１０９）。そうでない場合は終了する。
【０１５１】
つまり、再生バッファ量大フラグＦｐｂ及び再生バッファ量大フラグＦｐｓがともに立っていないので再生バッファ５１からは通常の読出量でディジタルデータが読み出される。ここで、＋調整フラグＦｒ＋が立っているので受信バッファ４３からの符号化データの読出量が増加し、再生バッファ５１への書込量が増加する。この状況において、現在の再生バッファ量Ｑｐが再生バッファ量Ｑｐｃｍｐよりも大きいのでより、再生バッファ５１からのデータの読出スピードを大きくする。
【０１５２】
ステップＳ１１０：再生制御部６５は、−調整フラグＦｒ−が立っているかどうかを判断する。−調整フラグＦｒ−が立っている場合は、ステップＳ１１１に進み、そうでない場合はステップＳ１１３に進む。
ステップＳ１１１、Ｓ１１２：再生制御部６５は、現在の再生バッファ量Ｑｐが再生バッファ量比較基準Ｑｐｃｍｐより小さいかどうかを判定する（Ｓ１１１）。前回よりも小さい場合は、再生制御部６５は再生スピードを下げるように調整する（Ｓ１１２）。そうでない場合は終了する。
【０１５３】
つまり、再生バッファ量大フラグＦｐｂ及び再生バッファ量大フラグＦｐｓがともに立っていないので再生バッファ５１からは通常の読出量でディジタルデータが読み出される。ここで、−調整フラグＦｒ−が立っているので受信バッファ４３からの符号化データの読出量は減少し、再生バッファ５１への書込量が減少する。この状況において、現在の再生バッファ量Ｑｐが再生バッファ量Ｑｐｃｍｐよりも小さいのでより、再生バッファ５１からのデータの読出スピードを小さくする。
【０１５４】
ステップＳ１１３：再生バッファ量大フラグＦｐｂ、再生バッファ量小フラグＦｐｓ、＋調整フラグＦｒ＋及び−調整フラグＦｒ−のいずれも立っていない場合において、再生制御部６５は現在の再生バッファ量Ｑｐが最も好ましい基準量Ｑｐｓｔｄより小さいかどうかを判定する。小さい場合はステップＳ１１４に進み、そうでない場合はステップＳ１１６に進む。
【０１５５】
ステップＳ１１４、Ｓ１１５：さらに、再生制御部６５は、現在の再生バッファ量Ｑｐが再生バッファ量比較基準Ｑｐｃｍｐより小さいかどうかを判定し（Ｓ１１４）、前回よりも小さい場合は再生スピードを下げるように調整する（Ｓ１１５）。そうでない場合は終了する。
つまり、受信バッファ４３からは通常の読出量で符号化データが読み出され、また再生バッファ５１からも通常の読出量でディジタルデータが読み出される。この状況において、現在の再生バッファ量Ｑｐが再生バッファ量比較基準Ｑｐｃｍｐよりも小さいのでより、再生バッファ５１からのデータの読出スピードを小さくする。
【０１５６】
ステップＳ１１６：再生制御部６５は現在の再生バッファ量Ｑｐが最も好ましい基準量Ｑｐｓｔｄより大きいかどうかを判定する。大きい場合はステップＳ１１７に進み、そうでない場合は終了する。
ステップＳ１１７、Ｓ１１８：再生制御部６５は、現在の再生バッファ量Ｑｐが再生バッファ量比較基準Ｑｐｃｍｐより大きいどうかを判定する（Ｓ１１７）。大きい場合は、再生制御部６５は再生スピードを上げるように調整する（Ｓ１１８）。そうでない場合は終了する。
【０１５７】
つまり、受信バッファ４３からは通常の読出量で符号化データが読み出され、また再生バッファ５１からも通常の読出量でディジタルデータが読み出される。この状況において、現在の再生バッファ量Ｑｐが再生バッファ量比較基準Ｑｐｃｍｐよりも大きいのでより、再生バッファ５１からのデータの読出スピードを大きくする。
（３−２）送信側処理
（ａ）読出量調整間隔Ｔｓａの算出処理
図１５は、読出量調整間隔Ｔｓａの算出処理の流れの一例を示すフローチャートである。
【０１５８】
ステップＳ１２１：送信バッファ読出制御部３７は、読出量調整間隔Ｔｓａの更新が必要かどうかを判定する。例えば、前述の読出量調整間隔Ｔｐａの算出処理のステップＳ３４と同様に、前回算出したＴｃｌｋ(n-1)と今回算出したＴｃｌｋnとを比較して、大きく変動していないかを判定する。ここで、更新が必要である場合は、ステップＳ１２２に進む。一方、更新が不要な場合はステップを終了し、例えば図９の読出量調整間隔Ｔｐａの算出処理のステップＳ３８に進む。
【０１５９】
ステップＳ１２２、Ｓ１２３：送信バッファ読出制御部３７は、ずれ時間Δｔに応じて読出量を増やしたり減らしたりする間隔である読出量調整間隔Ｔｓａを、Ｔｃｌｋに基づいて算出し、再設定する。
（ｂ）送信バッファの読出量フラグ設定処理
図１６は、送信バッファの読出量フラグ設定処理の流れの一例を示すフローチャートである。
【０１６０】
ステップＳ１３１：通信の終了まで以下の処理を行う。
ステップＳ１３２：送信バッファ読出制御部３７は、読出量調整間隔Ｔｓａが経過したか判断し、経過している場合はステップＳ１３３に進む。そうでない場合は読出量調整間隔Ｔｓａが経過するまで待機する。
ステップＳ１３３：送信バッファ読出制御部３７は、読出量調整間隔Ｔｓａが経過するとずれ時間Δｔが０かどうかを判断する。つまり、理論時間Ｔｒｓｔｄと受信時間ΔＴｒとの差が０であるかどうかを判断する。ずれ時間Δｔが０でない場合は、ステップＳ１３４に進む。
【０１６１】
ステップＳ１３４：ずれ時間Δｔ＝０でない場合は、送信バッファ読出制御部３７は、次にずれ時間Δｔが０より大きいか否かを判断する。ずれ時間Δｔ＞０である場合はステップＳ１３５に、ずれ時間Δｔ＜０である場合はステップＳ１３６に進む。
ステップＳ１３５：ずれ時間Δｔ＞０である場合、つまり理論時間Ｔｒｓｔｄが受信時間ΔＴｒより大きい場合、送信バッファ読出制御部３７は、送信パケット調整数Ｎｐａｃ＝Ｎｐａｃ＋１と設定する。より具体的に説明すると、ずれ時間Δｔ＞０である場合とは、時間軸上の１ｓという幅が相手方の通信装置Ｂよりも通信装置Ａの方が大きく基準クロックが遅い場合である。よって、通信装置Ａの方が基準クロックが遅い分だけ送信バッファ２５からの読出量を増やして、つまり送信パケット数を増やして基準クロックのずれを補う。
【０１６２】
ステップＳ１３６：ずれ時間Δｔ＜０である場合、つまり理論時間Ｔｒｓｔｄが受信時間ΔＴｒより小さい場合は、送信バッファ読出制御部３７は、送信パケット調整数Ｎｐａｃ＝Ｎｐａｃ−１と設定する。より具体的に説明すると、ずれ時間Δｔ＜０である場合とは、時間軸上の１ｓという幅が相手方の通信装置Ｂよりも通信装置Ａの方が小さく基準クロックが早い場合である。よって、通信装置Ａの方が基準クロックが早い分だけ送信バッファ２５からの読出量を減らして、つまり送信パケット数を減らして基準クロックのずれを補う。
【０１６３】
ステップＳ１３７：ずれ時間Δｔ＝０である場合は、理論時間Ｔｒｓｔｄと受信時間ΔＴｒとが同じであるので、通信装置Ａ及び通信装置Ｂ間の基準基準クロックのずれがない。よって、送信パケット調整数Ｎｐａｃを現在のＮｐａｃとして送信パケット数の増減の設定を行わない。
（ｃ）送信処理
図１７は、送信機能部１が行う送信処理の流れの一例を示すフローチャートである。
【０１６４】
ステップＳ１４１：送信機能部１は、送信処理の各種設定を行う。例えば、送信部２７は送信バッファ２５からの読み出しの処理を行う送信クロックを設定し、キャプチャ制御部２９はキャプチャスピード調整処理を行う間隔を設定し、送信バッファ読出制御部３７及びキャプチャバッファ読出制御部３３はそれぞれ送信バッファ量及びキャプチャバッファ量の閾値の設定を行う。また、送信バッファ読出制御部３７は、送信バッファ２５から読み出して送信する送信パケットの１個分のデータサイズＱｐａｃを設定する。
【０１６５】
閾値の設定としては、送信バッファ２５については、例えば、最も好ましい量として基準量Ｑｓｓｔｄ、この量を超えると遅延時間が大きくなる送信バッファ量大Ｑｓｂ、この量より少なくなると読み出し不可になる送信バッファ量小Ｑｓｓ等を設定する。一方、キャプチャバッファ１７には、例えば、読み出し１段分の量Ｑ１ｂｌｋ、最も好ましい量として基準量Ｑｃｓｔｄ、この量を超えると遅延時間が大きくなるキャプチャバッファ量大Ｑｃｂ、この量より少なくなると好ましくないキャプチャバッファ量小Ｑｃｓ等を設定する。
【０１６６】
ステップＳ１４２：送信バッファ読出制御部３７は、送信クロックの割り込みがあるかどうかを判断する。割り込みがあればステップＳ１４３に進み、なければ送信クロックの割り込みを待つ。
ステップＳ１４３：送信クロックの割り込みがあれば、送信バッファ読出制御部３７は、送信バッファ量監視部３５から送信バッファ量Ｑｓを取得する。また、キャプチャバッファ読出制御部３３は、送信バッファ量Ｑｓ及びキャプチャバッファ量Ｑｃを取得する。
【０１６７】
ステップＳ１４４：キャプチャバッファ読出制御部３３は、その送信クロックの割り込みが初回かどうかを判断し、初回であればステップＳ１４５に進み、初回でなければステップＳ１４６に進む。
ステップＳ１４５：割り込みが初回である場合は、キャプチャバッファ読出制御部３３は、後述のキャプチャスピード調整処理で用いるキャプチャバッファ量比較基準Ｑｃｃｍｐとして、現在のキャプチャバッファ量Ｑｃを設定する。
【０１６８】
ステップＳ１４６：一方、割り込みが初回でない場合は、キャプチャバッファ読出制御部３３は、キャプチャバッファ量比較基準Ｑｃｃｍｐとして、前回のキャプチャバッファ量Ｑｃを設定する。
ステップＳ１４７：送信バッファ読出制御部３７は、送信バッファ量を判断するための送信バッファ量判断処理を行う。
【０１６９】
ステップＳ１４８、Ｓ１４９：キャプチャバッファ読出制御部３３は、送信クロックのカウントを行い、キャプチャバッファ１７からのデータの読み出しタイミングである第２読出クロックの割り込み時間となったかどうかを判断する。例えば、送信バッファから読み出した送信パケットの送信４回に対して、キャプチャバッファからデータを１回読み出す場合には、送信クロック４回分が第２読出クロック１回分に相当する。よって、キャプチャバッファ読出制御部３３は、送信クロックを４カウントすると第２読出クロックの割り込みになったと判断して、ステップＳ１５０に進む。
【０１７０】
ステップＳ１５０：キャプチャバッファ読出制御部３３は、キャプチャバッファ１７からの読出量算出処理を行う。この読出量算出処理ではキャプチャバッファ量及び送信バッファ量に基づいて、第２読出クロック毎のキャプチャバッファ１７からの読出量を決定する処理を行う。
ステップＳ１５１、Ｓ１５２：次に、キャプチャ制御部２９はキャプチャスピード調整タイミングなったかどうかを判断する。第２読出クロックをカウントし、キャプチャスピード調整タイミングとなったかどうかを判断する。ここで、キャプチャスピード調整間隔Ｎａｄｊは第２読出クロックによる割り込み回数により定義されている。よって、キャプチャ制御部２９は、キャプチャスピード調整間隔Ｎａｄｊ分だけ第２読出クロックがカウントされたかどうかを判断する。キャプチャスピード調整間隔Ｎａｄｊ分をカウントしていればステップＳ１５３に進み、そうでなければステップＳ１５４に進む。
【０１７１】
ステップＳ１５３、Ｓ１５４：キャプチャ制御部２９はキャプチャスピード調整処理を行い（Ｓ１５３）、カウント数をクリアする（Ｓ１５４）。
ステップＳ１５５：キャプチャバッファ読出部１９は、ステップＳ１５０でキャプチャバッファ読出制御部３３が決定した読出量に基づいてキャプチャバッファ１７からディジタルデータを読み出す。読み出されたディジタルデータは、符号化されて送信バッファ２５に書き込まれる。なお、キャプチャバッファ読出部１９は、後述の無音挿入フラグが立っている場合は、キャプチャバッファ１７からデータを読み出すことなく、送信バッファ２５に無音データを出力する。
【０１７２】
ステップＳ１５６：送信バッファ読出制御部３７は、送信バッファ量及び送信パケット調整数Ｎｐａｃに基づいて送信パケット数を算出する送信パケット数算出処理を行う。
ステップＳ１５７：送信バッファ読出制御部３７が決定した送信パケット数に基づいて、送信部２７は送信バッファ２５から読み出した符号化データをパケットに構成して送信する。
【０１７３】
（ｄ）送信バッファ量判断処理
図１８は、送信機能部１が行う送信バッファ量判断処理の流れの一例を示すフローチャートである。
ステップＳ１６１：送信バッファ読出制御部３７は、取得した送信バッファ２５の送信バッファ量Ｑｓが送信バッファ量小Ｑｓｓより小さいかどうかを判定する。
【０１７４】
ステップＳ１６２、Ｓ１６４：送信バッファ量Ｑｓが送信バッファ量小Ｑｓｓより小さい場合は、送信バッファ読出制御部３７は、送信バッファ量が小であることを示す送信バッファ量小フラグＦｓｓがＦＡＬＳＥであるか、つまり送信バッファ量小フラグＦｓｓが立てられていないかを判断する（Ｓ１６２）。そして、送信バッファ量小フラグＦｓｓがＦＡＬＳＥである場合は、送信バッファ量Ｑｓが送信バッファ量小Ｑｓｓであることを示すために、送信バッファ読出制御部３７は、送信バッファ量小フラグＦｓｓをＴＲＵＥにする（Ｓ１６３）。一方、送信バッファ量小フラグＦｓｓがＦＡＬＳＥでない場合、つまり送信バッファ量小フラグＦｓｓがＴＲＵＥである場合は終了する。
【０１７５】
ステップＳ１６４：次に、送信バッファ読出制御部３７は、送信バッファ量Ｑｓが送信バッファ量小Ｑｓｓより小さいため、キャプチャスピード調整間隔Ｎａｄｊを小さくしてキャプチャスピードの調整頻度を多くする。つまり、前回キャプチャスピードを調整してから次にキャプチャスピードを調整するまでの第２読出クロックによる割り込み回数を小さくして、より早く送信バッファ量を適量に調整する。
【０１７６】
ステップＳ１６５：また、送信バッファ読出制御部３７は、送信バッファ量Ｑｓが送信バッファ量小Ｑｓｓより小さいため、キャプチャ制御部２９にＡＤＣ１５でのキャプチャスピードを上げるように指示する。
ステップＳ１６６：ステップＳ１６１において、送信バッファ量Ｑｓが送信バッファ量小Ｑｓｓより小さくないと判断した場合は、送信バッファ読出制御部３７は、送信バッファ量Ｑｓが送信バッファ量大Ｑｓｂより大きいかどうかを判定する。
【０１７７】
ステップＳ１６７、Ｓ１６８：送信バッファ量Ｑｓが送信バッファ量大Ｑｓｂより大きい場合は、送信バッファ読出制御部３７は、送信バッファ量が大であることを示す送信バッファ量大フラグＦｓｂがＦＡＬＳＥであるか、つまり送信バッファ量大フラグＦｓｂが立てられていないかを判断する（Ｓ１６７）。そして、送信バッファ量大フラグＦｓｂがＦＡＬＳＥである場合は、送信バッファ量Ｑｓが送信バッファ量大Ｑｓｂであることを示すために、送信バッファ読出制御部３７は送信バッファ量大フラグＦｓｂをＴＲＵＥにする（Ｓ１６８）。一方、送信バッファ量大フラグＦｓｂがＴＲＵＥである場合は終了する。
【０１７８】
ステップＳ１６９：次に、送信バッファ読出制御部３７は、送信バッファ量Ｑｓが送信バッファ量大Ｑｓｂより大きいため、キャプチャスピード調整間隔Ｎａｄｊを小さくしてキャプチャスピードの調整頻度を多くしてより早く送信バッファ量を適量に調整する。
ステップＳ１７０：また、送信バッファ読出制御部３７は、送信バッファ量Ｑｓが送信バッファ量大Ｑｓｂより大きいため、キャプチャ制御部２９にＡＤＣ１５でのキャプチャスピードを下げるように指示する。
【０１７９】
ステップＳ１７１：ステップＳ１６１及びＳ１６６の結果、送信バッファ量Ｑｓが送信バッファ量小Ｑｓｓ以上であり、かつ送信バッファ量大Ｑｓｂ以下であり、ステップＳ１７１では送信バッファ量は適量である。ここで、送信バッファ読出制御部３７は、送信バッファ量小フラグＦｓｓがＴＲＵＥであるか、又は送信バッファ量大フラグＦｓｂがＴＲＵＥであるかを判断する。
【０１８０】
ステップＳ１７２：ステップＳ１７１において送信バッファ量小フラグＦｓｓ又は送信バッファ量大フラグＦｓｂがＴＲＵＥであると判断された場合は、現在の送信バッファ量が適量であることを示すため、送信バッファ量小フラグＦｓｓ及び送信バッファ量大フラグＦｓｂをＦＡＬＳＥにする。
ステップＳ１７３：送信バッファ読出制御部３７は、送信バッファ量が適量であるので、キャプチャスピードの調整間隔Ｎａｄｊを元に戻してキャプチャスピードの調整頻度を通常に戻す。
【０１８１】
上記ステップＳ１６１からステップＳ１７１をさらに説明すると次の通りである。上記ステップＳ１６１からステップＳ１６５では、送信バッファ量Ｑｓが送信バッファ量小Ｑｓｓより小さい場合に、送信バッファ量小フラグＦｓｓがＦＡＬＳＥであれば、ステップＳ１６３で送信バッファ量小フラグＦｓｓをＴＲＵＥに設定する。そして、送信バッファ量小フラグＦｓｓがＴＲＵＥの間は、次回のステップＳ１６１において送信バッファ量Ｑｓが送信バッファ量小Ｑｓｓより小さいと判断されても、ステップＳ１６３からステップＳ１６５の処理は行わない。このとき、後述のキャプチャスピード調整処理において、キャプチャバッファ量を参照しながらキャプチャスピードの調整が行われる。次に、送信バッファ量が適量になって、ステップＳ１７１からステップＳ１７３の処理により送信バッファ量小フラグＦｓｓがＦＡＬＳＥに設定されれば、再度ステップＳ１６２からステップＳ１６５の処理が可能となる。即ち、送信バッファ量Ｑｓが送信バッファ量小Ｑｓｓより小さいと初めて判断した場合は、キャプチャバッファ量に関係なくキャプチャスピードを上げる。その後は、キャプチャスピード調整処理によりキャプチャバッファ量に応じてキャプチャスピードを調整する。
【０１８２】
一方、ステップＳ１６６からステップＳ１７０では、送信バッファ量Ｑｓが送信バッファ量大Ｑｓｂより大きい場合に、送信バッファ量大フラグＦｓｂがＦＡＬＳＥであれば、ステップＳ１６８で送信バッファ量小フラグＦｓｂをＴＲＵＥに設定する。そして、送信バッファ量大フラグＦｓｂがＴＲＵＥの間は、次回のステップＳ１６６において送信バッファ量Ｑｓが送信バッファ量大Ｑｓｂより大きいと判断されても、ステップＳ１６８からステップＳ１７０の処理は行わない。このとき、後述のキャプチャスピード調整処理において、キャプチャバッファ量を参照しながらキャプチャスピードの調整が行われる。次に、送信バッファ量が適量になって、ステップＳ１７１からステップＳ１７３の処理により送信バッファ量大フラグＦｓｂがＦＡＬＳＥに設定されれば、ステップＳ１６７からステップＳ１７０の処理が可能となる。即ち、送信バッファ量Ｑｓが送信バッファ量大Ｑｓｂより大きいと初めて判断した場合は、キャプチャバッファ量に関係なくキャプチャスピードを下げる。その後は、キャプチャスピード調整処理によりキャプチャバッファ量に応じてキャプチャスピードを調整する。
【０１８３】
（ｅ）キャプチャバッファからの読出量算出処理
図１９は、送信機能部１が行うキャプチャバッファ１７からのディジタルデータの読出量算出処理の流れの一例を示すフローチャートである。
ステップＳ１８１：キャプチャバッファ読出制御部３３は、キャプチャバッファ量Ｑｃが読み出し１段分の量Ｑ１ｂｌｋよりも小さいかどうかを判断する。読み出し１段分の量Ｑ１ｂｌｋより小さい場合はステップＳ１８２に進み、そうでない場合はステップＳ１８７に進む。
【０１８４】
ステップＳ１８２：次に、キャプチャバッファ読出制御部３３は、送信バッファ量Ｑｓが送信バッファ量小Ｑｓｓより小さいかどうかを判断する。
ステップＳ１８３、Ｓ１８４：キャプチャバッファ読出制御部３３は、ステップＳ１８２において送信バッファ量Ｑｓが送信バッファ量小Ｑｓｓより小さいと判断した場合は無音挿入フラグを立てて（Ｓ１８３）、１段読み出しを決定する（Ｓ１８４）。ただし、この１段読み出しの決定は、キャプチャバッファ１７からのデータの読み出しではなく、無音データを１段読み出すことを意味する。
【０１８５】
つまり、キャプチャバッファ量が読み出し１段分の量Ｑ１ｂｌｋよりも小さいため、キャプチャバッファ１７からデータを読み出すことができない。また、送信バッファ量がこの量より少なくなると読み出し不可になる送信バッファ量小Ｑｓｓより小さいため、送信バッファ２５には無音データを書き込む必要がある。そこで、キャプチャバッファ読出制御部３３により無音挿入フラグを立てておき、キャプチャバッファ読出部１９は、この無音挿入フラグ及び１段読み出し決定を参照して、キャプチャバッファ１７からデータを読み出すことなく、送信バッファ２５に１段分の無音データを出力する。
【０１８６】
ステップＳ１８５、Ｓ１８６：キャプチャバッファ読出制御部３３は、ステップＳ１８２において送信バッファ量Ｑｓが送信バッファ量小Ｑｓｓ以上であると判断した場合はキャプチャスピード調整フラグＦａｄｊをＦＡＬＳＥに設定して、キャプチャスピードの調整を行わせないようにする（Ｓ１８５）。そして、キャプチャバッファ読出制御部３３は、キャプチャバッファ１７から０段のデータを読み出すことを決定、つまりデータを読み出さないことを決定する（Ｓ１８６）。
【０１８７】
前述の図１３での再生バッファ量の説明と同様に、キャプチャバッファ量は、ＲｅａｄポインタとＷｒｉｔｅポインタに囲まれた領域により定義される。ここで、キャプチャスピードは適正値であるが、ＯＳでの処理の揺らぎなどによって処理応答が無いなどの理由により、一時的にＷｒｉｔｅポインタの動作がおかしくなる場合がある。よって、次の動作時にはＷｒｉｔｅポインタの動作が正常に戻ってキャプチャ量Ｑｃが適正量であると判断される場合もある。そこで、このような一時的な動作不良であり、かつキャプチャバッファ量が少ない場合には、キャプチャバッファからの読み出しを無しにして、さらに後述のキャプチャスピード調整処理でのキャプチャスピードの調整を行わないようにして、次のキャプチャバッファ量を監視する。
【０１８８】
ステップＳ１８７：ステップＳ１８１においてキャプチャバッファ量Ｑｃが読み出し１段分の量Ｑ１ｂｌｋ以上である場合は、キャプチャバッファ読出制御部３３は、キャプチャバッファ量Ｑｃがキャプチャバッファ量大Ｑｃｂ以上であるかどうかを判断する。
ステップＳ１８８、Ｓ１８９：キャプチャバッファ読出制御部３３は、キャプチャバッファ量Ｑｃがキャプチャバッファ量大Ｑｃｂ以上である場合は、キャプチャスピード調整フラグＦａｄｊをＦＡＬＳＥに設定して（Ｓ１８８）、キャプチャバッファ１７から２段のデータを読み出すことを決定する（Ｓ１８９）。上記と同様の理由により、一時的な動作不良であり、かつキャプチャバッファ量が多い場合には、キャプチャバッファ１７からの読み出しを通常の１段よりも多い２段にして、さらにキャプチャスピードの調整を行わないようにして、次のキャプチャバッファ量を監視する。
【０１８９】
ステップＳ１９０：次に、キャプチャバッファ量Ｑｃがキャプチャバッファ量大Ｑｃｂより小さい場合は、キャプチャバッファ読出制御部３３は、送信バッファ量が少ないことを示す送信バッファ量小フラグＦｓｓがＴＲＵＥであるかを判断する。つまり、送信バッファ量が少ないことに対応した処理が行われているかどうかを判断する。
ステップＳ１９１：送信バッファ量小フラグＦｓｓがＴＲＵＥである場合は、キャプチャバッファ読出制御部３３は、キャプチャバッファ量Ｑｃが最も好ましい量として基準量Ｑｃｓｔｄより大きいかどうかを判断する。
【０１９０】
ステップＳ１９２：送信バッファ量が少なく、かつキャプチャバッファ量が基準量Ｑｃｓｔｄより大きい場合は、キャプチャバッファ読出制御部３３はキャプチャバッファ１７からの読出量を通常の１段よりも多い２段に決定する。これにより、送信バッファ量を適量に調整することが可能となる。
ステップＳ１９３：キャプチャバッファ量Ｑｃが基準量Ｑｃｓｔｄ以下である場合は、キャプチャバッファ読出制御部３３はキャプチャバッファ１７からの読出量を通常の１段と決定する。このとき、キャプチャバッファ量Ｑｃは１段以上基準量Ｑｃｓｔｄ以下であり、かつ送信バッファ量が少ない状態である。ここで、送信バッファ量が少ないと相手方の通信装置Ｂへのパケットの送信に影響が出るため、キャプチャバッファ量Ｑｃが基準量Ｑｃｓｔｄ以下であっても読出量を１段と決定する。
【０１９１】
ステップＳ１９４：キャプチャバッファ読出制御部３３は、送信バッファ量小フラグＦｓｓがＦＡＬＳＥである場合は、送信バッファ量が多いことを示す送信バッファ量大フラグＦｓｂがＴＲＵＥであるかを判断する。つまり、送信バッファ量が多いことに対応した処理が行われているかどうかを判断する。
ステップＳ１９５：送信バッファ量大フラグＦｓｂがＴＲＵＥである場合は、キャプチャバッファ読出制御部３３は、キャプチャバッファ量Ｑｃが基準量Ｑｃｓｔｄより小さいかどうかを判断する。
【０１９２】
ステップＳ１８６：送信バッファ量が多く、かつキャプチャバッファ量が基準量Ｑｃｓｔｄより小さい場合は、キャプチャバッファ読出制御部３３はキャプチャバッファ１７からの読出量を０段と決定する。送信バッファ量が多いためパケットの送信には影響が無いため、キャプチャバッファ１７からの読み出しを無しにしてキャプチャバッファ量が基準量Ｑｃｓｔｄ以上となるのを待つ。
【０１９３】
ステップＳ１９７：送信バッファ量が多く、かつキャプチャバッファ量が基準量Ｑｃｓｔｄより大きい場合は、キャプチャバッファ読出制御部３３は、読出量を通常の読み出し段数である１段と決定する。そして、送信バッファ量及びキャプチャバッファ量が適量になるのを待つ。
ステップＳ１９８：キャプチャバッファ量Ｑｃが読み出し１段分の量Ｑ１ｂｌｋ以上キャプチャバッファ量大Ｑｃｂより小さく、送信バッファ量が適量である場合は、キャプチャバッファ読出制御部３３は、読出量を通常の読み出し段数である１段と決定する。
【０１９４】
（ｆ）キャプチャスピード調整処理
図２０は、送信機能部１が行うキャプチャスピード調整処理の流れの一例を示すフローチャートである。前述の図１７の送信処理におけるステップＳ１５２において、キャプチャスピード調整間隔Ｎａｄｊ分だけ第２読出クロックがカウントされた場合は、以下のキャプチャスピード調整処理を行う。そして、キャプチャスピード調整処理が終了すると、第２読出クロックのカウントＮを０に戻して再度カウントを開始する。
【０１９５】
ステップＳ２０１：キャプチャ制御部２９は、キャプチャスピード調整フラグＦａｄｊがＴＲＵＥであるかどうかを判断する。ＴＲＵＥであればステップＳ２０２に進み、ＦＡＬＳＥであればステップＳ２１４に進む。
ステップＳ２０２：キャプチャスピード調整フラグＦａｄｊがＴＲＵＥである場合は、さらに送信バッファ量大フラグＦｓｂがＴＲＵＥであるかを判断する。
【０１９６】
ステップＳ２０３、Ｓ２０４：送信バッファ量大フラグＦｓｂがＴＲＵＥである場合は、現在のキャプチャバッファ量Ｑｃがキャプチャバッファ量比較基準Ｑｃｃｍｐより大きいかどうかを判定する（Ｓ２０３）。つまり、キャプチャバッファ量比較基準Ｑｃｃｍｐは初回を除いては前回のキャプチャバッファ量Ｑｃであり、現在のキャプチャバッファ量Ｑｃが前回よりも多くなっているかどうかを判定する。前回よりも多い場合は、キャプチャ制御部２９はキャプチャスピードを下げるように調整する（Ｓ２０４）。そうでない場合はステップＳ２１４に進む。
【０１９７】
つまり、送信バッファ量が多いことを示す送信バッファ量大フラグＦｓｂが立っており、かつ現在のキャプチャバッファ量Ｑｃがキャプチャバッファ量Ｑｃｃｍｐよりも大きいため、キャプチャバッファ１７へのデータの書込量を少なく調整する必要ある。よって、アナログデータをディジタルデータに変換するキャプチャスピードを小さくして、キャプチャバッファ量を減らす。
【０１９８】
キャプチャスピードを下げる方法としては、例えばキャプチャクロックの間隔を大きく調整する、サンプリング周波数を小さくする、間引き・補完部２１でのデータの補完量を大きく設定するなどの方法が挙げられる。
ステップＳ２０５：次に、送信バッファ量大フラグＦｓｂがＦＡＬＳＥである場合は、キャプチャ制御部２９は、送信バッファ量小フラグＦｓｓがＴＲＵＥであるかどうかを判断する。
【０１９９】
ステップＳ２０６、Ｓ２０７：送信バッファ量小フラグＦｓｓがＴＲＵＥである場合は、キャプチャ制御部２９は、現在のキャプチャバッファ量Ｑｃがキャプチャバッファ量比較基準Ｑｃｃｍｐより小さいかどうかを判定する（Ｓ２０６）。つまり、現在のキャプチャバッファ量Ｑｃが前回よりも減っているかどうかを判定する。前回よりも減っている場合は、キャプチャ制御部２９はキャプチャスピードを上げるように調整する（Ｓ２０７）。そうでない場合はステップＳ２１４に進む。
【０２００】
つまり、送信バッファ量が少ないことを示す送信バッファ量小フラグＦｓｓが立っており、かつ現在のキャプチャバッファ量Ｑｃがキャプチャバッファ量Ｑｃｃｍｐよりも小さいため、キャプチャバッファ１７へのデータの書込量を多く調整する。よって、キャプチャスピードを大きくしてキャプチャバッファ量を増やす。
キャプチャスピードを上げる方法としては、例えばキャプチャクロックの間隔を小さく調整する、サンプリング周波数を大きくする、間引き・補完部４９での間引き量を大きく設定するなどの方法が挙げられる。
【０２０１】
ステップＳ２０８：送信バッファ量大フラグＦｓｂ、送信バッファ量小フラグＦｓｓのいずれもがＴＲＵＥでない場合において、キャプチャ制御部２９は現在のキャプチャバッファ量Ｑｃが最も好ましい基準量Ｑｃｓｔｄより大きいかどうかを判定する。大きい場合はステップＳ２０９に進み、そうでない場合はステップＳ２１１に進む。
ステップＳ２０９、Ｓ２１０：さらに、キャプチャ制御部２９は、現在のキャプチャバッファ量Ｑｃがキャプチャバッファ量比較基準Ｑｃｃｍｐより大きいかどうかを判定し（Ｓ２０９）、前回よりも大きい場合はキャプチャスピードを下げるように調整する（Ｓ２１０）。そうでない場合はテップＳ２１４に進む。
【０２０２】
つまり、送信バッファ量が適量である場合において、現在のキャプチャバッファ量Ｑｃがキャプチャバッファ量比較基準Ｑｃｃｍｐよりも大きいのでより、キャプチャバッファ１７への書き込みのスピードを小さくする。
ステップＳ２１１：キャプチャ制御部２９は現在のキャプチャバッファ量Ｑｃが最も好ましい基準量Ｑｃｓｔｄより小さいかどうかを判定する。小さい場合はステップＳ２１２に進み、そうでない場合はステップＳ２１４に進む。
【０２０３】
ステップＳ２１２、Ｓ２１３：キャプチャ制御部２９は、現在のキャプチャバッファ量Ｑｃがキャプチャバッファ量比較基準Ｑｃｃｍｐより小さいかどうかを判定する（Ｓ２１２）。小さい場合は、キャプチャ制御部２９はキャプチャスピードを上げるように調整する（Ｓ２１３）。そうでない場合テップＳ２１４に進む。
つまり、送信バッファ量が適量である場合において、現在のキャプチャバッファ量Ｑｃがキャプチャバッファ量比較基準Ｑｃｃｍｐよりも小さいのでより、キャプチャバッファ１７への書き込みのスピードを大きくする。
【０２０４】
ステップＳ２１４：キャプチャスピードの調整が終了すると、第２読出クロックのカウントＮを０に戻して再度、第２読出クロックのカウントを再度開始する。
（ｇ）送信パケット数算出処理
図２１は、送信機能部１が行う送信パケット数算出処理の流れの一例を示すフローチャートである。
【０２０５】
ステップＳ２２１：送信バッファ読出制御部３７は、送信バッファ量Ｑｓが送信パケットの１個分のデータサイズＱｐａｃより小さいかどうかを判断する。
ステップＳ２２２、Ｓ２２３：送信バッファ量Ｑｓが送信パケットの１個分のデータサイズＱｐａｃが小さい場合は、送信バッファ読出制御部３７は、送信パケット調整数Ｎｐａｃを“＋１”することで、次回の処理の際に用いる送信パケット調整数Ｎｐａｃを大きくする（Ｓ２２２）。そして、送信バッファ読出制御部３７は、今の送信パケット数Ｍｓｅｎｄを０と決定し、通常の送信パケット数１よりも小さくする（Ｓ２２３）。送信部２７は、送信パケット数Ｍｓｅｎｄ＝０に基づいて、パケットの送信を行わない。つまり、送信バッファ量が１パケット分に満たないため、今回の送信ではパケットの送信を行わず、次の送信の時に１パケット余分に送信するようにする。ここで、送信パケット調整数Ｎｐａｃは、送信クロックの割り込み毎に前述のステップＳ２２２、後述のステップＳ２２６、Ｓ２３０により調整される。さらに、送信パケット調整数Ｎｐａｃは、読出量調整間隔Ｔｓａ毎に、前述の図１６に示される送信バッファの読出量調整フラグ設定処理などにおいても調整される。
【０２０６】
ステップＳ２２４：送信バッファ量ＱｓがデータサイズＱｐａｃ以上である場合は、送信パケット調整数Ｎｐａｃが０より大きいかどうかを判断する。送信パケット調整数Ｎｐａｃが０より大きい場合はステップＳ２２５に進み、０以下の場合はステップＳ２２９に進む。
ステップＳ２２５〜２２７：次に、送信バッファ読出制御部３７は、送信バッファ量ＱｓがＱｐａｃの２倍以上であるかどうかを判断する（Ｓ２２５）。そして、送信バッファ量ＱｓがＱｐａｃの２倍以上である場合は、送信パケット調整数Ｎｐａｃを“−１”することで、次の送信パケット調整数Ｎｐａｃを小さくする（Ｓ２２６）。そして、送信バッファ読出制御部３７は、今の送信パケット数Ｍｓｅｎｄを２と決定し、通常の送信パケット数より大きくする（Ｓ２２７）。送信部２７は、送信パケット数Ｍｓｅｎｄ＝２に基づいてパケットの送信を行う。つまり、送信パケット調整数Ｎｐａｃが０より大きく、かつ送信バッファ量が２パケット分以上あるため、今回の送信では送信パケット数を多くし、次回以降の送信時は送信時の状況及び送信パケット調整数Ｎｐａｃに応じてパケットを送信するようにする。
【０２０７】
ステップＳ２２８：送信バッファ量ＱｓがＱｐａｃ以上であるがＱｐａｃの２倍に満たない場合は、送信バッファ読出制御部３７は、今の送信パケット数Ｍｓｅｎｄを１と決定する。
ステップＳ２２９：送信バッファ読出制御部３７は、送信パケット調整数Ｎｐａｃが０以下である場合は、Ｎｐａｃが０より小さいかどうかを判断する。そして、送信パケット調整数Ｎｐａｃが０より小さい場合はステップＳ２３０に進み、送信パケット調整数Ｎｐａｃが０である場合はステップＳ２３２に進む。
【０２０８】
ステップＳ２３０、Ｓ２３１：送信バッファ量ＱｓがデータサイズＱｐａｃより小さい場合は、送信バッファ読出制御部３７は、送信パケット調整数Ｎｐａｃを“＋１”して（Ｓ２３０）今の送信パケット数Ｍｓｅｎｄを０と決定する（Ｓ２３１）。つまり、送信パケット調整数Ｎｐａｃが０以下であることに応じて、今回の送信ではパケットの送信を行わず、次回以降の送信時はその送信時の状況及び送信パケット調整数Ｎｐａｃに応じてパケットを送信するようにする。
【０２０９】
ステップＳ２３２：送信パケット調整数Ｎｐａｃが０であるため、通常の送信パケット数“１”のまま送信パケット数の増減を行わず、送信パケット数Ｍｓｅｎｄ＝１と決定する。
（４）作用効果
受信側処理では、自身の基準クロックと相手方の基準クロックとのずれ時間Δｔがなくなるように受信バッファからの読出量を調整する。このような処理により、受信処理における相手方の通信装置との基準クロックのずれをなくすことができる。また、受信バッファからの読出量の調整により、再生バッファには相手方の通信装置の基準クロックに基づいてディジタルデータが書き込まれる。この再生バッファを所定量に調整することにより、再生バッファから読み出されていくデータ量を調整する。これにより、再生スピードを相手方の基準クロックに対応するように調整することができる。
【０２１０】
一方、送信側処理では、送信バッファから送信する送信パケット数をずれ時間Δｔがなくなるように調整し、またキャプチャバッファから読み出され送信バッファに書き込まれるデータ量をずれ時間Δｔがなくなるように調整する。これにより、送信処理及びキャプチャバッファからの読み出し処理における、相手方の通信装置との基準クロックのずれをなくすことができる。ここで、キャプチャバッファ量を所定量にするように調整することで、キャプチャバッファへのデータの蓄積を制御する。これにより、キャプチャスピードを相手方の基準クロックに対応するように調整することができる。
【０２１１】
以上のような処理により、受信側処理及び送信側処理をともに相手方の通信装置の基準クロックに合わせることができ、双方向通信におけるリアルタイム通信の品質を高めることができる。
また、上述のように、受信側処理の第１読出クロック、送信側処理の送信クロック及び第２読出クロックが同一の基準クロックに基づいて形成されている。よって、自分の基準クロックと相手方の通信装置の基準クロックとのずれ時間Δｔが分かれば、受信機能部と送信機能部とが別個独立してずれ時間Δｔの調整が可能である。つまり、受信側処理では、受信バッファからの読出処理においてずれ時間Δｔを補正する処理を行う。これにより、相手方の基準クロックに適合するように再生バッファにデータが格納されていき、そのときの再生バッファ量に応じて再生スピードを調整する。送信側処理では、送信バッファからの送信処理及びキャプチャバッファからの読出処理においてずれ時間Δｔを補正する処理を行う。これにより、相手方の基準クロックに適合するようにパケットが送信されるとともにキャプチャバッファからデータが読み出されていき、そのときのキャプチャバッファ量に応じてキャプチャスピードを調整する。このような方法によれば、再生クロックとキャプチャクロックとが異なるような例えばノートパソコンなどの通信装置においても、受信側処理及び送信側処理をともに相手方の通信装置の基準クロックに合わせることができ、多様な再生環境やキャプチャ環境においても双方向通信の品質を高めることができる。
【０２１２】
また、双方向通信において一方の通信装置が受信側処理及び送信側処理をともに調整するため、相手方がどのような通信装置であっても双方向通信を安定に行うことができる。例えば、相手方の通信装置がクロック調整が不可能な端末や、他の通信装置の基準クロックとなるような装置であるためにクロック調整を行いたくない端末などの場合であっても、一方の通信装置により安定に双方向通信が可能である。具体的に、相手方の通信装置が自分の基準クロックでパケットを送信すれば、一方の通信装置が相手方の基準クロックとのずれを修正して、修正後の基準クロックにより相手方にパケットを送信する。そのため、相手方の通信装置は、自分の基準クロックに適合した間隔でパケットを受信することができるようになる。よって、相手方の通信装置は、基準クロックのずれを調整するなどの処理を行う必要がなくなる。
【０２１３】
さらに、パケットの受信間隔は、一方の通信装置側で取得した受信時刻に基づいて算出される。よって、相手方の通信装置から一方の通信装置に、パケットそれぞれの送信時刻を送信する必要がない。そのため、送信するパケットのパケット構成を簡略化し、パケットのデータ量を削減できる。
（５）変形例
図２２は、本発明の第１実施形態例に係る通信装置の別の機能構成図である。図２２に示す通信装置は、上記図４に示す通信装置と同様にパターンＡの場合の通信装置であり、基準クロック自体の調整により制御クロックの調整ができない。
【０２１４】
上記図４の通信装置の機能構成図と異なる点は、上記の図４では、制御クロック発生部８４は基準クロックに基づいて第１読出クロック、第２読出クロック及び送信クロックを生成するのに対し、図２２では制御クロック発生部８４は基準クロックに基づいて第１読出クロック、第２読出クロック、送信クロック、再生クロック及びキャプチャクロックを生成する点である。よって、図２２では再生クロックを生成する再生クロック発生部８６及びキャプチャクロックを生成するキャプチャクロック発生部８５が設けられていない。そのため、再生クロック発生部８６及びキャプチャクロック発生部８５による、ずれ時間Δｔに応じて再生クロック及びキャプチャクロックを発生する処理は無い。その他の構成は上記図４の機能構成と同様であり、処理及び作用効果も同様であるので説明を省略する。
【０２１５】
＜第２実施形態例＞
次に、図３に示すパターンＢの場合を例に挙げて第２実施形態例を説明する。つまり、第２実施形態例に係る通信装置では、基準クロック自体の調整によりいずれの制御クロックの調整も可能である。よって、基準クロック自体の調整により、第１読出クロック、再生クロック、キャプチャクロック、第２読出クロック及び送信クロックにおける相手方の基準クロックとのずれを調整することができる。
【０２１６】
（１）機能構成及び処理
図２３は、本発明の第２実施形態例に係る通信装置の機能構成図である。前述の図４に示される第１実施形態例に係る図４の通信装置の機能構成とは、クロック機能部４のＴｃｌｋ算出部８２、キャプチャクロック発生部８５及び再生クロック発生部８６と、送信機能部１の間引き・補完部２１、キャプチャ制御部２９、キャプチャバッファ量監視部３１、キャプチャバッファ読出制御部３３、送信バッファ量監視部３５及び送信バッファ読出制御部３７と、受信機能部２の間引き・補完部４９、再生制御部６５、再生バッファ量監視部６３、受信バッファ読出制御部６１及び受信バッファ量監視部５９とが設けられていない点で異なる。第１実施形態例と異なる機能構成及び処理を以下に説明する。
【０２１７】
基準クロック発生部８３は、基準クロックを発生して制御クロック発生部８４に出力するとともに、ずれ時間Δｔ算出部８１が算出したずれ時間Δｔに基づいて基準クロックを補正する。これにより、通信装置Ａの基準クロックを相手方の通信装置Ｂの基準クロックに合わせることができる。また、制御クロック発生部８４は、この補正された基準クロックに基づいて第１読出クロック、再生クロック、キャプチャクロック、第２読出クロック及び送信クロックを発生する。よって、これらのクロックにおいて相手方の基準クロックとのずれをなくすことができる。
【０２１８】
ここで、受信バッファ読出部４５は、補正された第１読出クロックに基づいて受信バッファ４３から符号化データを読み出す。読み出された符号化データは、復号化部４７で複号化されて再生バッファ５１に書き込まれる。また、ＤＡＣ５３は、補正された再生クロックに基づいて再生バッファ５１から復号化されたデータを読み出してＤ／Ａ変換する。このように、受信側処理は、ずれ時間Δｔがなくなるように補正された第１読出クロック及び再生クロックに基づいて制御されることで、相手方の通信装置Ｂの基準クロックに合わせて行われる。
【０２１９】
また、ＡＤＣ１５は、補正されたキャプチャクロックに基づいてＡ／Ｄ変換を行ってキャプチャバッファ１７にデータを書き込む。また、キャプチャバッファ読出部１９は、補正された第１読出クロックに基づいてキャプチャバッファ１７からディジタルデータを読み出す。読み出されたディジタルデータは、符号化部２３で符号化されて送信バッファ２５に書き込まれる。送信部２７は、補正された送信クロックに基づいて送信バッファ２５から符号化データを読み出して相手方の通信装置Ｂに送信する。このように、送信側処理は、ずれ時間Δｔがなくなるように補正されたキャプチャクロック、第２読出クロック及び送信クロックに基づいて制御されることで、相手方の通信装置Ｂの基準クロックに合わせて行われる。
【０２２０】
図２３に記載された他の機能構成は、第１実施形態例の図４と同様であるので説明を省略する。
以上のように、第２実施形態例では、基準クロックの調整を行うことで各制御クロックを調整する。よって、調整された各制御クロックに基づいて受信側処理及び送信側処理を制御することで、受信側処理及び送信側処理をともに相手方の通信装置の基準クロックに合わせることができる。その他、前記第１実施形態例と同様の作用効果も有する。
【０２２１】
（２）変形例
受信バッファ４３、再生バッファ５１、キャプチャバッファ１７及び送信バッファ２５でのオーバーフローやアンダーフローを防止するために、各バッファ量を監視して制御する処理部を設けても良い。また、基準クロックにより各制御クロックを調整してもずれ時間Δｔ分の補正をすることができない場合もあるため、第１実施形態例の図４に示す間引き・補完部２１、キャプチャ制御部２９、キャプチャバッファ量監視部３１、キャプチャバッファ読出制御部３３、送信バッファ量監視部３５、送信バッファ読出制御部３７、間引き・補完部４９、再生制御部６５、再生バッファ量監視部６３、受信バッファ読出制御部６１及び受信バッファ量監視部５９をさらに設けても良い。これらの各処理部での処理は、第１実施形態例と同様である。
【０２２２】
＜第３実施形態例＞
次に、図３に示すパターンＣの場合を例に挙げて第３実施形態例を説明する。つまり、第３実施形態例に係る通信装置では、基準クロック自体の調整により第１読出クロック、第２読出クロック及び送信クロックにおいて、相手方の通信装置Ｂの基準クロックとのずれをなくす。そして、再生スピードの調整及びキャプチャスピードの調整により、再生クロック及びキャプチャクロックにおいて相手方の通信装置Ｂの基準クロックとのずれをなくす。
【０２２３】
（１）機能構成及び処理
図２４は、本発明の第２実施形態例に係る通信装置の機能構成図である。前述の図４に示される第１実施形態例に係る図４の通信装置の機能構成とは、クロック機能部４のＴｃｌｋ算出部８２と、送信機能部１のキャプチャバッファ読出制御部３３、送信バッファ量監視部３５及び送信バッファ読出制御部３７と、受信機能部２の受信バッファ読出制御部６１及び受信バッファ量監視部５９とが設けられていない点で異なる。第１実施形態例と異なる機能構成及び処理を以下に説明する。
【０２２４】
基準クロック発生部８３は、基準クロックを発生して制御クロック発生部８４に出力するとともに、ずれ時間Δｔ算出部８１が算出したずれ時間Δｔに基づいて基準クロックを補正する。これにより、通信装置Ａの基準クロックを相手方の通信装置Ｂの基準クロックに合わせることができる。また、制御クロック発生部８４は、この補正された基準クロックに基づいて第１読出クロック、第２読出クロック及び送信クロックを発生する。よって、これらのクロックにおいて相手方の基準クロックとのずれをなくすことができる。
【０２２５】
ここで、受信バッファ読出部４５は、補正された第１読出クロックに基づいて受信バッファ４３から符号化データを読み出す。読み出された符号化データは、復号化部４７で複号化されて再生バッファ５１に書き込まれる。これにより、受信バッファ４３からの読出処理を相手方の通信装置Ｂの基準クロックに合わせることができる。また、再生バッファ量監視部６３は、再生バッファ５１の再生バッファ量を監視しており、再生バッファ量を再生制御部６５に出力する。再生制御部６５は、再生バッファ５１を所定量に調整することで、再生バッファ５１から読み出されていくディジタルデータ量を調整する。これにより、再生スピードを相手方の通信装置Ｂの基準クロックに対応するように調整することができる。再生スピードの調整としては、第１実施形態例と同様に、例えば再生クロックの調整、再生周波数の調整及び受信バッファ４３から読み出したデータの間引き・補完部４９での間引き・補完等が挙げられる。このように、ずれ時間Δｔがなくなるように補正された第１読出クロックにより受信バッファ４３からの読出処理を行うともに、再生バッファ５１を所定量に調整することで、受信側処理を相手方の通信装置Ｂの基準クロックに合わせて行うことができる。
【０２２６】
また、送信側処理については、まず送信部２７は、補正された送信クロックに基づいて送信バッファ２５からデータを読み出して相手方通信装置Ｂにパケットを送信する。キャプチャバッファ読出部１９は、補正された第２読出クロックに基づいてキャプチャバッファ１７からディジタルデータを読み出す。読み出されたディジタルデータは、符号化部２３で符号化されて送信バッファ２５に書き込まれる。これにより、送信処理及びキャプチャバッファ１７からの読出処理を相手方の通信装置Ｂの基準クロックに合わせることができる。さらに、キャプチャバッファ量監視部３１は、キャプチャバッファ１７のキャプチャバッファ量を監視しており、キャプチャバッファ量をキャプチャ制御部２９に出力する。キャプチャ制御部２９は、キャプチャバッファ１７を所定量に調整することで、キャプチャバッファ１７に書き込まれるディジタルデータ量を調整する。これにより、キャプチャスピードを相手方の通信装置Ｂの基準クロックに対応するように調整することができる。キャプチャスピードの調整としては、第１実施形態例と同様に、例えばキャプチャクロックの調整、キャプチャ周波数の調整及びＡＤＣ１５で変換されたディジタルデータの間引き・補完部２１での間引き・補完等が挙げられる。このように、ずれ時間Δｔがなくなるように補正された第２読出クロック及び送信クロックによりキャプチャバッファ１７からの読出処理及び送信処理を行うともに、キャプチャバッファ１７を所定量に調整することで、送信側処理を相手方の通信装置Ｂの基準クロックに合わせて行うことができる。
【０２２７】
図２４に記載された他の機能構成は、第１実施形態例の図４と同様であるので説明を省略する。
第３実施形態例では、以上のような処理により、受信側処理及び送信側処理をともに相手方の通信装置の基準クロックに合わせることができる。その他、前記第１実施形態例と同様の作用効果も有する。
【０２２８】
（２）変形例
各バッファでのオーバーフローやアンダーフローを防止するために、各バッファ量を監視して制御する処理部を設けても良い。また、基準クロックにより各制御クロックを調整してもずれ時間Δｔ分の補正をすることができない場合もあるため、第１実施形態例の図４に示すキャプチャバッファ読出制御部３３、送信バッファ量監視部３５、送信バッファ読出制御部３７、受信バッファ読出制御部６１及び受信バッファ量監視部５９をさらに設けても良い。これらの各処理部での処理は、第１実施形態例と同様である。
【０２２９】
＜その他の実施形態例＞
前述した送受信方法をコンピュータに実行させるコンピュータプログラム及びそのプログラムを記録したコンピュータ読み取り可能な記録媒体は、本発明の範囲に含まれる。ここで、コンピュータ読み取り可能な記録媒体としては、例えば、フレキシブルディスク、ハードディスク、ＣＤ−ＲＯＭ、ＭＯ、ＤＶＤ、ＤＶＤ−ＲＯＭ、ＤＶＤ−ＲＡＭ、ＢＤ（Ｂｌｕｅ−ｒａｙ  Ｄｉｓｃ）、半導体メモリを挙げることができる。
【０２３０】
前記コンピュータプログラムは、前記記録媒体に記録されたものに限られず、電気通信回線、無線又は有線通信回線、インターネットを代表とするネットワーク６３等を経由して伝送されるものであってもよい。
【産業上の利用可能性】
【０２３１】
受信・再生処理及びキャプチャ・送信処理の両方を含む双方向通信において、相手方の通信装置との安定な通信を行うような場合に好適である。
【図面の簡単な説明】
【０２３２】
【図１】本発明の通信装置内での処理を制御するクロックを説明するための説明図。
【図２】通信装置間の基準クロックのずれ時間Δｔの算出方法を説明するための説明図。
【図３】ずれ時間Δｔの調整方法の場合分けを示す説明図。
【図４】本発明の第１実施形態例に係る通信装置の機能構成図。
【図５】ずれ時間Δｔの算出方法を示す説明図。
【図６】Ｔｃｌｋの算出方法を示す説明図。
【図７】送受信されるパケットの構成例。
【図８】受信機能部２が行う受信処理の流れの一例を示すフローチャート。
【図９】受信機能部２及びクロック機能部４が行うＴｃｌｋ算出処理及び読出量調整間隔Ｔｐａの算出処理の流れの一例を示すフローチャート。
【図１０】受信バッファの読出量フラグ設定処理の流れの一例を示すフローチャート。
【図１１】受信機能部２が行う再生処理の流れの一例を示すフローチャート。
【図１２】受信機能部２が行う受信バッファ４３からの符号化データの読出量算出処理の流れの一例を示すフローチャート。
【図１３】再生バッファ逆転対策中を示す説明図。
【図１４】受信機能部２が行う再生スピード調整処理の流れの一例を示すフローチャート。
【図１５】読出量調整間隔Ｔｓａの算出処理の流れの一例を示すフローチャート。
【図１６】送信バッファの読出量フラグ設定処理の流れの一例を示すフローチャート。
【図１７】送信機能部１が行う送信処理の流れの一例を示すフローチャート。
【図１８】送信機能部１が行う送信バッファ量判断処理の流れの一例を示すフローチャート。
【図１９】送信機能部１が行うキャプチャバッファ１７からのディジタルデータの読出量算出処理の流れの一例を示すフローチャート。
【図２０】送信機能部１が行うキャプチャスピード調整処理の流れの一例を示すフローチャート。
【図２１】送信機能部１が行う送信パケット数算出処理の流れの一例を示すフローチャート。
【図２２】本発明の第１実施形態例に係る通信装置の別の機能構成図。
【図２３】本発明の第２実施形態例に係る通信装置の機能構成図。
【図２４】本発明の第２実施形態例に係る通信装置の機能構成図。
【符号の説明】
【０２３３】
１：送信機能部
２：受信機能部
４：クロック機能部
１３：増幅器
１５：ＡＤＣ
１７：キャプチャバッファ
１９：キャプチャバッファ読出部
２１：間引き・補完部
２５：送信バッファ
２７：送信部
２９：キャプチャ制御部
３１：キャプチャバッファ量監視部
３３：キャプチャバッファ読出制御部
３５：送信バッファ量監視部
３７：送信バッファ読出制御部
４１：受信部
４３：受信バッファ
４５：受信バッファ読出部
４９：間引き・補完部
５１：再生バッファ
５３：ＤＡＣ
５９：受信バッファ量監視部
６１：受信バッファ読出制御部
６３：再生バッファ量監視部
６５：再生制御部
６７：受信間隔取得部
８１：ずれ時間Δｔ算出部
８２：Ｔｃｌｋ算出部
８３：基準クロック発生部
８４：制御クロック発生部
８５：キャプチャクロック発生部
８６：再生クロック発生部
【図１】
0004597826.tif 000002
【図２】
0004597826.tif 000003
【図３】
0004597826.tif 000004
【図４】
0004597826.tif 000005
【図５】
0004597826.tif 000006
【図６】
0004597826.tif 000007
【図７】
0004597826.tif 000008
【図８】
0004597826.tif 000009
【図９】
0004597826.tif 000010
【図１０】
0004597826.tif 000011
【図１１】
0004597826.tif 000012
【図１２】
0004597826.tif 000013
【図１３】
0004597826.tif 000014
【図１４】
0004597826.tif 000015
【図１５】
0004597826.tif 000016
【図１６】
0004597826.tif 000017
【図１７】
0004597826.tif 000018
【図１８】
0004597826.tif 000019
【図１９】
0004597826.tif 000020
【図２０】
0004597826.tif 000021
【図２１】
0004597826.tif 000022
【図２２】
0004597826.tif 000023
【図２３】
0004597826.tif 000024
【図２４】
0004597826.tif 000025