以下、本発明の実施形態について図面を参照して説明する。図1は、本発明によるパケット送受信方法を適用した通信装置の構成例を示すブロック図である。
図1に示すように、通信装置1は、送信部11と、送信バッファ部12と、符号化部13と、受信部14と、受信バッファ部15と、復号化部16と、制御部17とを備えている。通信装置1は、具体的には、プログラムに従って動作するパーソナルコンピュータ等の情報処理装置によって実現される。なお、通信装置1は、例えば、ルータ装置や通信ボード等によって実現されていてもよい。
送信部11は、インターネット等の通信網2と、送信バッファ部12とに接続されている。送信部11は、送信バッファ部12より出力されたデータからRTP等のパケットを生成し、通信網2を介して外部に送信する機能を備えている。送信部11は、具体的には、プログラムに従って動作する情報処理装置のCPUおよびネットワークインタフェース部によって実現される。
送信バッファ部12は、送信部11と、符号化部13と、制御部17とに接続されている。送信バッファ部12は、符号化部13から出力されたデータを一時的に記憶する機能を備えている。また、送信バッファ部12は、送信部11にデータを出力する機能を備えている。また、送信バッファ部12は、制御部17から出力された制御情報に従って、記憶しているデータの削除や追加、その他の処理をする機能を備えている。送信バッファ部12の詳細については後述する。
符号化部13は、送信バッファ部12と接続されている。符号化部13は、音声等の信号を、G.711等の符号化方式に従って符号化し、符号化データを送信バッファ部12に出力する機能を備えている。符号化部13は、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現されている。
受信部14は、インターネット等の通信網2と、受信バッファ部15とに接続されている。受信部14は、通信網2を介して外部からRTP等のパケットを受信し、パケットの中からデータを抽出して、受信バッファ部15に出力する機能を備えている。受信部14は、具体的には、プログラムに従って動作する情報処理装置のCPUおよびネットワークインタフェース部によって実現される。
受信バッファ部15は、受信部14と、符号化部16と、制御部17とに接続されている。受信バッファ部15は、受信部14から出力されたデータを一時的に記憶する機能を備えている。また、受信バッファ部15は、復号化部16にデータを出力する機能を備えている。また、受信バッファ部15は、制御部17にバッファのデータ蓄積量を示す情報を出力する機能を備えている。また、受信バッファ部15は、制御部17から出力された制御情報に従って、記憶しているデータの削除や追加、その他の処理をする機能を備えている。受信バッファ部15の詳細については後述する。
復号化部16は、受信バッファ部15と接続されている。復号化部16は、送信バッファ15から出力された符号化データを、G.711等の符号化方式に従って復号化し、音声等の信号を出力する機能を備えている。復号化部16は、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現されている。
制御部17は、送信バッファ部12と、受信バッファ部15とに接続されている。制御部17は、符号化部13から出力されるデータの送信バッファ部12への書き込みの制御や、送信バッファ部12から送信部11へのデータ送信の制御を行う機能を備えている。また、制御部17は、受信部14から出力されるデータの受信バッファ部15への書き込みの制御や、受信バッファ部15から復号化部16へのデータ送信の制御を行う機能を備えている。制御部17は、具体的には、プログラムに従って動作する情報処理装置のCPUによって実現される。
次に、送信バッファ部12の構成について説明する。図2は、送信バッファ部12の構成の一例を詳細に示す説明図である。本実施形態では、パケット通信網を介した音声通信として、VoIPを用いる例について説明する。
また、本実施形態では、VoIPの符号化方式として一般的なG.711のμ−lawと、RTPパケットサイズとして一般的な20msecとを一例として用い、これに従って送信バッファ部12の構成を決定する。
G.711のμ−lawでは、サンプリング周波数が8kHzで、1サンプリングの符号化データが8ビット(1バイト)である。また、RTPパケットサイズが20msecであるので、1つのRTPパケット当たりのデータ量は160バイトとなる。
送信バッファ部12は、送信メモリ121を備えている。また、送信メモリ121の容量はRTPパケット2個分とする。よって、送信メモリ121の容量は320バイトとなる。また、本実施形態では、送信メモリ121を1バイト単位で区切って、そのアドレスをTA1〜TA320とする。
次に、受信バッファ部15の構成について説明する。図3は、受信バッファ部15の構成の一例を詳細に示す説明図である。
受信バッファ部15は、受信メモリ151を備えている。また、受信メモリ151の容量は、RTPパケットn個分とする。よって、受信メモリ151の容量は、160×nバイトとなる。
本実施形態では、受信メモリ151を1バイト単位で区切って、そのアドレスをRA1〜RAEとする。また、RAEは160×nの値を保持する。また、nより小さい整数mを定め、音声再生開始アドレスRAS=160×mとする。
次に、パケット送受信装置の動作について説明する。パケット送受信装置は、上記の通信装置1と同様の構成であるものとする。
送信バッファ部12および受信バッファ部15は、先に受信して記憶したデータから順に先に読み出して送信するため、FIFO(First in First out)方式に従って動作する。ここでは、FIFO方式の実現方法として広く知られているリングバッファ(サーキュラーバッファ、または環状バッファ)を例として、送信バッファ部12および受信バッファ部15の動作を説明する。
また、本実施形態では、送信メモリ121をリングバッファとして用いるため、制御部17は、送信データ書き込みアドレスTWAと、送信データ読み出しアドレスTRAとを記憶する記憶手段を備えている。
ここで、送信データ書き込みアドレスTWAは、TA1〜TA320の値を持つ。また、送信データ読み出しアドレスTRAは、TA1〜TA320の値を持つ。
送信データ書き込みアドレスTWAの初期値はTA1とする。また、送信データ読み出しアドレスTRAの初期値はTA1とする。
また、本実施形態では、制御部17は、送信データ読み出しカウンタTRCと、送信データ書き込みカウンタTWCと、パケット送信開始フラグTSFとを記憶する記憶手段を備えている。
送信データ読み出しカウンタTRCは、0〜160の値を持つ。また、送信データ書き込みカウンタTWCは、0〜160の値を持つ。また、パケット送信開始フラグTSFは、0〜2の値を持つ。なお、送信データ読み出しカウンタTRC、送信データ書き込みカウンタTWCおよびパケット送信開始フラグTSFの初期値は、いずれも0とする。
また、本実施形態では、制御部17は、送信バッファ増加フラグTIFと、送信バッファ減少フラグTDFとを記憶する記憶手段を備えている。
送信バッファ増加フラグTIFは、0または1の値を持つ。また、送信バッファ減少フラグTDFは、0または1の値を持つ。また、送信バッファ増加フラグTIFおよび送信バッファ減少フラグTDFの初期値は、いずれも0とする。
また、本実施形態では、受信メモリ151をリングバッファとして用いる。そのため、制御部17は、受信データ書き込みアドレスRWAと、受信データ読み出しアドレスRRAと、復号化開始フラグDSFと、受信バッファエンプティフラグREFとを記憶する記憶手段を備えている。
受信データ書き込みアドレスRWAは、RA1〜RAEの値を持つ。また、受信データ読み出しアドレスRRAは、RA1〜RAEの値を持つ。また、復号化開始フラグDSFは、0または1の値を持つ。また、受信バッファエンプティフラグREFは、0または1の値を持つ。
受信データ書き込みアドレスRWAおよび受信データ読み出しアドレスRRAの初期値は、いずれもRA1とする。また、復号化開始フラグDSFおよび受信バッファエンプティフラグREFの初期値は、いずれも0とする。
また、本実施形態では、制御部17は、受信データ書き込みカウンタRWCを記憶する記憶手段を備えている。
受信データ書き込みカウンタRWCは、0〜160の値を持つ。受信データ書き込みカウンタRWCの初期値は0とする。
また、本実施形態では、制御部17は標本化周波数の変換を開始する上方の閾値である上方標本化周波数変換開始閾値CTOと標本化周波数の変換を開始する下方の閾値である下方標本化周波数変換開始閾値CTUとを記憶手段に記憶している。例えば、予め統計値から求めた最適値を上方標本化周波数変換開始閾値CTOまたは下方標本化周波数変換開始閾値CTUとして設定しておく。
次に、符号化動作について説明する。図4は、符号化動作の動作例を示すフローチャートである。
VoIP等に従って音声データの通信を開始すると、符号化部13は、入力された音声を8kHzの標本化周波数で標本化し、125μsec毎に符号化データを生成する。
次いで、制御部17は、送信データ書き込みカウンタTWCを0に設定し(ステップS101)、送信側標本化周波数変換動作を行う(ステップS102)。
次いで、制御部17は、符号化部13から符号化データを読み出し、読み出した符号化データを送信メモリ121の送信データ書き込みアドレスTWAで特定される領域に書き込む(ステップS103)。
次いで、制御部17は、送信データ書き込みアドレスTWAを1増加させるとともに、送信データ書き込みカウンタTWCを1増加させる(ステップS104)。
次いで、制御部17は、送信データ書き込みアドレスTWAがTA320+1であるか否かを判定する(ステップS105)。そして、送信データ書き込みアドレスTWAがTA320+1であると判定すると、制御部17は、送信データ書き込みアドレスTWAをTA1に設定する(ステップS106)。
次いで、制御部17は、送信データ書き込みカウンタTWCが160であるか否かを判定する(ステップS107)。そして、送信データ書き込みカウンタTWCが160であると判定すると、制御部17は、パケット送信開始フラグ操作を行う(ステップS108)。
次いで、制御部17は、通信が終了したか否かを判定し(ステップS109)、通信が終了したと判定すると、処理を終了する。一方、通信が終了していないと判定すると、制御部17は、処理をステップS101に移行し、ステップS101以降の処理を実行する。
次に、パケット送信動作について説明する。図5は、パケット送信動作の一例を示すフローチャートである。
最初に、制御部17は、パケット送信開始フラグTSFが1以上であるか否かを判定する(ステップS201)。そして、パケット送信開始フラグTSFが1以上であると判定すると、制御部17は、送信データ読み出しカウンタTRCを0に設定する(ステップS202)。一方、パケット送信開始フラグTSFが1以上でないと判定すると、制御部17は、処理をステップS209に移行する。
次いで、制御部17は、送信メモリ121から、送信データ読み出しアドレスTRAによって特定されるデータを読み出して、送信部11に出力する(ステップS203)。
次いで、制御部17は、送信データ読み出しアドレスTRAを1増加させるとともに、送信データ読み出しカウンタTRCを1増加させる(ステップS204)。
次いで、制御部17は、送信データ読み出しアドレスTRAがTA320+1であるか否かを判定する(ステップS205)。送信データ読み出しアドレスTRAがTA320+1であると判定すると、制御部17は、送信データ読み出しアドレスTRAをTA1に設定する(ステップS206)。
次いで、制御部17は、送信データ読み出しカウンタTRCが160になるまで、上記のステップS203以降の処理を繰り返す(ステップS207)。そして、送信データ読み出しカウンタTRCが160になると、制御部17は、パケット送信開始フラグTSFを1減少させる(ステップS208)。
次いで、制御部17は、RTP1パケット分の160バイトの符号化データを送信部11に出力する。そして、送信部11は、出力されたRTP1パケット分の160バイトの符号化データにヘッダ情報等のデータを追加してRTPパケットを構成し、通信網2を介して外部に送信する。
次いで、制御部17は、通信が終了したか否かを判定し(ステップS209)、通信が終了したと判定すると、処理を終了する。一方、通信が終了していないと判定すると、制御部17は、処理をステップS201に移行し、ステップS201以降の処理を実行する。
次に、パケット受信動作について説明する。図6は、パケット受信動作の一例を示すフローチャートである。
通信開始すると、受信部14は、通信網2を介して、外部からRTPパケットを受信する(ステップS301)。そして、受信部14は、ヘッダ情報等のデータを削除して符号化データを生成し、制御部17にパケット受信信号を出力する。
次いで、制御部17は、受信部14からパケット受信信号を受信すると、受信データ書き込みカウンタRWCを0に設定し(ステップS302)、受信側標本化周波数変換動作を行う(ステップS303)。
次いで、制御部17は、受信部14から符号化データを1バイト読み出し、受信メモリ151の受信データ書き込みアドレスRWAによって特定される領域に符号化データを書き込む(ステップS304)。
次いで、制御部17は、受信データ書き込みアドレスRWAを1増加させるとともに、受信データ書き込みカウンタRWCを1増加させる(ステップS305)。
次いで、制御部17は、復号化開始フラグDSFが0か否かを判定する(ステップS306)。
ステップS306において、復号化開始フラグDSFが0であると判定すると、制御部17は、受信データ書き込みアドレスRWAが音声再生開始アドレスRASに一致するか否かを判定する(ステップS307)。そして、一致すると判定すると、制御部17は、復号化開始フラグDSFを1に設定する(ステップS308)。
次いで、制御部17は、受信データ書き込みアドレスRWAがRAE+1であるか否かを判定する(ステップS309)。そして、受信データ書き込みアドレスRWAがRAE+1であると判定すると、制御部17は、受信データ書き込みアドレスRWAをRA1に設定する(ステップS310)。
次いで、制御部17は、TWAとTRAとが一致するか否かを判定する(ステップS311)。そして、TWAとTRAとが一致すると判定すると、制御部17は、受信バッファエンプティフラグREFを0に設定し(ステップS312)、バッファ異常処理を行う(ステップS313)。
次いで、制御部17は、受信データ書き込みカウンタRWCが160になるまで、上記のステップS304以降の処理を繰り返す(ステップS314)。
受信データ書き込みカウンタRWCが160になると、制御部17は、通信が終了したか否かを判定し(ステップS315)、通信が終了したと判定すると、処理を終了する。一方、通信が終了していないと判定すると、制御部17は、処理をステップS301に移行し、ステップS301以降の処理を実行する。
次に、音声復号化動作について説明する。図7は、音声復号化動作の一例を示すフローチャートである。
制御部17は、復号化開始フラグDSFが1であるか否かを判定し(ステップS401)、1であると判定すると、125μsec毎に、受信バッファ部15から、受信データ読み出しアドレスRRAのデータを1バイト読み出す(ステップS402)。
次いで、制御部17は、復号化部16に符号化データを出力するともに、受信データ読み出しアドレスRRAを1増加させる(ステップS403)。次いで、復号化部16は、受信した符号化データを復号し出力する。
次いで、制御部17は、受信データ読み出しアドレスRRAがRAE+1であるか否かを判定する(ステップS404)。そして、受信データ読み出しアドレスRRAがRAE+1であると判定すると、制御部17は、受信データ読み出しアドレスRRAをRA1に設定する(ステップS405)。
次いで、制御部17は、受信データ読み出しアドレスRWAと受信データ読み出しアドレスRRAとが一致するか否かを判定する(ステップS406)。そして、一致すると判定すると、制御部17は、受信バッファエンプティフラグREFを1と設定し(ステップS407)、バッファ異常処理を行う(ステップS408)。
次いで、制御部17は、通信が終了したか否かを判定し(ステップS409)、通信が終了したと判定すると、処理を終了する。一方、通信が終了していないと判定すると、制御部17は、処理をステップS401に移行し、ステップS401以降の処理を実行する。
次に、受信側での標本化周波数変換動作について説明する。図8は、受信側標本化周波数変換動作の一例を示すフローチャートである。
制御部17は、受信データ書き込みアドレスRWAと受信データ読み出しアドレスRRAとの差の絶対値が上方標本化周波数変換開始閾値CTOを上回るか否かを判定する(ステップS501)。そして、上回ると判定すると、制御部17は、送信バッファ増加フラグTIFを1と設定し(ステップS502)、受信バッファ減少処理を行う(ステップS503)。
次いで、制御部17は、受信データ書き込みアドレスRWAと受信データ読み出しアドレスRRAとの差の絶対値が下方標本化周波数変換開始閾値CTUを下回るか否かを判定する(ステップS504)。そして、下回ると判定すると、制御部17は、送信バッファ減少フラグTDFを1と設定し(ステップS505)、受信バッファ増加処理を行う(ステップS506)。
次に、送信側での標本化周波数変換動作について説明する。図9は、送信側標本化周波数変換動作の一例を示すフローチャートである。
制御部17は、送信バッファ増加フラグTIFが1であるか否かを判定する(ステップS601)。そして、送信バッファ増加フラグTIFが1であると判定すると、制御部17は、送信バッファ増加処理を行う(ステップS602)。
次いで、制御部17は、送信バッファ減少フラグTDFが1であるか否かを判定する(ステップS603)。そして、送信バッファ減少フラグTDFが1であると判定すると、制御部17は、送信バッファ減少処理を行う(ステップS604)。
次に、受信バッファ減少処理について説明する。図10は、受信バッファ減少処理の一例を示すフローチャートである。
制御部17は、受信データ書き込みアドレスRWAと受信データ読み出しアドレスRRAとが一致するか否かを判定する(ステップS701)。そして、一致すると判定すると、制御部17は、受信データ書き込みアドレスRWAを1減らす(ステップS702)。
次いで、制御部17は、受信データ書き込みアドレスRWAがRA1−1であるか否かを判定する(ステップS703)。そして、受信データ書き込みアドレスRWAがRA1−1であると判定すると、制御部17は、受信データ書き込みアドレスRWAをRAEに設定する。
次に、受信バッファ増加処理について説明する。図11は、受信バッファ増加処理の一例を示すフローチャートである。
制御部17は、受信部14から符号化データの先頭データを1バイト読み出す(ステップS801)。
次いで、制御部17は、受信データ書き込みアドレスRWAがRA1であるか否かを判定する(ステップS802)。そして、RA1であると判定すると、制御部17は、受信バッファ部15のRAEのアドレスのデータを1バイト読み出す(ステップS803)。一方、RA1でないと判定すると、制御部17は、受信バッファ部15のRWA−1のアドレスのデータを1バイト読み出す(ステップS804)。
次いで、制御部17は、受信バッファ部15から読み出したデータと、先に読み出した符号化データの先頭データとの平均値を求め、受信バッファ部15のRWAのアドレスに書き込む(ステップS805)。
次いで、制御部17は、受信データ書き込みアドレスRWAを1増加させ(ステップS806)、受信データ書き込みアドレスRWAがRAE+1であるか否かを判定する(ステップS807)。そして、RAE+1であると判定すると、制御部17は、受信データ書き込みアドレスRWAをRA1に設定する(ステップS808)。
次に、送信バッファ減少処理について説明する。図12は、送信バッファ減少処理の一例を示すフローチャートである。
制御部17は、送信データ書き込みアドレスTWAと送信データ読み出しアドレスTRAとが等しいか否かを判定する(ステップS901)。そして、等しくないと判定した場合には、制御部17は、送信データ書き込みアドレスTWAを1減らす(ステップS902)。
次いで、制御部17は、送信データ書き込みアドレスTWAがTA1−1であるか否かを判定する(ステップS903)。そして、TA1−1であると判定すると、制御部17は、送信データ書き込みアドレスTWAをTAEに設定する(ステップS904)。
次に、送信バッファ増加処理について説明する。図13は、送信バッファ増加処理の一例を示すフローチャートである。
制御部17は、符号化部13から符号化データを1バイト読み出す(ステップS1001)。
次いで、制御部17は、送信データ書き込みアドレスTWAがTA1であるか否かを判定する(ステップS1002)。そして、TA1であれば、制御部17は、送信バッファ部12のTAEのアドレスのデータを1バイト読み出す(ステップS1003)。一方、TA1でなければ、制御部17は、送信バッファ部12のTWA−1のアドレスのデータを1バイト読み出す(ステップS1004)。
次いで、制御部17は、送信バッファ部12から読み出したデータと、先に読み出した符号化データとの平均値を求め、送信バッファ部12の送信データ書き込みアドレスTWAのアドレスに書き込む(ステップS1005)。
次いで、制御部17は、送信データ書き込みアドレスTWAを1増加させ(ステップS1006)、送信データ書き込みアドレスTWAがTAE+1であるか否かを判定する(ステップS1007)。そして、TAE+1であると判定すると、制御部17は、送信データ書き込みアドレスTWAをTA1に設定する(ステップS1008)。
次に、パケット送信開始フラグ操作について説明する。図14は、パケット送信開始フラグ操作の一例を示すフローチャートである。
最初に、制御部17は、パケット送信開始フラグTSFを1と設定する(ステップS1101)。
次いで、制御部17は、送信バッファ減少フラグTDFが1であるか否かを判定する(ステップS1102)。そして、TDFが1であると判定すると、制御部17は、送信データ書き込みアドレスTWAと送信データ読み出しアドレスTRAとの差の絶対値が160であるか否かを判定する(ステップS1103)。
ステップS1103において、絶対値が160であると判定すると、制御部17は、パケット送信開始フラグTSFを0に設定する(ステップS1104)。その後、制御部17は、TWAを1減少させ、TWAがTA1より小さくなった場合には、TWAをTA320に設定する(ステップS1105)。その後、制御部17は、送信バッファ減少フラグTDFを0と設定する(ステップS1107)。
一方、ステップS1103において、絶対値が160でないと判定すると、制御部17は、パケット送信開始フラグTSFを1と設定する(ステップS1106)。その後、制御部17は、送信バッファ減少フラグTDFを0と設定する(ステップS1107)。
次いで、制御部17は、送信バッファ増加フラグTIFが1であるか否かを判定する(ステップS1108)。そして、1であると判定すると、制御部17は、送信データ書き込みアドレスTWAと送信データ読み出しアドレスTRAとが一致するか否かを判定する(ステップS1109)。
ステップS1109において、一致すると判定した場合には、制御部17は、パケット送信開始フラグTSFを2に設定し(ステップS1110)、その後、送信バッファ増加フラグTIFを0と設定する(ステップS1112)。
また、一致しないと判定した場合には、制御部17は、パケット送信開始フラグTSFを1に設定し(ステップS1111)、その後、送信バッファ増加フラグTIFを0と設定する(ステップS1112)。
また、制御部17は、送信バッファ減少フラグTDFと送信バッファ増加フラグTIFがともに0であると判定した場合には、パケット送信開始フラグTSFを1に設定する。
次に、バッファ異常処理について説明する。図15は、バッファ異常処理の一例を示すフローチャートである。
受信データ書き込みアドレスRWAと受信データ読み出しアドレスとが一致し、受信バッファエンプティフラグREFが0の場合には、バッファアンダーランが発生したことになる。
制御部17は、受信バッファエンプティフラグREFが0であるか否かを判定する(ステップS1201)。そして、0であると判定すると、制御部17は、受信データ書き込みアドレスRWAに160を加える(ステップS1202)。
次いで、制御部17は、受信データ書き込みアドレスRWAがRAEを超えているか否かを判定する(ステップS1203)。
ステップS1203において、超えていると判定すると、制御部17は、受信データ書き込みアドレスRWAから160×nを減らす(ステップS1204)。そして、制御部17は、RA1〜RWAと(RWA−160+160×n)とに、無音データ等のデータを書き込む(ステップS1205)。
一方、ステップS1203において、超えていないと判定すると、制御部17は、受信バッファRWA−160〜RWAに、無音データ等のデータを書き込む。なお、本発明は、バッファアンダーランが発生したときに、いかなる音声データを挿入するかを限定するものではない。
受信データ書き込みアドレスRWAと受信データ読み出しアドレスとが一致し、受信バッファエンプティフラグREFが1のときは、バッファオーバーフローが発生したことになる。
制御部17は、受信バッファエンプティフラグREFが1であるか否かを判定する(ステップS1207)。そして、1であると判定すると、制御部17は、受信データ読み出しアドレスRRAに160を加える(ステップS1208)。
次いで、制御部17は、受信データ読み出しアドレスRRAがRAEを超えているか否かを判定する(ステップS1209)。そして、超えていると判定すると、制御部17は、受信データ読み出しアドレスRRAから160×nを減らす(ステップS1210)。なお、ここでは、バッファオーバーフローが発生したときに、古いデータを廃棄しているが、他のデータを廃棄してもよく、いかなるデータを廃棄するかを限定するものではない。
次に、パケット送受信装置を適用したシステムについて具体的な例を用いて説明する。図16は、パケット送受信システムの構成の一例を示すブロック図である。
パケット送受信装置Aは、本発明によるパケット送受信方法を適用した装置である。
パケット送受信装置Aが備えている送信バッファのメモリサイズは320バイトとする。また、パケット送受信装置Aが備えている受信バッファのメモリサイズは160×5の800バイトとする。
音声再生開始アドレスは、160×3の480とする。また、パケット送受信装置Aが記憶している上方標本化周波数変換開始閾値は480とする。また、パケット送受信装置Aが記憶している下方標本化周波数変換開始閾値は160とする。
パケット送受信装置Bは、送信側と受信側とのクロック周波数の偏差を解決する手段を備えていない一般的な装置である。
パケット送受信装置Bが備えている送信バッファのメモリサイズは160バイトとする。また、パケット送受信装置Bが備えている受信バッファのメモリサイズは160×5の800バイトとする。音声再生開始アドレスは160×3の480とする。
通信開始時、パケット送受信装置Aは、送信バッファに160バイトのサンプリングデータが書き込まれると、通信網を介してパケット送受信装置BにRTPパケットを送信する。ここで生じる遅延は1パケット分つまり20msecである。
パケット送受信装置Bは、受信バッファに3パケット分のサンプリングデータが書き込まれると、音声再生を開始する。ここで生じる遅延は3−1=2パケット分つまり40msecである。したがって、通信網での遅延を除けば、送信側・受信側合わせると60msecの遅延が生じる。
バッファによる遅延を分かりやすく説明するため、通信網が遅延0の理想的な回線であると仮定すると、送信バッファのデータの量と、受信バッファのデータの量とをあわせた値が全体の遅延となる。
図17は、パケット送受信装置Bが音声再生を開始した後に、パケット送受信装置Aが1パケット分のデータを書き込んだときの状態を示す説明図である。図18は、パケット送受信装置Bが音声再生を開始した後に、1パケット分のデータを受信したときの状態を示す説明図である。
図17および図18に示すいずれの状態でも送信バッファのデータの量と、受信バッファのデータの量とをあわせた値は480バイト、つまり60msec分のデータとなる。
また、パケット送受信装置Bからパケット送受信装置Aの方向の通信も同様に、通信開始時には60msecの遅延を持つ。
このとき、パケット送受信装置Aのクロック周波数>パケット送受信装置Bのクロック周波数であれば、パケット送受信装置Aの受信バッファのデータ量は徐々に減っていき、パケット送受信装置Bの受信バッファのデータ量は徐々に増えていく。
パケット送受信装置Aは、パケットを受信すると、そのパケットを受信バッファに書き込む前に、受信バッファのデータ量が下方標本化周波数変換開始閾値160を下回っているか否かを判定し、下回っていると判定した場合には、1バイトのデータを挿入する。
図19は、パケット送受信装置Aが通信網を介して外部からパケットを受信したときに、受信バッファが下方標本化周波数変換開始閾値を下回っている状態を示す説明図である。
パケット送受信装置Aは、上記のように1バイトのデータを挿入すると同時に、パケット送受信装置Aの送信バッファにデータがない場合には、次の送信タイミングで、1パケット分のデータの送信を止め、送信バッファに1パケット分のデータを蓄積させる。また、送信バッファにデータ量が1以上ある場合には、パケット送受信装置Aは、1バイトのデータを削除する。
図20は、パケット送受信装置Aの送信バッファにデータがなかった場合に、1パケット分のデータの送信を止めたため、40msec経過後に、パケット送受信装置Aの送信バッファに2パケット分−1バイトのデータを蓄積したときの状態を示す説明図である。
図21は、パケット送受信装置Aの送信バッファにデータを159バイト蓄積している場合に、1バイトデータを削除し、20msec経過後の状態を示す説明図である。
以上のように、パケット送受信装置Aのクロック周波数>パケット送受信装置Bのクロック周波数の場合、パケット送受信装置Aの受信バッファ量が下方標本化周波数変換開始閾値を下回らないように保ち、パケット送受信装置Bでもバッファ量が一定値を上回ることはない。そのため、パケット送受信装置Aで、バッファアンダーランを予防すると同時に、パケット送受信装置Aでバッファオーバーフローを予防することができる。
また、パケット送受信装置Aのクロック周波数<パケット送受信装置Bのクロック周波数であれば、パケット送受信装置Aの受信バッファのデータ量は徐々に増えていき、パケット送受信装置Bの受信バッファのデータ量は徐々に減っていく。
パケット送受信装置Aの受信バッファのデータ量が上方標本化周波数変換開始閾値480を上回ったとき、1バイトのデータを削除する。
図22は、パケット送受信装置Aが通信網を介して外部からパケットを受信したときに、受信バッファが上方標本化周波数変換開始閾値を上回っている状態を示す説明図である。
パケット送受信装置Aは、上記のように1バイトのデータを削除すると同時に、パケット送受信装置Aの送信バッファに1バイトのデータを挿入する。そして、パケット送受信装置Aは、次の送信タイミングで、送信バッファのデータ量が2パケット分である場合には、2パケットを相次いで送信する。
図23は、パケット送受信装置Aの送信バッファに1バイトのデータを挿入した状態を示す説明図である。
図24は、パケット送受信装置Aの送信バッファが320バイト分のデータを蓄積したために、パケット送受信装置Aの送信バッファから2パケットを相次いで送信した後、パケット送受信装置Bがその2パケットを受信した状態を示す説明図である。
以上のように、パケット送受信装置Aのクロック周波数<パケット送受信装置Bのクロック周波数の場合、パケット送受信装置Aの受信バッファ量は上方標本化周波数変換開始閾値+160を上回らないように保たれ、パケット送受信装置Bでもバッファ量が一定値を下回らない。そのため、パケット送受信装置Aで、バッファオーバーフローを予防すると同時に、パケット送受信装置Aでバッファアンダーランを予防することができる。
このようにして、本発明によるパケット送受信装置では、受信バッファのデータ量が所定の閾値を越えたときには、受信バッファの1サンプリングデータを廃棄すると同時に、送信バッファに1サンプリングデータを追加する。また、受信バッファのデータ量が所定の閾値を下回ったときには、受信バッファに1サンプリングデータを追加すると同時に、送信バッファからに1サンプリングデータを廃棄する。
そのため、通信相手が送信側と受信側とのクロック周波数の偏差を解決する手段を備えていないときにも、送信データのオーバーフローやアンダーランを防ぐことができる。また、特許文献3に記載された方法のように送信バッファの遅延時間を受信側の装置に送信するという手順がないため、一般的なパケット通信方法との互換性が失われることはない。
さらに、通信開始時には、送信バッファに1パケット分のデータを蓄積すると同時にパケットを送信し、送信時には、パケット通信方式で必然的に生じる1パケット分の伝送遅延以上の遅延を生じないように制御する。このような制御により通信を継続した結果、送信側のクロック周波数と受信側のクロック周波数との偏差によって、受信バッファのデータ量が所定の閾値を越えたときには、送信バッファに1サンプリングデータを追加し、かつ、送信バッファに一定のデータが蓄積されたときに複数のパケットを送信するように制御する。また、受信バッファのデータ量が所定の閾値を下回ったときには、送信バッファから1サンプリングデータを削除し、または、1パケットの送信を遅らせるように制御する。そのため、送信装置から受信装置までの遅延を一定の値に保つことができる。
以上のことから、本発明は課題を解決するための以下のような手段を備えているといえる。
VoIPのように、音声データを受信と送信とを同時に行う通信方式の場合、送信の符号化回路と受信の復号化回路に、同一のクロックを使用する場合が多い。
そのため、送信側のクロック周波数と受信側のクロック周波数との偏差によって、受信バッファのデータが増加する傾向にあるとき、相手側の受信バッファのデータは減少する傾向にある。
また、逆に、受信バッファのデータが減少する傾向にあるときには、相手側の受信バッファのデータが増加する傾向にある。
そこで、本発明によるパケット送受信装置は、受信バッファのデータ量が所定の閾値を越えたときに、受信バッファの1サンプリングデータを廃棄すると同時に、送信バッファに1サンプリングデータを追加する。また、受信バッファのデータ量が所定の閾値を下回ったときには、受信バッファに1サンプリングデータを追加すると同時に、送信バッファからに1サンプリングデータを廃棄する。そのため、通信相手が送信側と受信側のクロック周波数の偏差を解決する手段を備えていないときにも、送信データのオーバーフローやアンダーランを防ぐことができる。
さらに、通信開始時には、送信バッファに1パケット分のデータが蓄積されたと同時にパケットを送信し、送信時には、パケット通信方式で必然的に生じる1パケット分の伝送遅延以上の遅延を生じないように制御する。このような制御により通信を継続した結果、送信側のクロック周波数と受信側のクロック周波数との偏差によって、受信バッファのデータ量が所定の閾値を越えたときには、送信バッファに1サンプリングデータを追加し、かつ、送信バッファに一定のデータが蓄積されたときに複数のパケットを送信するように制御する。また、受信バッファのデータ量が所定の閾値を下回ったときには、送信バッファから1サンプリングデータを削除し、かつ、1パケットの送信を遅らせるように制御する。このことによって、パケット送受信プロトコルを変更せず、一般的な装置と互換性を保ったまま、送信装置から受信装置までの遅延を一定の値に保つことができるようにする。
したがって、本発明によるパケット送受信装置は、一般的なパケット通信方法との互換性を失うことなく、通信相手が送信側と受信側とのクロック周波数の偏差を解決する手段を持たないときにも、データのオーバーフローやアンダーランを予防するとともに、伝送遅延を一定に保つことができる。
次に、本発明によるパケット送受信装置の最小構成について説明する。図28は、パケット送受信装置の最小の構成例を示すブロック図である。図28に示すように、パケット送受信装置100は、最小の構成要素として、データ量判定手段101と、データ量制御手段102とを備えている。
図28に示す最小構成のパケット送受信装置100では、データ量判定手段101は、受信バッファ部が蓄積しているデータ量が所定の範囲内であるか否かを判定する。そして、データ量制御手段102は、データ量判定手段101の判定結果に基づいて、受信バッファ部と送信バッファ部とが蓄積するデータ量を制御する。
従って、最小構成のパケット送受信装置によれば、一般的なパケット通信方法との互換性を失うことなく、通信相手が送信側と受信側とのクロック周波数の偏差を解決する手段を持たないときにも、データのオーバーフローやアンダーランを予防するとともに、伝送遅延を一定に保つことができる。
なお、本実施形態では、以下の(1)〜(5)に示すようなパケット送受信装置の特徴的構成が示されている。
(1)パケット送受信装置は、受信バッファ部(例えば、受信バッファ部15によって実現される)が蓄積しているデータ量が所定の範囲内であるか否かを判定するデータ量判定手段(例えば、制御部17によって実現される)と、データ量判定手段の判定結果に基づいて、受信バッファ部と送信バッファ部(例えば、送信バッファ部12によって実現される)とが蓄積するデータ量を制御するデータ量制御手段(例えば、制御部17によって実現される)とを備えたことを特徴とする。
(2)パケット送受信装置において、データ量判定手段は、受信バッファ部が蓄積しているデータ量が所定の上限閾値(例えば、上方標本化周波数変換開始閾値CTO)より多いか否かを判定し、データ量制御手段は、データ量判定手段が多いと判定すると、受信バッファ部から所定のデータを廃棄するとともに、送信バッファ部に所定のデータを追加するように制御するように構成されていてもよい。
(3)パケット送受信装置において、データ量判定手段が所定の上限閾値より多いと判定すると、送信バッファ部が蓄積する複数のパケットを送信するように制御する上方送信制御手段(例えば、送信部11や制御部17によって実現される)を備えるように構成されていてもよい。
(4)パケット送受信装置において、データ量判定手段は、受信バッファ部が蓄積しているデータ量が所定の下限閾値(例えば、下方標本化周波数変換開始閾値CTU)より少ないか否かを判定し、データ量調整手段は、データ量判定手段が少ないと判定すると、受信バッファ部に所定のデータを追加するとともに、送信バッファ部から所定のデータを廃棄するように制御するように構成されていてもよい。
(5)パケット送受信装置において、データ量判定手段が所定の下限閾値より少ないと判定すると、1パケットの送信を遅らせるように制御する下方送信制御手段(例えば、送信部11や制御部17によって実現される)を備えるように構成されていてもよい。