(57)【特許請求の範囲】
【請求項１】
ネットワークを通してリアルタイムトラフィックを送信する際のビットレート制御方法において、
ａ）複数の予め定められた離散的ビットレートの１つを送信ビットレートとして設定し、
ｂ）目標ビットレートまたは現在設定されている送信ビットレートの一方に隣接する少なくとも１つの離散的ビットレートを選択する確率を決定し、
ｃ）前記決定された確率に基づいて、前記少なくとも１つの離散的ビットレートのいずれかを新たな送信ビットレートとして設定する、
ことを特徴とするビットレート制御方法。
【請求項２】
ネットワークを通してリアルタイムトラフィックを送信する際のビットレート制御方法において、
ａ）複数の予め定められた離散的ビットレートを用意し、
ｂ）前記複数の離散的ビットレートのうち任意の隣接したビットレートの一方を選択する確率を決定し、
ｃ）前記決定された確率に基づいて、いずれか一方のビットレートを設定するか否かを判定し、
前記ステップ（ｂ）は、
ｂ．１）前記ネットワークの状態に応じて目標ビットレートを設定し、
ｂ．２）前記設定された目標ビットレートに隣接するビットレートを決定し、
ｂ．３）前記設定された目標ビットレートが前記隣接ビットレートの一方に近いほど、当該一方のビットレートを選択する確率を高くする、
ことを特徴とするビットレート制御方法。
【請求項３】
ネットワークを通してリアルタイムトラフィックを送信する際のビットレート制御方法において、
ａ）複数の予め定められた離散的ビットレートを用意し、
ｂ）前記複数の離散的ビットレートのうち任意の隣接したビットレートの一方を選択する確率を決定し、
ｃ）前記決定された確率に基づいて、いずれか一方のビットレートを設定するか否かを判定し、
現在設定されているビットレートの変更は、一段高い隣接ビットレートへの変更、一段低い隣接ビットレートへの変更、および、変更なし、のいずれかであることを特徴とするビットレート制御方法。
【請求項４】
前記ステップ（ｂ）は、
ｂ．１）前記ネットワークの状態に応じて目標ビットレートを設定し、
ｂ．２）前記設定された目標ビットレートと現在設定されているビットレートとの差の大きさに依存して、前記現在設定されているビットレートに隣接するビットレートの一方を選択する確率を変化させる、
ことを特徴とする請求項３記載のビットレート制御方法。
【請求項５】
前記ステップ（ｂ）は、
ｂ．１）前記ネットワークの状態に応じてビットレートの変更方向を決定し、
ｂ．２）前記複数の離散的ビットレートにおける前記現在設定されているビットレートの高さに依存して、前記現在設定されているビットレートに隣接するビットレートの一方を選択する確率を変化させる、
ことを特徴とする請求項３記載のビットレート制御方法。
【請求項６】
前記ステップ（ｂ）において、隣接するビットレートの間隔に依存して前記選択する確率を決定することを特徴とする請求項１記載のビットレート制御方法。
【請求項７】
さらに、
ｄ）前記ステップ（ｃ）によって現在設定されているビットレートが変更されたか否かを判定し、
ｅ）ビットレートが変更された場合には、変更後の予め定められた時間が経過するまで、前記選択する確率を通常の確率よりも小さくする、
ことを特徴とする請求項１ないし６のいずれかに記載のビットレート制御方法。
【請求項８】
前記予め定められた時間が経過するまで前記選択する確率を０に設定することを特徴とする請求項７記載のビットレート制御方法。
【請求項９】
ネットワークを通してリアルタイムトラフィックを送信する際のビットレート制御方法において、
ａ）複数の予め定められた離散的ビットレートを用意し、
ｂ）前記離散的ビットレートの任意の隣接ビットレートのうち、一方に近いほど、当該一方のビットレートを選択する確率が高くなるような変更確率生成情報を用意し、
ｃ）前記ネットワークの状態に応じて目標ビットレートを設定し、
ｄ）前記設定された目標ビットレートに隣接するビットレートと前記変更確率生成情報とに基づいて、前記隣接するビットレートのいずれか一方を選択する確率を決定し、
ｅ）前記決定された確率に基づいて、前記いずれか一方のビットレートに設定する、
ことを特徴とするビットレート制御方法。
【請求項１０】
前記変更確率生成情報は、次式
P = (R(n+1)-Rt) / (R(n+1)-R(n))
（Pは低い方の隣接ビットレートを選択する確率、Ｒｔは前記設定された目標ビットレート、Ｒ（ｎ）とＲ（ｎ＋１）とは隣接するビットレートであり、Ｒ（ｎ＋１）は１段高いビットレートである。）
によって表現されることを特徴とする請求項９記載のビットレート制御方法。
【請求項１１】
前記ステップ（ｃ）において、前記目標ビットレートはＴＣＰ(Transmission Control Protocol)フレンドリー制御に従って計算されることを特徴とする請求項９または１０記載のビットレート制御方法。
【請求項１２】
ネットワークを通してリアルタイムトラフィックを送信する際のビットレート制御方法において、
ａ）複数の予め定められた離散的ビットレートの１つを送信ビットレートとして設定し、
ｂ）目標ビットレートと現在設定されているビットレートとの差が大きいほど、前記現在設定されているビットレートに隣接するビットレートのうち前記目標ビットレートに近い方を選択する確率が高くなるような変更確率生成情報を用意し、
ｃ）前記ネットワークの状態に応じて目標ビットレートを設定し、
ｄ）前記設定された目標ビットレートと前記変更確率生成情報とに基づいて、前記現在設定されているビットレートに隣接するビットレートのいずれか一方を選択する確率を決定し、
ｅ）前記決定された確率に基づいて、前記いずれか一方のビットレートを設定するか否かを判定する、
ことを特徴とするビットレート制御方法。
【請求項１３】
前記変更確率生成情報では、
前記現在設定されているビットレートが前記目標ビットレートより高い場合には、その差が大きいほど、前記現在設定されているビットレートを低い方の隣接ビットレートへ変更する確率を高くし、
前記現在設定されているビットレートが前記目標ビットレートより低い場合には、その差が大きいほど、前記現在設定されているビットレートを高い方の隣接ビットレートへ変更する確率を高くし、
前記現在設定されているビットレートと前記目標ビットレートとが等しい場合には、前記現在設定されているビットレートを変更しない、
ことを特徴とする請求項１２記載のビットレート制御方法。
【請求項１４】
前記現在設定されているビットレートが前記目標ビットレートより高い場合の前記変更確率生成情報は、次式（１）〜（５）：
（１）Pd(n) = (R(n)-Rt) / (R(N-1)-R(0))；
（２）Pd(n) = (R(n)-Rt) / (R(n)-R(0))；
（３）Rt < Rm の時、 Pd(n) = (Rm-Rt) / (Rm-R(0)) ,
Rt >= Rm の時、Pd(n) = 0
ただし、Rm = (R(n)+R(n-1))/2；
（４）Rt > R(n-1) の時、 Pd(n) = (R(n)-Rt) / (R(n)-R(n-1)) ,
Rt <= R(n-1) の時、 Pd(n) = 1；および
（５）Rt <= R(n-1) の時、 Pd(n) = 1
R(n-1) < Rt <= Rm の時、  Pd(n) = (Rm-Rt) / (Rm-R(n-1)) ,
Rt > Rm の時、    Pd(n) = 0
ただし、Rm = (R(n)+R(n-1))/2、
（ここで、Ｎは離散的ビットレートの数、Pd(n)はビットレートを低下させる確率、Ｒｔは前記設定された目標ビットレート、Ｒ（０）は離散的ビットレートの最低ビットレート、Ｒ（ｎ）は前記現在設定されているビットレート、Ｒ（ｎ−１）は前記現在設定されているビットレートに隣接する１段低いビットレートである。）
のうちの１つの式によって表現されることを特徴とする請求項１３記載のビットレート制御方法。
【請求項１５】
前記現在設定されているビットレートが前記目標ビットレートより低い場合の前記変更確率生成情報は、次式（６）〜（１０）：
（６）Pu(n) = (Rt-R(n)) / (R(N-1)-R(0))；
（７）Pu(n) = (Rt-R(n)) / (R(n)-R(0))；
（８）Rt > Rm の時、 Pu(n) = (Rt-Rm) / (Rm-R(0)) ,
Rt <= Rm の時、Pu(n) = 0
ただし、Rm = (R(n)+R(n+1))/2；
（９）Rt < R(n+1) の時、 Pu(n) = (Rt-R(n)) / (R(n)-R(n+1)) ,
Rt >= R(n+1) の時、 Pu(n) = 1；
（１０）Rt < Rm の時、      Pu(n) = 0
Rm <= Rt < R(n+1) の時、Pu(n) = (Rt-Rm) / (Rm-R(n+1)) ,
Rt >= R(n+1) の時、 Pu (n) = 1
ただし、Rm = (R(n)+R(n+1))/2、
（ここで、Ｎは離散的ビットレートの数、Pu(n)はビットレートを上昇させる確率、Ｒｔは前記設定された目標ビットレート、Ｒ（０）は離散的ビットレートの最低ビットレート、Ｒ（ｎ）は前記現在設定されているビットレート、Ｒ（ｎ＋１）は前記現在設定されているビットレートに隣接する１段高いビットレート、Ｒ（Ｎ−１）は離散的ビットレートの最高ビットレートである。）
のうちの１つの式によって表現されることを特徴とする請求項１３記載のビットレート制御方法。
【請求項１６】
前記ステップ（ｃ）において、前記目標ビットレートはＴＣＰ(Transmission Control Protocol)フレンドリー制御に従って計算されることを特徴とする請求項１２ないし１５のいずれかに記載のビットレート制御方法。
【請求項１７】
ネットワークを通してリアルタイムトラフィックを送信する際のビットレート制御方法において、
ａ）複数の予め定められた離散的ビットレートを用意し、
ｂ）前記複数の離散的ビットレートにおける現在設定されているビットレートの高さに依存して、前記現在設定されているビットレートに隣接するビットレートの一方を選択する確率が変化するような変更確率生成情報を用意し、
ｃ）前記ネットワークの状態に応じてビットレートの変更方向を決定し、
ｄ）前記決定されたビットレート変更方向、前記現在設定されているビットレートおよび前記変更確率生成情報に基づいて、前記現在設定されているビットレートに隣接するビットレートのいずれか一方を選択する確率を決定し、
ｅ）前記決定された確率に基づいて、前記いずれか一方のビットレートを設定するか否かを判定する、
ことを特徴とするビットレート制御方法。
【請求項１８】
前記変更確率生成情報では、
前記ビットレート変更方向が低下方向である場合には、前記現在設定されているビットレートが高いほど、前記現在設定されているビットレートを低い方の隣接ビットレートへ変更する確率を高くし、
前記ビットレート変更方向が上昇方向である場合には、前記現在設定されているビットレートが低いほど、前記現在設定されているビットレートを高い方の隣接ビットレートへ変更する確率を高くする、
ことを特徴とする請求項１７記載のビットレート制御方法。
【請求項１９】
前記変更確率生成情報は、
前記ビットレート変更方向が低下方向である場合には、次式
Pd(n) = (R(n)-R(0)) / (R(N-1)-R(0))
（ここで、Ｎは離散的ビットレートの数、Ｐｄはビットレートを低下させる確率、Ｒ（０）は離散的ビットレートの最低ビットレート、Ｒ（ｎ）は前記現在設定されているビットレート、Ｒ（Ｎ−１）は離散的ビットレートの最高ビットレートである。）
で表現され、
前記ビットレート変更方向が上昇方向である場合には、次式
Pu(n) = (R(N-1)-R(n)) / (R(N-1)-R(0))
（ここで、Ｎは離散的ビットレートの数、Ｐｕはビットレートを上昇させる確率、Ｒ（０）は離散的ビットレートの最低ビットレート、Ｒ（ｎ）は前記現在設定されているビットレート、Ｒ（Ｎ−１）は離散的ビットレートの最高ビットレートである。）
で表現される、ことを特徴とする請求項１８記載のビットレート制御方法。
【請求項２０】
前記変更確率生成情報では、
前記ビットレート変更方向が低下方向である場合に、ビットレート低下確率をTCPフレンドリー制御におけるビットレート低下値に整合させて決定し、
前記ビットレート変更方向が上昇方向である場合に、ビットレート上昇確率を前記TCPフレンドリー制御におけるビットレート低下値に整合させて決定する、
ことを特徴とする請求項１８記載のビットレート制御方法。
【請求項２１】
前記ＴＣＰフレンドリー制御はAIMD (Additive Increase/Multiple Decrease) に基づく制御であり、AIMDにおけるビットレート増加時の加算値およびビットレート減少時の乗算値をそれぞれＡおよびＭであるとすると、
前記変更確率生成情報は、
前記ビットレート変更方向が上昇方向である場合には、ビットレートを上げる確率Ｐｕを求めるための次式
Pu(n) = A / [R(n+1)-R(n)]
により表現され、
前記ビットレート変更方向が低下方向である場合には、ビットレートを下げる確率Ｐｄを求めるための次式
Pd(n) = D(n) / [R(n)-R(n-1)]  （ただし、D(n) = (1-M)R(n)）
により表現される、
ことを特徴とする請求項２０記載のビットレート制御方法。
【請求項２２】
ネットワークを通してリアルタイムトラフィックを送信する際のビットレート制御方法において、
ａ）複数の予め定められた離散的ビットレートを用意し、
ｂ）前記複数の離散的ビットレートにおける任意の隣接するビットレート間の距離に依存して確率が変化するような変更確率生成情報を用意し、
ｃ）前記ネットワークの状態に応じてビットレートの変更方向を決定し、
ｄ）前記決定されたビットレート変更方向、現在設定されているビットレートおよび前記変更確率生成情報に基づいて、前記現在設定されているビットレートに隣接するビットレートのいずれか一方を選択する確率を決定し、
ｅ）前記決定された確率に基づいて、前記いずれか一方のビットレートを設定するか否かを判定する、
ことを特徴とするビットレート制御方法。
【請求項２３】
前記変更確率生成情報は、
前記ビットレート変更方向が低下方向である場合には、
Pd(n) = Cd(n) / (R(n)-R(n-1))
ただし、Cd(n) は次式（１）〜（４）のいずれかにより定まり、
（１）Cd(n) = (R(n)-Rt) / (R(N-1)-R(0))；
（２）Cd(n) = (R(n)-Rt) / (R(n)-R(0))；
（３）Rt < Rm の時、 Cd(n) = (Rm-Rt) / (Rm-R(0)) ,
Rt >= Rm の時、Cd(n) = 0 (ただし、Rm = (R(n)+R(n-1))/2)；
（４）Cd(n) = (R(n)-R(0)) / (R(N-1)-R(0))
（ここで、Ｎは離散的ビットレートの数、Ｒｔは前記設定された目標ビットレート、Ｒ（０）は離散的ビットレートの最低ビットレート、Ｒ（ｎ）は前記現在設定されているビットレート、Ｒ（ｎ−１）は前記現在設定されているビットレートに隣接する１段低いビットレートである。）
により表現され、、
前記ビットレート変更方向が低下方向である場合には、
Pu(n) = Cu(n) / (R(n+1)-R(n))
ただし、Cu(n)は次式（５）〜（８）のいずれかにより定まり、
（５）Cu(n) = (Rt-R(n)) / (R(N-1)-R(0))；
（６）Cu(n) = (Rt-R(n)) / (R(n)-R(0))；
（７）Rt > Rm の時、 Cu(n) = (Rt-Rm) / (Rm-R(0)) ,
Rt <= Rm の時、Cu(n) = 0 （ただし、Rm = (R(n)+R(n+1))/2）；
（８）Cu(n) = (R(N-1)-R(n)) / (R(N-1)-R(0))
（ここで、Ｎは離散的ビットレートの数、Ｒｔは前記設定された目標ビットレート、Ｒ（０）は離散的ビットレートの最低ビットレート、Ｒ（ｎ）は前記現在設定されているビットレート、Ｒ（ｎ＋１）は前記現在設定されているビットレートに隣接する１段高いビットレート、Ｒ（Ｎ−１）は離散的ビットレートの最高ビットレートである。）
により表現される、
ことを特徴とする請求項２２記載のビットレート制御方法。
【請求項２４】
複数の予め定められた離散的ビットレートを有する符号化器を用いてネットワークを通してリアルタイムトラフィックを送信するシステムにおけるビットレート制御装置において、
前記複数の離散的ビットレートの１つが送信ビットレートとして現在設定されている場合、目標ビットレートまたは前記現在設定されている送信ビットレートの一方に隣接する少なくとも１つの離散的ビットレートを選択する確率を生成するための変更確率生成情報を格納する格納手段と、
前記目標ビットレートまたは前記現在設定されている送信ビットレートに基づいて前記変更確率生成情報により前記少なくとも１つの離散的ビットレートの確率を生成し、当該確率に基づいて前記符号化器のビットレート制御を実行する制御手段と、
を有することを特徴とするビットレート制御装置。
【請求項２５】
複数の予め定められた離散的ビットレートを有する符号化器を用いてネットワークを通してリアルタイムトラフィックを送信するシステムにおけるビットレート制御装置において、
前記複数の離散的ビットレートのうち任意の隣接したビットレートの一方を選択する確率を前記複数の離散的ビットレートごとに生成するための変更確率生成情報を格納する格納手段と、
与えられたビットレートに基づいて前記変更確率生成情報により確率を生成し、当該確率に基づいて前記符号化器のビットレート制御を実行する制御手段と、
前記ネットワークの状態を検出し目標ビットレートを設定するための目標ビットレート設定手段とを有し、
前記制御手段は、前記設定された目標ビットレートに隣接するビットレートを決定し、前記設定された目標ビットレートが当該隣接ビットレートの一方に近いほど当該一方のビットレートを選択する確率が高くなるように前記符号化器のビットレート制御を実行する、ことを特徴とするビットレート制御装置。
【請求項２６】
複数の予め定められた離散的ビットレートを有する符号化器を用いてネットワークを通してリアルタイムトラフィックを送信するシステムにおけるビットレート制御装置において、
前記複数の離散的ビットレートのうち任意の隣接したビットレートの一方を選択する確率を前記複数の離散的ビットレートごとに生成するための変更確率生成情報を格納する格納手段と、
与えられたビットレートに基づいて前記変更確率生成情報により確率を生成し、当該確率に基づいて前記符号化器のビットレート制御を実行する制御手段と、
前記ネットワークの状態を検出し目標ビットレートを設定するための目標ビットレート設定手段とを有し、
前記制御手段は、現在設定されているビットレートより一段高い隣接ビットレートへの変更、一段低い隣接ビットレートへの変更、および、変更なし、のいずれかを実行することを特徴とするビットレート制御装置。
【請求項２７】
前記ネットワークの状態を検出し目標ビットレートを設定するための目標ビットレート設定手段をさらに有し、
前記制御手段は、前記設定された目標ビットレートと現在設定されているビットレートとの差の大きさに依存して、前記現在設定されているビットレートに隣接するビットレートの一方を選択する確率が変化するように前記符号化器のビットレート制御を実行する、ことを特徴とする請求項２６記載のビットレート制御装置。
【請求項２８】
前記ネットワークの状態に応じてビットレートの変更方向を決定する変更方向決定手段をさらに有し、
前記制御手段は、前記複数の離散的ビットレートにおける前記現在設定されているビットレートの高さに依存して、前記現在設定されているビットレートに隣接するビットレートの一方を選択する確率が変化するように前記符号化器のビットレート制御を実行する、ことを特徴とする請求項２６記載のビットレート制御装置。
【請求項２９】
前記変更方向決定手段は、パケット損失の有無に基づいてビットレートの低下および上昇のいずれかを決定することを特徴とする請求項２８記載のビットレート制御装置。
【請求項３０】
前記変更確率生成情報では隣接するビットレートの間隔に依存して確率が決定されており、前記制御手段は、隣接するビットレートの間隔に依存した確率に基づいて前記符号化器のビットレート制御を実行する、ことを特徴とする請求項２６記載のビットレート制御装置。
【請求項３１】
ネットワークを通して端末間でリアルタイムトラフィックの通信を行うシステムにおけるリアルタイム通信端末において、
前記ネットワークに接続しデータの送受信を行うための送受信手段と、
複数の予め定められた離散的ビットレートを有し、送信データを符号化するための符号化手段と、
前記符号化手段のビットレートを制御するためのビットレート制御手段と、
を有し、
前記ビットレート制御手段は、
前記複数の離散的ビットレートの１つが送信ビットレートとして現在設定されている場合、目標ビットレートまたは前記現在設定されている送信ビットレートの一方に隣接する少なくとも１つの離散的ビットレートを選択する確率を生成するための変更確率生成情報を格納する格納手段と、
前記目標ビットレートまたは前記現在設定されている送信ビットレートに基づいて前記変更確率生成情報により前記少なくとも１つの離散的ビットレートの確率を生成し、当該確率に基づいて前記符号化手段のビットレート制御を実行する制御手段と、
を有する、
ことを特徴とするリアルタイム通信端末。
【請求項３２】
請求項３１記載のリアルタイム通信端末が複数個前記ネットワークに接続されてなるリアルタイム通信システム。
【請求項３３】
ネットワークを通して端末間でリアルタイムトラフィックの通信を行うシステムにおけるリアルタイム通信端末において、
複数の予め定められた離散的ビットレートを有し、送信データを符号化するための符号化手段と、
通信相手側のリアルタイム通信端末から前記ネットワークを通してリアルタイムトラフィックデータとビットレート制御指令とを受信する受信手段と、
前記リアルタイムトラフィックデータから前記ネットワークの状態を検出する検出手段と、
前記検出されたネットワークの状態に応じて前記通信相手側のビットレート制御を行うための送信ビットレート制御指令を生成するためのビットレート制御手段と、
前記符号化手段によって符号化された送信データと前記送信ビットレート制御指令とを前記通信相手側のリアルタイム通信端末へ送信する送信手段と、
を有し、
前記ビットレート制御手段は、
前記複数の離散的ビットレートの１つが送信ビットレートとして現在設定されている場合、目標ビットレートまたは前記現在設定されている送信ビットレートの一方に隣接する少なくとも１つの離散的ビットレートを選択する確率を生成するための変更確率生成情報を格納する格納手段と、
前記目標ビットレートまたは前記現在設定されている送信ビットレートに基づいて前記変更確率生成情報により前記少なくとも１つの離散的ビットレートの確率を生成し、当該確率に基づいて前記ビットレート制御指令を生成する制御手段と、
を有する、
ことを特徴とするリアルタイム通信端末。
【請求項３４】
請求項３３記載のリアルタイム通信端末が複数個前記ネットワークに接続されてなるリアルタイム通信システム。
【請求項３５】
コンピュータに、ネットワークを通してリアルタイムトラフィックを送信する際のビットレート制御を実行させるためのプログラムにおいて、
ａ）複数の予め定められた離散的ビットレートの１つを送信ビットレートとして設定し、
ｂ）目標ビットレートまたは現在設定されている送信ビットレートの一方に隣接する少なくとも１つの離散的ビットレートを選択する確率を決定し、
ｃ）前記決定された確率に基づいて、前記少なくとも１つの離散的ビットレートのいずれかを新たな送信ビットレートとして設定する、
ように前記コンピュータを動作させることを特徴とするビットレート制御プログラム。
【請求項３６】
コンピュータに、ネットワークを通してリアルタイムトラフィックを送信する際のビットレート制御を実行させるためのプログラムにおいて、
ａ）複数の予め定められた離散的ビットレートを用意し、
ｂ）前記複数の離散的ビットレートのうち任意の隣接したビットレートの一方を選択する確率を決定し、
ｃ）前記決定された確率に基づいて、いずれか一方のビットレートを設定するか否かを判定し、
前記ステップ（ｂ）は、
ｂ．１）前記ネットワークの状態に応じて目標ビットレートを設定し、
ｂ．２）前記設定された目標ビットレートに隣接するビットレートを決定し、
ｂ．３）前記設定された目標ビットレートが前記隣接ビットレートの一方に近いほど、当該一方のビットレートを選択する確率を高くする、
ように前記コンピュータを動作させるためのビットレート制御プログラム。
【請求項３７】
コンピュータに、ネットワークを通してリアルタイムトラフィックを送信する際のビットレート制御を実行させるためのプログラムにおいて、
ａ）複数の予め定められた離散的ビットレートを用意し、
ｂ）前記複数の離散的ビットレートのうち任意の隣接したビットレートの一方を選択する確率を決定し、
ｃ）前記決定された確率に基づいて、いずれか一方のビットレートを設定するか否かを判定し、
現在設定されているビットレートの変更は、一段高い隣接ビットレートへの変更、一段低い隣接ビットレートへの変更、および、変更なし、のいずれかである、
ように前記コンピュータを動作させることを特徴とするビットレート制御プログラム。
【請求項３８】
前記ステップ（ｂ）は、
ｂ．１）前記ネットワークの状態に応じて目標ビットレートを設定し、
ｂ．２）前記設定された目標ビットレートと現在設定されているビットレートとの差の大きさに依存して、前記現在設定されているビットレートに隣接するビットレートの一方を選択する確率を変化させる、
ことを特徴とする請求項３７記載のビットレート制御プログラム。
【請求項３９】
前記ステップ（ｂ）は、
ｂ．１）前記ネットワークの状態に応じてビットレートの変更方向を決定し、
ｂ．２）前記複数の離散的ビットレートにおける前記現在設定されているビットレートの高さに依存して、前記現在設定されているビットレートに隣接するビットレートの一方を選択する確率を変化させる、
ことを特徴とする請求項３７記載のビットレート制御プログラム。
【請求項４０】
前記ステップ（ｂ）において、隣接するビットレートの間隔に依存して前記選択する確率を決定することを特徴とする請求項３５記載のビットレート制御プログラム。
【請求項４１】
さらに、
ｄ）前記ステップ（ｃ）によって現在設定されているビットレートが変更されたか否かを判定し、
ｅ）ビットレートが変更された場合には、変更後の予め定められた時間が経過するまで、前記選択する確率を通常の確率よりも小さくする、
ように前記コンピュータを動作させることを特徴とする請求項３５ないし４０のいずれかに記載のビットレート制御プログラム。
【請求項４２】
前記予め定められた時間が経過するまで前記確率を０に設定することを特徴とする請求項４１記載のビットレート制御プログラム。
【請求項４３】
前記変更確率生成情報は、前記離散的ビットレートの任意の隣接ビットレートのうち高いほうの隣接ビットレートに近いほど、当該高い方の隣接ビットレートを選択する確率が高くなるように表現されることを特徴とする請求項９記載のビットレート制御方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は音声や画像データなどのリアルタイムトラフィックを送信する技術に係り、特にそのビットレート制御方法及び装置に関する。
【０００２】
【従来の技術】
周知のように、従来の電話などに用いられている回線交換方式は、通信中でも情報の有無に関係なく両端末間で通信回線を占有するために、音声や画像などをリアルタイムで伝送するのに適している反面、ネットワークの利用効率を高めることが困難である。また、端末間の接続においてネットワーク全体の利用率を監視した呼制御を行うため、端末数が増加するにつれて呼制御の負荷が増大するという問題もある。
【０００３】
一方、パケット交換方式は非同期型通信であり、従来の回線交換方式のような同期型通信よりもネットワークの利用効率が高いため、現在広く普及している。特に、TCP/IP (Transmission Control Protocol / Internet Protocol)を用いたパケット交換方式においては、呼制御が行われず、各端末でネットワークの利用帯域が公平となるような自律分散型のレート制御が行われているために、上述したような呼制御の負荷増大という問題は生じない。さらに、TCPではパケットの欠落の有無をチェックしており、パケット損失が生じた場合には再送要求を行うことで通信の信頼性を高めている。
【０００４】
しかし、近年広まりつつあるIPを用いたパケット交換方式における音声・画像データのリアルタイム通信では、TCPによるレート制御は適用できない。TCPにおけるパケット再送は、ファイル転送等のデータ通信では信頼性を高めるので望ましいが、音声・画像などのリアルタイム通信では逆に大きな遅延の原因となり、またビットレートの激しい変動により音質・画質の劣化が生ずるからである。
【０００５】
そこで、リアルタイム通信では、TCPに代わって、レート制御を行わないUDP (User Datagram Protocol) が用いられている。しかしながら、ＵＤＰではデータを一方的に送り続けるために、UDPのトラフィックが増大するとTCPの利用する帯域を占有してしまい、TCPとの公平性の問題が新たに生じる。これらの問題を解決するために開発されたRSVP (Resource reSerVationProtocol)は、接続時に各端末の帯域を確保する方式であり、遅延やパケット損失の問題は解決されるものの、回線交換方式と同じネットワーク効率の問題が生じる。
【０００６】
そこで、別の解決策として考えられているのが、TCPと公平性のあるレート制御を行うTCPフレンドリー制御である。TCPフレンドリー制御には、次の２つの方式がある。
１）  TCPのレート制御法であるAIMD(Additive Increase/Multiple Decrease)に基く方式（文献1 ：Reza Rejaie, Mark Handley, Deborah Estrin, "RAP: An End-to-end Rate-based Congestion Control Mechanism for Realtime Stream in the Internet,"INFOCOM'99 (1999.3)を参照）。２）  TCPのスループットを目標ビットレートとする方式(TFRC)(文献２： "TCP Friendly Rate Control (TFRC): Protocol Specification," IETF Internet draft(draft-ietf-tsvwg-tfrc-03.txt)を参照）。
【０００７】
AIMD方式では、ビットレートを上げる場合は一定値を加算し、ビットレートを下げる場合は１より小さい値を乗算する。これら加算値および乗算値を適切に設定することにより、TCPとの公平性を保ちつつ、TCPのような大きなビットレートの変動を抑えることも可能である。
【０００８】
TFRC方式は、次式（１）で示すTCPのスループットを目標ビットレートとした制御を行う。
R = 1 / [RTT*√(2*L/3) + T0*min(1, 3*√(3*L/8))*L*(1+32*L^2)]       （１）
ここで、RTTはラウンドトリップ時間、T0はタイムアウト時間、Lはパケット損失率を示す。
【０００９】
ただし、上記TCPフレンドリー制御では、ビットレートが連続値となることを前提としている。実際には音声・画像符号化器のビットレートは離散的であるため、これら制御方式をそのまま音声・画像符号化器に適用することはできない。
【００１０】
一方、ネットワークの輻輳状態に応じて符号化器が動作するビットレートを予め決めておく方式も考えられている。たとえば、
文献３：Jeong Wook Seo, et al., "A study on the application of an AMR speech codec to VoIP," Proc. ICASSP2001 Vol. 3, pp.1373 -1376、および
文献４：V. Abreu-Sernandez, et al., "Adaptive multi-rate speech coder for VoIP transmission, "Electronics Letters, Vol. 36, pp.1978 -1980を参照。
【００１１】
文献３ではラウンドトリップ時間に応じて、文献４ではパケット損失率に応じて、それぞれ符号化器のビットレートを切り替えている。しかし、これらの方式はTCPとの公平性がない。
【００１２】
次に、図８を用いて従来の音声・画像データ通信装置の一例を説明する。一般に、音声・画像データ通信装置は、図８に示すように、音声・画像符号化部４０２、パケット送信部４０３、パケット受信部４０４、ビットレート制御部４０５、音声・画像復号部４０６で構成される。音声・画像符号化器４０２は、入力音声・画像４０１を符号化し、音声・画像ビットストリームをパケット送信部４０３に出力する。パケット送信部４０３は、入力された音声・画像ビットストリームにIP/UDP/RTPヘッダ（文献５："RTP:A Transport Protocol for Real-Time Applications," IETF RFC1889を参照）を付加し、ネットワークに送信する。RTPヘッダには、音声・画像データの通信で必要な情報が付加されている。
【００１３】
一方、パケット受信部４０４は、音声・画像パケットを受信し、受信パケットから音声・画像ビットストリームを抽出して音声・画像復号部４０６に出力する。音声・画像復号部４０６は、パケット受信部から得た音声・画像ビットストリームを復号し、出力音声・画像データ４０７を出力する。
【００１４】
また、パケット受信部４０４は、例えばRTCP(Real-time Transport Control Protocol)（文献５）パケットを受信し、そこからラウンドトリップ時間(Round Trip Time, RTT)およびパケット損失率に関する情報を抽出してビットレート制御部４０５に出力する。ビットレート制御部４０５では、AIMDやTFRC等に基くビットレート制御が行われる。
【００１５】
AIMDに基くビットレート制御では、パケット受信部４０４から得たパケット損失率を用いて、パケット損失がない場合には現在のビットレートにある値を加算し、パケット損失がある場合には現在のビットレートにある値を乗算することにより目標ビットレートを計算する。
【００１６】
TFRCに基くビットレート制御では、パケット受信部４０４から得たラウンドトリップ時間ＲＴＴとパケット損失率Ｌとを用いて、式（１）を用いて目標ビットレートを計算する。ここで、ラウンドトリップ時間とパケット損失率は、測定精度を高めるため、ある時間で平均した値を用いる。
【００１７】
しかしながら、このように計算された目標ビットレートは、音声・画像符号化器４０２に設定されている離散的なビットレートの１つと合致するとは限らない。このために、実際には、計算された目標ビットレートに最も近い離散的ビットレートを選択し、音声・画像符号化部４０２をその選択されたビットレートに設定するという制御が行われている。
【００１８】
上記文献３や文献４におけるビットレート制御では、パケット受信部４０４から得たラウンドトリップ時間やパケット損失率に応じて定められる符号化器のビットレートが音声・画像符号化部４０２に出力される。しかし、上述したように、これらの方式はTCPとの公平性がない。
【００１９】
音声・画像復号部４０６は、ビットレート制御部４０５で得たビットレートで音声・画像を復号する。
【００２０】
特開平５−２６００９０号公報には、離散的なビットレートを有する符号化器を用いたビットレート制御方法の一例が開示されている。この従来例では、複数ステップのビットレート（128kbps, 64kbps,10kbpsなど）を設定できる映像符号化部を伝送路の輻輳状態に応じてビットレート制御する。具体的には、伝送路に輻輳が発生すると１ステップ小さいビットレートに設定し、輻輳が発生していなければ１ステップ大きいビットレートに設定する、というように制御する。
【００２１】
【発明が解決しようとする課題】
上述したように、AIMDやTFRCに基くTCPフレンドリー制御は、ビットレートが連続値をとることを前提としているために、符号化器のビットレートが離散的な値しか取り得ない音声・画像通信にはそのまま適用することができない。そこで、ビットレート制御により得られた目標値に最も近いビットレートが選択される。しかし、そうすると目標値と実際の値との誤差が生じてしまい、この誤差は設定されるビットレートを頻繁に変動させる要因となり、音質・画質の劣化をもたらす。
【００２２】
図９（ａ）は従来の自律分散型ビットレート制御法を採用した場合のビットレート変動を示すタイムチャートである。たとえば、ネットワークに接続された各端末において、ラウンドトリップ時間やパケット損失率などのネットワーク情報に基づいて目標ビットレートを算出し、それに最も近い離散的ビットレートに符号化器を設定する制御が行われるものとする。ここでは、説明のために、ある離散的ビットレートＲ（ｎ＋１）に設定されるとネットワークが輻輳して目標ビットレートが低下し、それより低いビットレートＲ（ｎ）に設定されると目標ビットレートが上昇するものと仮定する。
【００２３】
この場合、図９（ａ）に示すように目標ビットレートが低下すると、ビットレート制御部４０５は符号化器４０２をＲ（ｎ＋１）から現在の目標値に最も近いビットレートＲ（ｎ）に低下させる。この状態がしばらく続くと、今度は目標ビットレートが上昇し、それに追随するために、符号化器４０２をＲ（ｎ＋１）へ再び上昇させる。このようなビットレート変動が繰り返されると、音声・画像を送受信している端末間でリアルタイムトラフィックの品質が著しく低下する。
【００２４】
また、文献３や文献４におけるラウンドトリップ時間やパケット損失率に応じて符号化器のビットレートを切り替える方式や特開平５−２６００９０号公報に開示された方式では、TCP制御との公平性が実現できない。
【００２５】
そこで、本発明の目的は、ネットワークの状態に応じてリアルタイムトラフィックの送信ビットレートを離散的に変更する場合でも、リアルタイム通信の品質劣化を抑制できるビットレート制御方法及び装置を提供することにある。
【００２６】
本発明の他の目的は、リアルタイムトラフィックの品質が劣化するビットレートの変動を抑え、且つTCPなどの他の制御方式との公平性を実現できるビットレート制御方法及び装置を提供することにある。
【００２７】
【課題を解決するための手段】
本発明によれば、リアルタイムトラフィック送信時のビットレートを制御する際に、確率に基いてビットレートを決定することを特徴とする。
【００２８】
利用可能なビットレートが離散的であっても、全端末のビットレートを平均した値が所望のビットレートとなるように、各端末のビットレートを変更する確率値を定めておけば、ビットレートの変動の少ない制御が可能となる。
【００２９】
図９を用いて本発明の作用を説明する。上述したように、従来のビットレート制御方法では、各端末が符号化器のビットレートを目標ビットレートに近づけようとするために、図９（ａ）に示すような全端末が目標値近辺のビットレート間で変動を繰り返す現象が生じる。
【００３０】
これに対して、図９（ｂ）のように、全体の平均ビットレートが所望の値となるように確率値を計算し、その確率値に基いて各端末のビットレートを変更する制御を行うことによって、図９（ａ）に示すようなビットレートの変動を抑えることができる。
【００３１】
また、ネットワークの状態に応じて符号化器の動作ビットレートを変更する場合に、上記計算された確率に基いてビットレートを変更するようにすれば、TCP等の制御方式との公平性を損なわないビットレート制御が可能となる。
【００３２】
本発明によるビットレート制御方法は、ネットワークを通してリアルタイムトラフィックを送信する際のビットレート制御方法において、ａ）複数の予め定められた離散的ビットレートの１つを送信ビットレートとして設定し、ｂ）目標ビットレートまたは現在設定されている送信ビットレートの一方に隣接する少なくとも１つの離散的ビットレートを選択する確率を決定し、ｃ）前記決定された確率に基づいて、前記少なくとも１つの離散的ビットレートのいずれかを新たな送信ビットレートとして設定する、ことを特徴とする。
【００３３】
本発明の第１実施形態によれば、前記ステップ（ｂ）は、ｂ．１）前記ネットワークの状態に応じて目標ビットレートを設定し、ｂ．２）前記設定された目標ビットレートに隣接するビットレートを決定し、ｂ．３）前記設定された目標ビットレートが前記隣接ビットレートの一方に近いほど、当該一方のビットレートを選択する確率を高くする、ことを特徴とする。
【００３４】
すなわち、目標ビットレートが算出されると、その目標ビットレートに隣接する離散的ビットレートが決定され、その何れのビットレートに符号化器を設定するかは、目標ビットレートが何れのビットレートに近いかに依存して確率的に決定される。したがって、全端末の平均設定ビットレートは目標ビットレート近くになり、このために、ＴＣＰなどの他の制御方式との公平性を保持できると共に、各端末が目標ビットレートに近づこうとしてビットレートの設定を頻繁に変動させるという従来生じていた事態を回避することができる。
【００３５】
本発明の第２実施形態によれば、前記ステップ（ｂ）は、ｂ．１）前記ネットワークの状態に応じて目標ビットレートを設定し、ｂ．２）前記設定された目標ビットレートと現在設定されているビットレートとの差の大きさに依存して、前記現在設定されているビットレートに隣接するビットレートのうち前記目標ビットレートに近い方を選択する確率を変化させる、ことを特徴とする。
【００３６】
すなわち、現在設定されているビットレートと算出された目標ビットレートとの差が大きいほど、ビットレート変更の確率が大きくなる。したがって、現在設定されているビットレートが目標ビットレートから離れている端末では、ビットレートが変更される確率が高くなり、目標ビットレートに近い端末では低くなる。このために、全端末の平均設定ビットレートは目標ビットレート近くになり、ＴＣＰなどの他の制御方式との公平性を維持できると共に、各端末が目標ビットレートに近づこうとしてビットレートの設定を頻繁に変動させるという従来生じていた事態を回避することができる。さらに、本発明の第２実施形態によれば、各端末において、現在設定されているビットレートR(n)から１ステップ上下するだけであり、急激なビットレート変更は生じない。このことは、音声・画像の品質劣化を抑える効果がある。
【００３７】
本発明の第３実施形態によれば、前記ステップ（ｂ）は、ｂ．１）前記ネットワークの状態に応じてビットレートの変更方向を決定し、ｂ．２）前記複数の離散的ビットレートにおける前記現在設定されているビットレートの高さに依存して、前記現在設定されているビットレートに隣接するビットレートの一方を選択する確率を変化させる、ことを特徴とする。
【００３８】
たとえば、パケットの損失が検出されてビットレートを低下させる必要が生じた場合、あるいは、パケット損失が検出されないことからビットレートを上昇させることができる場合には、現在設定されているビットレートがビットレート設定可能範囲のどの位置にあるかによって、ビットレート変更の確率を変化させる。具体的には、パケットの損失が検出されるようになると、現在設定されているビットレートが高い端末では、ビットレートを低下させる確率を高くし、低い端末では低くする。逆に、パケットの損失が検出されない場合には、現在設定されているビットレートが低い端末は、ビットレートを上昇させる確率を高くし、高い端末では低くする。このために、全端末間で公平なビットレート設定が可能となり、ネットワークの利用効率を最適化できると共に、各端末が目標ビットレートに近づこうとしてビットレートの設定を頻繁に変動させるという従来生じていた事態を回避することができる。さらに、TCPフレンドリー制御と整合するようにビットレート変更確率を設定することで、端末間の公平性およびTCPとの公平性を確保することができる。
【００３９】
本発明の第４実施形態によれば、前記ステップ（ｂ）において、隣接するビットレートの間隔に依存して前記確率を決定することを特徴とする。すなわち、隣接ビットレートの間隔の大きさをビットレート低下及び上昇確率に反映させる。たとえば、隣接ビットレートまでの距離が大きいほどビットレート変更確率を小さくすることで、音声・画像の品質劣化を抑制することができる。
【００４０】
【発明の実施の形態】
本発明によるビットレート制御を採用した音声・画像通信装置は、全体的なブロック構成としては図８に示すものと基本的に同じであるが、ビットレート制御部４０５の動作が従来と異なる。
【００４１】
以下、音声・画像符号化部４０２がN種類のビットレートR(0)〜R(N-1)を有するものとして、本発明によるビットレート制御の実施形態を詳細に説明する。ただし、R(0) < R(1) <・・・< R(N-1)とする。
【００４２】
（１）第１実施形態
図１は、本発明の第１実施形態によるビットレート制御を示すフローチャートである。まず、目標とするビットレートRtを従来のAIMD又はTFRCに基くTCPフレンドリー制御等を用いて計算する（ステップ１０１）。
【００４３】
このRtに対し、R(n)≦Rt＜R(n+1)となるｎを求め、ビットレートがR(n)となる確率Pを、RtがR(n)に近い程確率が高くなるような式、たとえば式（２）を用いて計算する（ステップ１０２）。
【００４４】
P(n) = (R(n+1)-Rt) / (R(n+1)-R(n))                       （２）。
【００４５】
なお、このような式の代わりに、ビットレートと確率Ｐ(n)と対応関係を具体的な数値として格納したテーブルを用いて、検索により確率を決定することも可能である。いずれにしても、このような式あるいはテーブルは、変更確率生成情報としてメモリに予め格納されている。
【００４６】
次に、確率Ｐ(n)に基づくビットレート判定を実行する。本実施形態では、たとえば乱数を用いてビットレート判定を行う。まず、乱数（正確には、疑似乱数）Ｐｏを０≦Ｐｏ＜１の範囲で生成する（ステップ１０３）。ここでは、一様乱数を用いる。得られた乱数Ｐｏをステップ１０２で算出した確率P(n)と比較し、ビットレートをR(n)にするかR(n+1)にするかを判定する（ステップ１０４）。ここでは、Ｐｏ＜Ｐ(n)の時には（ステップ１０４のＹＥＳ）、R(n)と判定され、Ｐｏ≧Ｐ(n)の時には（ステップ１０４のＮＯ）、R(n+1)と判定される。
【００４７】
ビットレートがR(n)と判定された場合はR=R(n)と設定し（ステップ１０５）、R(n+1)と判定された場合はR=R(n+1)と設定して（ステップ１０６）、Rを符号化器に出力する（ステップ１０７）。こうして、音声・画像符号化部４０２は、指定されたビットレートＲで入力音声・画像データを符号化し、符号化されたデータがパケット送信部４０３を通してネットワークへ送出される。
【００４８】
以上説明したように、本発明の第１実施形態によれば、目標ビットレートが算出されると、その目標ビットレートに隣接する離散的ビットレートが決定され、その何れのビットレートに符号化器を設定するかは、目標ビットレートが何れのビットレートに近いかに依存して確率的に決定される。
【００４９】
したがって、目標ビットレートがビットレートR(n)に近ければ、そのビットレートR(n)に設定される確率が高くなる。ネットワークに多数の端末が接続され、それらの端末で目標ビットレートがほぼ同じ程度であると仮定すれば、その確率に対応する数の端末がビットレートR(n)に設定され、その他の端末がビットレートR(n+1)に設定される、と推定できる。したがって、全端末の平均設定ビットレートは目標ビットレート近くになり、このために、ＴＣＰなどの他の制御方式との公平性を保持できると共に、各端末が目標ビットレートに近づこうとしてビットレートの設定を頻繁に変動させるという従来生じていた事態を回避することができる。
【００５０】
（２）第２実施形態
本発明の第２実施形態では、現在のビットレートと目標ビットレートとの差に依存してビットレート変更の確率を決定し、その際、ビットレートの大きな変動を避けるために隣接したビットレートにのみ変更可能としている。
【００５１】
２．１）制御フロー
図２は、本発明の第２実施形態によるビットレート制御を示すフローチャートである。まず、第１実施形態と同じく目標とするビットレートRtを計算し（ステップ１０１）、目標ビットレートが現在のビットレートR(n)よりも小さいか否かを判定する（ステップ２０２）。Rtの方が小さいと判定された場合には（ステップ２０２のＹＥＳ）、ビットレートを下げるか否かの判定を行い（ビットレート低下判定：ステップ２０４〜２０７）、そうでない場合は（ステップ２０２のＮＯ）、Rtと現在のビットレートR(n)とが等しいか否かを判定する（ステップ２０３）。
【００５２】
Rtと現在のビットレートとが等しいと判定された場合は（ステップ２０３のＹＥＳ）、そのままR=R(n)とする（ステップ２１４）。そうでない場合は（ステップ２０３のＮＯ）、ビットレートを上げるか否かの判定を行う（ビットレート上昇判定：ステップ２０９〜２１２）。
【００５３】
ビットレート低下判定（ステップ２０４〜２０７）では、まず、RtとR(n)の差が大きい程、値が大きくなるような確率Pd(n)を計算する（ステップ２０４）。次式（３）は、このような計算式の一例である。
【００５４】
Pd(n) = (R(n)-Rt) / (R(N-1)-R(0))                        （３）。
【００５５】
次に、確率Pd(n)に基づくビットレート変更判定を実行する。本実施形態では、たとえば乱数を用いてビットレート判定を行う。まず、乱数（正確には、疑似乱数）Ｐｏを０≦Ｐｏ＜１の範囲で生成する（ステップ２０５）。ここでは、一様乱数を用いる。続いて、得られた乱数Ｐｏをステップ２０４で算出した確率Pd(n)と比較する（ステップ２０６）。
【００５６】
Ｐｏ＜Pd(n)であれば（ステップ２０６のＹＥＳ）、さらに現在のビットレートR(n) が下限であるか否か（ここでは、ｎ＝０であるか否か）を判定する（ステップ２０７）。現在のビットレートR(n) が下限でなければ（ステップ２０７のＹＥＳ）、ビットレートを下げると判定され、ｎをデクリメントし（ステップ２０８）、R=R(n)と設定する（ステップ２１４）。
【００５７】
Ｐｏ≧Pd(n)の場合（ステップ２０６のＮＯ）あるいは現在のビットレートR(n) が下限の場合（ステップ２０７のＮＯ）には、ビットレートを変更しないと判定され、そのままR=R(n)とする（ステップ２１４）。
【００５８】
ビットレート上昇判定（ステップ２０９〜２１２）では、まず、RtとR(n)の差が大きい程、値が大きくなるような確率Pu(n)を計算する（ステップ２０９）。次式（４）は、このような計算式の一例である。
【００５９】
Pu (n) = (Rt-R(n)) / (R(N-1)-R(0))                        （４）。
【００６０】
次に、確率Pu(n)に基づくビットレート変更判定を実行する。本実施形態では、たとえば乱数を用いてビットレート判定を行う。まず、乱数（正確には、疑似乱数）Ｐｏを０≦Ｐｏ＜１の範囲で生成する（ステップ２１０）。ここでは、一様乱数を用いる。続いて、得られた乱数Ｐｏをステップ２０９で算出した確率Pu(n)と比較する（ステップ２１１）。
【００６１】
Ｐｏ＜Pu(n)であれば（ステップ２１１のＹＥＳ）、さらに現在のビットレートR(n) が上限であるか否か（ここでは、ｎ＝Ｎ−１であるか否か）を判定する（ステップ２１２）。現在のビットレートR(n) が上限でなければ（ステップ２１２のＹＥＳ）、ビットレートを上げると判定され、ｎをインクリメントし（ステップ２１３）、R=R(n)と設定する（ステップ２１４）。
【００６２】
Ｐｏ≧Pu(n)の場合（ステップ２１１のＮＯ）あるいは現在のビットレートR(n) が上限の場合（ステップ２１２のＮＯ）には、ビットレートを変更しないと判定され、そのままR=R(n)とする（ステップ２１４）。
【００６３】
このようにして決定されたＲを符号化器に出力する（ステップ２１５）。こうして、音声・画像符号化部４０２は、指定されたビットレートＲで入力音声・画像データを符号化し、符号化されたデータがパケット送信部４０３を通してネットワークへ送出される。
２．２）確率Ｐｄ(n)の他の計算式
【００６４】
確率Pd(n)の計算式としては、上記式（３）のほかに、次のようなバリエーションを用いることができる。
【００６５】
Pd(n) = (R(n)-Rt) / (R(n)-R(0))                           （３．１）。
【００６６】
Rt < Rm の時、 Pd(n) = (Rm-Rt) / (Rm-R(0)) ,
Rt >= Rm の時、Pd(n) = 0
ただし、Rm = (R(n)+R(n-1))/2                          （３．２）。
【００６７】
Rt > R(n-1) の時、   Pd(n) = (R(n)-Rt) / (R(n)-R(n-1)) ,
Rt <= R(n-1) の時、  Pd(n) = 1                         （３．３）。
【００６８】
Rt <= R(n-1) の時、     Pd(n) = 1
R(n-1) < Rt <= Rm の時、Pd(n) = (Rm-Rt) / (Rm-R(n-1)) ,
Rt > Rm の時、        Pd(n) = 0
ただし、Rm = (R(n)+R(n-1))/2                          （３．４）。
【００６９】
図３は、式（３．１）〜式（３．４）にそれぞれ対応する確率Pdの変化を示すグラフである。図３の参照番号（１）〜（４）がそれぞれ式（３．１）〜式（３．４）に対応する。
【００７０】
式（３．１）（図３の（１））は、式（３）の分母を現在のビットレートＲ(n)と最低のビットレートＲ(0)との差に置き換えたものであり、目標ビットレートＲｔが現在のビットレートＲ(n)から離れているほど値が高くなるような確率Pd(n)を生成する。
【００７１】
式３．２（図３の（２））も、式（３．１）と同様の確率Pd(n)を生成するが、目標ビットレートＲｔが隣接したビットレートよりも現在のビットレートＲ(n)に近い場合には確率Pd(n)を０にする。これによって、ビットレートの無駄な変動を抑えることができる。
【００７２】
式３．３（図３の（３））は、目標ビットレートＲｔが隣接したビットレートより近い場合には現在のビットレートＲ(n)から離れているほど値が高くなるような確率Pd(n)を生成し、隣接したビットレートより離れている場合には確率Pd(n)を１に固定する。
【００７３】
式３．４（図３の（４））も、式（３．３）と同様の確率Pd(n)を生成するが、目標ビットレートＲｔが隣接したビットレートよりも現在のビットレートＲ(n)に近い場合には確率Pd(n)を０にする。これによって、ビットレートの無駄な変動を抑えることができる。
【００７４】
ここで、式（３．１）〜式（３．４）の各々に１より小さい定数を乗じることもできる。この場合、この定数の値を小さくするほど、ビットレートの変動を抑えることができるが、目標ビットレートへの追従性が低下する。
【００７５】
２．３）確率Ｐｕ(n)の他の計算式
確率Pu(n)の計算式としては、上記式（４）のほかに、次のようなバリエーションを用いることができる。
【００７６】
Pu(n) = (Rt-R(n)) / (R(n)-R(0))                           （４．１）。
【００７７】
Rt > Rm の時、 Pu(n) = (Rt-Rm) / (Rm-R(0)) ,
Rt <= Rm の時、Pu(n) = 0
ただし、Rm = (R(n)+R(n+1))/2                          （４．２）。
【００７８】
Rt < R(n+1) の時、   Pu(n) = (Rt-R(n)) / (R(n)-R(n+1)) ,
Rt >= R(n+1) の時、  Pu(n) = 1                         （４．３）。
【００７９】
Rt < Rm の時、         Pu(n) = 0
Rm <= Rt < R(n+1) の時、Pu(n) = (Rt-Rm) / (Rm-R(n+1)) ,
Rt >= R(n+1) の時、     Pu(n) = 1
ただし、Rm = (R(n)+R(n+1))/2                          （４．４）。
【００８０】
図４は、式（４．１）〜式（４．４）にそれぞれ対応する確率Pu の変化を示すグラフである。図４の参照番号（１）〜（４）がそれぞれ式（４．１）〜式（４．４）に対応する。
【００８１】
式（４．１）（図４の（１））は、式（４）の分母を現在のビットレートＲ(n)と最低のビットレートＲ(0)との差に置き換えたものであり、目標ビットレートＲｔが現在のビットレートＲ(n)から離れているほど値が高くなるような確率Pu(n)を生成する。
【００８２】
式４．２（図４の（２））も、式（４．１）と同様の確率Ｐｕを生成するが、目標ビットレートＲｔが隣接したビットレートよりも現在のビットレートＲ(n)に近い場合には確率Pu(n)を０にする。これによって、ビットレートの無駄な変動を抑えることができる。
【００８３】
式４．３（図４の（３））は、目標ビットレートＲｔが隣接したビットレートより近い場合には現在のビットレートＲ(n)から離れているほど値が高くなるような確率Pu(n)を生成し、隣接したビットレートより離れている場合には確率Pu(n)を１に固定する。
【００８４】
式４．４（図４の（４））も、式（４．３）と同様の確率Pu(n)を生成するが、目標ビットレートＲｔが隣接したビットレートよりも現在のビットレートＲ(n)に近い場合には確率Pu(n)を０にする。これによって、ビットレートの無駄な変動を抑えることができる。
【００８５】
ここで、式（４．１）〜式（４．４）の各々に１より小さい定数を乗じることもできる。この場合、この定数の値を小さくするほど、ビットレートの変動を抑えることができるが、目標ビットレートへの追従性は低下する。
【００８６】
なお、上記式（３）、（４）、（３．１）〜（３．４）および（４．１）〜（４．４）の代わりに、ビットレートと確率Pd(n)／Pu(n)との対応関係を具体的な数値として格納したテーブルを用いて、検索により確率を決定することも可能である。いずれにしても、このような式あるいはテーブルは、変更確率生成情報としてメモリに予め格納されている。
【００８７】
以上説明したように、本発明の第２実施形態によれば、現在設定されているビットレートR(n)と算出された目標ビットレートRtとの差が大きいほど、ビットレート変更の確率が大きくなる。すなわち、現在設定されているビットレートR(n)が目標ビットレートRtから離れている端末では、ビットレートが変更される確率が高くなり、目標ビットレートに近い端末では低くなる。
【００８８】
したがって、ネットワークに多数の端末が接続され、それらの端末で目標ビットレートがほぼ同じ程度であると仮定すれば、全端末の平均設定ビットレートは目標ビットレート近くになる。このために、ＴＣＰなどの他の制御方式との公平性を維持できると共に、各端末が目標ビットレートに近づこうとしてビットレートの設定を頻繁に変動させるという従来生じていた事態を回避することができる。
さらに、本発明の第２実施形態によれば、各端末において、現在設定されているビットレートR(n)から１ステップ上下するだけであり、急激なビットレート変更は生じない。このことは、音声・画像の品質劣化を抑える効果がある。
【００８９】
（３）第３実施形態
本発明の第３実施形態では、AIMDにおける動作と同様に、パケット損失に応じてビットレートを変更する。ビットレート変更時に確率に基いた判定を行うことにより、ビットレートが離散的であっても、TCPフレンドリー制御を実現できる。
【００９０】
３．１）制御フロー
図５は、本発明の第３実施形態によるビットレート制御を示すフローチャートである。図５において、まず、受信した音声・画像パケットの損失数や相手側端末から通知されたパケット損失率などに基づいてパケット損失の有無を検出し（ステップ３０１）、パケット損失があるか否かの判定を行う（ステップ３０２）。
【００９１】
パケット損失がある場合には（ステップ３０２のＹＥＳ）、ビットレートを下げるか否かの判定（ビットレート低下判定）を行い（ステップ３０３〜３０６）、パケット損失がない場合には（ステップ３０２のＮＯ）、ビットレートを上げるか否かの判定（ビットレート上昇判定）を行う（ステップ３０８〜３１１）。
【００９２】
ビットレート低下判定（ステップ３０３〜３０６）では、まず、現在のビットレートが高い程、値が大きくなるような確率Pd(n)を計算する（ステップ３０３）。次式（５）は、このような計算式の一例である。
【００９３】
Pd(n) = (R(n)-R(0)) / (R(N-1)-R(0))                      （５）。
【００９４】
次に、確率Pd(n) に基づくビットレート変更判定を実行する。本実施形態では、乱数を用いてビットレート判定を行う。まず、乱数（正確には、疑似乱数）Ｐｏを０≦Ｐｏ＜１の範囲で生成する（ステップ３０４）。ここでは、一様乱数を用いる。続いて、得られた乱数Ｐｏをステップ３０３で算出した確率Pd(n) と比較する（ステップ３０５）。
【００９５】
Ｐｏ＜Pd(n)であれば（ステップ３０５のＹＥＳ）、さらに現在のビットレートR(n) が下限であるか否か（ここでは、ｎ＝０であるか否か）を判定する（ステップ３０６）。現在のビットレートR(n) が下限でなければ（ステップ３０６のＹＥＳ）、ビットレートを下げると判定され、ｎをデクリメントし（ステップ３０７）、R=R(n)と設定する（ステップ３１３）。
【００９６】
Ｐｏ≧Pd(n)の場合（ステップ３０５のＮＯ）あるいは現在のビットレートR(n) が下限の場合（ステップ３０６のＮＯ）には、ビットレートを変更しないと判定され、そのままR=R(n)とする（ステップ３１３）。
【００９７】
ビットレート上昇判定（ステップ３０８〜３１１）では、まず、現在のビットレートR(n)が低い程、値が大きくなるような確率Pu(n) を計算する（ステップ３０８）。次式（６）は、このような計算式の一例である。
【００９８】
Pu(n) = (R(N-1)-R(n)) / (R(N-1)-R(0))                       （６）。
【００９９】
次に、確率Pu(n) に基づくビットレート変更判定を実行する。本実施形態では、乱数を用いてビットレート判定を行う。まず、乱数（正確には、疑似乱数）Ｐｏを０≦Ｐｏ＜１の範囲で生成する（ステップ３０９）。ここでは、一様乱数を用いる。続いて、得られた乱数Ｐｏをステップ３０８で算出した確率Pu(n) と比較する（ステップ３１０）。
【０１００】
Ｐｏ＜Pu(n)であれば（ステップ３１０のＹＥＳ）、さらに現在のビットレートR(n) が上限であるか否か（ここでは、ｎ＝Ｎ−１であるか否か）を判定する（ステップ３１１）。現在のビットレートR(n) が上限でなければ（ステップ３１１のＹＥＳ）、ビットレートを上げると判定され、ｎをインクリメントし（ステップ３１２）、R=R(n)と設定する（ステップ３１３）。
【０１０１】
Ｐｏ≧Pu(n)の場合（ステップ３１０のＮＯ）あるいは現在のビットレートR(n) が上限の場合（ステップ３１１のＮＯ）には、ビットレートを変更しないと判定され、そのままR=R(n)とする（ステップ３１３）。
このようにして決定されたＲを符号化器に出力する（ステップ３１４）。こうして、音声・画像符号化部４０２は、指定されたビットレートＲで入力音声・画像データを符号化し、符号化されたデータがパケット送信部４０３を通してネットワークへ送出される。
【０１０２】
ここで、式（５）および式（６）に１より小さい定数を乗じることもできる。この場合、この定数の値を小さくするほど、ビットレートの変動を抑えることができるが、目標ビットレートへの追従性は低下する。
【０１０３】
なお、上記式（５）および（６）の代わりに、ビットレートと確率Ｐｄ／Ｐｕとの対応関係を具体的な数値として格納したテーブルを用いて、検索により確率を決定することも可能である。いずれにしても、このような式あるいはテーブルは、変更確率生成情報としてメモリに予め格納されている。
【０１０４】
３．２）他の確率設定法
次に、本実施形態における制御をTCPフレンドリー制御にする場合の図５のステップ３０３および３０８で算出される確率Pd(n)およびPu(n)の設定法を示す。
【０１０５】
まず、AIMD動作に基くTCPフレンドリー制御におけるビットレート増加時の加算値およびビットレート減少時の乗算値をそれぞれＡおよびＭであるとする。本実施形態における制御とAIMD動作に基くTCPフレンドリー制御とにおいて、増加値の平均が等しいことを示す式（７）を解くことにより、ビットレートを上げるときの確率Pu(n)を求めることができる。
【０１０６】
A = [R(n+1)-R(n)]Pu(n)                               （７）
Pu(n) = A / [R(n+1)-R(n)]。
【０１０７】
また、AIMD動作に基くTCPフレンドリー制御では、ビットレートがR(n)におけるビットレート減少値D(n)は、式（８）で示される。
【０１０８】
D(n) = (1-M)R(n)                                     （８）。
【０１０９】
よって、本実施形態における制御とAIMD動作に基くTCPフレンドリー制御とにおいて、減少値の平均が等しいことを示す式（９）を解くことにより、ビットレートを下げる時のPd(n)を求めることができる。
【０１１０】
D(n) = [R(n)-R(n-1)]Pd(n)                              （９）
Pd(n) = D(n) / [R(n)-R(n-1)]。
【０１１１】
このようにビットレートを下げるときの確率Pd(n)および上げるときの確率Pu(n)を設定することで、ビットレート制御をTCPフレンドリー制御にすることができる。
【０１１２】
なお、上記式（５）〜（９）のような計算式の代わりに、離散的ビットレートの各々に対してビットレートを低下させる確率Pdと上昇させる確率Puとをテーブルにあらかじめ格納し、現在のビットレートR(n)を用いて検索することで同様のビットレート変更確率を求めることもできる。
【０１１３】
以上説明したように、本発明の第３実施形態によれば、パケットの損失が検出されてビットレートを低下させる必要が生じた場合、あるいは、パケット損失が検出されないことからビットレートを上昇させることができる場合には、現在設定されているビットレートR(n)がビットレート設定可能範囲のどの位置にあるかによって、ビットレート変更の確率を変化させる。具体的には、パケットの損失が検出されるようになると、現在設定されているビットレートR(n)が高い端末では、ビットレートを低下させる確率を高くし、低い端末では低くする。逆に、パケットの損失が検出されい場合には、ネットワークは順調に動作しているから、現在設定されているビットレートR(n)が低い端末は、ビットレートを上昇させる確率を高くし、高い端末では低くする。
【０１１４】
したがって、ネットワークに多数の端末が接続され、それらがパケットの損失を検出したと仮定すれば、ビットレートが高い端末ほど多くビットレートが低下し、パケット損失が検出されない場合にはビットレートが低い端末ほど多く上昇する。このために、全端末間で公平なビットレート設定が可能となり、ネットワークの利用効率を最適化できると共に、各端末が目標ビットレートに近づこうとしてビットレートの設定を頻繁に変動させるという従来生じていた事態を回避することができる。
【０１１５】
さらに、TCPフレンドリー制御と整合するようにビットレート変更確率を設定することで、端末間の公平性およびTCPとの公平性を確保することができる。
【０１１６】
（４）第４実施形態
本発明の第４実施形態によるビットレート制御では、上記第２実施形態あるいは第３実施形態におけるビットレート低下及び上昇確率Pd(n)およびPu(n)に隣接ビットレートの間隔の大きさを反映させる。たとえば、隣接ビットレートまでの距離が大きいほどビットレート変更確率を小さくすることで、音声・画像の品質劣化をさらに抑制することができる。
【０１１７】
上述したように、音声・画像符号化部４０２が有するN個のビットレートR(0)〜R(N-1)は、R(0) < R(1) <・・・< R(N-1)であるが、隣接するビットレートの間隔R(n)-R(n-1) あるいは R(n+1)-R(n) は一般に均一ではない。たとえば、音声・画像符号化部４０２が３つのビットレート（10kbps, 64kbps および128kbps）を有する場合には、R(1)-R(0) = 54kbps、R(2)-R(1) = 64kbps となる。
【０１１８】
このようにビットレート間隔が不均一である場合、一律の確率計算でビットレート変更を行うと、端末によっては大きなビットレート変更が生じて音声・画像の品質を劣化させる要因となる場合がある。そこで、本実施形態では、隣接ビットレートとの距離に応じてビットレート変更確率をあらかじめ設定しておく。以下、具体的に説明する。
【０１１９】
隣接ビットレートとの距離に応じてビットレート変更確率を設定する場合には、計算式よりもテーブルを使用する方が適している。たとえば、次表に示すように、離散的ビットレートの各々に対してビットレートを低下させる確率Pd(n)と上昇させる確率Pu(n)とをテーブルにあらかじめ格納しておく。
【０１２０】
【表１】
0004000895.tif 000002
離散的ビットレートの各々に対するビットレート低下／上昇確率Pd(n)／Pu(n)は、隣接ビットレートとの距離が大きくなるほど、値が小さくなるように設定する。
【０１２１】
たとえば、現在設定されているビットレートをR(n)としたときに、次式（１０）および（１１）のように、ビットレート変更確率を隣接ビットレートとの距離に反比例させる。
【０１２２】
Pd(n) = Cd(n) / (R(n)-R(n-1))                           （１０）
Pu(n) = Cu(n) / (R(n+1)-R(n))                           （１１）。
【０１２３】
ただし、Cd(n) は、第２実施形態における式（３）、（３．１）あるいは（３．２）、または、第３実施形態の式（５）により定まる。Cu(n) は、第２実施形態における式（４）、（４．１）あるいは（４．２）、または、第３実施形態の式（６）により定まる。
【０１２４】
このようなビットレート変更確率設定ステップを、図２のステップ２０４および２０９、図５のステップ３０３および３０８の代わりに用いることで、隣接ビットレートまでの距離が大きいほどビットレート変更確率が小さくなり、大きなビットレート変更が抑えられ、音声・画像の品質劣化を抑制することができる。
【０１２５】
（５）ビットレート制御部の構成例
図６は、本発明の上記各実施形態を実現するビットレート制御部の構成を示すブロック図である。ビットレート制御部は、デジタルシグナルプロセッサ（ＤＳＰ）や中央処理装置（ＣＰＵ）などのプログラム制御プロセッサ６０１と、プログラムメモリ６０２と、確率の計算式あるいはテーブルを格納したメモリ（図示せず）と、から構成され、プログラムメモリ６０２には上記第１〜第４実施形態のいずれかに対応するビットレート制御プログラムがあらかじめ格納されている。
【０１２６】
プログラム制御プロセッサ６０１は、プログラムメモリ６０２からビットレート制御プログラムを読み出して実行し、計算式あるいはテーブルを参照しながらラウンドトリップ時間あるいはパケット損失率などを用いてビットレートＲを決定し、それを音声・画像符号化器４０２へ出力する。
【０１２７】
（６）ビットレート制御システム
上述したように、図８に示す端末では、たとえばパケット受信部４０４でRTCPパケットを受信し、そこからラウンドトリップ時間およびパケット損失率に関する情報を抽出して、本発明によるビットレート制御部４０５に出力する。ビットレート制御部４０５では、上述したプロセスによりビットレート制御が行われる。すなわち、自端末内でビットレートの制御が行われる。これに対して、相手側の端末から自端末のビットレートが制御されるように構成することも可能である。
【０１２８】
図７は、相手側からビットレート制御が行われる場合のシステム構成を示すブロック図である。ここでは説明を簡単にするために、ネットワークに２つの端末ＡおよびＢが接続され、互いに音声・画像データを送受信しているものとする。また、図８と同様の機能を有するブロックには同じ参照番号を付けて説明は省略する。
【０１２９】
図７において、たとえば端末Ａのパケット受信部５０４が相手側の端末Ｂからネットワークを通して音声・画像パケットを受信すると、受信した音声・画像パケットの損失数などからパケット損失率などの情報を生成し、ビットレート制御部５０５へ出力する。ビットレート制御部５０５は、パケット損失率などの情報に基づいて、本発明の第１〜第４実施形態で説明したようにビットレートＲを決定し、そのビットレート情報をパケット送信部５０３へ出力する。また、パケット受信部５０４は、端末Ｂにより生成されたビットレート情報を抽出して、音声・画像符号化部４０２へ出力する。パケット送信部５０３は、ビットレート情報と符号化された音声・画像情報とから送信パケットを生成し、ネットワークを通して端末Ｂへ送信する。たとえば、ＲＴＰによる音声通信において、ＡＭＲ（Adaptive Multi-Rate）音声Codecを用いる場合、ヘッダに４ビットのＣＭＲ（Codec Mode Request）というフィールドがあり、相手側から自端末へ向けて送信するビットレートをCodec Mode（ビットレートに対応する番号）によって指定することができる。
【０１３０】
端末Ｂは、端末Ａからパケットを受信すると、そこからビットレート情報を抽出し、音声・画像符号化部４０２へ出力する。音声・画像符号化部４０２は、そのビットレート情報により指定されたビットレートＲで送信音声・画像情報４０１を符号化し、符号化された音声・画像データは、ビットレート制御部５０５により生成されたビットレート情報とともにパケット送信部５０３から端末Ａへ送信される。
【０１３１】
このように、端末ＡおよびＢが互いに相手の送信ビットレートを制御することで、ＲＴＣＰパケットを用いてネットワークの情報をやりとりする必要がなく、ＲＴＣＰパケットにより消費される帯域を節約することができる。
【０１３２】
さらに、ＲＴＣＰパケットの送信間隔は５秒程度であるためにネットワークの変化に素早く対応することができないが、各端末が受信したパケットからネットワークの状況を検出するために、ネットワークの変化に迅速に対応することができ、本発明の効果をさらに向上させることができる。
【０１３３】
なお、上記第１〜第４実施形態において、連続してビットレートが変更されることにより生じる音質及び画質の劣化を避けるために、ビットレートを変更してから一定時間は、ビットレートを変更する確率を０又は小さくすることも可能である。
【０１３４】
さらに、本発明によるビットレート制御方法は更新時間によらず適用可能である。たとえば、更新時間が１０秒で遷移確率を０．１と設計した場合、更新時間が１秒に変わったとしても、遷移確率を１／１０の０．０１に調整すれば、ほぼ同様の効果を維持することができる。
【０１３５】
【発明の効果】
以上詳細に説明したように、本発明によれば、ネットワークの状態に応じてビットレートを制御する際に、確率に基いてビットレートを決定するために、リアルタイムトラフィックの品質劣化を引き起こすようなビットレートの激しい変動を抑えることができ、しかもTCPとの公平性を実現することができる。
【０１３６】
すなわち、通信システムの全端末の各々において利用可能なビットレートが離散的であっても、全端末のビットレートを平均した値が所望のビットレートとなるように各端末のビットレートを変更する確率値を定めることにより、各端末においてビットレートの変動の少ない制御が可能となり、音声・画像などのリアルタイム通信の品質を向上させることができる。
【図面の簡単な説明】
【図１】  本発明の第１実施形態によるビットレート制御方法を示すフローチャートである。
【図２】  本発明の第２実施形態によるビットレート制御方法を示すフローチャートである。
【図３】  ビットレート低下判定における確率計算式（３．１）〜式（３．４）にそれぞれ対応する確率Ｐｄの変化を示すグラフである。
【図４】  ビットレート上昇判定における確率計算式（４．１）〜式（４．４）にそれぞれ対応する確率Ｐｕの変化を示すグラフである。
【図５】  本発明の第３実施形態によるビットレート制御方法を示すフローチャートである。
【図６】  本発明の上記各実施形態を実現するビットレート制御部の構成を示すブロック図である。
【図７】  相手側からビットレート制御が行われる場合のシステム構成を示すブロック図である。
【図８】  音声・画像通信装置の基本的なブロック構成図である。
【図９】  （ａ）は、従来のビットレート変動を模式的に示す図であり、（ｂ）は本発明によるビットレート変動を模式的に示す図である。
【符号の説明】
４０１ 入力音声・画像データ
４０２ 音声・画像符号化部
４０３ パケット送信部
４０４ パケット受信部
４０５ ビットレート制御部
４０６ 音声・画像復号部
４０７ 出力音声・画像データ
【図１】
0004000895.tif 000003
【図２】
0004000895.tif 000004
【図３】
0004000895.tif 000005
【図４】
0004000895.tif 000006
【図５】
0004000895.tif 000007
【図６】
0004000895.tif 000008
【図７】
0004000895.tif 000009
【図８】
0004000895.tif 000010
【図９】
0004000895.tif 000011