(57)【特許請求の範囲】
【請求項１】
ネットワークから受信したパケットを一旦バッファに格納し、前記バッファから受信した順に一定の間隔でパケットを読み出してパケットの時間的なゆらぎを吸収するパケットゆらぎ吸収方法において、
０より大きな値を前記バッファの下限閾値として予め設定し、
前記バッファからパケットを読み出して出力したときに前記バッファ内のパケット量が前記下限閾値未満となった場合、前記出力したパケットの出力に使用した回数が所定値を超えると当該パケットを前記バッファから破棄し、
前記バッファに受信したパケットを書き込むときに前記バッファ内のパケット量が前記下限閾値以上となった場合、パケットの出力に使用した回数が０でないならば当該出力に使用した回数が０でないパケットを前記バッファから破棄する
ことを特徴とするパケットゆらぎ吸収方法。
【請求項２】
請求項１記載のパケットゆらぎ吸収方法において、
前記バッファが格納できるパケット数より小さな値を前記バッファの上限閾値として予め設定し、
前記バッファからパケットを読み出して出力したときに前記バッファ内のパケット量が前記上限閾値を超えた場合、前記バッファから所定の破棄率でパケットを破棄する
ことを特徴とするパケットゆらぎ吸収方法。
【請求項３】
請求項２記載のパケットゆらぎ吸収方法において、
前記上限閾値と下限閾値の間の最適値を予め設定し、
前記バッファからパケットを読み出して出力したときに前記バッファ内のパケット量が前記最適値以下の場合、前記バッファから出力したパケットを破棄する
ことを特徴とするパケットゆらぎ吸収方法。
【請求項４】
ネットワークから受信したパケットを一旦バッファに格納し、前記バッファから受信した順に一定の間隔でパケットを読み出してパケットの時間的なゆらぎを吸収するパケットゆらぎ吸収装置において、
０より大きな値を前記バッファの下限閾値として予め設定されて記憶する下限値記憶部と、
前記バッファからパケットを読み出して出力したときに前記バッファ内のパケット量が前記下限閾値未満となった場合、前記出力したパケットの出力に使用した回数が所定値を超えると当該パケットを前記バッファから破棄する第１破棄手段と、
前記バッファに受信したパケットを書き込むときに前記バッファ内のパケット量が前記下限閾値以上となった場合、パケットの出力に使用した回数が０でないならば当該出力に使用した回数が０でないパケットを前記バッファから破棄する第２破棄手段とを
有することを特徴とするパケットゆらぎ吸収装置。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、パケットゆらぎ吸収方法及びその装置に関し、ネットワーク上での遅延による受信パケットの時間的なゆらぎを吸収する方法及びその装置に関する。
【０００２】
【従来の技術】
パケット交換方式は、もともと離散的、バースト的に情報が発生するデータ通信であり、音声や動画等の連続性を必要とするデータ通信においては不向きであるとされていた。音声や動画等の連続的な通信において、そのデータを一定間隔で一定量のデータとしてネットワーク上に送信するが、ＦＩＦＯ（Ｆｉｒｓｔ  Ｉｎ  Ｆｉｒｓｔ  Ｏｕｔ）にキューイングして処理されるため、ネットワーク上での遅延による時間的なゆらぎが発生し、受信側でそのゆらぎを吸収し元の連続データとして再生する必要がある。
【０００３】
ゆらぎの吸収は、ゆらぎ吸収バッファを設けて行われる。連続通信では一旦通信が開始されると以降一定の間隔で再生されるため、最初のパケットが到達してどの時点で再生を開始するか、また、そのゆらぎ吸収バッファがアンダーフロー或いはオーバフローしたときに、どのように制御するかが重要である。
【０００４】
また、パケット網内でパケットがなんらかの事象により破棄された場合、受信側では受信したパケットのみを再生するため、その分だけ再生順序が繰り上がり再生される。これらに対して、様々なゆらぎ吸収方法が考えれているが、一般的にアンダーフロー時にはダミーパケット（無効パケットまたは１つ前のパケット等）を再生することにより再生タイミングを制御している。また、オーバーフロー時にはゆらぎ吸収バッファから古いパケット順にパケットを破棄し、最新のパケットをゆらぎ吸収バッファに保持する方法が一般的である。
【０００５】
図１は、従来のパケットゆらぎ吸収方法を用いた装置の一例のブロック構成図を示す。同図中、パケット入力部１０はネットワークからパケットを受信して、受信したパケットをゆらぎ吸収バッファ（ＦＩＦＯ）１２に供給すると共に、ゆらぎ吸収バッファ１２に供給する入力パケット数を入力側パケット量監視部１４に通知する。入力側パケット量監視部１４はパケット入力部１０からの通知を受けると、ゆらぎ吸収バッファ１２にバッファリングしているパケット数、つまりパケット量を問い合わせ、上記入力パケット数及びパケット量を入力側バッファ状態判定部１６に通知する。
【０００６】
入力側バッファ状態判定部１６はゆらぎ吸収バッファ１２にオーバーフローが生じるか否かを判定して、オーバーフローが生じなければ入力側バッファ処理部１８を起動し、オーバーフローが生じればオーバーフロー処理部２０を起動する。入力側バッファ処理部１８は通常の受信したパケットをゆらぎ吸収バッファ１２に書き込む処理を行う。オーバーフロー処理部２０は破棄対象となるパケット数をパケット破棄処理部２２に通知し、これによって、パケット破棄処理部２２はゆらぎ吸収バッファ１２から破棄対象となるパケット数だけパケットを破棄する。
【０００７】
パケット出力部２４はゆらぎ吸収バッファ１２から一定の間隔で読み出されるパケットを図示しない後続回路に対して出力すると共に、出力したことを出力側パケット量監視部２６に通知する。出力側パケット量監視部２６はパケット出力部２４からの通知を受けると、ゆらぎ吸収バッファ１２にバッファリングしているパケット数、つまりパケット量を問い合わせ、上記パケット量を出力側バッファ状態判定部２８に通知する。
【０００８】
出力側バッファ状態判定部２８はゆらぎ吸収バッファ１２がアンダーフローを生じるか否かを判定して、アンダーフローが生じなければ出力側バッファ処理部３０を起動し、アンダーフローが生じればアンダーフロー処理部３２を起動する。出力側バッファ処理部３０は通常のゆらぎ吸収バッファ１２からパケットを読み出しパケット出力部２４に供給すると共に、読み出したパケットをゆらぎ吸収バッファ１２から破棄させるようパケット破棄処理部２２に指示する処理を行う。アンダフロー処理部３２は読み出したパケットをゆらぎ吸収バッファ１２から破棄させないようパケット破棄処理部２２に指示する処理を行う。
【０００９】
【発明が解決しようとする課題】
従来の方法では、ネットワークでの遅延でアンダーフローが発生した場合にダミーパケットを挿入するため、ダミーパケットが複数連続した場合に、本来の再生タイミングから遅延することになると、受信側では送信時のデータとの差分が増大するため、音声パケットの場合には受信側は聞き取り辛いという問題があった。
【００１０】
また、オーバーフロー発生時は受信したパケットをゆらぎ吸収バッファに格納できないため、ゆらぎ吸収バッファ３２内の古いパケットを破棄した後に格納することになる。それにより破棄されたパケットは２度と再生されることがないため、音声の場合には受信側は音の変化が分かるくらいの品質低下につながるという問題があった。
【００１１】
本発明は、上記の点に鑑みなされたものであり、再生時にデータの急激な変化を抑えることができ、品質の低下を防ぐことができるパケットゆらぎ吸収方法及びその装置を提供することを目的とする。
【００１２】
【課題を解決するための手段】
請求項１または請求項４に記載の発明は、０より大きな値をバッファの下限閾値として予め設定し、前記バッファからパケットを読み出して出力したときに前記バッファ内のパケット量が前記下限閾値未満となった場合、前記出力したパケットの出力に使用した回数が所定値を超えると当該パケットを前記バッファから破棄し、前記バッファに受信したパケットを書き込むときに前記バッファ内のパケット量が前記下限閾値以上となった場合、パケットの出力に使用した回数が０でないならば当該出力に使用した回数が０でないパケットを前記バッファから破棄することにより、各パケットを所定回だけ出力に使用してバッファが空になるまでの間隔を遅延させ、かつ、再生時にデータの急激な変化を抑えることができる。
【００１４】
請求項２または付記７に記載の発明は、前記バッファが格納できるパケット数より小さな値を前記バッファの上限閾値として予め設定し、前記バッファからパケットを読み出して出力したときに前記バッファ内のパケット量が前記上限閾値を超えた場合、前記バッファから所定の破棄率でパケットを破棄することにより、破棄するパケットが連続することを抑制でき、再生時にデータの急激な変化を抑えることができる。
【００１５】
請求項３または付記８に記載の発明は、前記上限閾値と下限閾値の間の最適値を予め設定し、前記バッファからパケットを読み出して出力したときに前記バッファ内のパケット量が前記最適値以下の場合、前記バッファから出力したパケットを破棄することにより、バッファから１パケットを出力すると同時に、このパケットを破棄してバッファに格納するパケット数を最適値近傍に留めることができる。
【００１６】
付記９に記載の発明は、受信したパケットが有効か無効かを識別し、前記バッファに受信したパケットを書き込むときに前記バッファがオーバーフローした場合、前記無効と識別されたパケットを前記バッファから優先的に破棄することにより、再生時にデータの急激な変化を抑えることができる。
【００１８】
付記１０に記載の発明は、前記バッファに受信したパケットを書き込むときに前記バッファがオーバーフローした場合、前記バッファから所定の破棄率でパケットを破棄することにより、破棄するパケットが連続することを抑制でき、再生時にデータの急激な変化を抑えることができる。
【００１９】
【発明の実施の形態】
図２は、本発明のパケットゆらぎ吸収方法を用いた装置の一実施例のブロック構成図を示す。同図中、パケット入力部３０はネットワークからパケットを受信して、受信したパケットをゆらぎ吸収バッファ（ＦＩＦＯ）３２に供給すると共に、ゆらぎ吸収バッファ３２に供給する入力パケット数を入力側パケット量監視部３４に通知する。また、パケット入力部３０はパケット識別部３１を有しており、パケット識別部３１は受信したパケットが有効（例えば有音）か無効（例えば無音）かを判断して、有効／無効の識別子を当該パケットのヘッダに追加する。入力側パケット量監視部３４はパケット入力部３０からの通知を受けると、ゆらぎ吸収バッファ３２にバッファリングしているパケット数、つまりパケット量を問い合わせ、上記入力パケット数及びパケット量を入力側バッファ状態判定部３６に通知する。
【００２０】
ここで、図３はゆらぎ吸収バッファ３２の構成を模式的に示す。ゆらぎ吸収バッファ３２はＭＡＸ値（例えば２５）だけのパケットを格納できる。そして、上限閾値として例えば２０が設定され、最適値として例えば１５が設定され、下限閾値として例えば５が設定される。また、ゆらぎ吸収バッファ３２のＭＩＮ値は０である。
【００２１】
入力側バッファ状態判定部３６は、パケット量を下限値記憶部６０の下限閾値と比較して下限閾値以上の場合、下限値処理部５４を起動して使用回数記憶部６３に記憶されている使用回数記憶データを参照し、使用回数記憶データが０より大きいとき、そのパケットを破棄するためにパケット破棄処理部４２にパケット破棄を要求する。ところで、使用回数記憶データは、そのパケットを出力した回数を表している。
【００２２】
これにより、ゆらぎ吸収バッファ３２内のパケットがアンダーフロー傾向から適切な範囲に復旧した場合、使用回数記憶データの表す回数だけ使用していたパケットを、入力側からの契機（新たなパケットの入力）によって破棄することにより、そのパケットを更に使用することなく出力することができる。
【００２３】
また、入力側バッファ状態判定部３６は、パケット量をＭＡＸ値と比較し、ゆらぎ吸収バッファ３２にオーバーフローが生じるか否かを判定して、オーバーフローが生じなければ入力側バッファ処理部３８を起動し、オーバーフローが生じればオーバーフロー処理部４０を起動する。入力側バッファ処理部３８は通常の受信したパケットをゆらぎ吸収バッファ３２に書き込む処理を行う。
【００２４】
オーバーフロー処理部４０は上記起動によりパケット破棄処理部４２に無効パケットの破棄要求を行い、パケット破棄処理部４２はゆらぎ吸収バッファ３２から無効パケットを破棄する。これにより、パケットを破棄する際には無効パケットが破棄され、有効パケットの破棄を最小限に抑えることができる。
【００２５】
また、オーバーフロー処理部４０は上記起動により破棄パケット抽出部４１に無効パケットの強制破棄要求を行い、破棄パケット抽出部４１は破棄率データ記憶部６５に記憶されている破棄率に従って、ゆらぎ吸収バッファ３２内の連続パケットではなく、あるパケット数に対して１パケットの割合で破棄するパケットを抽出し、この抽出したパケットをパケット破棄処理部４２に通知し、これによって、パケット破棄処理部４２はゆらぎ吸収バッファ３２から破棄対象のパケットを破棄する。これにより、パケットを破棄する際に、連続するパケットが破棄されることが少なくなり、パケット再生時にデータの急激な変化を抑制することができる。
【００２６】
パケット出力部４４は、ゆらぎ吸収バッファ３２から一定の間隔で読み出されるパケットを図示しない後続回路に対して出力すると共に、出力したことを出力側パケット量監視部４６に通知する。出力側パケット量監視部４６はパケット出力部２４からの通知を受けると、ゆらぎ吸収バッファ３２にバッファリングしているパケット数、つまりパケット量を問い合わせ、上記パケット量を出力側バッファ状態判定部４８に通知する。
【００２７】
出力側バッファ状態判定部４８は、上記パケット量を下限値記憶部６０に記憶されている下限閾値、上限値記憶部６１に記憶されている上限閾値、最適値記憶部６２に記憶されている最適値それぞれと比較する。その結果、パケット量が下限閾値未満の場合は下限値処理部５４を起動し、パケット量が上限閾値以上の場合は上限値処理部５６を起動する。
【００２８】
下限値処理部５４は、使用回数記憶部６３に記憶されている使用回数記憶データを使用回数上限データ記憶部６４に記憶されている使用回数上限データとを比較し、使用回数記憶データ＜使用回数上限データであればパケット破棄処理部４２に０個のパケットを破棄するように要求して使用回数記憶データを１だけカウントアップする。なお、使用回数記憶データは、そのパケットを出力した回数を表しており、使用回数上限データは、そのパケットを何回使用するかを設定している。
【００２９】
ここで、使用回数記憶データ≧使用回数上限データであれば、パケット破棄処理部４２に１個のパケットを破棄するように要求して使用回数記憶データを０リセットする。この要求によりパケット破棄処理部４２はゆらぎ吸収バッファ３２に対し０個または１個のパケットの破棄要求を行う。これにより、ゆらぎ吸収バッファ３２のパケット量がアンダーフロー傾向に向かっているとき、パケットを使用回数上限データに等しい回数分だけ使用することにより、ゆらぎ吸収バッファ３２がアンダフローになるまでの時間を遅延することができる。
【００３０】
上限値処理部５６は、破棄率データ記憶部６５に記憶されている破棄率データを参照して、その破棄率分のパケットを破棄するようにパケット破棄処理部４２に要求を行う。これにより、破棄するパケットが連続することを抑制でき、再生時にデータの急激な変化を抑えることができる。
【００３１】
また、出力側バッファ状態判定部４８は、パケット量が下限閾値を超え最適値以下の場合は出力側バッファ処理部５０を起動し、アンダーフローが生じればアンダーフロー処理部５２を起動する。
【００３２】
出力側バッファ処理部５０はパケット破棄処理部４２に１個のパケットを破棄するように要求する。この要求によりパケット破棄処理部４２はゆらぎ吸収バッファ３２に対し１個のパケットの破棄要求を行う。これにより、増加したゆらぎ吸収バッファ３２の遅延時間が最適な値に減少される。なお、アンダフロー処理部５２は読み出したパケットをゆらぎ吸収バッファ３２から破棄させないようパケット破棄処理部４２に指示する処理を行う。
【００３３】
図４は、ゆらぎ吸収バッファ３２に格納されたパケットが少なくなったときに図２の装置が実行する処理のフローチャートを示す。同図中、ステップＳ１０で出力側パケット量監視部４６はゆらぎ吸収バッファ３２にパケット量を問い合わせる。ステップＳ１２で出力側バッファ状態判定部４８は、パケット量を下限値記憶部６０に記憶されている下限閾値と比較し、パケット量が下限閾値未満の場合はステップＳ１４で使用回数記憶データを１だけカウントアップしたのちステップＳ１６に進んで、下限値処理部５４は、使用回数記憶部６３に記憶されている使用回数記憶データを使用回数上限データ記憶部６４に記憶されている使用回数上限データとを比較する。
【００３４】
使用回数記憶データ＜使用回数上限データであればステップＳ１８でパケット破棄処理部４２に０個のパケットを破棄するように要求し、使用回数記憶データ≧使用回数上限データであればステップＳ２０でパケット破棄処理部４２に１個のパケットを破棄するように要求すると共に使用回数記憶データを０リセットしてステップＳ２２に進む。一方、パケット量が下限閾値以上の場合はステップＳ２０でパケット破棄処理部４２に１個のパケットを破棄するように要求してステップＳ２２に進む。
【００３５】
ステップＳ２２でパケット破棄処理部４２はゆらぎ吸収バッファ３２に対し０個または１個のパケットの破棄要求を行う。これにより、ゆらぎ吸収バッファ３２のパケット量がアンダーフロー傾向に向かっているとき、パケットを使用回数上限データに等しい回数分だけ使用することにより、ゆらぎ吸収バッファ３２がアンダフローになるまでの時間を遅延することができる。
【００３６】
図５は、ゆらぎ吸収バッファ３２に格納されたパケットが少ない状態のパケット入力時に図２の装置が実行する処理のフローチャートを示す。同図中、ステップＳ３０で入力側パケット量監視部３４はゆらぎ吸収バッファ３２にパケット量を問い合わせ、ステップＳ３２で入力側バッファ状態判定部３６は、パケット量を下限値記憶部６０の下限閾値と比較する。パケット量が下限閾値以上の場合、入力側バッファ状態判定部３６は使用回数記憶データを参照し、ステップＳ３６で使用回数記憶データが０を超えるか否かを判定する
【００３７】
ここで、使用回数記憶データが０を超えた場合にはステップＳ３８でパケット破棄処理部４２に１個のパケットを破棄するように要求すると共に使用回数記憶データを０リセットし、使用回数記憶データが０であればステップＳ４０でパケット破棄処理部４２に０個のパケットを破棄するように要求してステップＳ４２に進む。一方、パケット量が下限閾値未満の場合はステップＳ４０でパケット破棄処理部４２に０個のパケットを破棄するように要求してステップＳ４２に進む。
【００３８】
ステップＳ４２でパケット破棄処理部４２はゆらぎ吸収バッファ３２に対し０個または１個のパケットの破棄要求を行う。これにより、ゆらぎ吸収バッファ３２のパケット量が増加傾向に向かっているとき、同一パケットを複数回使用しないようにできる。
【００３９】
図６は、ゆらぎ吸収バッファ３２に格納されたパケットが多くなったときに図２の装置が実行する処理のフローチャートを示す。同図中、ステップＳ５０で出力側パケット量監視部４６はゆらぎ吸収バッファ３２にパケット量を問い合わせる。ステップＳ５２で出力側バッファ状態判定部４８は、パケット量を上限値記憶部６１に記憶されている上限閾値と比較し、パケット量が上限閾値以上の場合はステップＳ５４に進んで、上限値処理部５６は破棄率データ記憶部６５に記憶されている破棄率データを参照し、ステップＳ５６で破棄率データをもとに破棄パケットを抽出すると共に、破棄パケット削除数ｎを設定してパケット破棄処理部４２にパケット破棄を要求しステップＳ６２に進む。
【００４０】
一方、パケット量が上限閾値未満の場合はステップＳ６０でパケット破棄処理部４２に１個のパケットを破棄するよう要求してステップＳ６２に進む。ステップＳ６２でパケット破棄処理部４２はゆらぎ吸収バッファ３２に対しｎ個または１個のパケットの破棄要求を行う。これにより、ゆらぎ吸収バッファ３２のパケット量がオーバーフロー傾向に向かっているとき、パケットの破棄数を出きる限り少なくすることができる。
【００４１】
なお、ゆらぎ吸収バッファ３２に格納されたパケット数が最適値近傍のときに、図７に示す処理を実行することも考えられる。同図中、ステップＳ７０で出力側パケット量監視部４６はゆらぎ吸収バッファ３２にパケット量を問い合わせる。ステップＳ７２で出力側バッファ状態判定部４８は、パケット量を最適値記憶部６２に記憶されている最適値と比較し、パケット量が最適値を超えている場合はステップ７４に進んで、上限値処理部５６は破棄率データ記憶部６５に記憶されている破棄率データを参照し、ステップＳ７６で破棄率データをもとに破棄パケットを抽出すると共に、破棄パケット削除数ｎを設定してパケット破棄処理部４２にパケット破棄を要求しステップＳ８２に進む。
【００４２】
一方、パケット量が最適値以下の場合はステップＳ８０でパケット破棄処理部４２に１個のパケットを破棄するよう要求してステップＳ８２に進む。ステップＳ８２でパケット破棄処理部４２はゆらぎ吸収バッファ３２に対しｎ個または１個のパケットの破棄要求を行う。
【００４３】
図８は、オーバーフロー時に図２の装置が実行する処理の第１実施例のフローチャートを示す。同図中、ステップＳ９０でパケット識別部３１は受信したパケットが有効か無効かを判断して有効／無効の識別子を当該パケットのヘッダに追加する。ステップＳ９２で入力側パケット量監視部３４はゆらぎ吸収バッファ３２にパケット量を問い合わせ、ステップＳ９４で入力側バッファ状態判定部３６は、パケット量をＭＡＸ値と比較してオーバーフローしたか否かを判定する。オーバーフローした場合、ステップＳ９６で破棄パケット抽出部４１は無効パケットを破棄パケットとして抽出し、パケット破棄処理部４２にこの破棄パケットを破棄するように要求してステップＳ９８に進む。
【００４４】
ステップＳ９８でパケット破棄処理部４２はゆらぎ吸収バッファ３２に対し破棄要求があったパケットの破棄要求を行う。これにより、ゆらぎ吸収バッファ３２がオーバーフローしたとき、無効パケットが破棄され、有効パケットが破棄されることを抑制できる。
【００４５】
図９は、オーバーフロー時に図２の装置が実行する処理の第２実施例のフローチャートを示す。同図中、ステップＳ１００でパケット識別部３１は受信したパケットが有効か無効かを判断して有効／無効の識別子を当該パケットのヘッダに追加する。ステップＳ１０２で入力側パケット量監視部３４はゆらぎ吸収バッファ３２にパケット量を問い合わせ、ステップＳ１０４で入力側バッファ状態判定部３６は、パケット量をＭＡＸ値と比較してオーバーフローしたか否かを判定する。オーバーフローした場合、ステップＳ１０６で破棄パケット抽出部４１は破棄率データ記憶部６５に記憶されている破棄率データを参照し、破棄率データをもとに破棄パケットを抽出してパケット破棄処理部４２にこの破棄パケットを破棄するように要求してステップＳ１０８に進む。ステップＳ１０８でパケット破棄処理部４２はゆらぎ吸収バッファ３２に対し破棄要求があったパケットの破棄要求を行う。
【００４６】
次に、ネットワークを伝送されるパケットが音声パケットであり、送信側でネットワークに送信する音声パケットの間隔を２０ｍｓとし、ゆらぎ吸収バッファ３２のＭＡＸ値を２５パケット（５００ｍｓ相当）とし、下限閾値記億部６０の下限閾値を５パケット（１００ｍｓ相当）とし、上限閾値記憶部６１の上限閾値を２０パケット（４００ｍｓ相当）とし、最適値記憶部６２の最適値を１５パケット（３００ｍｓ相当）とし、使用回数上限データ記憶部６４の使用回数上限データを２パケット（４０ｍｓ相当）とした前提条件で以降の説明を行う。
【００４７】
まず、ゆらぎ吸収バッファ３２内のパケットが下限閾値以下になった後、下限閾値を超えた場合について、図１０と共に説明する。なお、上記の前提条件に加え、現在のゆらぎ吸収バッファ３２内には６パケットが格納されているものとする。また、図１０ではパケット８を入力した後にパケット３を出力するものとする。
【００４８】
ネットワーク上において、図中黒塗りで示すパケット１１, １２, １３, １４, １５が欠落したとすると、図１０の区間Ｔ６の時点でゆらぎ吸収バッファ３２内のパケット数は５パケットとなり下限閾値以下になる。このとき出力側パケット量監視部４６は、下限値処理部５４を起動する。下限値処理部５４は使用回数記憶部６３の使用回数記憶データを１だけカウントアップし、使用回数上限データ記憶部６４の使用回数上限データと使用回数記憶データを比較する。この場合使用回数データが１であるため、パケット破棄処理部４２に０個のパケットの破棄を要求する。
【００４９】
次に、図１０の区間Ｔ７でパケット出力部４４からの出力通知を契機に出力側パケット量監視部４６はゆらぎ吸収バッファ３２内のパケット量を確認する。このとき、ゆらぎ吸収バッファ３２内のパケット量は５パケットである。出力側バッファ状態判定部４８は、下限値処理部５４に処理を振り分ける。下限値処理部５４は使用回数記憶データを１だけカウントアップし、使用回数上限データと使用回数記憶データを比較する。この場合、使用回数データが２であるため、パケット破棄処理部４２には１個のパケット破棄を要求し、使用回数データを０クリアする。
【００５０】
図１０の区間Ｔ１２においてパケット出力部４４からの出力通知を契機に出力側パケット量監視部４６はゆらぎ吸収バッファ３２内のパケット量を確認する。このときゆらぎ吸収バッファ３２内のパケット量が５パケットであるため、出力側バッファ状態判定部４８は下限値処理部５４に処理を振り分ける。下限値処理部６０では、使用回数上限データと使用回数記憶データを比較し、使用回数記憶データを１にする。
【００５１】
この状態のとき、パケット入力部３０からの入力通知を入力側パケット量監視部３４が受けると、ゆらぎ吸収バッファ３２内のパケット量を確認して、その結果を入力側バッファ状態判定部３６に通知する。入力側バッファ状態判定部３６は下限値記憶部６０の下限閾値データと比較を行い、下限閾値と同じであるため下限値処理部５４を起動し、下限値処理部５４は使用回数記憶データを参照し、その使用回数データ分のパケットの破棄要求をパケット破棄処理部４２に要求する。これにより、アンダフローの発生を抑え、アンダフロー時の受信側での違和感を軽減することができる。上記の動作は図４，図５のフローチャートに基づいて実行される。
【００５２】
次に、ゆらぎ吸収バッファ３２内のパケットが上限値を超えた場合について、図１１と共に説明する。なお、前提条件に加え、現在のゆらぎ吸収バッファ３２のパケット量を１９パケット、破棄率データ記憶部６５の破棄率データを２パケット（２パケットに１パケット破棄することを指示）とする。
【００５３】
図１１の区間Ｔ５において、２つのパケットを同時に受信したとする。そのとき出力側パケット量監視部４６は、ゆらぎ吸収バッファ３２内のパケット量を２１パケットと認識する。それを出力側バッファ状態判定部４８が上限値記憶部６１の上限閾値データと比較すると上限値以上のため、処理は上限値処理部５６に移行する。上限値処理部５６は、破棄率データ記憶部６５の破棄率データを参照し、その破棄率データ分のパケット破棄要求をパケット破棄処理部４２に要求する。
【００５４】
図１１の区間Ｔ９において、ゆらぎ吸収バッファ３２内のパケット量が上限閾値より少なくなっているが、上限値処理部５６への要求は、ゆらぎ吸収バッファ３２内のパケット数が最適値記憶部６２の最適値以下になるまで行う。区間Ｔ１１において、ゆらぎ吸収バッファ３２内のパケット量が最適値以下になったため、出力側バッファ状態判定部４８は出力側バッファ処理部５０に処理を移行し、１パケットの破棄をパケット破棄処理部４２に要求する。これにより、オーバフロー時のパケット破棄を最小限に抑え、受信側での違和感を軽減することができる。上記の動作は図６，図７のフローチャートに基づいて実行される。
【００５５】
次に、ゆらぎ吸収バッファ３２内のパケットが上限値を超え、更にオーバーフローした場合について、図１２と共に説明する。なお、前提条件に加え、現在のゆらぎ吸収バッファ３２内のパケット数を１９パケット、破棄率データ記憶部６５の破棄率データを２パケット（２パケットに１パケットを破棄することを指示）とする。
【００５６】
パケット識別部３１はパケットの入力毎にそのパケットが有音か無音かを判断し、有音／無音の識別子をそのパケットに設定する。図１２の区間Ｔ５において、ゆらぎ吸収バッファ３２内のパケット数がＭＡＸ値をオーバした場合、入力側バッファ状態判定部３６はオーバフロー処理部４０ヘオーバフローしたことを通知する。オーバフロー処理部はそれを受け破棄パケット抽出部４１に無音パケットの破棄要求を行う。破棄パケット抽出部はパケット破棄処理部４２に無音パケットの破棄要求を行い、パケット破棄処理部はゆらぎ吸収バッファ３２内のパケットの識別子を判定し無音であればそのパケットの破棄を行う。これにより、オーバフロー時の有音パケット破棄を最小限に抑え、受信側での違和感を軽減することができる。上記の動作は図８のフローチャートに基づいて実行される。
【００５７】
更に、ゆらぎ吸収バッファ３２内のパケットが上限値を超え、更にオーバーフローした場合について、図１３と共に説明する。なお、前提条件に加え、現在のゆらぎ吸収バッファ３２内のパケット数を１９パケット、破棄率データ記憶部６５の破棄率データを２パケット（２パケットに１パケットを破棄することを指示）とする。
【００５８】
図１３の区間Ｔ５において、ゆらぎ吸収バッファ３２内のパケット数がＭＡＸ値をオーバした場合、入力側バッファ状態判定部３６はオーバフロー処理部４０にオーバフローしたことを通知する。オーバフロー処理部４０はそれを受け、破棄パケット抽出部４１にパケットの強制破棄要求を行う。破棄パケット抽出部４１はパケット破棄処理部４２にパケットの強制破棄要求を行い、パケット破棄処理部はゆらぎ吸収バッファ３２内のパケットを連続するパケットではなく、ある個数に対して１パケットの割合で強制的に破棄を行う。これにより、オーバフロー時の連続パケットの破棄を無くなるため、断片的な音声の変化がなくなり受信側での違和感を軽減することができる。上記の動作は図９のフローチャートに基づいて実行される。
【００５９】
本発明では、パケットを再生したときに急激な変化がないように制御している。アンダーフロー時であれば、１つのパケットを多数回繰り返し出力に使用して再生するのではなく、複数個のパケットをそれぞれ繰り返し出力に使用するため、再生時にデータの急激な変化を抑えられる。
【００６０】
また、オーバーフロー時には破棄するパケットを最小限に抑えることより、パケットを再生したとき本来のデータに近い値が得られる。例えば、インターネット網での音声、動画等の通信を行う場合に、連続して複数パケットが欠落するのを防止できるため、再生時にデータの急激な変化を抑えることができ、品質の低下を防ぐことができる。
【００６１】
（付記１）  ネットワークから受信したパケットを一旦バッファに格納し、前記バッファから受信した順に一定の間隔でパケットを読み出してパケットの時間的なゆらぎを吸収するパケットゆらぎ吸収方法において、
０より大きな値を前記バッファの下限閾値として予め設定し、
前記バッファからパケットを読み出して出力したときに前記バッファ内のパケット量が前記下限閾値未満となった場合、前記出力したパケットの使用回数が所定値を超えると当該パケットを前記バッファから破棄する
ことを特徴とするパケットゆらぎ吸収方法。（１）
（付記２）  付記１記載のパケットゆらぎ吸収方法において、
前記バッファに受信したパケットを書き込むときに前記バッファ内のパケット量が前記下限閾値以上となった場合、パケットの使用回数が０でないならば当該パケットを前記バッファから破棄する
ことを特徴とするパケットゆらぎ吸収方法。（２）
（付記３）  付記１または２記載のパケットゆらぎ吸収方法において、
前記バッファが格納できるパケット数より小さな値を前記バッファの上限閾値として予め設定し、
前記バッファからパケットを読み出して出力したときに前記バッファ内のパケット量が前記上限閾値を超えた場合、前記バッファから所定の破棄率でパケットを破棄する
ことを特徴とするパケットゆらぎ吸収方法。（３）
（付記４）  付記３記載のパケットゆらぎ吸収方法において、
前記上限閾値と下限閾値の間の最適値を予め設定し、
前記バッファからパケットを読み出して出力したときに前記バッファ内のパケット量が前記最適値以下の場合、前記バッファから出力したパケットを破棄する
ことを特徴とするパケットゆらぎ吸収方法。（４）
（付記５）  ネットワークから受信したパケットを一旦バッファに格納し、前記バッファから受信した順に一定の間隔でパケットを読み出してパケットの時間的なゆらぎを吸収するパケットゆらぎ吸収装置において、
０より大きな値を前記バッファの下限閾値として予め設定されて記憶する下限値記憶部と、
前記バッファからパケットを読み出して出力したときに前記バッファ内のパケット量が前記下限閾値未満となった場合、前記出力したパケットの使用回数が所定値を超えると当該パケットを前記バッファから破棄する第１破棄手段とを
有することを特徴とするパケットゆらぎ吸収装置。（５）
（付記６）  付記５記載のパケットゆらぎ吸収装置において、
前記バッファに受信したパケットを書き込むときに前記バッファ内のパケット量が前記下限閾値以上となった場合、パケットの使用回数が０でないならば当該パケットを前記バッファから破棄する第２破棄手段とを
有することを特徴とするパケットゆらぎ吸収装置。
【００６２】
（付記７）  付記５または付記６記載のパケットゆらぎ吸収装置において、
前記バッファが格納できるパケット数より小さな値を前記バッファの上限閾値として予め設定されて記憶する上限値記憶部と、
前記バッファからパケットを読み出して出力したときに前記バッファ内のパケット量が前記上限閾値を超えた場合、前記バッファから所定の破棄率でパケットを破棄する第３破棄手段とを
有することを特徴とするパケットゆらぎ吸収装置。
【００６３】
（付記８）  付記７記載のパケットゆらぎ吸収装置において、
前記上限閾値と下限閾値の間の最適値を予め設定されて記憶する最適値記憶部と、
前記バッファからパケットを読み出して出力したときに前記バッファ内のパケット量が前記最適値以下の場合、前記バッファから出力したパケットを破棄する第４破棄手段とを
有することを特徴とするパケットゆらぎ吸収装置。
【００６４】
（付記９）  付記５乃至８のいずれか記載のパケットゆらぎ吸収装置において、
受信したパケットが有効か無効かを識別するパケット識別部と、
前記バッファに受信したパケットを書き込むときに前記バッファがオーバーフローした場合、前記無効と識別されたパケットを前記バッファから優先的に破棄する第５破棄手段とを
有することを特徴とするパケットゆらぎ吸収装置。
【００６５】
（付記１０）  付記５乃至８のいずれか記載のパケットゆらぎ吸収装置において、
前記バッファに受信したパケットを書き込むときに前記バッファがオーバーフローした場合、前記バッファから所定の破棄率でパケットを破棄する第６破棄手段を
有することを特徴とするパケットゆらぎ吸収装置。
【００６６】
なお、ステップＳ１２〜Ｓ１６，Ｓ２０，Ｓ２２が請求項記載の第１破棄手段に対応し、ステップＳ３２〜３８，Ｓ４２が第２破棄手段に対応し、ステップＳ５２〜Ｓ５６，Ｓ６２が第３破棄手段に対応し、ステップＳ７２，Ｓ８０，Ｓ８２が第４破棄手段に対応し、ステップＳ９４〜Ｓ９８が第５破棄手段に対応し、ステップＳ１０４〜Ｓ１０８が第６破棄手段に対応する。
【００６７】
【発明の効果】
上述の如く、請求項１または請求項４に記載の発明は、０より大きな値をバッファの下限閾値として予め設定し、前記バッファからパケットを読み出して出力したときに前記バッファ内のパケット量が前記下限閾値未満となった場合、前記出力したパケットの出力に使用した回数が所定値を超えると当該パケットを前記バッファから破棄し、前記バッファに受信したパケットを書き込むときに前記バッファ内のパケット量が前記下限閾値以上となった場合、パケットの出力に使用した回数が０でないならば当該出力に使用した回数が０でないパケットを前記バッファから破棄することにより、各パケットを所定回だけ出力に使用してバッファが空になるまでの間隔を遅延させ、かつ、再生時にデータの急激な変化を抑えることができる。
【００６９】
請求項２または付記７に記載の発明は、前記バッファが格納できるパケット数より大きな値を前記バッファの上限閾値として予め設定し、前記バッファからパケットを読み出して出力したときに前記バッファ内のパケット量が前記上限閾値を超えた場合、前記バッファから所定の破棄率でパケットを破棄することにより、破棄するパケットが連続することを抑制でき、再生時にデータの急激な変化を抑えることができる。
【００７０】
請求項３または付記８に記載の発明は、前記上限閾値と下限閾値の間の最適値を予め設定し、前記バッファからパケットを読み出して出力したときに前記バッファ内のパケット量が前記最適値以下の場合、前記バッファから出力したパケットを破棄することにより、バッファから１パケットを出力すると同時に、このパケットを破棄してバッファに格納するパケット数を最適値近傍に留めることができる。
【００７１】
付記９に記載の発明は、受信したパケットが有効か無効かを識別し、前記バッファに受信したパケットを書き込むときに前記バッファがオーバーフローした場合、前記無効と識別されたパケットを前記バッファから優先的に破棄することにより、再生時にデータの急激な変化を抑えることができる。
【００７３】
付記１０に記載の発明は、前記バッファに受信したパケットを書き込むときに前記バッファがオーバーフローした場合、前記バッファから所定の破棄率でパケットを破棄することにより、破棄するパケットが連続することを抑制でき、再生時にデータの急激な変化を抑えることができる。
【図面の簡単な説明】
【図１】従来のパケットゆらぎ吸収方法を用いた装置の一例のブロック構成図である。
【図２】本発明のパケットゆらぎ吸収方法を用いた装置の一実施例のブロック構成図である。
【図３】ゆらぎ吸収バッファ３２の構成を模式的に示す図である。
【図４】ゆらぎ吸収バッファ３２に格納されたパケットが少なくなったときに図２の装置が実行する処理のフローチャートである。
【図５】ゆらぎ吸収バッファ３２に格納されたパケットが少ない状態から増加してきたときに図２の装置が実行する処理のフローチャートである。
【図６】ゆらぎ吸収バッファ３２に格納されたパケットが多くなったときに図２の装置が実行する処理のフローチャートである。
【図７】ゆらぎ吸収バッファ３２に格納されたパケット数が最適値近傍のときに図２の装置が実行する処理のフローチャートである。
【図８】オーバーフロー時に図２の装置が実行する処理の第１実施例のフローチャートである。
【図９】オーバーフロー時に図２の装置が実行する処理の第２実施例のフローチャートである。
【図１０】ゆらぎ吸収バッファ３２内のパケットが下限閾値以下になった後、下限閾値を超えた場合を説明するための図である。
【図１１】ゆらぎ吸収バッファ３２内のパケットが上限値を超えた後、最適値を下回った場合を説明するための図である。
【図１２】ゆらぎ吸収バッファ３２内のパケットが上限値を超え、更にオーバーフローした場合を説明するための図である。
【図１３】ゆらぎ吸収バッファ３２内のパケットが上限値を超え、更にオーバーフローした場合を説明するための図である。
【符号の説明】
３０  パケット入力部
３１  パケット識別部
３２  ゆらぎ吸収バッファ
３４  入力側パケット量監視部
３６  入力側バッファ状態判定部
３８  入力側バッファ処理部
４０  オーバーフロー処理部
４２  パケット破棄処理部
４１  破棄パケット抽出部
４４  パケット出力部
４６  出力側パケット量監視部
４８  出力側バッファ状態判定部
５０  出力側バッファ処理部
５２  アンダーフロー処理部
６０  下限値記憶部
６１  上限値記憶部
６２  最適値記憶部
６３  使用回数記憶部
６４  使用回数上限データ記憶部
６５  破棄率データ記憶部
【図１】
0004510251.tif 000002
【図２】
0004510251.tif 000003
【図３】
0004510251.tif 000004
【図４】
0004510251.tif 000005
【図５】
0004510251.tif 000006
【図６】
0004510251.tif 000007
【図７】
0004510251.tif 000008
【図８】
0004510251.tif 000009
【図９】
0004510251.tif 000010
【図１０】
0004510251.tif 000011
【図１１】
0004510251.tif 000012
【図１２】
0004510251.tif 000013
【図１３】
0004510251.tif 000014