ジッタバッファ制御装置、方法及びプログラム、並びに情報処理装置
【課題】送信側と受信側とのクロック信号の基本周期の精度差分が大きいことやネットワークの揺らぎ等により、受信ジッタバッファのアンダーランが発生しても、通信エラーを防ぐようにする。
【解決手段】ジッタバッファ制御装置は、ネットワークからの入力パケットに含まれるデータを蓄積するバッファ手段と、所定の処理周期に従い、入力パケットに含まれるシーケンス番号に基づいて、入力データのバッファ手段への格納処理及びバッファ手段からの出力処理を制御するジッタバッファ制御手段とを備え、ジッタバッファ制御手段は、バッファ手段のアンダーランが発生した際に、そのパケットロス発生期間に相当する処理周期期間だけ空けて、バッファ手段にデータを格納する。
【解決手段】ジッタバッファ制御装置は、ネットワークからの入力パケットに含まれるデータを蓄積するバッファ手段と、所定の処理周期に従い、入力パケットに含まれるシーケンス番号に基づいて、入力データのバッファ手段への格納処理及びバッファ手段からの出力処理を制御するジッタバッファ制御手段とを備え、ジッタバッファ制御手段は、バッファ手段のアンダーランが発生した際に、そのパケットロス発生期間に相当する処理周期期間だけ空けて、バッファ手段にデータを格納する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ジッタバッファ制御装置、方法及びプログラム、並びに情報処理装置に関し、例えば、IPネットワークに接続する通信装置に適用し得るものである。
【背景技術】
【0002】
IPネットワークを介して、音声通信やファクシミリ通信等のPCM通信を行う通信装置は、IPパケットの揺らぎなどを吸収するための受信ジッタバッファ制御を行う必要がある。
【0003】
従来の受信ジッタバッファ制御方法としては、IPネットワークから非同期で到来するIPパケット中のPCMデータと付加情報を入力し、IPパケットヘッダ中のシーケンス番号順にPCMデータをバッファに蓄積し、一定処理周期(例えば10ms)でバッファに蓄積したPCMデータをシーケンス番号順に出力することとしている。
【0004】
ところで、IPネットワーク上で通信処理を行う送信側及び受信側では、クロックの基本周期(例えば、10ms)を完全同一にすることが困難であり、両者の間の精度差分が生じ得るため、受信ジッタバッファのアンダーランが生じ、該当するPCMデータが存在しないことがあり得る。
【0005】
また、IPネットワーク上でパケットロスが生じた場合には、受信パケットのシーケンス番号飛びが生じ、該当するPCMデータが存在しなくなることが生じ得る。
【0006】
このような場合、リニア信号が不連続となってしまうことを回避するために、従来の受信信号処理部は、過去に入力された信号を用いて、擬似のリニア信号を生成し、この擬似のリニア信号で補償(補間)した信号に基づいて、復調したディジタル信号や制御信号を出力するという方法がある。
【0007】
しかしながら、例えばIPネットワークを経由したファクシミリ通信において、擬似のリニア信号により補償(補間)された制御信号を復調する場合、過去の信号を用いて擬似のリニア信号を生成するため正確な制御信号を復調することができず、通信エラーが生じる場合がある。
【0008】
このような課題を解決するために、非特許文献1に開示された方法が用いられている。非特許文献1は、IPネットワークを経由したファクシミリ通信に関する技術が記載されている。
【0009】
非特許文献1の図表3.10で開示されるジッタバッファ制御方法は、受信ジッタバッファのアンダーランに伴うモデム信号受信エラーを防止する目的で、ファクシミリ通信の開始時に、受信ジッタバッファに一定量(例えば、140ms分)のデータを蓄積し、このデータ蓄積後に、受信ジッタバッファからのデータ出力を開始する技術である。
【0010】
このように、受信ジッタバッファに一定量のデータを蓄積してから、受信ジッタバッファのデータ出力を開始することにより、受信ジッタバッファのデータの枯渇を防ぐことができ、アンダーランを回避することができる。
【先行技術文献】
【非特許文献】
【0011】
【非特許文献1】情報通信ネットワーク産業協会、「IP−PBXにVoIP−TAを経由してファクシミリ端末を収容する際のVoIP−TA/ファクシミリ端末」ガイドライン、CES−Q006−1、2007年10月19日
【発明の概要】
【発明が解決しようとする課題】
【0012】
上述したように、アンダーランが発生して、パケットロス補償手段が、過去の入力信号を基にして擬似リニア信号を生成して挿入する場合、モデム信号の時間伸張が生じるので位相が崩れ、パケットロス期間以降においても総くずれとなり、正常なモデム信号を復調することができなくなり、受信エラーが生じてしまうことがある。
【0013】
送信側と受信側との処理周期の差分が大きい場合やIPネットワーク上の揺らぎが大きい場合にアンダーランが生じる可能性は高くなる。
【0014】
また、上述した非特許文献1に記載された技術を適用しても、次のような課題が生じ得る。
【0015】
送信側及び受信側のクロック信号の基本周期(例えば10ms)の精度差分が大きい場合や、IPネットワーク上で発生した揺らぎが大きい場合や、ファクシミリ通信時間が長い場合等には、受信ジッタバッファに蓄積しておいた一定量のデータを全て出力しきってしまうことがあり、受信ジッタバッファのアンダーランを完全に無くすことはできないという問題がある。
【0016】
また、受信ジッタバッファに蓄積するデータ量を大きくすると、受信ジッタバッファのアンダーラン発生を低減することができるが、受信ジッタバッファでの伝送遅延が大きくなってしまうという問題がある。
【0017】
例えば、ファクシミリ通信のプロトコルでは、送信側からの制御信号に対する応答に関して応答監視時間を設けている。そのため、この応答監視時間までに応答信号の返信が届かない場合、ファクシミリ通信は失敗してしまうことになる。
【0018】
さらに、IPネットワークを経由したファクシミリ通信の開始時のデータ蓄積量が小さい場合であっても、送信側と受信側とのクロック信号の基本周期(例えば10ms)の精度差分が大きいときや、IPネットワークで生じる揺らぎが大きいときや、ファクシミリ通信時間が長いときには、時間とともに受信ジッタバッファの蓄積量(遅延)が増加していくことがある。この場合には、伝搬遅延が大きくなり、ファクシミリ通信が失敗することがあるという問題がある。
【0019】
なお、上記課題は、IPネットワークを経由したファクシミリ通信だけでなく、IPネットワークを介して音声通信を行う場合にも生じ得る。
【0020】
そのため、送信側と受信側とのクロック信号の基本周期の精度差分が大きいことやネットワークの揺らぎ等により、受信ジッタバッファのアンダーランが発生しても、通信エラーを防ぐことができるジッタバッファ制御装置、方法及びプログラム、並びに情報処理装置が求められている。
【課題を解決するための手段】
【0021】
第1の本発明のジッタバッファ制御装置は、ネットワークからの入力パケットに含まれるデータを蓄積するバッファ手段と、所定の処理周期に従い、入力パケットに含まれるシーケンス番号に基づいて、入力データのバッファ手段への格納処理及びバッファ手段からの出力処理を制御するジッタバッファ制御手段とを備え、ジッタバッファ制御手段は、バッファ手段のアンダーランが発生した際に、そのパケットロス発生期間に相当する処理周期期間だけ空けて、バッファ手段にデータを格納するものであることを特徴とする。
【0022】
第2の本発明のジッタバッファ制御方法は、ネットワークからの入力パケットに含まれるデータを蓄積するバッファ手段を備えるジッタバッファ制御装置のジッタバッファ制御方法であって、ジッタバッファ制御手段が、所定の処理周期に従い、入力パケットに含まれるシーケンス番号に基づいて、入力データのバッファ手段への格納処理及びバッファ手段からの出力処理を制御するジッタバッファ制御工程を行い、ジッタバッファ制御手段が、バッファ手段のアンダーランが発生した際に、そのパケットロス発生期間に相当する処理周期期間だけ空けて、バッファ手段にデータを格納することを特徴とする。
【0023】
第3の本発明のジッタバッファ制御プログラムは、ネットワークからの入力パケットに含まれるデータを蓄積するバッファ手段を備えるジッタバッファ制御装置を、所定の処理周期に従い、入力パケットに含まれるシーケンス番号に基づいて、入力データのバッファ手段への格納処理及びバッファ手段からの出力処理を制御するジッタバッファ制御手段として機能させるものであり、ジッタバッファ制御手段が、バッファ手段のアンダーランが発生した際に、そのパケットロス発生期間に相当する処理周期期間だけ空けて、バッファ手段にデータを格納することを特徴とする。
【0024】
第4の本発明の情報処理装置は、第1の本発明のジッタバッファ制御装置を備えることを特徴とする。
【発明の効果】
【0025】
本発明によれば、送信側と受信側とのクロック信号の基本周期の精度差分が大きいことやネットワークの揺らぎ等により、受信ジッタバッファのアンダーランが発生しても、通信エラーを防ぐことができる。
【図面の簡単な説明】
【0026】
【図1】第1の実施形態のファクシミリ通信装置の内部構成を示す内部構成図である。
【図2】第1の実施形態のジッタバッファ制御手段のジッタバッファ制御処理の機能を説明する機能ブロック図である。
【図3】第1の実施形態のジッタバッファ制御処理の説明に係る変数を説明する説明図である。
【図4】第1の実施形態のジッタバッファ制御処理を説明する説明図である。
【図5】第1の実施形態のPCM格納バッファへの投入動作を示すフローチャートである。
【図6】通常のPCM格納バッファへの投入動作を説明する説明図である。
【図7】蓄積データがある場合にシーケンス番号飛びが生じたときのPCM格納バッファへの投入動作を説明する説明図である。
【図8】蓄積データがない場合にシーケンス番号飛びが生じたときのPCM格納バッファへの投入動作を説明する説明図である。
【図9】シーケンス番号戻りの場合のPCM格納バッファへの投入動作を説明する説明図である。
【図10】シーケンス番号戻りが過大な場合のPCM格納バッファへの投入動作を説明する説明図である。
【図11】第1の実施形態のPCM格納バッファからの取出動作を示すフローチャートである。
【図12】蓄積データがある場合の通常のPCM格納バッファからの取出動作を説明する説明図である。
【図13】蓄積データがなくなる場合の通常PCM格納バッファからの取出動作を説明する説明図である。
【図14】パケットロスが発生した場合のPCM格納バッファからの取出動作を説明する説明図である。
【図15】アンダーフローが発生した場合のPCM格納バッファからの取出動作を説明する説明図である。
【発明を実施するための形態】
【0027】
(A)第1の実施形態
以下では、本発明のジッタバッファ制御装置、方法及びプログラム、並びに情報処理装置の第1の実施形態を、図面を参照しながら説明する。
【0028】
第1の実施形態では、IPネットワークを経由したファクシミリ通信装置における受信ジッタバッファ制御方式に本発明を適用した実施形態を例示して説明する。
【0029】
なお、第1の実施形態では、ITU−T(国際電気通信連合の電気通信標準化部門)勧告のT.30に規格化されたファクシミリ通信を行う装置を例示するが、適用する規格は特に限定されるものではなく、その他の規格にも広く適用することができる。
【0030】
(A−1)第1の実施形態の構成
図1は、第1の実施形態のファクシミリ通信装置の内部構成を示す内部構成図である。
【0031】
第1の実施形態は、例えば、パーソナルコンピュータ(PC)やサーバ等のような情報処理装置に搭載するファクシミリ通信機能を有するものに適用する場合を例示する。
【0032】
図1において、第1の実施形態のファクシミリ通信装置1は、受信ジッタバッファ11、PCM復号手段13、パケットロス補償手段14、モデム信号復調手段15、ファクシミリデータ受信処理手段16を少なくとも有して構成される。
【0033】
受信ジッタバッファ11は、IPネットワークから非同期で到来するIPパケット中のPCMデータ及びシーケンス番号を取り出し、シーケンス番号順にPCMデータをPCM格納バッファ21に蓄積し、シーケンス番号順にPCM格納バッファ21からPCMデータを出力するものである。また受信ジッタバッファ11は、PCM格納バッファ21から出力したPCMデータをPCM復号手段13に与えるものである。
【0034】
受信ジッタジッタバッファ11は、当該受信ジッタバッファ11のアンダーランが発生した場合、そのアンダーランが発生した処理周期期間においては、受信ジッタバッファ11以降の信号処理を実行させないようにするものである。つまり、アンダーランが発生している処理周期期間において、受信ジッタバッファ11は、PCMデータの出力を停止させる。
【0035】
このように、アンダーランが発生した処理周期期間においては、PCMデータの出力を停止することで、モデム信号の復調をさせないようにすることができるので、正常な復調が可能となる。
【0036】
受信ジッタバッファ11は、図1に示すように、PCM格納バッファ21と、ジッタバッファ制御手段22とを有する。
【0037】
PCM格納バッファ21は、IPネットワークから入力されたIPパケット中に含まれるPCMデータを格納するものである。PCM格納バッファ21の処理周期(格納単位)は、特に限定されないが、第1の実施形態では例えば10ms分のPCMデータを1処理周期とした場合を例示する。また、PCM格納バッファ21のジッタバッファサイズは、特に限定されない。
【0038】
ジッタバッファ制御手段22は、PCMデータのPCM格納バッファ21への投入処理及びPCM格納バッファ21からの取出処理を制御するものである。
【0039】
ジッタバッファ制御手段22は、PCM格納バッファ21からのPCMデータの取出処理を、所定の処理周期を基準にして制御する。
【0040】
ジッタバッファ制御手段22は、アンダーランが発生している処理周期期間において、PCMデータの出力を停止する。
【0041】
また、ジッタバッファ制御手段22は、PCM格納バッファ21に蓄積されているPCMデータの蓄積量と、格納されている最小シーケンス番号及び最大シーケンス番号とを管理しており、これらのPCM蓄積量と最小シーケンス番号及び最大シーケンス番号とを用いて、PCM格納バッファ21への投入処理及びPCM格納バッファ21からの取出処理を行う。
【0042】
さらに、ジッタバッファ制御手段22は、PCM格納バッファ21からPCMデータを取り出す際、パケットロスが発生している場合には、パケットロス有りを示すパケットロス有情報をパケットロス補償手段14に与え、パケットロスが発生していない場合には、パケットロス無を示すパケットロス無情報をパケットロス補償手段14に与える。
【0043】
図2は、ジッタバッファ制御手段22によるジッタバッファ制御処理の機能を示す機能ブロック図である。このジッタバッファ制御処理は、ソフトウェア処理により実現可能なものである。
【0044】
図2に示すジッタバッファ制御処理としては、蓄積量管理部201、最大シーケンス番号管理部202、最小シーケンス番号管理部203、受信パケットシーケンス番号識別部204、投入動作制御部205、取出動作制御部206を有する。
【0045】
蓄積量管理部201は、PCM格納バッファ21に蓄積されるPCMデータの蓄積量を管理するものである。例えば、PCM格納バッファ21が10ms分のPCMデータを1処理単位として格納する場合、蓄積量管理部201は、処理単位(10ms単位)のPCMデータを蓄積量として管理する。
【0046】
最大シーケンス番号管理部202は、PCM格納バッファ21に格納されているPCMデータのうち、PCMデータに対応するIPパケットの最大のシーケンス番号を保持するものである。
【0047】
最小シーケンス番号管理部203は、PCM格納バッファ21に格納されているPCMデータのうち、PCMデータに対応するIPパケットの最小のシーケンス番号を保持するものである。
【0048】
受信パケットシーケンス番号識別部204は、IPネットワークから入力されたIPパケットのヘッダ情報からシーケンス番号を抽出し、この受信IPパケットのシーケンス番号を識別するものである。
【0049】
投入動作制御部205は、IPネットワークから受信したIPパケットに含まれるPCMデータをPCM格納バッファ21に格納する投入動作を制御するものである。
【0050】
取出動作制御部206は、PCM格納バッファ21に格納されているPCMデータをPCM格納バッファ21から取り出す取出動作を制御するものである。
【0051】
投入動作制御部205及び取出動作制御部206の処理内容については、後述する動作の項で詳細に説明する。
【0052】
PCM復号手段13は、受信ジッタバッファ11から入力されたPCMデータをリニア信号へ復号し、パケットロス補償手段14に与えるものである。PCM復号手段13の符号化(復号)方式は、特に限定されるものではないが、例えばG.711に規格化された符号化(復号)方式に従って復号処理を行う。
【0053】
パケットロス補償手段14は、ジッタバッファ制御手段22からパケットロス有無情報を受け取り、パケットロス無を示す情報を受けた場合には、PCM復号手段13から入力されるリニア信号を内部に蓄積しつつ、入力信号をそのままモデム信号復調手段15に与える。また、パケットロス補償手段14は、パケットロス有を示す情報を受けた場合には、過去に入力された信号に基づいて擬似のリニア信号を生成してモデム信号復調手段15に与える。
【0054】
モデム信号復調手段15は、一般的にはDCE(Data Circuit-Terminating Equipment:データ回線終端装置)と呼ばれる終端装置に該当する。モデム信号復調手段15は、パケットロス補償手段14からリニア信号を入力して、ディジタルデータを復調し、復調したディジタルデータ及び制御データをファクシミリデータ受信処理手段16に与えるものである。
【0055】
ファクシミリデータ受信処理手段16は、一般的にはDTE(Data Terminal Equipment:データ端末装置)と呼ばれる装置に該当する。ファクシミリデータ受信処理手段16は、モデム信号復調手段15から復調されたディジタルデータ及び制御データを入力し、ファクシミリ通信処理を行うものである。
【0056】
(A−2)第1の実施形態の動作
次に、第1の実施形態の受信ジッタバッファ11におけるジッタバッファ制御処理の動作を、図面を参照しながら説明する。
【0057】
また、以下の動作説明では、例えば、IPネットワークから入力されるIPパケットのペイロードサイズは20msであり、また受信ジッタバッファ11は、PCM格納バッファ21への投入処理又は取出処理を、例えば10ms周期で行う場合を説明する。
【0058】
つまり、PCM格納バッファ21は10ms単位分のPCMデータを格納し、又10ms単位分のPCMデータを出力する場合を想定して説明する。
【0059】
図3は、以下の動作説明に使用する変数名を説明する説明図である。また、図4は、受信ジッタバッファ11におけるPCM格納バッファ21の格納状態と、ジッタバッファ制御手段22の管理とについて変数を用いて説明する説明図である。
【0060】
図4(A)において、PCM格納バッファ21は、10ms単位分のPCMデータを格納単位としており、図4のPCM格納バッファ21に示される各セルが処理単位毎のPCMデータであることを示す。
【0061】
図4(A)のPCM格納バッファ21において、「empty」と示されたセルは、当該セルは空き状態であることを示す。また、図4(A)において、各セル中の数字は、PCMデータを有するIPパケットのシーケンス番号を示しており、例えば、「13−1」のうち「13」はシーケンス番号であり、「1」は当該シーケンス番号のサブ番号である。
【0062】
これは、第1の実施形態では、IPパケットのペイロードサイズ(20ms)と、PCM格納バッファ21の処理単位(10ms)が異なる場合を想定しているので、便宜上サブ番号を用いるものとする。
【0063】
PCM格納バッファ21は、基本的には、先に入力されたPCMデータを先に取り出す先入れ先出し(FIFO)構造のバッファである。しかし、PCM格納バッファ21は、ジッタバッファ制御手段22の制御を受けて、格納すべきPCMデータを格納すべき位置に格納する。
【0064】
ジッタバッファ制御手段22は、PCM格納バッファ21に格納されているPCMデータに係るシーケンス番号のうち、最大シーケンス番号及び最小シーケンス番号を管理している。また、ジッタバッファ制御手段22は、受信パケットのシーケンス番号を認識し、最大シーケンス番号及び最小シーケンス番号と、受信パケットのシーケンス番号に基づいて、PCMバッファバッファ21の格納すべき位置に、受信パケットに含まれるPCMデータを格納するようにする。
【0065】
例えば、図4(A)の場合、ジッタバッファ制御手段22は、PCM格納バッファ21には、PCMデータ「11−2」、「12−1」、「12−2」、「13−1」、「13−2」が格納されている状態である。このとき、ジッタバッファ制御手段22は、PCM格納バッファ21に格納されている最小シーケンス番号として「sn_smallest=11」と、最大シーケンス番号として「sn_biggest=13」を保持する。
【0066】
また、このような状態で、IPネットワークからシーケンス番号「15」を持つIPパケットが受信されると、ジッタバッファ制御手段22は、受信パケットのシーケンス番号として「sn_RTP=15」を識別する。
【0067】
この場合、PCM格納バッファ21に格納されている最大シーケンス番号は「13」であるから、本来であれば、シーケンス番号「14」のIPパケットが入力されるべきである。しかし、例えばIPネットワーク上でパケットロスが発生してしまい、シーケンス番号「15」が入力されたケースが、図4(A)に示すような状況である。
【0068】
このとき、従来の受信ジッタバッファは、先入れ先出しが基本であるから、PCMデータ「13−2」の直ぐ後(図4では直上)の位置にPCMデータ「15−1」を蓄積し、さらに直ぐ後の位置にPCMデータ「15−2」を蓄積する。
【0069】
しかし、第1の実施形態では、図4(B)に示すように、ジッタバッファ制御手段21は、本来格納されるべきシーケンス番号「14」のPCMデータ「14−1」、「14−2」の格納位置だけ空けて、その後の位置にPCMデータ「15−1」を格納し、さらに直ぐ後の位置にPCMデータ「15−2」を格納するようにする。
【0070】
このようにすることで、ジッタバッファ制御手段21は、最大シーケンス番号及び最小シーケンス番号を管理し、入力されたIPパケットのシーケンス番号を識別することで、本来格納されるべき格納位置にPCMデータを格納することができる。
【0071】
(A−2−1)PCM格納バッファ21への投入動作
図5は、ジッタバッファ制御手段22によるPCM格納バッファ21への投入処理の動作を示すフローチャートである。PCM格納バッファ21への投入処理は、ジッタバッファ制御手段22の投入動作制御部205が主に行う。
【0072】
まず、受信ジッタバッファ11におけるPCM格納バッファ21への通常の投入動作について図5及び図6を参照しながら説明する。
【0073】
図6は、PCM格納バッファ21への通常の投入処理を説明する説明図である。
【0074】
図6(A)において、PCM格納バッファ21には、PCMデータ「13−2」〜「15−2」が格納されており、ジッタバッファ制御手段22は、最小シーケンス番号「sn_smallest=13」及び最大シーケンス番号「sn_biggest=15」を保持する。
【0075】
この状態で、IPネットワークからシーケンス番号「16」のIPパケットが受信されると(ステップS101)、ジッタバッファ制御手段22は、受信パケットのシーケンス番号「sn_RTP=16」を識別する(ステップS102)。
【0076】
この場合、ジッタバッファ制御手段22は、最大シーケンス番号が「sn_biggest=15」であり、今回受信したIPパケットのシーケンス番号が「sn_RTP=16」であり、「sn_RTP=sn_biggest+1」であるから連番であることを判断する(ステップS103)。
【0077】
従って、ジッタバッファ制御手段22は、図6(B)に示すように、PCMデータ「15−2」の後の格納位置にPCMデータ「16−1」を格納し、さらにその後にPCMデータ「16−2」を格納する(ステップS104)。
【0078】
また、PCMデータ「16−1」及び「16−2」を格納することにより、ジッタバッファ制御手段22は、最大シーケンス番号を「sn_biggest=sn_RTP=16」に更新する(ステップS105)。
【0079】
次に、例えば、IPネットワーク上でパケットロスが発生し、本来到着すべきシーケンス番号のIPパケットが到着せず、シーケンス番号飛びが生じたときのPCM格納バッファ21への投入処理を図5及び図7を参照しながら説明する。
【0080】
図7は、シーケンス番号飛びが生じた場合のPCM格納バッファ21への投入処理を説明する説明図である。
【0081】
図7(A)において、PCM格納バッファ21には、PCMデータ「13−2」〜「14−2」が格納されており、ジッタバッファ制御手段22は、最小シーケンス番号「sn_smallest=13」及び最大シーケンス番号「sn_biggest=14」を保持する。
【0082】
この状態で、IPネットワークからシーケンス番号「16」のIPパケットが受信されると(ステップS101)、ジッタバッファ制御手段22は、受信パケットのシーケンス番号「sn_RTP=16」を識別する(ステップS102)。
【0083】
この場合、ジッタバッファ制御手段22は、最大シーケンス番号が「sn_biggest=14」であり、今回受信したIPパケットのシーケンス番号が「sn_RTP=16」であり、「sn_RTP>sn_biggest+1」である(ステップS103)から、シーケンス番号「15」を持つIPパケットが入力されていないと判断する。
【0084】
また、この場合、ジッタバッファ制御手段21は、蓄積量が「0(空)」でないことを判断する(ステップS106)。
【0085】
従って、ジッタバッファ制御手段22は、図7(B)に示すように、シーケンス番号「15」のPCMデータ「15−1」及び「15−2」の格納位置だけ空けて、その後の格納位置にシーケンス番号「16」のPCMデータ「16−1」を格納し、さらにその後の格納位置に及び「16−2」を格納する(ステップS107)。
【0086】
また、PCMデータ「16−1」及び「16−2」を格納することにより、ジッタバッファ制御手段22は、最大シーケンス番号を「sn_biggest=sn_RTP=16」に更新する(ステップS108)。
【0087】
次に、例えば、IPネットワーク上で重度のパケットロスが発生した等により、PCM格納バッファ21に格納されるPCMデータが全て出力されたときの投入処理を、図5及び図8を参照しながら説明する。
【0088】
図8は、PCM格納バッファ21の格納データがない状態で、シーケンス番号飛びが生じた場合のPCM格納バッファ21への投入処理を説明する説明図である。
【0089】
図8(A)において、PCM格納バッファ21には、格納されているPCMデータはない。
【0090】
この場合、ジッタバッファ制御手段22は、PCM格納バッファ21から最後に出力されたPCMデータのシーケンス番号を、最小シーケンス番号「sn_smallest=12」として保持しておく。また、ジッタバッファ制御手段22は、PCM格納バッファ21に最後に格納されたPCMデータのシーケンス番号を、最大シーケンス番号「sn_biggest=12」として保持しておく。
【0091】
図8(A)では、ジッタバッファ制御手段22は、最小シーケンス番号「sn_smallest=12」及び最大シーケンス番号「sn_biggest=12」として管理する。
【0092】
この状態で、IPネットワークからシーケンス番号「16」のIPパケットが受信されると(ステップS101)、ジッタバッファ制御手段22は、受信パケットのシーケンス番号「sn_RTP=16」を識別する(ステップS102)。
【0093】
この場合、ジッタバッファ制御手段22は、最大シーケンス番号が「sn_biggest=12」であり、今回受信したIPパケットのシーケンス番号が「sn_RTP=16」であり、「sn_RTP>sn_biggest+1」を判断する(ステップS103)。
【0094】
また、ジッタバッファ制御手段22は、蓄積量が「0(空)」であることを判断し(ステップS106)最小シーケンス番号「sn_smallest=12」を1だけ加えて、最小シーケンス番号を「sn_smallest=13」とする(ステップS109)。
【0095】
そして、ジッタバッファ制御手段22は、図8(B)に示すように、シーケンス番号「16」のPCMデータ「16−1」及び「16−2」の格納位置だけ空けて、その後の格納位置にシーケンス番号「16」のPCMデータ「16−1」を格納し、さらにその後の格納位置に及び「16−2」を格納する(ステップS110)。
【0096】
また、PCMデータ「16−1」及び「16−2」を格納することにより、ジッタバッファ制御手段22は、最大シーケンス番号を「sn_biggest=sn_RTP=16」に更新する(ステップS111)。
【0097】
次に、シーケンス番号戻りが生じた場合の投入動作を、図5及び図9を参照しながら説明する。
【0098】
図9は、シーケンス番号戻りが生じた場合のPCM格納バッファ21への投入動作を説明する説明図である。
【0099】
図9(A)において、PCM格納バッファ21には、PCMデータ「13−2」、「15−1」〜「16−2」が格納されており、ジッタバッファ制御手段22は、最小シーケンス番号「sn_smallest=13」及び最大シーケンス番号「sn_biggest=16」を保持する。
【0100】
この状態で、IPネットワークからシーケンス番号「14」のIPパケットが受信されると(ステップS101)、ジッタバッファ制御手段22は、受信パケットのシーケンス番号「sn_RTP=14」を識別する(ステップS102)。
【0101】
この場合、ジッタバッファ制御手段22は、最大シーケンス番号が「sn_biggest=16」であり、今回受信したIPパケットのシーケンス番号が「sn_RTP=14」であり、「sn_RTP≦sn_biggest」である(ステップS103)から、シーケンス番号飛びをしてシーケンス番号「15」及び「16」のPCMデータを投入した後に、シーケンス番号「14」のIPパケットが到着したものと判断する。
【0102】
また、ジッタバッファ制御手段21は、最小シーケンス番号が「sn_smallest=13」であり、今回受信したIPパケットのシーケンス番号が「sn_RTP=14」であり、「sn_RTP≧sn_smallest」であることを判断する(ステップS112)。
【0103】
従って、ジッタバッファ制御手段22は、図9(B)に示すように、シーケンス番号「14」のPCMデータ「14−1」及び「14−2」を、PCMデータ「13−2」の後の該当位置に格納する(ステップS113)。
【0104】
なお、このとき、ジッタバッファ制御手段22は、最大シーケンス番号の更新を行なわない(ステップS114)。
【0105】
次に、過大なシーケンス番号戻りが生じた場合の投入動作を、図5及び図10を参照しながら説明する。
【0106】
図10は、過大なシーケンス番号戻りが生じた場合のPCM格納バッファ21への投入動作を説明する説明図である。
【0107】
図10(A)において、PCM格納バッファ21には、PCMデータ「14−2」〜「16−2」が格納されており、ジッタバッファ制御手段22は、最小シーケンス番号「sn_smallest=14」及び最大シーケンス番号「sn_biggest=16」を保持する。
【0108】
この状態で、IPネットワークからシーケンス番号「13」のIPパケットが受信されると(ステップS101)、ジッタバッファ制御手段22は、受信パケットのシーケンス番号「sn_RTP=13」を識別する(ステップS102)。
【0109】
この場合、ジッタバッファ制御手段22は、最大シーケンス番号が「sn_biggest=16」であり、今回受信したIPパケットのシーケンス番号が「sn_RTP=13」であり、「sn_RTP≦sn_biggest」である(ステップS103)ことを判断する。
【0110】
また、ジッタバッファ制御手段21は、最小シーケンス番号が「sn_smallest=14」であり、今回受信したIPパケットのシーケンス番号が「sn_RTP=13」であり、「sn_RTP≧sn_smallest」でないことを判断する(ステップS112)。
【0111】
この場合、シーケンス番号「13」のIPパケットが過大に遅れて到着したものであるから、ジッタバッファ制御手段22は、図10(B)に示すように、シーケンス番号「13」のPCMデータ「13−1」及び「13−2」を廃棄する(ステップS115)。
【0112】
勿論、このとき、ジッタバッファ制御手段22は、最大シーケンス番号の更新を行なわない(ステップS116)。
【0113】
(A−2−2)PCM格納バッファ21からの取出動作
図11は、ジッタバッファ制御手段22によるPCM格納バッファ21からの取出処理の動作を示すフローチャートである。PCM格納バッファ21からの取出処理は、ジッタバッファ制御手段22の取出動作制御部206が主に行う。
【0114】
まず、受信ジッタバッファ11におけるPCM格納バッファ21からの通常の取出動作について図11及び図12を参照しながら説明する。
【0115】
図12は、PCM格納バッファ21からの通常の取出処理を説明する説明図である。
【0116】
図12(A)において、PCM格納バッファ21には、PCMデータ「11−1」〜「13−2」が格納されており、ジッタバッファ制御手段22は、最小シーケンス番号「sn_smallest=11」及び最大シーケンス番号「sn_biggest=13」を保持する。
【0117】
PCM格納バッファ21からのPCMデータの取出周期を管理しておりPCMデータの取出時刻になると(ステップS201)、ジッタバッファ制御手段11は、最小シーケンス番号「sn_smallest」に基づいて、対応するPCMデータの出力を行う。
【0118】
このとき、ジッタバッファ制御手段11は、PCM格納バッファ21から取り出すPCMデータが「empty」であるか否かを判断すると共に(ステップS202)、「サブ番号<2」又は「蓄積量=1」であるか否かを判断する(ステップS203)。
【0119】
図12(A)の場合、PCM格納バッファ21から取り出すPCMデータはPCMデータ「11−1」であって「empty」ではなく、かつ、シーケンス番号のサブ番号が「サブ番号<2」であるから、ジッタバッファ制御手段22は、図12(B)に示すように、PCM格納バッファ21からPCMデータ「11−1」を取り出して、このPCMデータ「11−1」をPCM復号手段13に与えて復号させる(ステップS204)。
【0120】
また、ジッタバッファ制御手段22は、「sn_smallest」を前値保持する(ステップS205)。
【0121】
次に、PCM格納バッファ21に蓄積されているPCMデータが1個である場合のPCM格納バッファ21からの取出動作について図11及び図13を参照しながら説明する。
【0122】
図13は、蓄積量が「1」である場合のPCM格納バッファ21からの取出処理を説明する説明図である。
【0123】
図13(A)において、PCM格納バッファ21には、PCMデータ「11−2」が格納されており、このPCMデータを取り出した後は、PCM格納バッファ21の蓄積量が「0(空)」となる。
【0124】
このとき、ジッタバッファ制御手段22は、最小シーケンス番号「sn_smallest=11」及び最大シーケンス番号「sn_biggest=11」を保持する。
【0125】
図13(A)において、PCMデータの取出時刻になると(ステップS201)、ジッタバッファ制御手段11は、PCM格納バッファ21から取り出すPCMデータがPCMデータ「11−2」であって「empty」ではなく(ステップS202)、「サブ番号<2」又は「蓄積量=1」であるか否かを判断する(ステップS203)。
【0126】
この場合、ジッタバッファ制御手段22は、図13(B)に示すように、PCM格納バッファ21からPCMデータ「11−2」を取り出して、このPCMデータ「11−2」をPCM復号手段13に与えて復号させる(ステップS204)。
【0127】
また、PCMデータ「11−2」を取り出した後、ジッタバッファ制御手段22は、最小シーケンス番号の保持を行う(ステップS205)。
【0128】
次に、IPネットワーク上でパケットロスが発生した等の場合のPCM格納バッファ21からの取出動作について図11及び14を参照しながら説明する。
【0129】
図14は、パケットロスが発生した場合のPCM格納バッファ21からの取出処理を説明する説明図である。
【0130】
図14(A)において、PCM格納バッファ21には、PCMデータ「11−1」及び「11−2」がないが、PCMデータ「12−1」〜「13−2」が格納されており、ジッタバッファ制御手段22は、最小シーケンス番号「sn_smallest=11」及び最大シーケンス番号「sn_biggest=13」を保持する。
【0131】
図14(A)において、PCMデータの取出時刻になると(ステップS201)、ジッタバッファ制御手段11は、PCM格納バッファ21から取り出すPCMデータを見ると、最小シーケンス番号「sn_smallest=11」に対応するPCMデータがなく、「empty」であることを判断する(ステップS202)。
【0132】
この場合、ジッタバッファ制御手段22は、PCM格納バッファ21に蓄積される蓄積量があるか否かを判断する(ステップS208)。この場合、PCM格納バッファ21には、PCMデータ「12−1」〜「13−2」が格納されているから、ジッタバッファ制御手段22は、蓄積量があると判断する。
【0133】
ジッタバッファ制御手段22は、パケットロス補償手段14に対して、パケットロス有を示す情報をパケットロス補償手段14に与えて、この処理周期の期間だけ、パケットロス補償処理をさせる(ステップS209)。これにより、この処理周期の期間だけ、パケットロス補償手段14は、擬似リニア信号を形成することになるが、時間伸縮は生じないようにできる。そのため、この処理周期期間では、モデム信号の受信エラーが生じる可能性があるが、この処理周期期間以降は、正常に復調させることができる。
【0134】
なお、第1の実施形態では、ステップ209でパケットロス補償処理を行なうこととしたが、パケットロス補償処理を行わないようにしてもよい。
【0135】
また、ジッタバッファ制御手段22は、PCMデータのシーケンス番号のサブ番号を見ており、同一シーケンス番号のPCMデータを全て取り出した場合、最小シーケンス番号を「sn_smallest=sn_smallest+1」となるように更新する(ステップS211)。
【0136】
なお、ここで必要に応じて、「サブ番号=2」であるか否かを判断し(ステップS210)、サブ番号=2である場合には、最小シーケンス番号を「sn_smallest=sn_smallest+1」とし(ステップS211)、そうでない場合には、「sn_smallest保持」をする(ステップS212)。
【0137】
次に、受信ジッタバッファ11のアンダーランが発生した場合の取出動作を、図11及び図15を参照しながら説明する。
【0138】
図15は、受信ジッタバッファ11のアンダーランが発生した場合のPCM格納バッファ21からの取出処理を説明する説明図である。
【0139】
図15(A)において、PCM格納バッファ21には、PCMデータが存在しておらず、ジッタバッファ制御手段22は、最小シーケンス番号「sn_smallest=11」及び最大シーケンス番号「sn_biggest=11」を保持するものとする。
【0140】
図15(A)において、PCMデータの取出時刻になると(ステップS201)、ジッタバッファ制御手段11は、PCM格納バッファ21から取り出すPCMデータを見ると、最小シーケンス番号「sn_smallest=11」に対応するPCMデータがなく、「empty」であることを判断する(ステップS202)。
【0141】
この場合、ジッタバッファ制御手段22は、PCM格納バッファ21に蓄積される蓄積量があるか否かを判断する(ステップS208)。この場合、PCM格納バッファ21には、PCMデータが存在しておらず、蓄積量がなしと判断する。
【0142】
このとき、ジッタバッファ制御手段22は、取出処理を停止し(ステップS213)、最小シーケンス番号を保持したままとする(ステップS214)。
【0143】
(A−3)第1の実施形態の効果
以上のように、第1の実施形態によれば、送信側と受信側との周期差分や、ネットワークの揺らぎに伴い、受信ジッタバッファのアンダーランが発生しても、受信ジッタバッファ出力以降の動作を停止させるので、モデム信号の途中に擬似リニア信号の挿入することを回避できるので、受信ジッタバッファのアンダーランに伴うモデム信号の受信エラーを防止することができる。
【0144】
また、第1の実施形態によれば、ファクシミリ通信開始時に受信ジッタバッファに初期遅延を挿入する必要がないので、伝搬遅延に伴うファクシミリ通信の失敗を低減することができる。
【0145】
さらに、第1の実施形態によれば、パケットロス発生時には、パケットロス発生部分のみ擬似リニア信号を置き換えるようにしたので、モデム信号の時間伸縮は生じない。その結果、パケットロス発生部分以外のモデム信号は正常に受信できることが期待でき、受信エラーを低減することができる。
【0146】
(B)第2の実施形態
次に、本発明のジッタバッファ制御装置、方法及びプログラム、並びに情報処理装置の第2の実施形態を図面を参照しながら説明する。
【0147】
第2の実施形態が第1の実施形態と異なる点は、ジッタバッファ制御手段がPCM格納バッファからPCMデータを取り出す取出動作である。
【0148】
第1の実施形態では、PCM格納バッファから、所定の処理周期(例えば10ms)毎に、1回の取出処理を行う場合を説明した。
【0149】
これに対して、第2の実施形態では、PCMデータの取り出し時点で、PCM格納バッファの蓄積量が閾値以上の場合に、1回の処理周期期間に、2回以上の取出処理を行う。つまり、1回の処理周期期間に、2以上の処理周期分のPCMデータを取り出す。
【0150】
例えば、PCM格納バッファ21の蓄積量に対する閾値を「2(20ms相当)」に設定するとする。ジッタバッファ制御手段22は、第1の実施形態と同様に所定の処理周期(例えば10ms)で取出処理を行う。
【0151】
所定の処理周期の時刻となり、ジッタバッファ制御手段22がPCM格納バッファ21からPCMデータを取り出す際、ジッタバッファ制御手段22は、PCM格納バッファ21の蓄積量が閾値「2」以上か否かを判定する。
【0152】
そして、PCM格納バッファ21の蓄積量が閾値「2」以上である場合、ジッタバッファ制御手段22は、その処理周期で、2回の処理周期分のPCMデータを取り出す。
【0153】
これにより、時間と共に受信ジッタバッファ11の遅延量が増加する場合でも、処理周期あたりの出力量を増加することができるので、遅延量の増加を防止することができる。
【0154】
第2の実施形態は、第1の実施形態と同様に、例えばPC等の情報処理装置に搭載されるファクシミリ通信装置を想定しているから、並列処理が可能である。ゆえに、1回の処理周期あたりに、2回以上の処理周期のPCMデータを出力することで、モデム信号の復調処理を並列に行うことができる。
【0155】
一方、PCM格納バッファ21の蓄積量が閾値「2」未満の場合、ジッタバッファ制御手段22は、今回の処理周期で、1回の処理周期分のPCMデータを取り出す。
【0156】
以上のように、第2の実施形態によれば、第1の実施形態の効果に加えて、1回の処理周期あたりに出力するデータ量を増やすことができるので、受信ジッタバッファの蓄積量の増加に伴う遅延を防止することができる。その結果、伝送遅延に伴うファクシミリ通信の失敗を低減することができる。
【0157】
(C)他の実施形態
第1及び第2の実施形態では、ファクシミリ通信装置における受信ジッタバッファ制御処理を例示したが、本発明は、モデムデータ通信にもそのまま適用することができる。
【0158】
また、FAX信号に限られることなく、音声信号による音声通信装置のジッタバッファ制御処理にも本発明を適用することができる。例えば、受信した音声信号を録音する音声録音装置に適用する場合、その処理周期期間の音声はかけてしまう可能性はあるが、そのまま音声を録音することができる。
【0159】
また、第1及び第2の実施形態では、入力信号がFAX信号や制御信号の場合を例示したが、入力信号が、例えば通信エラーが生じた場合に再度データ転送を指示するECM(エラーコレクトモード)信号である場合でも適用することができる。
【符号の説明】
【0160】
1…ファクシミリ通信装置、11…受信ジッタバッファ、21…PCM格納バッファ、
22…ジッタバッファ制御手段、
201…蓄積量管理部、202…最大シーケンス番号管理部、
203…最小シーケンス番号管理部、204…受信パケットシーケンス番号識別部、
205…投入動作制御部、206…取出動作制御部、
13…PCM復号手段、14…パケットロス補償手段、15…モデム信号復調手段、
16…ファクシミリデータ受信手段。
【技術分野】
【0001】
本発明は、ジッタバッファ制御装置、方法及びプログラム、並びに情報処理装置に関し、例えば、IPネットワークに接続する通信装置に適用し得るものである。
【背景技術】
【0002】
IPネットワークを介して、音声通信やファクシミリ通信等のPCM通信を行う通信装置は、IPパケットの揺らぎなどを吸収するための受信ジッタバッファ制御を行う必要がある。
【0003】
従来の受信ジッタバッファ制御方法としては、IPネットワークから非同期で到来するIPパケット中のPCMデータと付加情報を入力し、IPパケットヘッダ中のシーケンス番号順にPCMデータをバッファに蓄積し、一定処理周期(例えば10ms)でバッファに蓄積したPCMデータをシーケンス番号順に出力することとしている。
【0004】
ところで、IPネットワーク上で通信処理を行う送信側及び受信側では、クロックの基本周期(例えば、10ms)を完全同一にすることが困難であり、両者の間の精度差分が生じ得るため、受信ジッタバッファのアンダーランが生じ、該当するPCMデータが存在しないことがあり得る。
【0005】
また、IPネットワーク上でパケットロスが生じた場合には、受信パケットのシーケンス番号飛びが生じ、該当するPCMデータが存在しなくなることが生じ得る。
【0006】
このような場合、リニア信号が不連続となってしまうことを回避するために、従来の受信信号処理部は、過去に入力された信号を用いて、擬似のリニア信号を生成し、この擬似のリニア信号で補償(補間)した信号に基づいて、復調したディジタル信号や制御信号を出力するという方法がある。
【0007】
しかしながら、例えばIPネットワークを経由したファクシミリ通信において、擬似のリニア信号により補償(補間)された制御信号を復調する場合、過去の信号を用いて擬似のリニア信号を生成するため正確な制御信号を復調することができず、通信エラーが生じる場合がある。
【0008】
このような課題を解決するために、非特許文献1に開示された方法が用いられている。非特許文献1は、IPネットワークを経由したファクシミリ通信に関する技術が記載されている。
【0009】
非特許文献1の図表3.10で開示されるジッタバッファ制御方法は、受信ジッタバッファのアンダーランに伴うモデム信号受信エラーを防止する目的で、ファクシミリ通信の開始時に、受信ジッタバッファに一定量(例えば、140ms分)のデータを蓄積し、このデータ蓄積後に、受信ジッタバッファからのデータ出力を開始する技術である。
【0010】
このように、受信ジッタバッファに一定量のデータを蓄積してから、受信ジッタバッファのデータ出力を開始することにより、受信ジッタバッファのデータの枯渇を防ぐことができ、アンダーランを回避することができる。
【先行技術文献】
【非特許文献】
【0011】
【非特許文献1】情報通信ネットワーク産業協会、「IP−PBXにVoIP−TAを経由してファクシミリ端末を収容する際のVoIP−TA/ファクシミリ端末」ガイドライン、CES−Q006−1、2007年10月19日
【発明の概要】
【発明が解決しようとする課題】
【0012】
上述したように、アンダーランが発生して、パケットロス補償手段が、過去の入力信号を基にして擬似リニア信号を生成して挿入する場合、モデム信号の時間伸張が生じるので位相が崩れ、パケットロス期間以降においても総くずれとなり、正常なモデム信号を復調することができなくなり、受信エラーが生じてしまうことがある。
【0013】
送信側と受信側との処理周期の差分が大きい場合やIPネットワーク上の揺らぎが大きい場合にアンダーランが生じる可能性は高くなる。
【0014】
また、上述した非特許文献1に記載された技術を適用しても、次のような課題が生じ得る。
【0015】
送信側及び受信側のクロック信号の基本周期(例えば10ms)の精度差分が大きい場合や、IPネットワーク上で発生した揺らぎが大きい場合や、ファクシミリ通信時間が長い場合等には、受信ジッタバッファに蓄積しておいた一定量のデータを全て出力しきってしまうことがあり、受信ジッタバッファのアンダーランを完全に無くすことはできないという問題がある。
【0016】
また、受信ジッタバッファに蓄積するデータ量を大きくすると、受信ジッタバッファのアンダーラン発生を低減することができるが、受信ジッタバッファでの伝送遅延が大きくなってしまうという問題がある。
【0017】
例えば、ファクシミリ通信のプロトコルでは、送信側からの制御信号に対する応答に関して応答監視時間を設けている。そのため、この応答監視時間までに応答信号の返信が届かない場合、ファクシミリ通信は失敗してしまうことになる。
【0018】
さらに、IPネットワークを経由したファクシミリ通信の開始時のデータ蓄積量が小さい場合であっても、送信側と受信側とのクロック信号の基本周期(例えば10ms)の精度差分が大きいときや、IPネットワークで生じる揺らぎが大きいときや、ファクシミリ通信時間が長いときには、時間とともに受信ジッタバッファの蓄積量(遅延)が増加していくことがある。この場合には、伝搬遅延が大きくなり、ファクシミリ通信が失敗することがあるという問題がある。
【0019】
なお、上記課題は、IPネットワークを経由したファクシミリ通信だけでなく、IPネットワークを介して音声通信を行う場合にも生じ得る。
【0020】
そのため、送信側と受信側とのクロック信号の基本周期の精度差分が大きいことやネットワークの揺らぎ等により、受信ジッタバッファのアンダーランが発生しても、通信エラーを防ぐことができるジッタバッファ制御装置、方法及びプログラム、並びに情報処理装置が求められている。
【課題を解決するための手段】
【0021】
第1の本発明のジッタバッファ制御装置は、ネットワークからの入力パケットに含まれるデータを蓄積するバッファ手段と、所定の処理周期に従い、入力パケットに含まれるシーケンス番号に基づいて、入力データのバッファ手段への格納処理及びバッファ手段からの出力処理を制御するジッタバッファ制御手段とを備え、ジッタバッファ制御手段は、バッファ手段のアンダーランが発生した際に、そのパケットロス発生期間に相当する処理周期期間だけ空けて、バッファ手段にデータを格納するものであることを特徴とする。
【0022】
第2の本発明のジッタバッファ制御方法は、ネットワークからの入力パケットに含まれるデータを蓄積するバッファ手段を備えるジッタバッファ制御装置のジッタバッファ制御方法であって、ジッタバッファ制御手段が、所定の処理周期に従い、入力パケットに含まれるシーケンス番号に基づいて、入力データのバッファ手段への格納処理及びバッファ手段からの出力処理を制御するジッタバッファ制御工程を行い、ジッタバッファ制御手段が、バッファ手段のアンダーランが発生した際に、そのパケットロス発生期間に相当する処理周期期間だけ空けて、バッファ手段にデータを格納することを特徴とする。
【0023】
第3の本発明のジッタバッファ制御プログラムは、ネットワークからの入力パケットに含まれるデータを蓄積するバッファ手段を備えるジッタバッファ制御装置を、所定の処理周期に従い、入力パケットに含まれるシーケンス番号に基づいて、入力データのバッファ手段への格納処理及びバッファ手段からの出力処理を制御するジッタバッファ制御手段として機能させるものであり、ジッタバッファ制御手段が、バッファ手段のアンダーランが発生した際に、そのパケットロス発生期間に相当する処理周期期間だけ空けて、バッファ手段にデータを格納することを特徴とする。
【0024】
第4の本発明の情報処理装置は、第1の本発明のジッタバッファ制御装置を備えることを特徴とする。
【発明の効果】
【0025】
本発明によれば、送信側と受信側とのクロック信号の基本周期の精度差分が大きいことやネットワークの揺らぎ等により、受信ジッタバッファのアンダーランが発生しても、通信エラーを防ぐことができる。
【図面の簡単な説明】
【0026】
【図1】第1の実施形態のファクシミリ通信装置の内部構成を示す内部構成図である。
【図2】第1の実施形態のジッタバッファ制御手段のジッタバッファ制御処理の機能を説明する機能ブロック図である。
【図3】第1の実施形態のジッタバッファ制御処理の説明に係る変数を説明する説明図である。
【図4】第1の実施形態のジッタバッファ制御処理を説明する説明図である。
【図5】第1の実施形態のPCM格納バッファへの投入動作を示すフローチャートである。
【図6】通常のPCM格納バッファへの投入動作を説明する説明図である。
【図7】蓄積データがある場合にシーケンス番号飛びが生じたときのPCM格納バッファへの投入動作を説明する説明図である。
【図8】蓄積データがない場合にシーケンス番号飛びが生じたときのPCM格納バッファへの投入動作を説明する説明図である。
【図9】シーケンス番号戻りの場合のPCM格納バッファへの投入動作を説明する説明図である。
【図10】シーケンス番号戻りが過大な場合のPCM格納バッファへの投入動作を説明する説明図である。
【図11】第1の実施形態のPCM格納バッファからの取出動作を示すフローチャートである。
【図12】蓄積データがある場合の通常のPCM格納バッファからの取出動作を説明する説明図である。
【図13】蓄積データがなくなる場合の通常PCM格納バッファからの取出動作を説明する説明図である。
【図14】パケットロスが発生した場合のPCM格納バッファからの取出動作を説明する説明図である。
【図15】アンダーフローが発生した場合のPCM格納バッファからの取出動作を説明する説明図である。
【発明を実施するための形態】
【0027】
(A)第1の実施形態
以下では、本発明のジッタバッファ制御装置、方法及びプログラム、並びに情報処理装置の第1の実施形態を、図面を参照しながら説明する。
【0028】
第1の実施形態では、IPネットワークを経由したファクシミリ通信装置における受信ジッタバッファ制御方式に本発明を適用した実施形態を例示して説明する。
【0029】
なお、第1の実施形態では、ITU−T(国際電気通信連合の電気通信標準化部門)勧告のT.30に規格化されたファクシミリ通信を行う装置を例示するが、適用する規格は特に限定されるものではなく、その他の規格にも広く適用することができる。
【0030】
(A−1)第1の実施形態の構成
図1は、第1の実施形態のファクシミリ通信装置の内部構成を示す内部構成図である。
【0031】
第1の実施形態は、例えば、パーソナルコンピュータ(PC)やサーバ等のような情報処理装置に搭載するファクシミリ通信機能を有するものに適用する場合を例示する。
【0032】
図1において、第1の実施形態のファクシミリ通信装置1は、受信ジッタバッファ11、PCM復号手段13、パケットロス補償手段14、モデム信号復調手段15、ファクシミリデータ受信処理手段16を少なくとも有して構成される。
【0033】
受信ジッタバッファ11は、IPネットワークから非同期で到来するIPパケット中のPCMデータ及びシーケンス番号を取り出し、シーケンス番号順にPCMデータをPCM格納バッファ21に蓄積し、シーケンス番号順にPCM格納バッファ21からPCMデータを出力するものである。また受信ジッタバッファ11は、PCM格納バッファ21から出力したPCMデータをPCM復号手段13に与えるものである。
【0034】
受信ジッタジッタバッファ11は、当該受信ジッタバッファ11のアンダーランが発生した場合、そのアンダーランが発生した処理周期期間においては、受信ジッタバッファ11以降の信号処理を実行させないようにするものである。つまり、アンダーランが発生している処理周期期間において、受信ジッタバッファ11は、PCMデータの出力を停止させる。
【0035】
このように、アンダーランが発生した処理周期期間においては、PCMデータの出力を停止することで、モデム信号の復調をさせないようにすることができるので、正常な復調が可能となる。
【0036】
受信ジッタバッファ11は、図1に示すように、PCM格納バッファ21と、ジッタバッファ制御手段22とを有する。
【0037】
PCM格納バッファ21は、IPネットワークから入力されたIPパケット中に含まれるPCMデータを格納するものである。PCM格納バッファ21の処理周期(格納単位)は、特に限定されないが、第1の実施形態では例えば10ms分のPCMデータを1処理周期とした場合を例示する。また、PCM格納バッファ21のジッタバッファサイズは、特に限定されない。
【0038】
ジッタバッファ制御手段22は、PCMデータのPCM格納バッファ21への投入処理及びPCM格納バッファ21からの取出処理を制御するものである。
【0039】
ジッタバッファ制御手段22は、PCM格納バッファ21からのPCMデータの取出処理を、所定の処理周期を基準にして制御する。
【0040】
ジッタバッファ制御手段22は、アンダーランが発生している処理周期期間において、PCMデータの出力を停止する。
【0041】
また、ジッタバッファ制御手段22は、PCM格納バッファ21に蓄積されているPCMデータの蓄積量と、格納されている最小シーケンス番号及び最大シーケンス番号とを管理しており、これらのPCM蓄積量と最小シーケンス番号及び最大シーケンス番号とを用いて、PCM格納バッファ21への投入処理及びPCM格納バッファ21からの取出処理を行う。
【0042】
さらに、ジッタバッファ制御手段22は、PCM格納バッファ21からPCMデータを取り出す際、パケットロスが発生している場合には、パケットロス有りを示すパケットロス有情報をパケットロス補償手段14に与え、パケットロスが発生していない場合には、パケットロス無を示すパケットロス無情報をパケットロス補償手段14に与える。
【0043】
図2は、ジッタバッファ制御手段22によるジッタバッファ制御処理の機能を示す機能ブロック図である。このジッタバッファ制御処理は、ソフトウェア処理により実現可能なものである。
【0044】
図2に示すジッタバッファ制御処理としては、蓄積量管理部201、最大シーケンス番号管理部202、最小シーケンス番号管理部203、受信パケットシーケンス番号識別部204、投入動作制御部205、取出動作制御部206を有する。
【0045】
蓄積量管理部201は、PCM格納バッファ21に蓄積されるPCMデータの蓄積量を管理するものである。例えば、PCM格納バッファ21が10ms分のPCMデータを1処理単位として格納する場合、蓄積量管理部201は、処理単位(10ms単位)のPCMデータを蓄積量として管理する。
【0046】
最大シーケンス番号管理部202は、PCM格納バッファ21に格納されているPCMデータのうち、PCMデータに対応するIPパケットの最大のシーケンス番号を保持するものである。
【0047】
最小シーケンス番号管理部203は、PCM格納バッファ21に格納されているPCMデータのうち、PCMデータに対応するIPパケットの最小のシーケンス番号を保持するものである。
【0048】
受信パケットシーケンス番号識別部204は、IPネットワークから入力されたIPパケットのヘッダ情報からシーケンス番号を抽出し、この受信IPパケットのシーケンス番号を識別するものである。
【0049】
投入動作制御部205は、IPネットワークから受信したIPパケットに含まれるPCMデータをPCM格納バッファ21に格納する投入動作を制御するものである。
【0050】
取出動作制御部206は、PCM格納バッファ21に格納されているPCMデータをPCM格納バッファ21から取り出す取出動作を制御するものである。
【0051】
投入動作制御部205及び取出動作制御部206の処理内容については、後述する動作の項で詳細に説明する。
【0052】
PCM復号手段13は、受信ジッタバッファ11から入力されたPCMデータをリニア信号へ復号し、パケットロス補償手段14に与えるものである。PCM復号手段13の符号化(復号)方式は、特に限定されるものではないが、例えばG.711に規格化された符号化(復号)方式に従って復号処理を行う。
【0053】
パケットロス補償手段14は、ジッタバッファ制御手段22からパケットロス有無情報を受け取り、パケットロス無を示す情報を受けた場合には、PCM復号手段13から入力されるリニア信号を内部に蓄積しつつ、入力信号をそのままモデム信号復調手段15に与える。また、パケットロス補償手段14は、パケットロス有を示す情報を受けた場合には、過去に入力された信号に基づいて擬似のリニア信号を生成してモデム信号復調手段15に与える。
【0054】
モデム信号復調手段15は、一般的にはDCE(Data Circuit-Terminating Equipment:データ回線終端装置)と呼ばれる終端装置に該当する。モデム信号復調手段15は、パケットロス補償手段14からリニア信号を入力して、ディジタルデータを復調し、復調したディジタルデータ及び制御データをファクシミリデータ受信処理手段16に与えるものである。
【0055】
ファクシミリデータ受信処理手段16は、一般的にはDTE(Data Terminal Equipment:データ端末装置)と呼ばれる装置に該当する。ファクシミリデータ受信処理手段16は、モデム信号復調手段15から復調されたディジタルデータ及び制御データを入力し、ファクシミリ通信処理を行うものである。
【0056】
(A−2)第1の実施形態の動作
次に、第1の実施形態の受信ジッタバッファ11におけるジッタバッファ制御処理の動作を、図面を参照しながら説明する。
【0057】
また、以下の動作説明では、例えば、IPネットワークから入力されるIPパケットのペイロードサイズは20msであり、また受信ジッタバッファ11は、PCM格納バッファ21への投入処理又は取出処理を、例えば10ms周期で行う場合を説明する。
【0058】
つまり、PCM格納バッファ21は10ms単位分のPCMデータを格納し、又10ms単位分のPCMデータを出力する場合を想定して説明する。
【0059】
図3は、以下の動作説明に使用する変数名を説明する説明図である。また、図4は、受信ジッタバッファ11におけるPCM格納バッファ21の格納状態と、ジッタバッファ制御手段22の管理とについて変数を用いて説明する説明図である。
【0060】
図4(A)において、PCM格納バッファ21は、10ms単位分のPCMデータを格納単位としており、図4のPCM格納バッファ21に示される各セルが処理単位毎のPCMデータであることを示す。
【0061】
図4(A)のPCM格納バッファ21において、「empty」と示されたセルは、当該セルは空き状態であることを示す。また、図4(A)において、各セル中の数字は、PCMデータを有するIPパケットのシーケンス番号を示しており、例えば、「13−1」のうち「13」はシーケンス番号であり、「1」は当該シーケンス番号のサブ番号である。
【0062】
これは、第1の実施形態では、IPパケットのペイロードサイズ(20ms)と、PCM格納バッファ21の処理単位(10ms)が異なる場合を想定しているので、便宜上サブ番号を用いるものとする。
【0063】
PCM格納バッファ21は、基本的には、先に入力されたPCMデータを先に取り出す先入れ先出し(FIFO)構造のバッファである。しかし、PCM格納バッファ21は、ジッタバッファ制御手段22の制御を受けて、格納すべきPCMデータを格納すべき位置に格納する。
【0064】
ジッタバッファ制御手段22は、PCM格納バッファ21に格納されているPCMデータに係るシーケンス番号のうち、最大シーケンス番号及び最小シーケンス番号を管理している。また、ジッタバッファ制御手段22は、受信パケットのシーケンス番号を認識し、最大シーケンス番号及び最小シーケンス番号と、受信パケットのシーケンス番号に基づいて、PCMバッファバッファ21の格納すべき位置に、受信パケットに含まれるPCMデータを格納するようにする。
【0065】
例えば、図4(A)の場合、ジッタバッファ制御手段22は、PCM格納バッファ21には、PCMデータ「11−2」、「12−1」、「12−2」、「13−1」、「13−2」が格納されている状態である。このとき、ジッタバッファ制御手段22は、PCM格納バッファ21に格納されている最小シーケンス番号として「sn_smallest=11」と、最大シーケンス番号として「sn_biggest=13」を保持する。
【0066】
また、このような状態で、IPネットワークからシーケンス番号「15」を持つIPパケットが受信されると、ジッタバッファ制御手段22は、受信パケットのシーケンス番号として「sn_RTP=15」を識別する。
【0067】
この場合、PCM格納バッファ21に格納されている最大シーケンス番号は「13」であるから、本来であれば、シーケンス番号「14」のIPパケットが入力されるべきである。しかし、例えばIPネットワーク上でパケットロスが発生してしまい、シーケンス番号「15」が入力されたケースが、図4(A)に示すような状況である。
【0068】
このとき、従来の受信ジッタバッファは、先入れ先出しが基本であるから、PCMデータ「13−2」の直ぐ後(図4では直上)の位置にPCMデータ「15−1」を蓄積し、さらに直ぐ後の位置にPCMデータ「15−2」を蓄積する。
【0069】
しかし、第1の実施形態では、図4(B)に示すように、ジッタバッファ制御手段21は、本来格納されるべきシーケンス番号「14」のPCMデータ「14−1」、「14−2」の格納位置だけ空けて、その後の位置にPCMデータ「15−1」を格納し、さらに直ぐ後の位置にPCMデータ「15−2」を格納するようにする。
【0070】
このようにすることで、ジッタバッファ制御手段21は、最大シーケンス番号及び最小シーケンス番号を管理し、入力されたIPパケットのシーケンス番号を識別することで、本来格納されるべき格納位置にPCMデータを格納することができる。
【0071】
(A−2−1)PCM格納バッファ21への投入動作
図5は、ジッタバッファ制御手段22によるPCM格納バッファ21への投入処理の動作を示すフローチャートである。PCM格納バッファ21への投入処理は、ジッタバッファ制御手段22の投入動作制御部205が主に行う。
【0072】
まず、受信ジッタバッファ11におけるPCM格納バッファ21への通常の投入動作について図5及び図6を参照しながら説明する。
【0073】
図6は、PCM格納バッファ21への通常の投入処理を説明する説明図である。
【0074】
図6(A)において、PCM格納バッファ21には、PCMデータ「13−2」〜「15−2」が格納されており、ジッタバッファ制御手段22は、最小シーケンス番号「sn_smallest=13」及び最大シーケンス番号「sn_biggest=15」を保持する。
【0075】
この状態で、IPネットワークからシーケンス番号「16」のIPパケットが受信されると(ステップS101)、ジッタバッファ制御手段22は、受信パケットのシーケンス番号「sn_RTP=16」を識別する(ステップS102)。
【0076】
この場合、ジッタバッファ制御手段22は、最大シーケンス番号が「sn_biggest=15」であり、今回受信したIPパケットのシーケンス番号が「sn_RTP=16」であり、「sn_RTP=sn_biggest+1」であるから連番であることを判断する(ステップS103)。
【0077】
従って、ジッタバッファ制御手段22は、図6(B)に示すように、PCMデータ「15−2」の後の格納位置にPCMデータ「16−1」を格納し、さらにその後にPCMデータ「16−2」を格納する(ステップS104)。
【0078】
また、PCMデータ「16−1」及び「16−2」を格納することにより、ジッタバッファ制御手段22は、最大シーケンス番号を「sn_biggest=sn_RTP=16」に更新する(ステップS105)。
【0079】
次に、例えば、IPネットワーク上でパケットロスが発生し、本来到着すべきシーケンス番号のIPパケットが到着せず、シーケンス番号飛びが生じたときのPCM格納バッファ21への投入処理を図5及び図7を参照しながら説明する。
【0080】
図7は、シーケンス番号飛びが生じた場合のPCM格納バッファ21への投入処理を説明する説明図である。
【0081】
図7(A)において、PCM格納バッファ21には、PCMデータ「13−2」〜「14−2」が格納されており、ジッタバッファ制御手段22は、最小シーケンス番号「sn_smallest=13」及び最大シーケンス番号「sn_biggest=14」を保持する。
【0082】
この状態で、IPネットワークからシーケンス番号「16」のIPパケットが受信されると(ステップS101)、ジッタバッファ制御手段22は、受信パケットのシーケンス番号「sn_RTP=16」を識別する(ステップS102)。
【0083】
この場合、ジッタバッファ制御手段22は、最大シーケンス番号が「sn_biggest=14」であり、今回受信したIPパケットのシーケンス番号が「sn_RTP=16」であり、「sn_RTP>sn_biggest+1」である(ステップS103)から、シーケンス番号「15」を持つIPパケットが入力されていないと判断する。
【0084】
また、この場合、ジッタバッファ制御手段21は、蓄積量が「0(空)」でないことを判断する(ステップS106)。
【0085】
従って、ジッタバッファ制御手段22は、図7(B)に示すように、シーケンス番号「15」のPCMデータ「15−1」及び「15−2」の格納位置だけ空けて、その後の格納位置にシーケンス番号「16」のPCMデータ「16−1」を格納し、さらにその後の格納位置に及び「16−2」を格納する(ステップS107)。
【0086】
また、PCMデータ「16−1」及び「16−2」を格納することにより、ジッタバッファ制御手段22は、最大シーケンス番号を「sn_biggest=sn_RTP=16」に更新する(ステップS108)。
【0087】
次に、例えば、IPネットワーク上で重度のパケットロスが発生した等により、PCM格納バッファ21に格納されるPCMデータが全て出力されたときの投入処理を、図5及び図8を参照しながら説明する。
【0088】
図8は、PCM格納バッファ21の格納データがない状態で、シーケンス番号飛びが生じた場合のPCM格納バッファ21への投入処理を説明する説明図である。
【0089】
図8(A)において、PCM格納バッファ21には、格納されているPCMデータはない。
【0090】
この場合、ジッタバッファ制御手段22は、PCM格納バッファ21から最後に出力されたPCMデータのシーケンス番号を、最小シーケンス番号「sn_smallest=12」として保持しておく。また、ジッタバッファ制御手段22は、PCM格納バッファ21に最後に格納されたPCMデータのシーケンス番号を、最大シーケンス番号「sn_biggest=12」として保持しておく。
【0091】
図8(A)では、ジッタバッファ制御手段22は、最小シーケンス番号「sn_smallest=12」及び最大シーケンス番号「sn_biggest=12」として管理する。
【0092】
この状態で、IPネットワークからシーケンス番号「16」のIPパケットが受信されると(ステップS101)、ジッタバッファ制御手段22は、受信パケットのシーケンス番号「sn_RTP=16」を識別する(ステップS102)。
【0093】
この場合、ジッタバッファ制御手段22は、最大シーケンス番号が「sn_biggest=12」であり、今回受信したIPパケットのシーケンス番号が「sn_RTP=16」であり、「sn_RTP>sn_biggest+1」を判断する(ステップS103)。
【0094】
また、ジッタバッファ制御手段22は、蓄積量が「0(空)」であることを判断し(ステップS106)最小シーケンス番号「sn_smallest=12」を1だけ加えて、最小シーケンス番号を「sn_smallest=13」とする(ステップS109)。
【0095】
そして、ジッタバッファ制御手段22は、図8(B)に示すように、シーケンス番号「16」のPCMデータ「16−1」及び「16−2」の格納位置だけ空けて、その後の格納位置にシーケンス番号「16」のPCMデータ「16−1」を格納し、さらにその後の格納位置に及び「16−2」を格納する(ステップS110)。
【0096】
また、PCMデータ「16−1」及び「16−2」を格納することにより、ジッタバッファ制御手段22は、最大シーケンス番号を「sn_biggest=sn_RTP=16」に更新する(ステップS111)。
【0097】
次に、シーケンス番号戻りが生じた場合の投入動作を、図5及び図9を参照しながら説明する。
【0098】
図9は、シーケンス番号戻りが生じた場合のPCM格納バッファ21への投入動作を説明する説明図である。
【0099】
図9(A)において、PCM格納バッファ21には、PCMデータ「13−2」、「15−1」〜「16−2」が格納されており、ジッタバッファ制御手段22は、最小シーケンス番号「sn_smallest=13」及び最大シーケンス番号「sn_biggest=16」を保持する。
【0100】
この状態で、IPネットワークからシーケンス番号「14」のIPパケットが受信されると(ステップS101)、ジッタバッファ制御手段22は、受信パケットのシーケンス番号「sn_RTP=14」を識別する(ステップS102)。
【0101】
この場合、ジッタバッファ制御手段22は、最大シーケンス番号が「sn_biggest=16」であり、今回受信したIPパケットのシーケンス番号が「sn_RTP=14」であり、「sn_RTP≦sn_biggest」である(ステップS103)から、シーケンス番号飛びをしてシーケンス番号「15」及び「16」のPCMデータを投入した後に、シーケンス番号「14」のIPパケットが到着したものと判断する。
【0102】
また、ジッタバッファ制御手段21は、最小シーケンス番号が「sn_smallest=13」であり、今回受信したIPパケットのシーケンス番号が「sn_RTP=14」であり、「sn_RTP≧sn_smallest」であることを判断する(ステップS112)。
【0103】
従って、ジッタバッファ制御手段22は、図9(B)に示すように、シーケンス番号「14」のPCMデータ「14−1」及び「14−2」を、PCMデータ「13−2」の後の該当位置に格納する(ステップS113)。
【0104】
なお、このとき、ジッタバッファ制御手段22は、最大シーケンス番号の更新を行なわない(ステップS114)。
【0105】
次に、過大なシーケンス番号戻りが生じた場合の投入動作を、図5及び図10を参照しながら説明する。
【0106】
図10は、過大なシーケンス番号戻りが生じた場合のPCM格納バッファ21への投入動作を説明する説明図である。
【0107】
図10(A)において、PCM格納バッファ21には、PCMデータ「14−2」〜「16−2」が格納されており、ジッタバッファ制御手段22は、最小シーケンス番号「sn_smallest=14」及び最大シーケンス番号「sn_biggest=16」を保持する。
【0108】
この状態で、IPネットワークからシーケンス番号「13」のIPパケットが受信されると(ステップS101)、ジッタバッファ制御手段22は、受信パケットのシーケンス番号「sn_RTP=13」を識別する(ステップS102)。
【0109】
この場合、ジッタバッファ制御手段22は、最大シーケンス番号が「sn_biggest=16」であり、今回受信したIPパケットのシーケンス番号が「sn_RTP=13」であり、「sn_RTP≦sn_biggest」である(ステップS103)ことを判断する。
【0110】
また、ジッタバッファ制御手段21は、最小シーケンス番号が「sn_smallest=14」であり、今回受信したIPパケットのシーケンス番号が「sn_RTP=13」であり、「sn_RTP≧sn_smallest」でないことを判断する(ステップS112)。
【0111】
この場合、シーケンス番号「13」のIPパケットが過大に遅れて到着したものであるから、ジッタバッファ制御手段22は、図10(B)に示すように、シーケンス番号「13」のPCMデータ「13−1」及び「13−2」を廃棄する(ステップS115)。
【0112】
勿論、このとき、ジッタバッファ制御手段22は、最大シーケンス番号の更新を行なわない(ステップS116)。
【0113】
(A−2−2)PCM格納バッファ21からの取出動作
図11は、ジッタバッファ制御手段22によるPCM格納バッファ21からの取出処理の動作を示すフローチャートである。PCM格納バッファ21からの取出処理は、ジッタバッファ制御手段22の取出動作制御部206が主に行う。
【0114】
まず、受信ジッタバッファ11におけるPCM格納バッファ21からの通常の取出動作について図11及び図12を参照しながら説明する。
【0115】
図12は、PCM格納バッファ21からの通常の取出処理を説明する説明図である。
【0116】
図12(A)において、PCM格納バッファ21には、PCMデータ「11−1」〜「13−2」が格納されており、ジッタバッファ制御手段22は、最小シーケンス番号「sn_smallest=11」及び最大シーケンス番号「sn_biggest=13」を保持する。
【0117】
PCM格納バッファ21からのPCMデータの取出周期を管理しておりPCMデータの取出時刻になると(ステップS201)、ジッタバッファ制御手段11は、最小シーケンス番号「sn_smallest」に基づいて、対応するPCMデータの出力を行う。
【0118】
このとき、ジッタバッファ制御手段11は、PCM格納バッファ21から取り出すPCMデータが「empty」であるか否かを判断すると共に(ステップS202)、「サブ番号<2」又は「蓄積量=1」であるか否かを判断する(ステップS203)。
【0119】
図12(A)の場合、PCM格納バッファ21から取り出すPCMデータはPCMデータ「11−1」であって「empty」ではなく、かつ、シーケンス番号のサブ番号が「サブ番号<2」であるから、ジッタバッファ制御手段22は、図12(B)に示すように、PCM格納バッファ21からPCMデータ「11−1」を取り出して、このPCMデータ「11−1」をPCM復号手段13に与えて復号させる(ステップS204)。
【0120】
また、ジッタバッファ制御手段22は、「sn_smallest」を前値保持する(ステップS205)。
【0121】
次に、PCM格納バッファ21に蓄積されているPCMデータが1個である場合のPCM格納バッファ21からの取出動作について図11及び図13を参照しながら説明する。
【0122】
図13は、蓄積量が「1」である場合のPCM格納バッファ21からの取出処理を説明する説明図である。
【0123】
図13(A)において、PCM格納バッファ21には、PCMデータ「11−2」が格納されており、このPCMデータを取り出した後は、PCM格納バッファ21の蓄積量が「0(空)」となる。
【0124】
このとき、ジッタバッファ制御手段22は、最小シーケンス番号「sn_smallest=11」及び最大シーケンス番号「sn_biggest=11」を保持する。
【0125】
図13(A)において、PCMデータの取出時刻になると(ステップS201)、ジッタバッファ制御手段11は、PCM格納バッファ21から取り出すPCMデータがPCMデータ「11−2」であって「empty」ではなく(ステップS202)、「サブ番号<2」又は「蓄積量=1」であるか否かを判断する(ステップS203)。
【0126】
この場合、ジッタバッファ制御手段22は、図13(B)に示すように、PCM格納バッファ21からPCMデータ「11−2」を取り出して、このPCMデータ「11−2」をPCM復号手段13に与えて復号させる(ステップS204)。
【0127】
また、PCMデータ「11−2」を取り出した後、ジッタバッファ制御手段22は、最小シーケンス番号の保持を行う(ステップS205)。
【0128】
次に、IPネットワーク上でパケットロスが発生した等の場合のPCM格納バッファ21からの取出動作について図11及び14を参照しながら説明する。
【0129】
図14は、パケットロスが発生した場合のPCM格納バッファ21からの取出処理を説明する説明図である。
【0130】
図14(A)において、PCM格納バッファ21には、PCMデータ「11−1」及び「11−2」がないが、PCMデータ「12−1」〜「13−2」が格納されており、ジッタバッファ制御手段22は、最小シーケンス番号「sn_smallest=11」及び最大シーケンス番号「sn_biggest=13」を保持する。
【0131】
図14(A)において、PCMデータの取出時刻になると(ステップS201)、ジッタバッファ制御手段11は、PCM格納バッファ21から取り出すPCMデータを見ると、最小シーケンス番号「sn_smallest=11」に対応するPCMデータがなく、「empty」であることを判断する(ステップS202)。
【0132】
この場合、ジッタバッファ制御手段22は、PCM格納バッファ21に蓄積される蓄積量があるか否かを判断する(ステップS208)。この場合、PCM格納バッファ21には、PCMデータ「12−1」〜「13−2」が格納されているから、ジッタバッファ制御手段22は、蓄積量があると判断する。
【0133】
ジッタバッファ制御手段22は、パケットロス補償手段14に対して、パケットロス有を示す情報をパケットロス補償手段14に与えて、この処理周期の期間だけ、パケットロス補償処理をさせる(ステップS209)。これにより、この処理周期の期間だけ、パケットロス補償手段14は、擬似リニア信号を形成することになるが、時間伸縮は生じないようにできる。そのため、この処理周期期間では、モデム信号の受信エラーが生じる可能性があるが、この処理周期期間以降は、正常に復調させることができる。
【0134】
なお、第1の実施形態では、ステップ209でパケットロス補償処理を行なうこととしたが、パケットロス補償処理を行わないようにしてもよい。
【0135】
また、ジッタバッファ制御手段22は、PCMデータのシーケンス番号のサブ番号を見ており、同一シーケンス番号のPCMデータを全て取り出した場合、最小シーケンス番号を「sn_smallest=sn_smallest+1」となるように更新する(ステップS211)。
【0136】
なお、ここで必要に応じて、「サブ番号=2」であるか否かを判断し(ステップS210)、サブ番号=2である場合には、最小シーケンス番号を「sn_smallest=sn_smallest+1」とし(ステップS211)、そうでない場合には、「sn_smallest保持」をする(ステップS212)。
【0137】
次に、受信ジッタバッファ11のアンダーランが発生した場合の取出動作を、図11及び図15を参照しながら説明する。
【0138】
図15は、受信ジッタバッファ11のアンダーランが発生した場合のPCM格納バッファ21からの取出処理を説明する説明図である。
【0139】
図15(A)において、PCM格納バッファ21には、PCMデータが存在しておらず、ジッタバッファ制御手段22は、最小シーケンス番号「sn_smallest=11」及び最大シーケンス番号「sn_biggest=11」を保持するものとする。
【0140】
図15(A)において、PCMデータの取出時刻になると(ステップS201)、ジッタバッファ制御手段11は、PCM格納バッファ21から取り出すPCMデータを見ると、最小シーケンス番号「sn_smallest=11」に対応するPCMデータがなく、「empty」であることを判断する(ステップS202)。
【0141】
この場合、ジッタバッファ制御手段22は、PCM格納バッファ21に蓄積される蓄積量があるか否かを判断する(ステップS208)。この場合、PCM格納バッファ21には、PCMデータが存在しておらず、蓄積量がなしと判断する。
【0142】
このとき、ジッタバッファ制御手段22は、取出処理を停止し(ステップS213)、最小シーケンス番号を保持したままとする(ステップS214)。
【0143】
(A−3)第1の実施形態の効果
以上のように、第1の実施形態によれば、送信側と受信側との周期差分や、ネットワークの揺らぎに伴い、受信ジッタバッファのアンダーランが発生しても、受信ジッタバッファ出力以降の動作を停止させるので、モデム信号の途中に擬似リニア信号の挿入することを回避できるので、受信ジッタバッファのアンダーランに伴うモデム信号の受信エラーを防止することができる。
【0144】
また、第1の実施形態によれば、ファクシミリ通信開始時に受信ジッタバッファに初期遅延を挿入する必要がないので、伝搬遅延に伴うファクシミリ通信の失敗を低減することができる。
【0145】
さらに、第1の実施形態によれば、パケットロス発生時には、パケットロス発生部分のみ擬似リニア信号を置き換えるようにしたので、モデム信号の時間伸縮は生じない。その結果、パケットロス発生部分以外のモデム信号は正常に受信できることが期待でき、受信エラーを低減することができる。
【0146】
(B)第2の実施形態
次に、本発明のジッタバッファ制御装置、方法及びプログラム、並びに情報処理装置の第2の実施形態を図面を参照しながら説明する。
【0147】
第2の実施形態が第1の実施形態と異なる点は、ジッタバッファ制御手段がPCM格納バッファからPCMデータを取り出す取出動作である。
【0148】
第1の実施形態では、PCM格納バッファから、所定の処理周期(例えば10ms)毎に、1回の取出処理を行う場合を説明した。
【0149】
これに対して、第2の実施形態では、PCMデータの取り出し時点で、PCM格納バッファの蓄積量が閾値以上の場合に、1回の処理周期期間に、2回以上の取出処理を行う。つまり、1回の処理周期期間に、2以上の処理周期分のPCMデータを取り出す。
【0150】
例えば、PCM格納バッファ21の蓄積量に対する閾値を「2(20ms相当)」に設定するとする。ジッタバッファ制御手段22は、第1の実施形態と同様に所定の処理周期(例えば10ms)で取出処理を行う。
【0151】
所定の処理周期の時刻となり、ジッタバッファ制御手段22がPCM格納バッファ21からPCMデータを取り出す際、ジッタバッファ制御手段22は、PCM格納バッファ21の蓄積量が閾値「2」以上か否かを判定する。
【0152】
そして、PCM格納バッファ21の蓄積量が閾値「2」以上である場合、ジッタバッファ制御手段22は、その処理周期で、2回の処理周期分のPCMデータを取り出す。
【0153】
これにより、時間と共に受信ジッタバッファ11の遅延量が増加する場合でも、処理周期あたりの出力量を増加することができるので、遅延量の増加を防止することができる。
【0154】
第2の実施形態は、第1の実施形態と同様に、例えばPC等の情報処理装置に搭載されるファクシミリ通信装置を想定しているから、並列処理が可能である。ゆえに、1回の処理周期あたりに、2回以上の処理周期のPCMデータを出力することで、モデム信号の復調処理を並列に行うことができる。
【0155】
一方、PCM格納バッファ21の蓄積量が閾値「2」未満の場合、ジッタバッファ制御手段22は、今回の処理周期で、1回の処理周期分のPCMデータを取り出す。
【0156】
以上のように、第2の実施形態によれば、第1の実施形態の効果に加えて、1回の処理周期あたりに出力するデータ量を増やすことができるので、受信ジッタバッファの蓄積量の増加に伴う遅延を防止することができる。その結果、伝送遅延に伴うファクシミリ通信の失敗を低減することができる。
【0157】
(C)他の実施形態
第1及び第2の実施形態では、ファクシミリ通信装置における受信ジッタバッファ制御処理を例示したが、本発明は、モデムデータ通信にもそのまま適用することができる。
【0158】
また、FAX信号に限られることなく、音声信号による音声通信装置のジッタバッファ制御処理にも本発明を適用することができる。例えば、受信した音声信号を録音する音声録音装置に適用する場合、その処理周期期間の音声はかけてしまう可能性はあるが、そのまま音声を録音することができる。
【0159】
また、第1及び第2の実施形態では、入力信号がFAX信号や制御信号の場合を例示したが、入力信号が、例えば通信エラーが生じた場合に再度データ転送を指示するECM(エラーコレクトモード)信号である場合でも適用することができる。
【符号の説明】
【0160】
1…ファクシミリ通信装置、11…受信ジッタバッファ、21…PCM格納バッファ、
22…ジッタバッファ制御手段、
201…蓄積量管理部、202…最大シーケンス番号管理部、
203…最小シーケンス番号管理部、204…受信パケットシーケンス番号識別部、
205…投入動作制御部、206…取出動作制御部、
13…PCM復号手段、14…パケットロス補償手段、15…モデム信号復調手段、
16…ファクシミリデータ受信手段。
【特許請求の範囲】
【請求項1】
ネットワークからの入力パケットに含まれるデータを蓄積するバッファ手段と、
所定の処理周期に従い、上記入力パケットに含まれるシーケンス番号に基づいて、入力データの上記バッファ手段への格納処理及び上記バッファ手段からの出力処理を制御するジッタバッファ制御手段とを備え、
上記ジッタバッファ制御手段は、上記バッファ手段のアンダーランが発生した際に、そのパケットロス発生期間に相当する処理周期期間だけ空けて、上記バッファ手段にデータを格納するものである
ことを特徴とするジッタバッファ制御装置。
【請求項2】
上記ジッタバッファ制御手段が、データの上記バッファ手段における格納位置をシーケンス番号の並び順に対応させて管理しており、入力データのシーケンス番号の対応する格納位置に、当該入力データを格納することを特徴とする請求項1に記載のジッタバッファ制御装置。
【請求項3】
上記ジッタバッファ制御手段が、シーケンス番号の並び順に対応させて上記バッファ手段に格納されたデータを、先に格納されたデータから順に出力するものであり、当該処理周期で処理する格納位置にデータが格納されていない場合、当該処理周期においてデータの出力を行わないようにすることを特徴とする請求項1又は2に記載のジッタバッファ制御装置。
【請求項4】
上記ジッタバッファ制御手段が、当該処理周期で上記バッファ手段のデータ蓄積量が閾値を超えている場合、複数の処理周期単位のデータを出力することを特徴とする請求項1〜3のいずれかに記載のジッタバッファ制御装置。
【請求項5】
上記ジッタバッファ制御手段が、
上記バッファ手段に蓄積されるデータの蓄積量を管理する蓄積量管理部と、
上記入力パケットのシーケンス番号を識別する入力シーケンス番号識別部と、
上記バッファ手段に蓄積されるデータのうち最小シーケンス番号を管理する最小シーケンス番号管理部と、
上記バッファ手段に蓄積されるデータのうち最大シーケンス番号を管理する最大シーケンス番号管理部と、
上記入力データの上記バッファ手段への投入の際に、当該入力データの入力シーケンス番号と、上記最大シーケンス番号と、上記最小シーケンス番号との比較により、当該入力シーケンス番号に応じた格納位置に当該入力データを格納させる投入動作制御部と、
上記バッファ手段からの蓄積データの取出の際に、当該処理周期で処理する上記バッファ手段の格納位置のデータ格納状態と、上記最小シーケンス番号と、上記蓄積量とに基づいて、上記バッファ手段からのデータの出力処理を行う取出動作制御部と
を有することを特徴とする請求項1〜4のいずれかに記載のジッタバッファ制御装置。
【請求項6】
ネットワークからの入力パケットに含まれるデータを蓄積するバッファ手段を備えるジッタバッファ制御装置のジッタバッファ制御方法であって、
ジッタバッファ制御手段が、所定の処理周期に従い、上記入力パケットに含まれるシーケンス番号に基づいて、入力データの上記バッファ手段への格納処理及び上記バッファ手段からの出力処理を制御するジッタバッファ制御工程を行い、
上記ジッタバッファ制御手段が、上記バッファ手段のアンダーランが発生した際に、そのパケットロス発生期間に相当する処理周期期間だけ空けて、上記バッファ手段にデータを格納する
ことを特徴とするジッタバッファ制御方法。
【請求項7】
ネットワークからの入力パケットに含まれるデータを蓄積するバッファ手段を備えるジッタバッファ制御装置を、
所定の処理周期に従い、上記入力パケットに含まれるシーケンス番号に基づいて、入力データの上記バッファ手段への格納処理及び上記バッファ手段からの出力処理を制御するジッタバッファ制御手段として機能させるものであり、
上記ジッタバッファ制御手段が、上記バッファ手段のアンダーランが発生した際に、そのパケットロス発生期間に相当する処理周期期間だけ空けて、上記バッファ手段にデータを格納することを特徴とするジッタバッファ制御プログラム。
【請求項8】
請求項1〜5のいずれかに記載のジッタバッファ制御装置を備えることを特徴とする情報処理装置。
【請求項1】
ネットワークからの入力パケットに含まれるデータを蓄積するバッファ手段と、
所定の処理周期に従い、上記入力パケットに含まれるシーケンス番号に基づいて、入力データの上記バッファ手段への格納処理及び上記バッファ手段からの出力処理を制御するジッタバッファ制御手段とを備え、
上記ジッタバッファ制御手段は、上記バッファ手段のアンダーランが発生した際に、そのパケットロス発生期間に相当する処理周期期間だけ空けて、上記バッファ手段にデータを格納するものである
ことを特徴とするジッタバッファ制御装置。
【請求項2】
上記ジッタバッファ制御手段が、データの上記バッファ手段における格納位置をシーケンス番号の並び順に対応させて管理しており、入力データのシーケンス番号の対応する格納位置に、当該入力データを格納することを特徴とする請求項1に記載のジッタバッファ制御装置。
【請求項3】
上記ジッタバッファ制御手段が、シーケンス番号の並び順に対応させて上記バッファ手段に格納されたデータを、先に格納されたデータから順に出力するものであり、当該処理周期で処理する格納位置にデータが格納されていない場合、当該処理周期においてデータの出力を行わないようにすることを特徴とする請求項1又は2に記載のジッタバッファ制御装置。
【請求項4】
上記ジッタバッファ制御手段が、当該処理周期で上記バッファ手段のデータ蓄積量が閾値を超えている場合、複数の処理周期単位のデータを出力することを特徴とする請求項1〜3のいずれかに記載のジッタバッファ制御装置。
【請求項5】
上記ジッタバッファ制御手段が、
上記バッファ手段に蓄積されるデータの蓄積量を管理する蓄積量管理部と、
上記入力パケットのシーケンス番号を識別する入力シーケンス番号識別部と、
上記バッファ手段に蓄積されるデータのうち最小シーケンス番号を管理する最小シーケンス番号管理部と、
上記バッファ手段に蓄積されるデータのうち最大シーケンス番号を管理する最大シーケンス番号管理部と、
上記入力データの上記バッファ手段への投入の際に、当該入力データの入力シーケンス番号と、上記最大シーケンス番号と、上記最小シーケンス番号との比較により、当該入力シーケンス番号に応じた格納位置に当該入力データを格納させる投入動作制御部と、
上記バッファ手段からの蓄積データの取出の際に、当該処理周期で処理する上記バッファ手段の格納位置のデータ格納状態と、上記最小シーケンス番号と、上記蓄積量とに基づいて、上記バッファ手段からのデータの出力処理を行う取出動作制御部と
を有することを特徴とする請求項1〜4のいずれかに記載のジッタバッファ制御装置。
【請求項6】
ネットワークからの入力パケットに含まれるデータを蓄積するバッファ手段を備えるジッタバッファ制御装置のジッタバッファ制御方法であって、
ジッタバッファ制御手段が、所定の処理周期に従い、上記入力パケットに含まれるシーケンス番号に基づいて、入力データの上記バッファ手段への格納処理及び上記バッファ手段からの出力処理を制御するジッタバッファ制御工程を行い、
上記ジッタバッファ制御手段が、上記バッファ手段のアンダーランが発生した際に、そのパケットロス発生期間に相当する処理周期期間だけ空けて、上記バッファ手段にデータを格納する
ことを特徴とするジッタバッファ制御方法。
【請求項7】
ネットワークからの入力パケットに含まれるデータを蓄積するバッファ手段を備えるジッタバッファ制御装置を、
所定の処理周期に従い、上記入力パケットに含まれるシーケンス番号に基づいて、入力データの上記バッファ手段への格納処理及び上記バッファ手段からの出力処理を制御するジッタバッファ制御手段として機能させるものであり、
上記ジッタバッファ制御手段が、上記バッファ手段のアンダーランが発生した際に、そのパケットロス発生期間に相当する処理周期期間だけ空けて、上記バッファ手段にデータを格納することを特徴とするジッタバッファ制御プログラム。
【請求項8】
請求項1〜5のいずれかに記載のジッタバッファ制御装置を備えることを特徴とする情報処理装置。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【公開番号】特開2010−226611(P2010−226611A)
【公開日】平成22年10月7日(2010.10.7)
【国際特許分類】
【出願番号】特願2009−73770(P2009−73770)
【出願日】平成21年3月25日(2009.3.25)
【出願人】(000000295)沖電気工業株式会社 (6,645)
【Fターム(参考)】
【公開日】平成22年10月7日(2010.10.7)
【国際特許分類】
【出願日】平成21年3月25日(2009.3.25)
【出願人】(000000295)沖電気工業株式会社 (6,645)
【Fターム(参考)】
[ Back to top ]