(57)【要約】  パケットストリーム内のジッターに対する補正の方法が説明される。この方法は、ジッターバッファからのフレームをデコードする間にパケットストリーム内のパケットから抽出されたデコードされていないフレームをジッターバッフアに置くステップと、平均プレイアウト遅延を使用して決定された率でデコードされたフレームをサンプルバッファに置くステップとを備える。平均プレイアウト遅延は、各パケットが利用可能となるように各パケットについて計算されたプレイアウト遅延の平均を実行することである。各パケットについてのプレイアウト遅延は、サンプルバッファ遅延及びジッターバッファ遅延の合計である。各パケットが受け取られると、平均プレイアウト遅延は受信したパケットに関連付けられたプレイアウト遅延の現在の平均プレイアウト遅延への比較に基づいて調整される。
2010504039.tif 000002
【特許請求の範囲】
【請求項１】
パケットストリーム内のジッターに対する補正方法であって、前記パケットストリームを形成する前記パケットの遅延によって、平均プレイアウト遅延の値を調節するステップと、
前記調節された平均プレイアウト遅延を使用してサンプルバッファからサンプルがプルされる率を調整するステップと
を備えたことを特徴とする方法。
【請求項２】
ジッターヘッドを有するジッターバッファ内の前記パケットから抽出されたデコードされていないフレームを格納するステップを含むことを特徴とする請求項１記載の方法。
【請求項３】
前記パケットストリームを形成する前記パケットの前記遅延に従って、平均プレイアウト遅延の前記値を調節するステップが、
ａ）前記パケットストリームからのパケットに関連付けられたシーケンスインジケーターを、前記ジッターヘッダ内のパケットに関連付けられたシーケンスインジケーターと比較するステップと、
ｂ）前記シーケンスインジケーターの前記比較に基づいて、前記ジッターバッファにデコードされていないフレームを置くステップと、
ｃ）前記プレイアウト遅延を計算するステップと、
ｄ）前記プレイアウト遅延が前記平均プレイアウト遅延より小さい場合、前記平均プレイアウト遅延を前記プレイアウト遅延にすばやく適応させるステップと、前記プレイアウト遅延が前記平均プレイアウト遅延より小さくない場合、前記平均プレイアウト遅延を前記プレイアウト遅延にゆっくりと適応させるステップと
を備えたことを特徴とする請求項２に記載の方法。
【請求項４】
前記シーケンスインジケーターはタイムスタンプであることを特徴とする請求項３に記載の方法。
【請求項５】
前記シーケンスインジケーターがシーケンス番号であることを特徴とする請求項３に記載の方法。
【請求項６】
前記平均プレイアウト遅延を前記プレイアウト遅延にゆっくりと適応させるステップは、方程式Ｄi(new)＝０．９５０＊Ｄｉ(old)＋０．０５０＊ｄiに基づき、Ｄiはパケットを受信するときの前記ジッターヘッド及び前記平均プレイアウト遅延の間の距離を表し、ｄiはパケットに関連付けられた前記プレイアウト遅延を表すことを特徴とする請求項３に記載の方法。
【請求項７】
前記平均プレイアウト遅延を前記プレイアウト遅延にすばやく適応させるステップは、方程式Ｄi(new)＝０．９＊Ｄｉ(old)＋０．１＊ｄiに基づき、Ｄiはパケットを受信するときの前記ジッターヘッド及び前記平均プレイアウト遅延の間の距離を表し、ｄiはパケットに関連付けられた前記プレイアウト遅延を表すことを特徴とする請求項３に記載の方法。
【請求項８】
前記平均プレイアウト遅延を前記プレイアウト遅延にゆっくりと適応させるステップは、方程式Ｄi(new)＝０．９９８＊Ｄｉ(old)＋０．００２＊ｄiに基づき、Ｄiはパケットを受信するときの前記ジッターヘッド及び前記平均プレイアウト遅延の間の距離を表し、ｄiはパケットに関連付けられた前記プレイアウト遅延を表すことを特徴とする請求項３に記載の方法。
【請求項９】
前記平均プレイアウト遅延を前記プレイアウト遅延にすばやく適応させるステップは、方程式Ｄi(new)＝ｄiに基づき、Ｄiはパケットを受信するときの前記ジッターヘッド及び前記平均プレイアウト遅延の間の距離を表し、ｄiはパケットに関連付けられた前記プレイアウト遅延を表すことを特徴とする請求項３に記載の方法。
【請求項１０】
前記調整された平均プレイアウト遅延に従ってサンプルバッファからサンプルが引き出される前記率を調整するステップは、サンプル−プル要求に応答するのに前記サンプルバッファ内に十分なサンプルがあるかどうかを決定するステップ、及びサンプル−プル要求に応答するのに前記サンプルバッファ内に十分なサンプルがない場合に前記サンプルバッファに対する追加のサンプルを作成するステップとを備えたことを特徴とする請求項１に記載の方法。
【請求項１１】
前記サンプルバッファに対する追加のサンプルを作成するステップは、前記ジッターバッファ内の第１のパケットが受け取られるかどうかを決定するステップと、前記ジッターバッファ内の前記第１のパケットが受け取られる場合に前記パケットをデコードするステップ及び前記ジッターバッファ内の前記第１のパケットが受け取られない場合に前記パケットを隠すステップとを備えたことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記平均プレイアウト遅延をあらかじめ選択された所望の範囲と比較するステップと、前記実際のプレイアウト遅延が前記所望の範囲の最小値より小さい場合に信号を拡張するステップとをさらに備えたことを特徴とする請求項１１に記載の方法。
【請求項１３】
前記実際のプレイアウト遅延が前記所望の範囲の最大値より大きい場合に信号を縮小するステップをさらに備えたことを特徴とする請求項１２に記載の方法。
【請求項１４】
パケットストリーム内のジッターに対する補正する方法であって、データストリームを形成するパケットから抽出されたデコードされていないフレームをジッターバッファに置くステップと、
前記ジッターバッファからのフレームをデコードするステップと、
平均プレイアウト遅延により決定された率で前記デコードされたフレームをサンプルバッファに置くステップであって、プレイアウト遅延は前記データストリームを形成する各パケットについて計算された前記プレイアウト遅延の実行平均により決定される、置くステップと
を備えたことを特徴とする方法。
【請求項１５】
各パケットについての前記プレイアウト遅延は、サンプルバッファ遅延及びジッターバッファ遅延の合計であることを特徴とする請求項１４に記載の方法。
【請求項１６】
前記受け取ったパケットに関連付けられた前記プレイアウト遅延の前記現在の平均プレイアウト遅延との比較に基づいて各パケットは受け取られるので、前記平均プレイアウト遅延は調整されることを特徴とする請求項１５に記載の方法。
【請求項１７】
サンプル−プル要求に応答するのに前記サンプルバッファ内に十分なサンプルがあるかどうかを決定することにより、及びサンプル−プル要求に応答するのに前記サンプルバッファ内に十分なサンプルがない場合に前記サンプルバッファに対する追加のサンプルを作成することにより、前記平均プレイアウト遅延は調整されることを特徴とする請求項１６に記載の方法。
【請求項１８】
前記サンプルバッファに対する追加のサンプルを作成するステップは、前記ジッターバッファ内の第１のパケットが受け取られるかどうかを決定するステップと、前記ジッターバッファ内の第１のパケットが受け取られる場合に前記パケットをデコードするステップ及び前記ジッターバッファ内の前記第１のパケットが受け取られない場合に前記パケットを隠すステップとを備えたことを特徴とする請求項１７に記載の方法。
【請求項１９】
前記平均プレイアウト遅延をあらかじめ選択された所望の範囲と比較するステップと、前記実際のプレイアウト遅延が前記所望の範囲の最小値より小さい場合に信号を拡張するステップとをさらに備えたことを特徴とする請求項１８に記載の方法。
【請求項２０】
前記実際のプレイアウト遅延が前記所望の範囲の最大値より大きい場合に信号を縮小するステップをさらに備えたことを特徴とする請求項１９に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
ＩＰ（Internet Protocol）などのコンピューティングデバイスにより使用される通信ネットワークは、パケット内のデータを転送する。パケットはデータの束であり、伝送のための特定の方法で組織されている。パケットはヘッダ(header)及び本文(body)を含む。本文はデータを含み、ヘッダはあて先アドレス、パケットの大きさ及びエラーチェックコードなどを含む一定の制御情報を含む。コンピューティングデバイスからのデータはパケットに挿入され、パケットはそのデータを抽出及び使用する別のコンピューティングデバイスに送信される。例えば、マイクロホンに接続されたコンピューティングデバイスは話されたメッセージを記録するのに使用でき、パケットを使用して、スピーカを通して話されたメッセージを再生する第２のコンピューティングデバイスに話されたメッセージを転送信することができる。
【０００２】
パケットを使用して話されたメッセージを転送するために、話されたメッセージはアナログの音声信号として記録される。ＡＤＣ(analog to digital converter：アナログ−デジタル変換器)は、音声信号をデジタル信号に変換するのに使用される。デジタル信号はコーダー／デコーダー（コーデック）によりコード化されたバイナリデータに変換される。バイナリデータをコード化することは、データを圧縮することを含む。バイナリデータは区別できるフレームに割られ、バッファ内に置かれる。パケット化器(packetizer)は、バッファから１又は複数のフレームを抽出し、フレームを１又は複数のパケットに置く。パケットはプレイバック（playback：再生）コンピューティングデバイスにネットワーク上で送信される。パケットリーダはパケットを読み出し、１又は複数のフレームをパケットから抽出し、バッファ内にフレームを置く。フレームはバッファから抽出され、フレーム内に含まれるコード化されたバイナリデータはデコードされ、コーデックによりデジタル信号に変換される。デジタル信号はＤＡＣ（digtial to analog converter：デジタル−アナログ変換器）によりアナログ音声信号に変化される。音声信号は元の話されたメッセージを再生するスピーカを駆動する。
【０００３】
通信ネットワークは物理的デバイスの集まりなので、失われていないパケットは配信されるための有限の時間をとる。パケット配信時間は、伝送線上を移動するパケットの物理的距離、パケットをルートするのに使用されるネットワークルータ及びスイッチの性能差並びにパケットを送信及び受信するコンピューティングデバイス間の時間距離である「クロックドリフト」などであるが、これらに限られない様々な遅延の原因によって変わる。パケットが送信される間にでくわす遅延の原因の数及び種類によって、遅延期間は時間と共に変わる。パケットの遅延における差は、「統計的分散(statistical dispersion)」又はより形式的でない「ジッター(jitter)」と呼ばれる。ネットワーク内のジッターが増えると、一定のパケット配信率を保持することはより難しくなり、代わりにネットワーク上に送られる音声信号を正確に再生するのをより難しくさせる。
【０００４】
特に、ジッターは、例えば数ミリ秒といった短い時間期間での最大パケット遅延−最小パケット遅延として定義されるかもしれない。最大パケット遅延及び最小パケット遅延の間の差の絶対値、つまりジッターは、短い時間期間、つまり短い期間の間に受け取られるパケットの数を含むのに十分な大きさのバッファを有することほど重要ではない。ジッターを計測することは、信号が表す音声出力を正確に再生するために音声信号を適応させるための技法を可能にする。好ましくは、信号適応は長い期間で提供され、つまり例えば約１秒といった比較的長い期間に渡るパケット遅延における変化である。長い期間のパケット遅延が増加する場合、音声信号は拡張(expand)される。長い期間のパケット遅延が減少する場合、音声信号は縮小(contract)される。音声信号を縮小及び拡張するための多くの方法がある。例えば音声信号を縮小するために、役に立つ情報をほとんど又はまったく含まない信号の小さいセグメントが取り除かれ、音声信号を拡張するために、信号の小さいセグメントがコピー及び繰り返される。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
信号縮小又は拡張によるジッターを補うことは、注意深くかつ過分ではなく行われなければならない。例えば、音声信号が人の声をエンコードし、音声信号が縮小されすぎる場合、再生される音声のスピーチは早く感じるかもしれない。同じ音声信号が拡張されすぎる場合、再生される音声のスピーチはゆっくりと感じるかもしれない。従って、ジッターを補うためになされる調整は、元のスピーチが正確に再生されるのに十分にゆっくり及び注意深くなされなければならない。
【０００６】
信号縮小及び拡張などのジッターを補う技法をいつ適用するかを決定するための従来の方法は、ジッターの原因が計測され、定量化され、値として記録されることをしばしば必要とする。その後にこの値は、ジッターの影響を補う技法をいつ適用するかを決定するのに使用される。
【課題を解決するための手段】
【０００７】
この課題を解決するための手段は、発明を実施するための形態において以下でさらに説明される簡略化された形式における、概念の選択を紹介するために提供される。この課題を解決するための手段は、特許請求された主題の鍵となる特徴を特定することを意図せず、特許請求された主題の範囲の決定の助けとして使用されることを意図しない。
【０００８】
パケットストリームにおけるジッターを補うための方法が開示されている。この方法は、パケットストリーム内のパケットからデコードされてないフレームを抽出するステップ並びにジッターバッファからのフレームをデコードする間にデコードされていないフレームをジッターバッファに置くステップ及びデコードされているフレームをサンプルバッファ内に置くステップを備える。デコードされていないフレームは、ジッターバッファ内に置かれ、デコードされたフレームは平均プレイアウト遅延により決定された率でサンプルバッファに置かれる。平均プレイアウト遅延は、各パケットが利用可能となるように各パケットについて計算されたプレイアウト遅延の実行平均である。各パケットについてのプレイアウト遅延は、サンプルバッファ遅延及びジッターバッファ遅延の合計である。
【０００９】
各パケットが受け取られると、平均プレイアウト遅延は、受け取られたパケットに関連付けられたプレイアウト遅延、つまり現在のプレイアウト遅延により近づいて適合する。さらに具体的には、現在のプレイアウト遅延は、受け取られたパケットに含まれるデコードされた１フレーム又は複数のフレームについて予期されたプレイアウト遅延である。現在のプレイアウト遅延は、デコードされたフレームがジッターバッファに置かれるとすぐに決定される。このとき、コード化されたフレームが、デコード及び再生つまりプレイアウトされる前にジッターバッファ内にどのくらい長く残っているかについての概算がなされる。
【００１０】
平均プレイアウト遅延は現在のプレイアウト遅延と比較される。現在のプレイアウト遅延は平均プレイアウト遅延より小さい。平均プレイアウト遅延の値は減らされる。現在のプレイアウト遅延は平均プレイアウト遅延より大きく、平均プレイアウト遅延の値は増加する。
【００１１】
本発明の上記の態様及び多くの付随する利点は、添付の図面と合わせて得られるとき、以下の発明を実施するための形態を参照することによってより理解されるように、よりわかりやすく理解されることになる。
【図面の簡単な説明】
【００１２】
【図１】例示的な同期データデコーダーのブロック図である。
【図２】例示的な同期データデコーダーのブロック図である。
【図３】例示的なジッターバッファ及びジッターバッファ下の関連した例示的なサンプルバッファの画像の図である。
【図４】時間内に様々な位置で再位置付けされたジッターバッファで時間と共に記録されたパケット遅延の例示図である。
【図５Ａ】時間内の様々な位置で再位置付けあれたジッターバッファで時間と共に記録されたパケット遅延の詳細なビューの例示図である。
【図５Ｂ】時間内の様々な位置で再位置付けあれたジッターバッファで時間と共に記録されたパケット遅延の詳細なビューの例示図である。
【図６】パケットに関連付けられたプレイアウト遅延であるｄi及び平均プレイアウト遅延であるＤiの間の関係の画像の図である。
【図７】時間と共に記録されたプレイアウト遅延及び時間と共に記録された平均プレイアウト遅延を表す曲線の例示図である。
【図８】ネットワーク上で送信される信号上のジッターのエフェクトを補うための例示的な方法のフロー図である。
【図９】平均プレイアウト遅延を調整するための例示的な方法のフロー図である。
【図１０】サンプルバッファからフレームの配信を調整するための例示的な方法のフロー図である。
【発明を実施するための形態】
【００１３】
音声信号を記述するデータなどのデータを含む、ＩＰネットワークなどのネットワーク上で送信されたパケットは、各パケットが受信されると、データデコーダーつまりデコーダーによりデコードされることが多い。通常、パケットのデコーディングは、パケット内に含まれる圧縮されたデータを非圧縮化することを伴う。図１は、パケット１０２を受信し、パケット内のデータをデコードし、フレーム１０４としてデコードされたデータを配信する例示的なデコーダー１００を示すブロック図である。図１に示されるデコーダー１００は、パケット１０２を受け取り、同期的にフレーム１０４を配信する。一般に、デコーダー１００で各パケットが到着すると、各パケット内のデータはすぐにデコードされ、デコードされたデータを含む１又は複数のフレームは配信される。デコーダー１００がパケットを受信しデコードするのと同じ率でフレームは配信される。
【００１４】
ネットワーク上で送信されたパケットはジッターにより影響を受けることが多く、つまりパケット配送遅延におけるバリエーションである。図１に示されるデコーダー１００などの同期デコーダー上のジッターのエフェクトに対抗するための方法は、ジッターソースがリモートデバイス上にあったとしてもジッターソースを計測することを必要とすることが多い。例えば、ローカルデバイス及びリモートデバイス間のパケットの移動距離により生じる送信遅延は計測、定量化、記録される必要がある。同様に、パケットが移動するネットワークルータ及びスイッチの性能バリエーション、並びにリモートデバイス及びローカルデバイスのクロックドリフト(clock drift)もまた、ジッターを補うこと(jitter compensation)を同期レコーダに適用するために、測定、定量化及び記録される必要があるかもしれない。
【００１５】
図２に示されるプルモデル(pull-model)のデコーダー２００などの同期デコーダーは、図１に示される同期デコーダー１００などの同期デコータで代替可能である。プルモデルデコーダーは特定のソースからのデータを特に要求する同期デコーダーである。プルモデルデコーダー２００は、パケット２０２を受信し、パケット２０２内のデータをデコードし、デコードされたデータを含むフレーム２０４を配信する。同期デコーダーとは異なり、プルモデルデコーダー２００などの同期デコーダーは、パケット２０２を受信し、フレーム２０４を同期的に配信する。プルモデルデコーダー２００が同時にパケットを受信しフレームを配信することの両方ができる一方で、パケットが到着する率及びフレームが配信される率は同じである必要はない。プルモデルデコーダー２００にパケットが到着する率は、フレームが配信される率ですぐに変化することなく変えることができる。パケット入力率及びフレーム出力率のデカップリング(decoupling)は、例えば音声フレームを要求する音声アプリケーションによりフレームが要求されるので、フレームを配信することにより達成される。
【００１６】
図２に示されるプルモデルデコーダー２００などのプルモデルデコーダーは、要求上のフレームを配信するために、ジッターバッファ及びサンプルバッファを使用する。図３は、例示的なジッターバッファ３００及び関連する例示的なサンプルバッファ３１２を示す。例示的なジッターバッファ３００などのジッターバッファは、複数のストレージセル(storage cell)を含むデータバッファである。複数のセルの各セルはデコードされていない１フレームを含むことができる。通常、その時々で、全てのセルがフレームを含むわけではない。例えば、セル０  ３０４、セル１  ３０６、セル２  ３０８、セル３  ３１０はそれぞれフレームを含み、残っているセルはフレームを含まないかもしれない。ジッターバッファ内のデコードされていないフレームは、プレイバック順序つまりフレームデータがプレイバックされるべき順序で編成される。つまり、セル０  ３０４はセル１  ３０６の前に再生され、セル１  ３０６はセル２  ３０８の前に再生され、セル２  ３０８はセル３  ３１０の前に再生される。ジッターバッファ３００は、読み出され取り除かれることになるセルを指すポインタ３０２を含む。ジッターバッファ３００内のセル０  ３０４などのジッターバッファの最初のセルは、「ジッターヘッド」と呼ばれる。図３−７において、ジッターバッファのジッターヘッドは、クロスハッチングにより示される。ジッターバッファ３００に関連付けられた例示的なサンプルバッファ３１２もまた図３に示される。サンプルバッファ３１２は、ジッターバッファ３００から読み出され、デコードされ、フレームを取り除かれることにより生成されるデコードされたフレームデータ３１４を含む。
【００１７】
図２に示される例示的なプルモデルデコーダー２００などのプルモデルデコーダーは、パケット２０２が受信されるとパケット２０２からデコードされていないフレームを抽出し、プレイバック順でデコードされていないフレームをジッターバッファにロードし、１又は複数のフレームが要求されているときサンプルバッファ３１２からフレーム３１４を配信することにより、要求上のフレームを配信する。フレーム３１４が配信されると、フレーム３１４はサンプルバッファ３１２から取り除かれる。サンプルバッファ３１２にフレームがない場合、プルモデルデコーダー２００は、ジッターバッファ３００から「次の」デコードされていないフレームを読み出し、取り除き、フレームをデコードし、サンプルバッファ３１２にデコードされたフレームをロードする。ポインタ３０２はしたがって、次に読み出されることになるセルに移動される。好ましくは、ポインタ３０２はジッターヘッド３０４の１又は２のセル内に保たれる。入ってくるパケットのそれぞれは、パケットのシーケンス番号に対応するジッターヘッダ内のセルに置かれる。大量のジッターがある場合、パケットを挿入するポインタは第１のセル及び第２のセルの間で行き来して動く。したがって、短い時間期間での最小のセル置き換えはジッターバッファのヘッダから１つのセルについてめったにより近づかない。パケットのシーケンス番号の順序で到着するジッター及びパケットがほとんどない又は全くない場合、連続するパケットが置かれ、たとえばジッターヘッドの１フレーム内といったジッターバッファの早い部分から消費される。例えば、典型的なジッターバッファはフレームデータの約１から５秒を含み、典型的なフレームはデータの約２０ミリ秒を含む。ジッターバッファ３００におけるデコードされていないフレームは取り除かれるので、残っているデコードされていないフレームは次の利用可能なセルに移動することにより、ジッターヘッド３０４の方へ移動される。
【００１８】
サンプルバッファ３１２内のデコードされた複数のフレームは、再生可能なフレーム３１４の隣接するサンプルを形成する。再生可能サンプル３１４はフレームバッファ３１２から抽出され再生されるので、より多くの再生可能なサンプルがサンプルバッファ３１２に挿入される必要がある。サンプルバッファ３１２が新しいサンプルを必要とするので、デコードされていないフレームは、ジッターバッファ３００のヘッドから抽出され、フレームはサンプルにデコードされ、サンプルバッファ３１２に挿入される。
【００１９】
パケットの到着の遅延はジッターのために変わることができるので、フレームがジッターバッファに挿入される率は、サンプルバッファ３１２からフレームが要求される率と比較して変わる。ここで説明される方法は、履歴窓(history window)としてジッターバッファ３００を使用することによりこの不均衡を補う。例えばジッターバッファ３００は、サンプルバッファ内の音声データの１秒を提供するために十分なデコードされていないフレームを格納することができる場合、１秒のジッターバッファは１秒の履歴窓として閲覧することができる。以下の説明からより良く理解できるであろうが、この方法は、ジッターバッファがパケットが配信される履歴(history、ヒストリ)の１秒を「覆う」ことを保証するためにこの例において１秒のジッターバッファを整列することにより、パケット遅延及びサンプル要求率の間の差(variation、バリエーション)を補う。例えば、１秒の履歴窓は５０セルを含むことができ、各セルはデコードされていないフレームデータの２０ミリ秒を含むことができる。好ましくは、１秒ジッターバッファは、デコードされていないフレームにおけるデータがプレイバックされる必要がある時間内に、時点がジッターバッファにより覆われる時間範囲内に反落するように、時間単位(time dimension)に整列される。
【００２０】
パケットが配信される時間範囲を覆うためのジッターバッファを整列させる処理が、図４に示される時間上で記録されたパケット遅延の例示図により示される。より詳しくは、図４は、時間と共に記録されたパケット遅延を示すパケット遅延曲線４００を含む。ジッターバッファは４０２ａ、４０２ｂ、４０２ｃ及び４０２ｄの例示的な４つの位置で示される。例示的な４つの位置である４０２ａ、４０２ｂ、４０２ｃ及び４０２ｄにおけるジッターバッファのジッターヘッダの位置がパケット遅延曲線４００の４つのセル内であるように、パケット遅延曲線内にジッターバッファを整列させる。例えば、パケット遅延曲線４００が落ちたので、位置４０２ｂにおけるジッターバッファは位置４０２ａ内のジッターバッファより低い。パケット遅延曲線４００が上がったので、位置４０２ｃにおけるジッターバッファは位置４０２ｂ内のジッターバッファより高い。パケット遅延曲線４００が再度落ちたので、位置４０２ｄにおけるジッターバッファは位置４０２ｃ内のジッターバッファより低い。実際のパケット遅延は、図示されたパケット遅延曲線４００が示すのと多かれ少なかれ変わるかもしれない。従ってパケット遅延曲線４００は例示として構築され、限定はしない。
【００２１】
パケット遅延曲線でジッターバッファを整列させるためにどのようにジッターバッファを調整するかを決定するためにプレイアウト遅延は計算される。パケット遅延はデコーダーに到着するパケットの遅延を測定し、プレイアウト遅延はプレイアウトされることになるデコードされたフレームについてかかるであろう時間を予測する。実際には、プレイアウト値は関連するパケット遅延の値の反比例の値(inverse value)に近いかもしれない。パケット遅延とプレイアウト遅延との間のほとんど反比例の関係は、図５Ａ及び図５Ｂを比較することにより理解できる。図５Ａは、図４に示されるパケット遅延曲線４００に似ているパケット遅延曲線の典型的な区域のより詳細なビューである。図５Ｂは、図５Ａに示されるパケット遅延曲線に関連付けられたプレイアウト遅延の詳細なビューである。
【００２２】
図５Ａにおいて、パケット遅延曲線５００は短い履歴窓上でのパケット遅延を示す。図示されたパケット遅延曲線５００は、ローカルの最大値５０４、５０８及びローカルの最小値５０２、５０６及び５１０を定義する。ローカルの最大値５０４はローカルの最小値５０２及び５０６の間に位置し、ローカルの最大値５０８はローカルの最小値５０６及び５１０の間に位置する。ジッターバッファは５２０ａ、５２０ｂ、５２０ｃの３つの位置において示される。位置５０２ａはローカルの最小値５０２及びローカルの最大値５０４の間に位置し、位置５０２ｂはローカルの最大値５０４及びローカルの最小値５０６の間に位置し、位置５０２ｃはローカルの最小値５０６及びローカルの最大値５０８の間に位置する。ジッターバッファのヘッドがプレイアウト遅延曲線５００の１つのセル内に位置するように、ジッターバッファは位置付けられる。
【００２３】
プレイアウト遅延はパケット遅延の反比例に近いので、プレイアウト遅延を表す曲線は、パケット遅延を表す曲線の反比例に近い。したがって、図５Ｂに示される例示的なプレイアウト遅延曲線５５０は、図５Ａに示されるパケット遅延曲線５００の反比例に近い。プレイアウト遅延はパケット遅延の反比例に近いので、パケット遅延曲線の最大値は関連したプレイアウト遅延曲線において最小値に、パケット遅延曲線の最小値は、関連したプレイアウト遅延曲線において最大値になる。たとえば、図５Ａに示されるローカルの最小値５０２は図５Ｂにおけるプレイアウト遅延において示されるローカルの最大値５５２となる。同様に、ローカルの最大値５０４はローカルの最小値５５４となり、ローカルの最小値５０６はローカルの最大値５５６となり、ローカルの最大値５０８はローカルの最小値５５８となり、ローカルの最小値５１０はローカルの最大値５６０となる。
【００２４】
プレイアウト遅延曲線はパケット遅延曲線の反比例に近いので、ジッターヘッダがジッターバッファの最後となるように、ジッターバッファも反比例化される。例えば、図５Ｂにおいてジッターヘッドはジッターバッファの最後であるのに対して、図５Ａにおいて、ジッターヘッドはジッターバッファの最初にある。ジッターバッファは５７０ａ、５７０ｂ及び５７０ｃにおいて示される。図５Ａに示されるパケット遅延曲線５００上に整列したジッターバッファと同様に、ジッターバッファは図５Ｂに示されるパケット遅延曲線５００上に整列させられる。
【００２５】
上述に示したように、ジッターバッファは５７０ａ、５７０ｂ及び５７０ｃの３つの位置において示される。３つの位置はそれぞれ、図５Ａの位置５２０ａ、５２０ｂ及び５２０ｃで整列される。位置５７０ａにおいてジッターバッファは、ジッターバッファのヘッドの１セル内のローカルの最大値５５２及びローカルの最小値５５４の間のプレイアウト遅延曲線５５０の区域をオーバレイ(overlay)する。位置５７０ｂにおいてジッターバッファは、ジッターバッファのヘッドの１セル内のローカルの最小値５５４及びローカルの最小値５５６の間のプレイアウト遅延曲線５５０の区域をオーバレイする。位置５７０ｃにおいてジッターバッファは、ジッターバッファのヘッドの１セル内のローカルの最大値５５６及びローカルの最小値５５８の間のプレイアウト遅延曲線５５０の区域をオーバレイする。
【００２６】
ジッターヘッドがオーバレイするようにジッターバッファの位置を調整すること、又はオーバレイに近づくことで、ジッターバッファのヘッドの１セル内のプレイアウト遅延曲線は平均プレイアウト遅延を調整することを伴う。図６はパケットに関連付けられたプレイアウト遅延であるｄi、平均プレイアウト遅延であるＤi、ジッターバッファ６００及びジッターバッファのヘッド６０２の間の関係の画像の図である。好ましくは、ジッターバッファ６００のヘッド６０２は、平均プレイアウト遅延曲線６１０及びプレイアウト遅延曲線６２０の両方をオーバレイする。ジッターヘッド６０２及び平均プレイアウト遅延曲線６１０の間の距離は、Ｄiにより表される距離により与えられる。サンプル遅延を含むジッターヘッド６０２及びプレイアウト遅延曲線６２０の間の距離は、ｄiにより表される距離により与えられる。
【００２７】
ジッターヘッド６０２がオーバレイするか又はオーバレイに近づくように、ジッターバッファ６００の位置を調節する方法で、プレイアウト遅延曲線６２０は、通常はゼロであるジッター制御についての最小遅延値Ｄminを設定し、通常はゼロであるジッター制御についての最大遅延値Ｄmaxを設定することにより始まる。ジッターバッファ６００においてパケットが利用可能である場合、パケットはデコードされ、ジッターバッファ６００は次のパケットをジッターヘッドに移動してシフトされる。デコードされたパケットは、例えばサンプルバッファ３１２といったサンプルバッファ内の最後のサンプルに添付される新しいサンプルを作成する。ジッターバッファ６００内でパケットが利用可能でない場合、失ったパケットは合成されたサンプルを使用して信号を縮小又は拡大することにより隠され、信号を縮小又は拡大するのに使用された合成されたサンプルはサンプルパケット３１２内の最後のサンプルに添付される。
【００２８】
この方法の最初に設定されたＤmax及びＤminの値は、信号を縮小又は拡大するかどうかを決定するのに使用される。ＤiがＤmaxより大きい場合、信号は縮小され、Ｄiは同じ対応する時間の減少により減る。ＤiがＤminより小さい場合、信号は拡大され、Ｄiは同じ対応する時間の増加により増える。ＤiがＤmaxより大きくなく、ＤiがＤminより小さくない場合、信号は変化せず、Ｄiの値は変化する。この時点でサンプルバッファ３１２からの要求されたサンプルの数が返される。
【００２９】
信号が「音声」又は「非音声」であるかどうかによって、どのように信号が縮小又は拡張されるかを当業者は理解されたい。音声化された信号は役に立つ情報を含む一方で、音声化されていない信号は沈黙、背後のノイズ又は「ｓｈ」若しくは「ｓｓ」などの音を含む。信号が音声化されていない場合、信号はノイズベースの方法を使用することにより拡張できる。このような拡張方法において、サンプルはフレーム長の１．５倍まで拡張できる。フレーム長の約１．５倍サンプルを拡張することも可能である。従って、フレーム長の１．５倍までサンプルを拡張することは、例として構築されるべきであり、限定ではない。例えばフレーム長が２０ミリ秒である場合、フレーム長が３０ミリ秒となるまでノイズサンプルを挿入することによりフレームを拡張できる。信号が音声化される場合、ピッチサイクルを繰り返すことにより、又は古いピッチサイクルから新しいピッチサイクルを生成することにより、信号を拡張できる。音声化された信号に対して、フレームの拡張された長さは、ピッチサイクルの大きさに依存する。例えばピッチサイクルが５ミリ秒の範囲である場合、フレーム長は５ミリ秒増分において拡張できる。従って、音声化信号を拡張するための技法は信号に独立である。音声化されていない信号を縮小するために、ウィンドイング又はサンプル見積りを使用して、サンプルをカットし結合することを当業者は理解されたい。通常、例えばフレーム長の半分といって所望の長さに信号のフレームを縮小することが可能である。音声信号を縮小するために、ピッチサイクルは取り除かれ結合される。従って、フレームの縮小された長さは、ピッチサイクルの大きさ及び音声化された信号を拡張するための技法がどれだけ信号依存かに依存する。
【００３０】
上述に示されるように、信号が縮小されると、Ｄiの値が同じ対応する時間の減少により減らされ、信号が拡大されると、Ｄiの値が同じ対応する時間の増加により増やされる。Ｄiの値は信号の長さを使用して信号の縮小及び拡大に従って調整されるかもしれない。信号が長さＮorgを有し、信号の長さがＮnewとなる場合、Ｄiは、Ｄi(new)＝Ｄi(old)＋（Ｎnew−Ｎorg）/Ｓのように修正され、ここでＳはサンプリング率（つまり１秒に１６０００サンプル）であり、この結果は数秒以内である。当業者は、平均プレイアウト遅延曲線６１０などの平均プレイアウト遅延曲線を「エンベロープ(envelope)」と呼ぶことが多い。次にパケットが受信され、エンベロープはＤi(old)ではなくＤi(new)に基づいて更新される。言い換えると、Ｄi(new)はＤi(old)を上書きするためにすぐに使用できる。
【００３１】
好ましくは、使用される転送プロトコルに従って、平均プレイアウト遅延Ｄi-が減らされる又は増やされる量が決定される。例えば、ＴＣＰ(Transmission Control Protocol)はより早い適応、及び従ってＵＤＰ(user Datagram Protocol)より大きな調整量を必要とする。ＵＤＰについてｄiがＤiより小さい場合、Ｄi(new)＝０.９９８＊Ｄi(OId)＋０.００２＊ｄi。さもなければ、Ｄi(new)＝ｄi。ＴＣＰについてｄiがＤiより小さい場合、Ｄi(new)＝０.９５０＊Ｄi(old)＋０.０５０＊ｄi。さもなければ、Ｄi(new)＝０.９＊Ｄi(old)＋０.１＊ｄi。
【００３２】
例示的な図は、図７に示される上で説明される技法を使用してジッターヘッドがプレイアウト遅延をオーバレイするように、ジッターバッファの位置調節を示している。図７における図は、例示的なプレイアウト遅延曲線７００、例示的な平均プレイアウト遅延曲線７１０つまりエンベロープ７１０、及び５箇所に示されているジッター７２０を含む。プレイアウト遅延曲線７００はソリッド線(solid line)であり、エンベロープ７１０は点線である。エンベロープ７１０はプレイアウト遅延曲線７００よりはるかにゆっくり時間をかけて変化する。好ましくは、可能な限り、ジッターヘッドがエンベロープ７１０に近づくように、ジッターヘッドを調整する。例えば、ジッターバッファ７２０は位置７２０Ａ、７２０Ｂ、７２０Ｃ、７２０Ｄ及び７２０Ｅで示される。位置７２０Ａ、７２０Ｃ、７２０Ｄ、及び７２０Ｅにおいて、ジッターヘッドがエンベロープ７１０にとても近づき、ジッターバッファの第２のセルがエンベロープ７１０をオーバレイするように、ジッターバッファは調整される。位置７２０Ｂにおいて、ジッターバッファはエンベロープ７１０より高く、ジッターヘッドはエンベロープ７１０より高い。時間と共に、ジッターバッファ及びジッターヘッドは繰り越され（brought down）エンベロープ７１０で整列する。
ネットワーク上に送信される信号上のジッターのエフェクトを補うためにエンベロープでジッターヘッダを整列させるために、ジッターヘッド及びジッターバッファを調節するための例示的な方法は、図８におけるフロー図により示される。ほとんどのデバイスにとって、例示的な適応するとき、一定の率でサンプルが配信されることが好ましいことに留意されたい。従って、サンプルは一定の率でサンプルバッファ外にプルするのが好ましい。派えっと遅延の量の変化を順応させるために、また一定のサンプル配信率を維持するために、サンプルバッフア内のサンプルは縮小され、つまりサンプルバッファ内により少ないサンプルがあることを保証するために圧縮されるか、又はサンプルバッフア内により多くのサンプルがあることを保証するために拡張されるかである。サンプルバッフア内のサンプルの数の変更は、ジッターバッファがどれだけ早くシフトされるかを間接的に制御する。サンプルバッファ内のサンプルがより多い場合、ジッターバッファをシフトする必要性が減り、これはより長いパケット遅延に順応する。サンプルバッファ内のサンプルがより少ない場合、ジッターバッファをシフトする必要性が増え、これはより短いパケット遅延に順応する。
【００３３】
図８に示される例示的な方法はブロック８００で始まる。ブロック８００において、パケットが受信されるとき、図９に示されるように受信したパケットのプレイアウト遅延を使用して平均プレイアウト遅延が調整される。ブロック８０２において、サンプルはサンプルバッファからプルされ、図１０に示される平均プレイアウト遅延を使用してサンプル配信は調整される。ブロック８００における動作は、非同期的にブロック８０２における動作になることに留意されたい。従って、ブロック８００及びブロック８０２における動作はほとんど同時に行われる。
【００３４】
図９は平均プレイアウト遅延、つまり図８のブロック８００における動作を調整するための例示的な方法のフロー図である。この方法はパケットを受信する図９のブロック９００で始まる。ブロック９０２において、受信したパケットのタイムスタンプ及び／又はシーケンス番号は、ジッターバッファ内でパケットをどこに置くべきかを決定するために使用される。タイムスタンプ又はシーケンス番号は、パケット内の１フレーム又は複数のフレームが、ジッターヘッドパケット内のフレームの前に置かれるべきであることを示す場合、ジッターヘッドにパケット内のフレームを挿入することを可能にするためにジッターヘッドフレームを戻して動かす。代替として、タイムスタンプ又はシーケンス番号は、パケット内の１フレーム又は複数のフレームがジッターバッフア内の最後に占められたセル又は他のセルの後にすぐに置かれるべきであることを、代わりに示すかもしれない。ジッターバッファ内に一時的な「穴(hole)」がある可能性があり、つまりあるジッターバッファセルは、他のジッターバッファセル一時的に占有されていない間に、占有されている可能性がある。
【００３５】
実際に、ジッターヘッドにパケット内のフレームを挿入することになるのを可能にするためにジッターヘッドフレームを戻して移動する必要性は、使用されている転送プロトコルがＴＣＰであり、パケットが大きいバーストにおいて遅延するときに、通常起こる。例えばＵＤＰなどの他の転送プロトコルについて、１つのセル又は全くなしにジッターヘッドフレームをシフトバックすることになるのを可能にするために、このような遅いパケットは代わりに落とされるかもしれない。
【００３６】
図９のブロック９０４に続いて、フレームつまりデコードされていないフレームはジッターバッファ内に置かれる。ブロック９０６において、プレイアウト遅延ｄiを計算する。ブロック９０８において、プレイアウト遅延であるｄi及び平均プレイアウト遅延であるＤiの間で比較がなされる。ｄiがＤiより小さい場合、つまりプレイアウト遅延が平均プレイアウト遅延より小さい場合、制御はブロック９１０に流れる。さもなければ制御はブロック９１２に流れる。ブロック９１０において、上述の技法を使用してＤiはゆっくりとｄiに適応する。ブロック９１２において、上述の技法を使用してＤiはすばやくｄiに適応する。ブロック１９０及び９１２の後、この方法は終了する。
【００３７】
図１０は、例えば図８のブロック８０２に示される動作といった計算された平均プレイアウト遅延を使用して、サンプルをプルし、サンプル配信率を調整するための例示的な方法のフロー図である。サンプルプルが要求される、つまりサンプルバッファ３１２などのサンプルバッファからのサンプルが要求される一方で、この方法は図１０のブロック１０００で始まる。ブロック１００２において、十分なサンプルがサンプルバッファ内にあるかどうかを決定するためにテストがなされる。サンプルバッファ内に十分なサンプルがある場合、サンプルが配信されるブロック１０１８に制御は流れる。サンプルバッファ内に十分なサンプルがない場合、決定ブロック１００４に制御は流れる。決定ブロック１００４において、ジッターバッファ内の最初のパケット、つまりジッターヘッダ内のパケットを受信したかどうかを決定するためにテストがなされる。ジッターバッファ内の最初のパケットを受信した場合パケットがデコードされ、パケットのデコードされたフレームがサンプルバッファ内に置かれるブロック１００６に制御は流れる。最初のパケットが受信されていない場合、制御はブロック１００８に流れる。ブロック１００８において、最初のパケットが利用可能でないために失われているフレームは合成されたサンプルを使用して隠される。この方法は、デコード又は合成されているかのいずれかのサンプルが、サンプルバッファ内に置かれているブロック１０１０に続く。決定ブロック１０１２において、Ｄiは、平均プレイアウト遅延に対する所望の範囲と比較される。Ｄiが所望の範囲内の場合、サンプルが配信されるブロック１０１８に流れる。Ｄiが低い場合、つまり所望の範囲より低い場合、制御はブロック１０１４に流れる。Ｄiが高い場合、つまり所望の範囲より高い場合、制御はブロック１０１６に流れる。ブロック１０１６において、信号は上述の技法を使用して拡張される。ブロック１０１８において、サンプルは配信され、この方法は終了する。
【００３８】
例示的な実施形態が示され説明されてきた一方で、本発明の精神及び範囲から逸脱することなく様々な変更がなされうることを理解されたい。
【図１】
2010504039.tif 000003
【図２】
2010504039.tif 000004
【図３】
2010504039.tif 000005
【図４】
2010504039.tif 000006
【図５Ａ】
2010504039.tif 000007
【図５Ｂ】
2010504039.tif 000008
【図６】
2010504039.tif 000009
【図７】
2010504039.tif 000010
【図８】
2010504039.tif 000011
【図９】
2010504039.tif 000012
【図１０】
2010504039.tif 000013
【国際調査報告】
2010504039.tif 000014
2010504039.tif 000015