(57)【要約】  ＣＰＵ１４は、バッファ１７から出力されるメディアデータの出力ビットレートの値を検出し、バッファ１７の空き容量の値を検出し、検出された空き容量の値から減少率設定値を減算した減算値を確保時間で除算することによって減少率の値を算出する。ＣＰＵ１４は、出力ビットレートの値に応じてバッファ１７へ入力されるメディアデータの入力ビットレートを下げる場合、検出された出力レートの値と算出された減少率の値とを加算し、加算値である入力ビットレート上限値に基づいて入力ビットレートの値を下げる。
2010007749.tif 000002
【特許請求の範囲】
【請求項１】
データを伝送路に送信する送信装置において、
伝送路に送信されるデータを一時的に保持するバッファと、
前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートの値を検出する第１検出部と、
前記バッファの空き容量の値を検出する第２検出部と、
前記第２検出部により検出された前記空き容量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記空き容量の減少率の値を算出する減少率演算部と、
前記第１検出部によって検出される前記出力レートの値に応じて前記バッファへ入力される所定時間当たりのデータのデータ量を表す入力レートを下げる場合、前記第１検出部によって検出された前記出力レートの値と前記減少率演算部によって算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記入力レートを制御するレート制御処理を行う制御部と、
を備える送信装置。
【請求項２】
前記第１設定値より大きい所定の第２設定値から前記第２検出部により検出された前記空き容量の値を減算した減算値を所定の確保時間で除算することによって前記空き容量の増加率の値を算出する増加率演算部を更に備え、
前記制御部は、
前記第１検出部によって検出される前記出力レートの値に応じて前記入力レートを上げる場合、前記第１検出部によって検出された前記出力レートの値から前記増加率演算部によって算出された前記増加率の値を減算し、減算値である第２制御値に基づいて前記入力レートを制御する
請求項１記載の送信装置。
【請求項３】
前記制御部は、前記第２検出部によって検出された前記空き容量の値が所定の第１閾値より小さい場合に、前記レート制御処理を行う
請求項１記載の送信装置。
【請求項４】
前記制御部は、前記第２検出部によって検出された前記空き容量の値が所定の第２閾値以上の場合に、前記入力レートの値が固定され又は所定値になるように前記入力レートを制御する
請求項２記載の送信装置。
【請求項５】
前記制御部は、
現在の前記入力レートの値が前記第１制御値を上回る場合、前記入力レートの値が前記第１制御値になるように前記入力レートを制御し、
現在の前記入力レートの値が前記第２制御値を下回る場合、前記入力レートの値が前記第２制御値になるように前記入力レートを制御する
請求項２記載の送信装置。
【請求項６】
前記制御部は、
現在の前記入力レートの値が前記第２制御値以上前記第１制御値以下の場合、前記入力レートの値が維持されるように前記入力レートを制御する
請求項５記載の送信装置。
【請求項７】
前記制御部は、前記第１制御値が送信するデータに設定可能な最大データレートの値を上回る場合、前記入力レートの値が前記最大データレートの値になるように前記入力レートを制御する
請求項１記載の送信装置。
【請求項８】
前記制御部は、前記第２制御値が送信するデータに設定可能な最大データレートの値を上回る場合、前記入力レートの値が前記最大データレートの値になるように前記入力レートを制御する
請求項２記載の送信装置。
【請求項９】
データを伝送路から受信する受信装置において、
伝送路から受信されるデータを一時的に保持するバッファと、
前記バッファに入力される所定時間当たりのデータのデータ量を表す入力レートの値を検出する第１検出部と、
前記バッファのデータの蓄積量の値を検出する第２検出部と、
前記第２検出部により検出された前記蓄積量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記蓄積量の減少率の値を算出する減少率演算部と、
前記第１検出部によって検出される前記入力レートの値に応じて前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートを下げる場合、前記第１検出部によって検出された前記入力レートの値と前記減少率演算部によって算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記出力レートを更新しようとする出力レートの更新値を決定し、決定した前記出力レートの更新値を送信装置に対して通知するレート制御処理を行う制御部と、
を備える受信装置。
【請求項１０】
前記第１設定値より大きい所定の第２設定値から前記第２検出部により検出された前記蓄積量の値を減算した減算値を所定の確保時間で除算することによって前記蓄積量の増加率の値を算出する増加率演算部を更に備え、
前記制御部は、
前記第１検出部によって検出される前記入力レートの値に応じて前記出力レートを上げる場合、前記第１検出部によって検出された前記入力レートの値から前記増加率演算部によって算出された前記増加率の値を減算し、減算値である第２制御値に基づいて前記出力レートの更新値を決定し、決定した前記出力レートの更新値を前記送信装置に対して通知する
請求項９記載の受信装置。
【請求項１１】
前記制御部は、前記第２検出部によって検出された前記蓄積量の値が所定の第１閾値より小さい場合に、前記レート制御処理を行う
請求項９記載の受信装置。
【請求項１２】
前記制御部は、前記第２検出部によって検出された前記蓄積量の値が所定の第２閾値以上の場合に、前記出力レートの値が固定され又は所定値になるように前記出力レートの更新値を決定する
請求項１０記載の受信装置。
【請求項１３】
前記制御部は、
現在の前記出力レートの値が前記第１制御値を上回る場合、前記出力レートの更新値を前記第１制御値に決定し、
現在の前記出力レートの値が前記第２制御値を下回る場合、前記出力レートの更新値を前記第２制御値に決定する
請求項１０記載の受信装置。
【請求項１４】
前記制御部は、
現在の前記出力レートの値が前記第２制御値以上前記第１制御値以下の場合、前記出力レートの値が維持されるように前記出力レートの更新値を決定する
請求項１３記載の受信装置。
【請求項１５】
伝送路に送信されるデータを一時的に保持するバッファと、
前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートの値を検出する第１検出部と、
前記バッファの空き容量の値を検出する第２検出部と、
前記第２検出部により検出された前記空き容量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記空き容量の減少率の値を算出する減少率演算部と、
前記第１検出部によって検出される前記出力レートの値に応じて前記バッファへ入力される所定時間当たりのデータのデータ量を表す入力レートを下げる場合、前記第１検出部によって検出された前記出力レートの値と前記減少率演算部によって算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記入力レートを制御するレート制御処理を行う制御部と、
を備えるレート制御装置。
【請求項１６】
伝送路から受信されるデータを一時的に保持するバッファと、
前記バッファに入力される所定時間当たりのデータのデータ量を表す入力レートの値を検出する第１検出部と、
前記バッファのデータの蓄積量の値を検出する第２検出部と、
前記第２検出部により検出された前記蓄積量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記蓄積量の減少率の値を算出する減少率演算部と、
前記第１検出部によって検出される前記入力レートの値に応じて前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートを下げる場合、前記第１検出部によって検出された前記入力レートの値と前記減少率演算部によって算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記出力レートを更新しようとする出力レートの更新値を決定し、決定した前記出力レートの更新値を送信装置に対して通知するレート制御処理を行う制御部と、
を備えるレート制御装置。
【請求項１７】
データを伝送路に送信する送信装置において行われる送信方法であって、
伝送路に送信されるデータを一時的にバッファに保持する保持ステップと、
前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートの値を検出する第１検出ステップと、
前記バッファの空き容量の値を検出する第２検出ステップと、
前記第２検出ステップにおいて検出された前記空き容量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記空き容量の減少率の値を算出する減少率演算ステップと、
前記第１検出ステップにおいて検出される前記出力レートの値に応じて前記バッファへ入力される所定時間当たりのデータのデータ量を表す入力レートを下げる場合、前記第１検出ステップにおいて検出された前記出力レートの値と前記減少率演算ステップにおいて算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記入力レートを制御するレート制御処理を行う制御ステップと、
を備える送信方法。
【請求項１８】
データを伝送路から受信する受信装置において行われる受信方法であって、
伝送路から受信されるデータを一時的にバッファに保持する保持ステップと、
前記バッファに入力される所定時間当たりのデータのデータ量を表す入力レートの値を検出する第１検出ステップと、
前記バッファのデータの蓄積量の値を検出する第２検出ステップと、
前記第２検出ステップにおいて検出された前記蓄積量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記蓄積量の減少率の値を算出する減少率演算ステップと、
前記第１検出ステップにおいて検出される前記入力レートの値に応じて前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートを下げる場合、前記第１検出ステップにおいて検出された前記入力レートの値と前記減少率演算部によって算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記出力レートを更新しようとする出力レートの更新値を決定し、決定した前記出力レートの更新値を送信装置に対して通知するレート制御処理を行うステップと、
を備える受信方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、送信データのデータレートを可変制御する技術に関する。
【背景技術】
【０００２】
送信装置は、送信すべきデータを一時的に保持するバッファを備えている。無線通信やＰＬＣ（Power Line Communications）通信等の伝送路の状態が変化しやすい通信では、一時的に伝送路の状態が悪化して通信の伝送スループットが低下すると、バッファから出力されるデータのビットレート（以下、「出力ビットレート」と言う。）が低下する。すなわち、伝送スループットは出力ビットレートに等しい。映像データ等のストリーミングデータを送信する場合、バッファに入力されるデータのビットレート（以下、「入力ビットレート」と言う。）はストリーミングデータのビットレートに等しい。【０００３】
無線通信やＰＬＣ通信等でストリーミングデータを送信する場合、伝送スループットが低下して出力ビットレートが入力ビットレートよりも低くなると、バッファに蓄積されているデータのデータ量が増加する。伝送スループットの低下が継続し、バッファに蓄積されたデータのデータ量がバッファの最大蓄積量に達すると、バッファのオーバーフローが発生し、送信すべきデータが破棄されてしまう。その結果、映像や音声の途切れが発生する。【０００４】
伝送スループットの低下に伴うオーバーフローの発生を防止する従来技術として、伝送路の状態の変化に応じて入力ビットレート、即ち送信データのビットレート（データレート）を制御する方法が特許文献１や特許文献２に開示されている。【０００５】
特許文献１には、伝送スループットを測定するためのテストパケットを送信し、当該テストパケットの到達率の値に基づいて伝送スループットの値を測定し、入力ビットレートの値が測定された伝送スループットの値になるよう入力ビットレートを制御する技術が開示されている。【０００６】
特許文献２には、特許文献１における伝送スループットの値を測定するためのテストパケットを送信する代わりに、バッファの単位時間当たりの蓄積量の変動率の値と入力ビットレートの値を測定し、測定された蓄積量の変動率の値と入力ビットレートの値とを加算した値を伝送スループットの値とし、入力ビットレートの値がこの伝送スループットの値になるよう入力ビットレートを制御する技術が開示されている。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００４−３５７２２６号公報
【特許文献２】特開２００６−１１５３０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記の従来の技術は、何れも入力ビットレートを伝送スループットに追従させるものであり、以下のような課題がある。【０００９】
例えば、無線伝送路や電灯線では、瞬間的な伝送路状態の悪化が度々発生する。この場合、一時的に伝送スループットの低下が発生するが、すぐに伝送スループットが回復することが多いので、入力ビットレートを下げなくてもバッファのオーバーフローは発生しない。しかし、上記の従来の技術では、伝送スループットの低下を検出すると入力ビットレートの値を伝送スループットの値に追従させる制御を行うため、一時的な伝送スループットの低下が発生した場合であっても受信装置で再生される映像の解像度を下げるか、フレームレートを下げることになって、映像品質の低下が発生し、視聴者に違和感を与えるという問題がある。【００１０】
上記のような一時的な伝送スループットの低下による映像品質の低下を防ぐには、入力ビットレートの制御を行う時間間隔を長くする手法が考えられる。この手法を用いると、一時的な伝送スループットの低下が発生しても、次の入力ビットレートの制御を行うタイミングになるまでに伝送スループットが回復すれば、入力ビットレートの低下は発生しない。しかし、入力ビットレートの制御を行う時間間隔を長くすると、一定時間伝送スループットの低下が継続した場合に、次の入力ビットレートの制御を行うタイミングになるまでにバッファのオーバーフローが発生する可能性が高くなるという問題が生じる。これを避けるために、入力ビットレートの制御を行う時間間隔を短くすると、一時的な伝送スループットの低下によって映像品質の低下が発生するという問題が生じる。【００１１】
そこで、本発明は、伝送路状態の変動に対して送信されるデータのデータレートの変動を抑えることが可能な送信装置、受信装置、レート制御装置、送信方法及び受信方法を提供することを目的とする。
【課題を解決するための手段】
【００１２】
上記目的を達成するために本発明の送信装置は、データを伝送路に送信する送信装置において、伝送路に送信されるデータを一時的に保持するバッファと、前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートの値を検出する第１検出部と、前記バッファの空き容量の値を検出する第２検出部と、前記第２検出部により検出された前記空き容量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記空き容量の減少率の値を算出する減少率演算部と、前記第１検出部によって検出される前記出力レートの値に応じて前記バッファへ入力される所定時間当たりのデータのデータ量を表す入力レートを下げる場合、前記第１検出部によって検出された前記出力レートの値と前記減少率演算部によって算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記入力レートを制御するレート制御処理を行う制御部と、を備える。
【発明の効果】
【００１３】
上記送信装置によれば、出力レートに対応する伝送スループットの低下時に伝送スループットの変動に対して入力レートに対応する送信するデータのデータレートの変動を小さく抑えることが可能になる。その結果、例えば、データレートの激しい変化によって起こされる画質や音質の違和感を抑えることが可能になる。
【図面の簡単な説明】
【００１４】
【図１】第１の実施の形態のネットワーク構成図。
【図２】図１のサーバ側のＡＶ機器の装置構成図。
【図３】図２のバッファの一構成例を説明するための図。
【図４】図２のＣＰＵの機能構成図。
【図５】図４の出力ビットレート検出部の機能構成図。
【図６】図２のＣＰＵが行う入力ビットレート制御処理の流れを示すフローチャート。
【図７】図６の入力ビットレート更新値決定処理の流れを示すフローチャート。
【図８】（ａ），（ｂ），（ｃ）は伝送スループットの低下時の入力レートの制御の一例を説明するための図。
【図９】（ａ），（ｂ），（ｃ）は伝送スループットの増大時の入力レートの制御の一例を説明するための図。
【図１０】（ａ），（ｂ）は、第１の実施の形態の入力ビットレートの制御手法と従来技術の入力ビットレートの制御手法とを比較するための図。
【図１１】（ａ），（ｂ）は、第１の実施の形態の入力ビットレートの制御手法と従来技術の入力ビットレートの制御手法とを比較するための図。
【図１２】第２の実施の形態のネットワーク構成図。
【図１３】図１２のサーバ側のＡＶ機器に接続された中継装置の装置構成図。
【図１４】第３の実施の形態のネットワーク構成図。
【図１５】図１４のサーバ側のＡＶ機器の装置構成図。
【図１６】図１５のＣＰＵの機能構成図。
【図１７】図１５のＣＰＵが行うデータレート変更処理の流れを示すフローチャート。
【図１８】図１４のクライアント側のＡＶ機器の装置構成図。
【図１９】図１８のバッファの一構成例を説明するための図。
【図２０】図１８のＣＰＵの機能構成図である。
【図２１】図２０の伝送スループット検出部の機能構成図。
【図２２】図１８のＣＰＵが行うデータレート演算処理の流れを示すフローチャート。
【図２３】図２２のデータレート更新値決定処理の流れを示すフローチャート。
【図２４】図１４のサーバ側のＡＶ機器からクライアント側のＡＶ機器へデータストリームを配信する場合のシーケンス図。
【図２５】（ａ），（ｂ），（ｃ）は伝送スループットの低下時のデータレートの制御の一例を説明するための図。
【図２６】（ａ），（ｂ），（ｃ）は伝送スループットの増大時のデータレートの制御の一例を説明するための図。
【発明を実施するための形態】
【００１５】
本発明の一態様である第１の送信装置は、データを伝送路に送信する送信装置において、伝送路に送信されるデータを一時的に保持するバッファと、前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートの値を検出する第１検出部と、前記バッファの空き容量の値を検出する第２検出部と、前記第２検出部により検出された前記空き容量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記空き容量の減少率の値を算出する減少率演算部と、前記第１検出部によって検出される前記出力レートの値に応じて前記バッファへ入力される所定時間当たりのデータのデータ量を表す入力レートを下げる場合、前記第１検出部によって検出された前記出力レートの値と前記減少率演算部によって算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記入力レートを制御するレート制御処理を行う制御部と、を備える。
【００１６】
本発明の一態様である第１のレート制御装置は、伝送路に送信されるデータを一時的に保持するバッファと、前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートの値を検出する第１検出部と、前記バッファの空き容量の値を検出する第２検出部と、前記第２検出部により検出された前記空き容量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記空き容量の減少率の値を算出する減少率演算部と、前記第１検出部によって検出される前記出力レートの値に応じて前記バッファへ入力される所定時間当たりのデータのデータ量を表す入力レートを下げる場合、前記第１検出部によって検出された前記出力レートの値と前記減少率演算部によって算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記入力レートを制御するレート制御処理を行う制御部と、を備える。
【００１７】
本発明の一態様である第１の送信方法は、データを伝送路に送信する送信装置において行われる送信方法であって、伝送路に送信されるデータを一時的にバッファに保持する保持ステップと、前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートの値を検出する第１検出ステップと、前記バッファの空き容量の値を検出する第２検出ステップと、前記第２検出ステップにおいて検出された前記空き容量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記空き容量の減少率の値を算出する減少率演算ステップと、前記第１検出ステップにおいて検出される前記出力レートの値に応じて前記バッファへ入力される所定時間当たりのデータのデータ量を表す入力レートを下げる場合、前記第１検出ステップにおいて検出された前記出力レートの値と前記減少率演算ステップにおいて算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記入力レートを制御するレート制御処理を行う制御ステップと、を備える。
【００１８】
これらによれば、出力レートに対応する伝送スループットの低下時に伝送スループットの変動に対して入力レートに対応する送信するデータのデータレートの変動を小さく抑えることが可能になる。
【００１９】
本発明の一態様である第２の送信装置は、第１の送信装置において、前記第１設定値より大きい所定の第２設定値から前記第２検出部により検出された前記空き容量の値を減算した減算値を所定の確保時間で除算することによって前記空き容量の増加率の値を算出する増加率演算部を更に備え、前記制御部は、前記第１検出部によって検出される前記出力レートの値に応じて前記入力レートを上げる場合、前記第１検出部によって検出された前記出力レートの値から前記増加率演算部によって算出された前記増加率の値を減算し、減算値である第２制御値に基づいて前記入力レートを制御する。
【００２０】
これによれば、出力レートに対応する伝送スループットの増大時に伝送スループットの変動に対して入力レートに対応する送信するデータのデータレートの変動を小さく抑えることが可能になる。
【００２１】
本発明の一態様である第３の送信装置は、第１の送信装置において、前記制御部は、前記第２検出部によって検出された前記空き容量の値が所定の第１閾値より小さい場合に、前記レート制御処理を行う。
【００２２】
これによれば、バッファの空き容量の値が第１閾値以上の場合には伝送スループットが安定していると判断し、伝送スループットが安定している間は入力レートを変更しないようにする。これにより、伝送スループットが安定している状態で伝送スループットが変動したとしても入力レートに対応する送信するデータのデータレートを一定に保つことが可能になる。
【００２３】
本発明の一態様である第４の送信装置は、第２の送信装置において、前記制御部は、前記第２検出部によって検出された前記空き容量の値が所定の第２閾値以上の場合に、前記入力レートの値が固定され又は所定値になるように前記入力レートを制御する。
【００２４】
これによれば、バッファの空き容量の値が第２閾値以上の場合には伝送スループットが安定していると判断し、伝送スループットが安定している間は入力レートを変更しないようにする。これにより、伝送スループットが安定している状態で伝送スループットが変動したとしても入力レートに対応する送信するデータのデータレートを一定に保つことが可能になる。
【００２５】
本発明の一態様である第５の送信装置は、第２の送信装置において、前記制御部は、現在の前記入力レートの値が前記第１制御値を上回る場合、前記入力レートの値が前記第１制御値になるように前記入力レートを制御し、現在の前記入力レートの値が前記第２制御値を下回る場合、前記入力レートの値が前記第２制御値になるように前記入力レートを制御する。
【００２６】
これによれば、現在の入力レートの値と第１制御値及び第２制御値との大小関係を利用することによって、伝送スループットの変動に合わせて入力レートの制御を適切に行うことができる。
【００２７】
本発明の一態様である第６の送信装置は、第５の送信装置において、前記制御部は、現在の前記入力レートの値が前記第２制御値以上前記第１制御値以下の場合、前記入力レートの値が維持されるように前記入力レートを制御する。
【００２８】
これによれば、入力レートの値の急激な変化を防止することができる。
【００２９】
本発明の一態様である第７の送信装置は、第１の送信装置において、前記制御部は、前記第１制御値が送信するデータに設定可能な最大データレートの値を上回る場合、前記入力レートの値が前記最大データレートの値になるように前記入力レートを制御する。
【００３０】
これによれば、送信するデータに設定可能な最大データレートの値を上回るデータレートでのデータ変換が行われることを回避でき、データ変換時のエラー発生を防止できる。
【００３１】
本発明の一態様である第８の送信装置は、第２の送信装置において、前記制御部は、前記第２制御値が送信するデータに設定可能な最大データレートの値を上回る場合、前記入力レートの値が前記最大データレートの値になるように前記入力レートを制御する。
【００３２】
これによれば、送信するデータに設定可能な最大データレートの値を上回るデータレートでのデータ変換が行われることを回避でき、データ変換時のエラー発生を防止できる。
【００３３】
本発明の一態様である第１の受信装置は、データを伝送路から受信する受信装置において、伝送路から受信されるデータを一時的に保持するバッファと、前記バッファに入力される所定時間当たりのデータのデータ量を表す入力レートの値を検出する第１検出部と、前記バッファのデータの蓄積量の値を検出する第２検出部と、前記第２検出部により検出された前記蓄積量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記蓄積量の減少率の値を算出する減少率演算部と、前記第１検出部によって検出される前記入力レートの値に応じて前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートを下げる場合、前記第１検出部によって検出された前記入力レートの値と前記減少率演算部によって算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記出力レートを更新しようとする出力レートの更新値を決定し、決定した前記出力レートの更新値を送信装置に対して通知するレート制御処理を行う制御部と、を備える。
【００３４】
本発明の一態様である第２のレート制御装置は、伝送路から受信されるデータを一時的に保持するバッファと、前記バッファに入力される所定時間当たりのデータのデータ量を表す入力レートの値を検出する第１検出部と、前記バッファのデータの蓄積量の値を検出する第２検出部と、前記第２検出部により検出された前記蓄積量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記蓄積量の減少率の値を算出する減少率演算部と、前記第１検出部によって検出される前記入力レートの値に応じて前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートを下げる場合、前記第１検出部によって検出された前記入力レートの値と前記減少率演算部によって算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記出力レートを更新しようとする出力レートの更新値を決定し、決定した前記出力レートの更新値を送信装置に対して通知するレート制御処理を行う制御部と、を備える。
【００３５】
本発明の一態様である第１の受信方法は、データを伝送路から受信する受信装置において行われる受信方法であって、伝送路から受信されるデータを一時的にバッファに保持する保持ステップと、前記バッファに入力される所定時間当たりのデータのデータ量を表す入力レートの値を検出する第１検出ステップと、前記バッファのデータの蓄積量の値を検出する第２検出ステップと、前記第２検出ステップにおいて検出された前記蓄積量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記蓄積量の減少率の値を算出する減少率演算ステップと、前記第１検出ステップにおいて検出される前記入力レートの値に応じて前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートを下げる場合、前記第１検出ステップにおいて検出された前記入力レートの値と前記減少率演算部によって算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記出力レートを更新しようとする出力レートの更新値を決定し、決定した前記出力レートの更新値を送信装置に対して通知するレート制御処理を行うステップと、を備える。
【００３６】
これらによれば、入力レートに対応する伝送スループットの低下時に伝送スループットの変動に対して出力レートに対応する送信するデータのデータレートの変動を小さく抑えることが可能になる。
【００３７】
本発明の一態様である第２の受信装置は、第１の受信装置において、前記第１設定値より大きい所定の第２設定値から前記第２検出部により検出された前記蓄積量の値を減算した減算値を所定の確保時間で除算することによって前記蓄積量の増加率の値を算出する増加率演算部を更に備え、前記制御部は、前記第１検出部によって検出される前記入力レートの値に応じて前記出力レートを上げる場合、前記第１検出部によって検出された前記入力レートの値から前記増加率演算部によって算出された前記増加率の値を減算し、減算値である第２制御値に基づいて前記出力レートの更新値を決定し、決定した前記出力レートの更新値を前記送信装置に対して通知する。
【００３８】
これによれば、入力レートに対応する伝送スループットの増大時に伝送スループットの変動に対して出力レートに対応する送信するデータのデータレートの変動を小さく抑えることが可能になる。
【００３９】
本発明の一態様である第３の受信装置は、第１の受信装置において、前記制御部は、前記第２検出部によって検出された前記蓄積量の値が所定の第１閾値より小さい場合に、前記レート制御処理を行う。
【００４０】
これによれば、バッファの蓄積量の値が第１閾値以上の場合には伝送スループットが安定していると判断し、伝送スループットが安定している間は出力レートを変更しないようにする。これにより、伝送スループットが安定している状態で伝送スループットが変動したとしても出力レートに対応する送信するデータのデータレートを一定に保つことが可能になる。
【００４１】
本発明の一態様である第４の受信装置は、第２の受信装置において、前記制御部は、前記第２検出部によって検出された前記蓄積量の値が所定の第２閾値以上の場合に、前記出力レートの値が固定され又は所定値になるように前記出力レートの更新値を決定する。
【００４２】
これによれば、バッファの蓄積量の値が第２閾値以上の場合には伝送スループットが安定していると判断し、伝送スループットが安定している間は出力レートを変更しないようにする。これにより、伝送スループットが安定している状態で伝送スループットが変動したとしても出力レートに対応する送信するデータのデータレートを一定に保つことが可能になる。
【００４３】
本発明の一態様である第５の受信装置は、第２の受信装置において、前記制御部は、現在の前記出力レートの値が前記第１制御値を上回る場合、前記出力レートの更新値を前記第１制御値に決定し、現在の前記出力レートの値が前記第２制御値を下回る場合、前記出力レートの更新値を前記第２制御値に決定する。
【００４４】
これによれば、現在の入力レートの値と第１制御値及び第２制御値との大小関係を利用することによって、伝送スループットの変動に合わせて入力レートの制御を適切に行うことができる。
【００４５】
本発明の一態様である第６の受信装置は、第５の受信装置において、前記制御部は、現在の前記出力レートの値が前記第２制御値以上前記第１制御値以下の場合、前記出力レートの値が維持されるように前記出力レートの更新値を決定する。
【００４６】
これによれば、出力レートの値の急激な変化を防止することができる。
【００４７】
以下、本発明の実施の形態について、図面を参照しつつ説明する。
【００４８】
≪第１の実施の形態≫
以下、本発明の第１の実施の形態について図面を参照しつつ説明する。
【００４９】
＜ネットワーク構成及び動作＞
図１は本実施の形態のネットワーク構成図であり、ネットワーク１にはＡＶ機器２，３が含まれている。
【００５０】
本実施の形態では、ＡＶ機器２は、メディアデータを記憶保持し、メディアデータを送信するサーバ側のＡＶ機器であり、ＡＶ機器３は、他の機器から送信されたメディアデータを受信し、受信したメディアデータを再生、表示するクライアント側のＡＶ機器である。ＡＶ機器２は、例えば、通信機能を備えた映像コンテンツデータを記憶可能なＨＤＤ（Hard Disk Drive）レコーダ機器やＢｌｕ−ｒａｙ  Ｄｉｓｋ（登録商標）レコーダ機器などである。ＡＶ機器３は、通信機能を備えたテレビなどのディスプレイ装置などである。通信機能として、ＩＥＥＥ８０２．１１標準規格の無線ＬＡＮ（Local Area Network）などの無線通信、ＨＤ−ＰＬＣ（登録商標）などの電力線通信、Ｅｔｈｅｒｎｅｔ（登録商標）などの通信、同軸ケーブル通信などがあり、図１では通信機能を無線通信で表している。
【００５１】
ＡＶ機器２は例えば蓄積している映像コンテンツデータをストリーミング配信し、ＡＶ機器３はストリーミング配信されている映像コンテンツデータを受信し、受信した映像コンテンツデータを再生、表示する。これによって、視聴者はＡＶ機器２に蓄積されている映像コンテンツデータの映像をＡＶ機器３で視聴することができる。
【００５２】
以下、サーバ側のＡＶ機器２の詳細を図面を参照しつつ説明する。なお、クライアント側のＡＶ機器３は一般的なＡＶ機器が利用でき、詳細な説明を省略する。
【００５３】
＜ＡＶ機器（サーバ側）の装置構成＞
図２は図１のサーバ側のＡＶ機器２の装置構成図であり、ＡＶ機器２は、メディアデータ記憶部１１と、符号変換部１２と、メモリ１３と、ＣＰＵ（Central Processing Unit）１４と、通信インターフェース部（以下、「通信Ｉ／Ｆ部」と称する。）１５とを備える。
【００５４】
メディアデータ記憶部１１は、例えばＨＤＤで構築され、映像データや音声データなどのメディアコンテンツを記憶保持する機能を有する。
【００５５】
符号変換部１２は、映像データや音声データなどのメディアデータのビットレート（データレート）を変換する機能を有する。メディアデータのビットレートを変換する方法として、圧縮、符号化されたメディアデータを一旦デコードし、異なるビットレートに再エンコードする方法や、メディアデータをデコードせずに、異なるビットレートに再エンコードするトランスコーディングと呼ばれる方法などがあるが、入力されたメディアデータを異なるビットレートのメディアデータに変換して出力できれば、いかなる変換方法や符号化方法で実装されていてもよい。なお、符号変換部１２に入力される例えば映像データ及び音声データは、必ずしも圧縮、符号化されている必要はない。例えば、圧縮、符号化されていない映像データ及び音声データを入力して、圧縮、符号化処理を行って圧縮、符号化された映像データ及び音声データを出力してもよい。
【００５６】
メモリ１３は、例えば、ＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）などの半導体メモリで構築される。メモリ１３は、各種制御プログラムや各種アプリケーションプログラムなどのプログラムを記憶保持しており、例えば、通信Ｉ／Ｆ部１５内の後述するバッファ１７へ入力される所定時間当たりのメディアデータのデータ量を制御するためのプログラム（以下、「入力ビットレート制御プログラム」と言う。）１６を記憶保持している。また、メモリ１３は、ＣＰＵ１４が動作する際に使用する領域を有する。
【００５７】
ＣＰＵ１４は、メモリ１３に記憶保持されているプログラムを読み出し、読み出したプログラムを実行することによって、ＡＶ機器２全体の各種制御や各種演算を行う機能を有する。例えば、ＣＰＵ１４は、メモリ１３から入力ビットレート制御プログラム１６を読み出して、読み出した入力ビットレート制御プログラム１６を実行する。なお、この処理については、図４から図７を参照して後述する。
【００５８】
通信Ｉ／Ｆ部１５は、ネットワークを介してデータを送受信する機能、例えば、データ信号の変復調やメディアアクセス制御を行う機能を有し、ここでは、無線通信の通信Ｉ／Ｆ部とする。通信Ｉ／Ｆ部１５は内部にバッファ１７を有し、バッファ１７は送信バッファである。なお、バッファ１７については図３を参照して後述する。
【００５９】
例えば、メディアデータをクライアント側のＡＶ機器３へ送信する場合、ＣＰＵ１４は入力ビットレート制御プログラム１６を実行して後述する入力ビットレート更新値を算出し、符号変換部１２は算出された入力ビットレート更新値に従ってメディアデータ記憶部１１に記憶保持されているメディアデータに対してビットレート（データレート）の変換を施す。そして、通信Ｉ／Ｆ部１５は変換されて得られたメディアデータをバッファ１７に一時的に蓄積しながらネットワークを介してクライアント側のＡＶ機器３へ送出する。
【００６０】
このように、ＡＶ機器２内にバッファ１７に入力されるデータのビットレート（データレート）を変更する符号変換部１２を備えることで、入力ビットレートの変更を即座に行うことが可能になる。
【００６１】
＜バッファの構成＞
図３は図２のバッファ１７の一構成例を説明するための図である。
【００６２】
蓄積量２１はバッファ１７に蓄積されているデータのデータ量を表し、バッファ空き容量２２はバッファ１７に蓄積可能な残りのデータのデータ量を表す。データ量の単位は蓄積量２１及びバッファ空き容量２２ともビット或いはバイト等で表すことができ、本実施の形態ではビットを用いて説明する。
【００６３】
入力ビットレート２３は、バッファ１７に入力されるメディアデータの単位時間当たりのデータ量を表し、出力ビットレート２４はバッファ１７から出力されるメディアデータの単位時間当たりのデータ量を表す。本実施の形態では、入力ビットレート２３及び出力ビットレート２４の単位としてｂｐｓ（bit per second）を用いて説明する。ここでは、入力ビットレート２３は符号変換部１２から出力されるメディアデータのビットレート（データレート）と等しく、出力ビットレート２４は通信Ｉ／Ｆ部１５がメディアデータを送信する際の伝送スループットと等しいとする。
【００６４】
バッファ１７は、ＦＩＦＯ（First In First Out）の動作原理に従い、入力されたメディアデータを入力された順に出力する。このとき、入力ビットレート２３と出力ビットレート２４とが等しい場合、バッファ１７の蓄積量２１は変化しない。入力ビットレート２３と出力ビットレート２４とが等しくない場合、入力ビットレート２３と出力ビットレート２４との差分に応じて、バッファ１７の蓄積量２１は増減する。つまり、入力ビットレート２３が出力ビットレート２４より大きい場合にはバッファ１７の蓄積量２１は増加し、入力ビットレート２３が出力ビットレート２４より小さい場合にはバッファ１７の蓄積量２１は減少する。
【００６５】
例えば、入力ビットレート２３が１２Ｍｂｐｓで出力ビットレート２４が８Ｍｂｐｓの場合、４Ｍｂｐｓの速度でバッファ１７の蓄積量２１は増加し、言い換えると、４Ｍｂｐｓの速度でバッファ１７のバッファ空き容量２２は減少する。一方、入力ビットレート２３が６Ｍｂｐｓで出力ビットレート２４が９Ｍｂｐｓの場合、３Ｍｂｐｓの速度でバッファ１７の蓄積量２１は減少し、言い換えると、３Ｍｂｐｓの速度でバッファ１７のバッファ空き容量２２は増加する。
【００６６】
＜ＣＰＵの機能構成＞
図４は図２のＣＰＵ１４の機能構成図である。但し、図４には、ＣＰＵ１４の機能構成の理解を容易にするため、ＡＶ機器２の他の構成要素も図示している。
【００６７】
ＣＰＵ１４は、メモリ１３からそれに記憶保持されている入力ビットレート制御プログラム１６を読み出し、読み出した入力ビットレート制御プログラム１６を実行する。これによって、ＣＰＵ１４は、出力ビットレート検出部３１、バッファ空き容量検出部３２、減少率／増加率演算部３３、入力ビットレート演算部３４、及び入力ビットレート決定部３５として機能する。
【００６８】
出力ビットレート検出部３１は、バッファ１７から出力されるメディアデータの出力ビットレート２４の値即ち伝送スループットの値を検出し、検出した出力ビットレート２４の値を入力ビットレート演算部３４へ出力する。
【００６９】
ここで、出力ビットレート検出部３１の機能構成について図５を参照しつつ説明する。図５は図４の出力ビットレート検出部３１の機能構成図である。なお、図５では、出力ビットレート検出部３１の内部要素と通信Ｉ／Ｆ部１５及び入力ビットレート演算部３４の接続関係を明確にするために、通信Ｉ／Ｆ部１５及び入力ビットレート演算部３４も図示している。
【００７０】
出力ビットレート検出部３１は、入力ビットレート検出部４１、バッファ変化率演算部４２、及び出力ビットレート演算部４３として機能する。
【００７１】
入力ビットレート検出部４１は、バッファ１７に入力されるメディアデータの単位時間当たりのデータ量を検出し、検出結果を入力ビットレート２３の値として出力ビットレート演算部４３へ出力する。なお、入力ビット検出部４１は、入力ビットレート決定部３５が符号変換部１２に対して出力する後述の入力ビットレート更新値を入力ビットレート２３の値として検出するようにしてもよい。
【００７２】
バッファ変化率演算部４２は、バッファ１７の蓄積量２１の単位時間当たりの増加や減少を変化率として算出し、算出した変化率の値を出力ビットレート演算部４３へ出力する。但し、蓄積量２１が増加した場合の変化率を正の値で表し、蓄積量２１が減少した場合の変化率を負の値で表すことにする。
【００７３】
出力ビットレート演算部４３は、入力ビットレート検出部４１から入力された入力ビットレート２３の値からバッファ変化率演算部４２から入力された変化率の値を減算することによって出力ビットレート２４の値を算出し（出力ビットレート＝入力ビットレート−変化率）、算出した出力ビットレート２４の値を入力ビットレート演算部３４へ出力する。
【００７４】
バッファ空き容量検出部３２は、バッファ１７のバッファ空き容量２２の値を検出し、検出したバッファ空き容量２２の値を減少率／増加率演算部３３へ出力する。
【００７５】
減少率／増加率演算部３３は、バッファ空き容量検出部３２から入力されたバッファ１７のバッファ空き容量２２の値を利用して、バッファ１７のバッファ空き容量２２の許容される減少率の値及び増加率の値を算出し、算出した減少率の値及び増加率の値を入力ビットレート演算部３４へ出力する。
【００７６】
減少率／増加率演算部３３は増加率の算出を次のようにして行う。減少率／増加率演算部３３は、予め設定された増加率設定値からバッファ１７のバッファ空き容量２２の値を減算し、減算値を予め定められた一定時間（以下、「確保時間」と言う。）で除算することによって、増加率の値を算出する（増加率＝（増加率設定値−バッファ空き容量）／確保時間）。但し、増加率設定値とは、入力ビットレート２３を制御してバッファ空き容量２２の増減を調整し、確保時間後の目標とするバッファ空き容量２２の最大値であり、増加率設定値は主として入力ビットレートを増大させる制御を行う際に利用される。算出される増加率の値は、確保時間後に増加率設定値までバッファ空き容量２２の値を増加させようとした場合に必要な単位時間当たりのバッファ空き容量２２の増加率の値ということになる。
【００７７】
また、減少率／増加率演算部３３は減少率の算出を次のようにして行う。減少率／増加率演算部３３は、バッファ１７のバッファ空き容量２２の値から予め設定された減少率設定値を減算し、減算値を確保時間で除算することによって、減少率の値を算出する（減少率＝（バッファ空き容量−減少率設定値）／確保時間）。但し、減少率設定値とは、入力ビットレート２３を制御してバッファ空き容量２２の増減を調整し、確保時間後の目標とするバッファ空き容量２２の最小値であり、減少率設定値は主として入力ビットレートを低下させる制御を行う際に利用される。算出される減少率の値は、確保時間後に減少率設定値までバッファ空き容量２２の値を減少させようとした場合に必要な単位時間当たりのバッファ空き容量２２の減少率の値ということになる。
【００７８】
但し、増加率設定値は減少率設定値より大きい。増加率設定値は設計時に任意の値にすることができるが、例えば増加率設定値をバッファ１７の最大蓄積量としてもよい。減少率設定値は設計時に任意の値にすることができるが、例えば減少率設定値をゼロに設定してもよい。増加率及び減少率の算出に用いる確保時間は設計時に任意の値に設定することができるが、例えば連続的に発生する伝送路誤りの継続時間とすることができる。なお、増加率の算出に用いる確保時間と減少率の算出に用いる確保時間とを同じ値にしてもよいし、異なる値にしてもよい。
【００７９】
入力ビットレート演算部３４は、出力ビットレート検出部３１から入力された出力ビットレートの値に減少率／増加率演算部３３から入力された減少率の値を加算し、加算値を入力ビットレート上限値として入力ビットレート決定部３５へ出力する（入力ビットレート上限値＝出力ビットレート＋減少率）。但し、入力ビットレート上限値は、入力ビットレートを更新する際に許容される入力ビットレートの上限値である。
【００８０】
また、入力ビットレート演算部３４は、出力ビットレート検出部３１から入力された出力ビットレートの値から減少率／増加率演算部３３から入力された増加率の値を減算し、減算値を入力ビットレート下限値として入力ビットレート決定部３５へ出力する（入力ビットレート下限値＝出力ビットレート−増加率）。但し、入力ビットレート下限値は、入力ビットレートを更新する際に許容される入力ビットレートの下限値である。
【００８１】
入力ビットレート決定部３５は、図５の入力ビットレート検出部４１で検出される現在の入力ビットレートの値と、入力ビットレート演算部３４から入力される入力ビットレート上限値及び入力ビットレート下限値と、送信するメディアデータに設定可能な最大データレートの値とに基づいて、入力ビットレート更新値を決定し、決定した入力ビットレート更新値を符号変換部１２に対して通知する。但し、現在の入力ビットレートの値として符号変換部１２に対して出力する入力ビットレート更新値を用いるようにしてもよい。なお、符号変換部１２は、メディアデータ記憶部１１に記憶されているメディアデータのビットレート（データレート）をＣＰＵ１４の入力ビットレート決定部３５から通知された入力ビットレート更新値に従って変換し、変換により得られたメディアデータを通信Ｉ／Ｆ部１５内のバッファ１７へ出力する。
【００８２】
詳述すれば、入力ビットレート決定部３５は、現在の入力ビットレートの値が入力ビットレート下限値以上入力ビットレート上限値以下であれば、入力ビットレート更新値を現在の入力ビットレートの値に設定する。入力ビットレート決定部３５は、現在の入力ビットレートの値が入力ビットレート下限値より小さければ、入力ビットレート更新値を入力ビットレート下限値に設定し、現在の入力ビットレートの値が入力ビットレート上限値より大きければ、入力ビットレート更新値を入力ビットレート上限値に設定する。
【００８３】
さらに、入力ビットレート決定部３５は、上述したように設定した入力ビットレート更新値が送信するメディアデータに設定可能な最大データレートの値より大きければ、入力ビットレート更新値を最大データレートの値に再設定する。
【００８４】
図４及び図５を用いて説明したＣＰＵ１４の構成によれば、バッファ１７のバッファ空き容量２２、入力ビットレート２３、及びバッファ１７のバッファ空き容量２２の変化率というバッファの状態を検出するだけで、入力ビットレートの制御を行うことができる。このため、入力ビットレートの制御が容易になり、ＡＶ機器２の構成を簡略化することができる。
【００８５】
＜ＣＰＵの動作＞
図６は図２のＣＰＵ１４が行う入力ビットレート制御処理の流れを示すフローチャートである。但し、ＣＰＵ１４はメモリ１３からそれに記憶されている入力ビットレート制御プログラム１６を読み出し、読み出した入力ビットレート制御プログラム１６を実行することによって、図６及び後述する図７のフローチャートの処理を実行する。
【００８６】
ＣＰＵ１４は、バッファ１７のバッファ空き容量２２の値が予め設定された制御開始閾値より小さいかを判定する（ステップＳ１０１）。
【００８７】
バッファ空き容量２２の値が制御開始閾値以上である間（Ｓ１０１：ＮＯ）、ステップＳ１０１の処理が繰り返し行われ、入力ビットレート２３の更新は行われない。例えば、バッファ空き容量２２の値が制御開始閾値より小さくなるまで、伝送スループットが安定していると判断し、入力ビットレート２３の更新が行われない。また、伝送路の状態が回復してバッファ空き容量２２の値が制御開始閾値以上になってから再度バッファ空き容量２２の値が制御開始閾値よりも小さくなるまで、伝送スループットが安定していると判断し、入力ビットレート２３の値はバッファ空き容量２２の値が制御開始閾値以上になった時点の入力ビットレート２３の値で固定される。このように、バッファ１７のバッファ空き容量２２の値が制御開始閾値以上にある場合は伝送スループットが安定していると判断し、伝送スループットが安定している場合におけるバッファ１７のバッファ空き容量２２の瞬時的な変動に対して入力ビットレート２３の更新は行われない。このため、伝送スループットが安定した状態では入力ビットレート２３が一定値に保たれる。これにより、例えば映像データの送信時に、伝送スループットが安定した状態ではクライアント側のＡＶ機器３で再生される映像の解像度が下がったりフレームレートが低くなったりする変化が発生せず、視聴者は違和感なく映像を視聴することができる。
【００８８】
一方、バッファ空き容量２２の値が制御開始閾値より小さいと判定された場合（Ｓ１０１：ＹＥＳ）、ＣＰＵ１４は、図７に処理の流れを示す入力ビットレート更新値決定処理を実行することによって入力ビットレート更新値を決定する（ステップＳ１０２）。そして、ＣＰＵ１４の入力ビットレート決定部３５は、ステップＳ１０２で決定された入力ビットレート更新値を符号変換部１２に対して通知し（ステップＳ１０３）、ステップＳ１０１の処理が行われる。符号変換部１２は、メディアデータ記憶部１１に記憶されているメディアデータのビットレート（データレート）を通知された入力ビットレート更新値に従って変換し、変換により得られたメディアデータを通信Ｉ／Ｆ部１５内のバッファ１７へ出力する。通信Ｉ／Ｆ部１５はバッファ１７に蓄積されているメディアデータをネットワークを介して例えばクライアント側のＡＶ機器３へ送信する。
【００８９】
［入力ビットレート更新値決定処理］
図７は図６の入力ビットレート更新値決定処理（ステップＳ１０２）の流れを示すフローチャートである。
【００９０】
出力ビットレート検出部３１において、入力ビットレート検出部４１はバッファ１７に入力されているメディアデータの入力ビットレート２３の値を検出し、バッファ変化率演算部４２はバッファ１７の蓄積量２１の変化率の値を算出する。そして、出力ビットレート演算部４３は検出された入力ビットレート２３の値から算出された変化率の値を減算することによって、出力ビットレート２４の値を算出する（ステップＳ２０１）。
【００９１】
バッファ空き容量検出部３２はバッファ１７のバッファ空き容量２２の値を検出する（ステップＳ２０２）。減少率／増加率演算部３３は、増加率設定値からステップＳ２０２で検出されたバッファ空き容量２２の値を減算し、減算値を確保時間で除算することによって、増加率の値を算出する（ステップＳ２０３）。また、減少率／増加率演算部３３は、ステップＳ２０２で検出されたバッファ空き容量２２の値から減少率設定値を減算し、減算値を確保時間で除算することによって、減少率の値を算出する（ステップＳ２０４）。
【００９２】
入力ビットレート演算部３４は、ステップＳ２０１で検出された出力ビットレートの値にステップＳ２０４で算出された減少率の値を加算し、加算値を入力ビットレート上限値とする（ステップＳ２０５）。また、入力ビットレート演算部３４は、ステップＳ２０１で検出された出力ビットレートの値からステップＳ２０３で算出された増加率の値を減算し、減算値を入力ビットレート下限値とする（ステップＳ２０６）。
【００９３】
入力ビットレート決定部３５は、現在の入力ビットレートの値がステップＳ２０６で得られた入力ビットレート下限値以上ステップＳ２０５で得られた入力ビットレート上限値以下の範囲内であるかを判定する（ステップＳ２０７）。
【００９４】
現在の入力ビットレートの値がその範囲内であれば（Ｓ２０７：ＹＥＳ）、入力ビットレート決定部３５は、入力ビットレート更新値を現在の入力ビットレートの値に設定し（ステップＳ２０８）、ステップＳ２１２の処理へ移行する。このようにすることにより、伝送スループットが回復した状態から再度低下した場合や伝送スループットが低下した状態から回復した場合に、現在の入力ビットレートの値が入力ビットレート下限値以上入力ビットレート上限値以下の範囲内であれば入力ビットレートの更新が行われない。このため、現在の入力ビットレートの値が上記の範囲内であれば伝送スループットが変動しても入力ビットレートは変動することなく安定する。これにより、例えばクライアント側のＡＶ機器３で再生される映像の解像度やフレームレートが急激に上がったり下がったりするような状況を回避でき、視聴者は安定した品質の映像を視聴することができる。
【００９５】
一方、現在の入力ビットレートの値がその範囲内になければ（Ｓ２０７：ＮＯ）、入力ビットレート決定部３５は、現在の入力ビットレートの値が入力ビットレート上限値より大きいかを判定する（ステップＳ２０９）。
【００９６】
現在の入力ビットレートの値が入力ビットレート上限値より大きければ（Ｓ２０９：ＹＥＳ）、出力ビットレートの低下かバッファ１７のバッファ空き容量２２の低下により入力ビットレート上限値が現在の入力ビットレートの値より低下した状況であることから、入力ビットレート決定部３５は、入力ビットレートを下げるべく、入力ビットレート更新値を入力ビットレート上限値に設定し（ステップＳ２１０）、ステップＳ２１２の処理へ移行する。
【００９７】
一方、現在の入力ビットレートの値が入力ビットレート上限値より大きくなければ、つまり、現在の入力ビットレートの値が入力ビットレート下限値より小さければ（Ｓ２０９：ＮＯ）、出力ビットレートの増大かバッファ１７のバッファ空き容量２２の増加により入力ビットレート下限値が現在の入力ビットレートの値より増大した状況であることから、入力ビットレート決定部３５は、入力ビットレートを上げるべく、入力ビットレート更新値を入力ビットレート下限値に設定し（ステップＳ２１１）、ステップＳ２１２の処理へ移行する。
【００９８】
入力ビットレート決定部３５は、ステップＳ２０８、ステップＳ２１０又はステップＳ２１１で設定された入力ビットレート更新値が、送信するメディアデータに設定可能な最大データレートの値より大きいかを判定する（ステップＳ２１２）。設定された入力ビットレート更新値が最大データレートの値より大きければ（Ｓ２１２：ＹＥＳ）、入力ビットレート決定部３５は、入力ビットレート更新値を最大データレートの値に再設定し（ステップＳ２１３）、図６のステップＳ１０３が行われる。このようにすることにより、符号変換部１２に通知される入力ビットレート更新値が最大データレートの値を超えることがなくなるため、符号変換部１２が最大データレートの値を超える入力ビットレート更新値に従ってメディアデータのビットレート（データレート）を変換することがなく、メディアデータの変換時のエラー発生を回避することができる。一方、設定された入力ビットレート更新値が最大データレートの値以下であれば（Ｓ２１２：ＮＯ）、入力ビットレート更新値を再設定することなく、図６のステップＳ１０３が行われる。
【００９９】
＜入力ビットレートの制御例＞
入力ビットレートの制御の一例として、伝送スループットが低下し、一定時間後に伝送スループットが回復する状況におけるバッファ１７へ入力されるメディアデータの入力ビットレート即ちメディアデータのデータレートの制御について図８及び図９を参照しつつ説明する。
【０１００】
図８（ａ）及び図９（ａ）は、伝送スループット即ちバッファ１７から出力されるメディアデータの出力ビットレート２４の時間的変動を示す図であり、縦軸はレート（ｂｐｓ）を、横軸は時間を表す。図８（ａ）及び図９（ａ）では、時間Ｔ０で伝送路の状態の悪化が発生して伝送スループットが急激に下がり始め、一定時間後の時間Ｔ３で伝送路の状態が回復して伝送スループットが急激に上がり始めている様子が示されている。
【０１０１】
図８（ｂ）及び図９（ｂ）は、送信されるメディアデータのデータレート即ちバッファ１７に入力されるメディアデータの入力ビットレート２３の時間的な変動を示す図であり、縦軸はレート（ｂｐｓ）を、横軸は時間を表す。
【０１０２】
図８（ｃ）及び図９（ｃ）は、バッファ１７のバッファ空き容量２２の時間的な変動を示す図であり、縦軸はバッファ空き容量を、横軸は時間を表す。
【０１０３】
［伝送スループット低下時の入力ビットレートを低下させる制御］
以下、伝送スループット低下時の入力ビットレートを低下させる制御の一例を図８（ａ）〜図８（ｃ）を参照して説明する。
【０１０４】
時間Ｔ０で、伝送路状態が悪化して伝送スループット即ちバッファ１７から出力されるメディアデータの出力ビットレート２４が低下し始め、出力ビットレート２４の値がＴＰＡからＴＰＢまで低下する。この出力ビットレート２４の低下に伴い、バッファ空き容量２２が減少する。そして、時間Ｔ１まではバッファ空き容量２２の値が制御開始閾値ＲＴＨ以上なので、入力ビットレート２３の値はそのままである（図６のステップＳ１０１参照）。このように、バッファ空き容量２２の値が制御開始閾値ＲＴＨ以上の間は、出力ビットレート２４の値が低下しても入力ビットレート２３の値は低下しない。
【０１０５】
バッファ空き容量２２の値は、入力ビットレート２３の値と出力ビットレート２４の値との差分に応じて減少し、時間Ｔ１でバッファ空き容量２２の値が制御開始閾値ＲＴＨを下回ったとする。ＣＰＵ１４は入力ビットレート更新値の決定及び符号変換部１２に対する入力ビットレート更新値の通知を開始し、バッファ空き容量２２の値が制御開始閾値ＲＴＨ以上になるまで、入力ビットレート更新値の決定及び符号変換部１２に対する入力ビットレート更新値の通知を行う（図６参照）。
【０１０６】
ＣＰＵ１４の出力ビットレート検出部３１は出力ビットレート２４の値を検出し、バッファ空き容量検出部３２はバッファ１７のバッファ空き容量２２の値を検出し、減少率／増加率演算部３３は増加率の値及び減少率の値を算出し、入力ビットレート演算部３４は入力ビットレート上限値及び入力ビットレート下限値を算出する（図７のステップＳ２０１〜ステップＳ２０６参照）。ここでは、入力ビットレート決定部３５は、現在の入力ビットレートの値が入力ビットレート上限値より大きいとし、入力ビットレート更新値を入力ビットレート上限値に設定する（図７のステップＳ２０７、Ｓ２０９、Ｓ２１０参照）。ここでは、入力ビットレート決定部３５は、入力ビットレート更新値が最大データレートの値以下であるとし（図７のステップＳ２１２参照）、入力ビットレート更新値を再設定することなく入力ビットレート更新値（ここでは、入力ビットレート上限値に等しい値）を符号変換部１２に対して通知する（図６のステップＳ１０３参照）。これにより、入力ビットレート２３の値は出力ビットレート２４の値より大きな値で徐々に小さくなる。
【０１０７】
例えば、減少率設定値がＲＤＷ、確保時間がＴａであり、時間Ｔ２におけるバッファ１７のバッファ空き容量２２がＲ２、時間Ｔ２における出力ビットレート２４がＴＰＢであるとする。時間Ｔ２における減少率をＴＰＤ２で表わすと、ＴＰＤ２＝（Ｒ２−ＲＤＷ）／Ｔａになる。時間Ｔ２における入力ビットレート上限値は時間Ｔ２における出力ビットレート２４の値（ＴＰＢ）に時間Ｔ２における減算率の値（ＴＰＤ２）を加算した加算値ＴＰＢ＋ＴＰＤ２になる。そして、時間Ｔ２における入力ビットレート更新値をＴＰ２で表わすと、ＴＰ２＝ＴＰＢ＋ＴＰＤ２になる。
【０１０８】
［伝送スループット増大時の入力ビットレートを増大させる制御］
以下、伝送スループット増大時の入力ビットレートを増大させる制御の一例を図９（ａ）〜図９（ｃ）を参照して説明する。
【０１０９】
時間Ｔ３で、伝送路状態の悪化により伝送スループットが低下した状態から伝送路状態の回復に伴い伝送スループットが回復したとする。
【０１１０】
ＣＰＵ１４の出力ビットレート検出部３１は出力ビットレートの値を検出し、バッファ空き容量検出部３２はバッファ１７のバッファ空き容量２２の値を検出し、減少率／増加率演算部３３は増加率の値及び減少率の値を算出し、入力ビットレート演算部３４は入力ビットレート上限値及び入力ビットレート下限値を算出する（図７のステップＳ２０１〜ステップＳ２０６参照）。ここでは、入力ビットレート決定部３５は、現在の入力ビットレートの値が入力ビットレート下限値より小さいとし、入力ビットレート更新値を入力ビットレート下限値に設定する（図７のステップＳ２０７、Ｓ２０９、Ｓ２１１参照）。ここでは、入力ビットレート決定部３５は、入力ビットレート更新値が最大データレートの値以下であるとし（図７のステップＳ２１２参照）、入力ビットレート更新値を再設定することなく入力ビットレート更新値（ここでは、入力ビットレート下限値に等しい値）を符号変換部１２に対して通知する（図６のステップＳ１０３参照）。これにより、入力ビットレート２３の値は出力ビットレート２４の値より小さな値で徐々に大きくなる。
【０１１１】
例えば、増加率設定値がＲＵＰ、確保時間がＴａであり、時間Ｔ４におけるバッファ１７のバッファ空き容量２２がＲ４、時間Ｔ４における出力ビットレート２４がＴＰＡであるとする。時間Ｔ４における増加率をＴＰＵ４で表わすと、ＴＰＵ４＝（ＲＵＰ−Ｒ４）／Ｔａになる。時間Ｔ４における入力ビットレート下限値は時間Ｔ４における出力ビットレート２４の値（ＴＰＡ）から時間Ｔ４における増加率の値（ＴＰＵ４）を減算した減算値ＴＰＡ−ＴＰＵ４になる。そして、時間Ｔ４における入力ビットレート更新値をＴＰ４で表わすと、ＴＰ４＝ＴＰＡ−ＴＰＵ４になる。
【０１１２】
時間Ｔ３で伝送路状態の悪化が回復して伝送スループット即ちバッファ１７から出力されるメディアデータの出力ビットレート２４が増大すると、バッファ空き容量２２が増加し始める。そして、時間Ｔ５でバッファ１７のバッファ空き容量２２の値が制御開始閾値ＲＴＨ以上になると、入力ビットレートの値は固定される（図６のステップＳ１０１参照）。
【０１１３】
＜入力ビットレートの制御における数値例＞
以下、本実施の形態における入力ビットレートの制御における数値例を示す。但し、初期条件として、最大データレートの値を１２Ｍｂｐｓ、バッファ１７の最大蓄積量を５００パケット（以下、「Ｐｋｔ」と記載する。）、制御開始閾値を４５０Ｐｋｔ、増加率設定値を５００Ｐｋｔ、減少率設定値を５０Ｐｋｔ、確保時間を５００ｍｓｅｃとする。但し、１Ｐｋｔは１５００バイトとする。
【０１１４】
［伝送スループット低下時の数値例］
現在の入力ビットレート２３の値を１２Ｍｂｐｓとし、伝送路状態の悪化により伝送スループットが１２Ｍｂｐｓから６Ｍｂｐｓに低下し、バッファ１７のバッファ空き容量２２が制御開始閾値“４５０Ｐｋｔ”を下回ったとする。
【０１１５】
ＣＰＵ１４は、減少率及び入力ビットレート上限値を算出する。
【０１１６】
減少率＝（バッファ空き容量−減少率設定値）／確保時間＝（４５０−５０）×１５００×８／０．５＝９．６Ｍｂｐｓ
入力ビットレート上限値＝出力ビットレート＋減少率＝６＋９．６＝１５．６Ｍｂｐｓ
ＣＰＵ１４は、増加率及び入力ビットレート下限値を算出する。
【０１１７】
増加率＝（増加率設定値−バッファ空き容量）／確保時間＝（５００−４５０）×１５００×８／０．５＝１．２Ｍｂｐｓ
入力ビットレート下限値＝出力ビットレート−増加率＝６−１．２＝４．８Ｍｂｐｓ
ＣＰＵ１４は、現在の入力ビットレート２３の値“１２Ｍｂｐｓ”が入力ビットレート下限値“４．８Ｍｂｐｓ”以上入力ビットレート上限値“１５．６Ｍｂｐｓ”以下であることから、入力ビットレート更新値を現在の入力ビットレート２３の値“１２Ｍｂｐｓ”とする。さらに、ＣＰＵ１４は、入力ビットレート更新値“１２Ｍｂｐｓ”が最大データレートの値“１２Ｍｂｐｓ”より大きくないので、入力ビットレート更新値を１２Ｍｂｐｓのままにする。
【０１１８】
現在の入力ビットレート２３の値を１２Ｍｂｐｓとし、伝送路状態の悪化により伝送スループットが６Ｍｂｐｓになり、バッファ１７のバッファ空き容量２２が２５０Ｐｋｔになったとする。
【０１１９】
ＣＰＵ１４は、減少率及び入力ビットレート上限値を算出する。
【０１２０】
減少率＝（バッファ空き容量−減少率設定値）／確保時間＝（２５０−５０）×１５００×８／０．５＝４．８Ｍｂｐｓ
入力ビットレート上限値＝出力ビットレート＋減少率＝６＋４．８＝１０．８Ｍｂｐｓ
ＣＰＵ１４は、増加率及び入力ビットレート下限値を算出する。
【０１２１】
増加率＝（増加率設定値−バッファ空き容量）／確保時間＝（５００−２５０）×１５００×８／０．５＝６Ｍｂｐｓ
入力ビットレート下限値＝出力ビットレート−増加率＝６−６＝０Ｍｂｐｓ
ＣＰＵ１４は、現在の入力ビットレート２３の値“１２Ｍｂｐｓ”が入力ビットレート上限値“１０．８Ｍｂｐｓ”より大きいことから、入力ビットレート更新値を入力ビットレート上限値“１０．８Ｍｂｐｓ”とする。さらに、ＣＰＵ１４は、入力ビットレート更新値“１０．８Ｍｂｐｓ”が最大データレートの値“１２Ｍｂｐｓ”より大きくないので、入力ビットレート更新値を１０．８Ｍｂｐｓのままにする。
【０１２２】
［伝送スループット回復時の数値例］
現在の入力ビットレート２３の値を３Ｍｂｐｓとし、伝送路状態の回復により伝送スループットが３Ｍｂｐｓから１２Ｍｂｐｓに増大し、バッファ１７のバッファ空き容量２２が８０Ｐｋｔを下回ったとする。
【０１２３】
ＣＰＵ１４は、減少率及び入力ビットレート上限値を算出する。
【０１２４】
減少率＝（バッファ空き容量−減少率設定値）／確保時間＝（８０−５０）×１５００×８／０．５＝０．７２Ｍｂｐｓ
入力ビットレート上限値＝出力ビットレート＋減少率＝１２＋０．７２＝１２．７２Ｍｂｐｓ
ＣＰＵ１４は、増加率及び入力ビットレート下限値を算出する。
【０１２５】
増加率＝（増加率設定値−バッファ空き容量）／確保時間＝（５００−８０）×１５００×８／０．５＝１０．０８Ｍｂｐｓ
入力ビットレート下限値＝出力ビットレート−増加率＝１２−１０．０８＝１．９２Ｍｂｐｓ
ＣＰＵ１４は、現在の入力ビットレート２３の値“３Ｍｂｐｓ”が入力ビットレート下限値“１．９２Ｍｂｐｓ”以上入力ビットレート上限値“１２．７２Ｍｂｐｓ”以下であることから、入力ビットレート更新値を現在の入力ビットレート２３の値“３Ｍｂｐｓ”とする。さらに、ＣＰＵ１４は、入力ビットレート更新値“３Ｍｂｐｓ”が最大データレートの値“１２Ｍｂｐｓ”より大きくないので、入力ビットレート更新値を３Ｍｂｐｓのままにする。
【０１２６】
現在の入力ビットレート２３の値を３Ｍｂｐｓとし、伝送路状態の回復により伝送スループットが１２Ｍｂｐｓになり、バッファ１７のバッファ空き容量２２が１５０Ｐｋｔになったとする。
【０１２７】
ＣＰＵ１４は、減少率及び入力ビットレート上限値を算出する。
【０１２８】
減少率＝（バッファ空き容量−減少率設定値）／確保時間＝（１５０−５０）×１５００×８／０．５＝２．４Ｍｂｐｓ
入力ビットレート上限値＝出力ビットレート＋減少率＝１２＋２．４＝１４．４Ｍｂｐｓ
ＣＰＵ１４は、増加率及び入力ビットレート下限値を算出する。
【０１２９】
増加率＝（増加率設定値−バッファ空き容量）／確保時間＝（５００−１５０）×１５００×８／０．５＝８．４Ｍｂｐｓ
入力ビットレート下限値＝出力ビットレート−増加率＝１２−８．４＝３．６Ｍｂｐｓ
ＣＰＵ１４は、現在の入力ビットレート２３の値“３Ｍｂｐｓ”が入力ビットレート下限値“３．６Ｍｂｐｓ”より小さいことから、入力ビットレート更新値を入力ビットレート下限値“３．６Ｍｂｐｓ”とする。さらに、ＣＰＵ１４は、入力ビットレート更新値“３．６Ｍｂｐｓ”が最大データレートの値“１２Ｍｂｐｓ”より大きくないので、入力ビットレート更新値を３．６Ｍｂｐｓのままにする。
【０１３０】
＜入力ビットレートの低下制御の基本的な考え方＞
以下、伝送路スループットの低下時の入力ビットレートを低下させる制御の基本的な考え方の概略について記載する。
【０１３１】
伝送路の状態が悪化して伝送スループット即ちバッファ１７から出力されるメディアデータの出力ビットレート２４が低下すると、バッファ１７のオーバーフローを防ぐために、メディアデータのデータレート即ちバッファ１７に入力されるメディアデータの入力ビットレート２３が低下するように入力ビットレート２３の制御が行われる。
【０１３２】
本実施の形態では、従来技術のように入力ビットレート２３の値が出力ビットレート２４の値になるように入力ビットレート２３を低下させるのではなくて、バッファ１７のバッファ空き容量２２を利用して入力ビットレート２３の値が出力ビットレート２４の値より大きくなるように入力ビットレート２３の値を低下させる。具体的には、バッファ１７のバッファ空き容量２２の値が上記の確保時間後に減少率設定値になるような減少率の値を算出し、現在の入力ビットレート２３の値が減少率の値と出力ビットレート２４の値との加算値（入力ビットレート上限値）より大きければ入力ビットレート２３の値が入力ビットレート上限値になるように入力ビットレート２３の制御を行う。なお、バッファ１７のバッファ空き容量２２の値は入力ビットレート２３の値と出力ビットレート２４の値との差分に応じて増減することから、入力ビットレート２３の値が入力ビットレート上限値になるように制御した場合、伝送スループットが変化しない場合であってもバッファ１７のバッファ空き容量２２は減少率に応じて減少する。
【０１３３】
上記の伝送スループットの低下時の入力ビットレートを低下させる制御方法によれば、バッファ１７のバッファ空き容量２２の値が大きい場合は、出力ビットレート２４の値に加算する減算率の値が大きくなり、入力ビットレート上限値が大きくなる。このため、一時的に伝送スループットが低下した場合に入力ビットレート２３の値が伝送スループット即ち出力ビットレート２４の値になるように入力ビットレートを下げる場合と比較して、入力ビットレートの下げ幅が小さくなり、入力ビットレートの時間的な変動を小さくすることができる。これにより、例えば映像データの配信中に一時的に伝送スループットが低下した場合に、受信側で再生される映像の解像度やフレームレートの下げ幅を小さくすることができ、視聴者は安定した品質の映像を視聴することができる。
【０１３４】
また、バッファ１７のバッファ空き容量２２の値が小さい場合、出力ビットレートの値に加算する減少率の値が小さくなるが、バッファ１７のバッファ空き容量２２の値が減少率設定値以下にならない範囲で入力ビットレートの値と出力ビットレートの値との差を小さくする。このため、伝送スループットの低下が一定期間継続することによってバッファ１７のバッファ空き容量２２の値が小さくなっても、バッファ１７のバッファ空き容量２２の値は減少率設定値までにしか小さくならずバッファ１７のオーバーフローは発生しない。これにより、例えば映像データの送信中に伝送スループットの低下が一定期間継続しても、バッファ１７のオーバーフローによりパケットが受信側まで到達せずに失われることを防止し、視聴者は途切れることがない映像を視聴できる。
【０１３５】
更に、バッファ１７のバッファ空き容量２２の値が確保時間後に減少率設定値になるようにした場合のバッファ空き容量２２の減少率はバッファ１７のバッファ空き容量２２の値が小さくなるのに伴い徐々に小さくなるので、入力ビットレート２３の値を緩やかに小さくすることができる。これにより、例えば映像データの送信中に伝送スループットが低下した場合に、受信側で再生される映像の解像度やフレームレーを緩やかに下げることができ、視聴者が感じる違和感を少なくすることができる。
【０１３６】
更に、減少率設定値をゼロとすることにより、バッファ１７のバッファ空き容量２２の値が確保時間後に減少率設定値になるようにした場合のバッファ空き容量２２の減少率の値を最大にすることができる。このため、減少率設定値をゼロよりも大きい値にする場合と比べて入力ビットレートの値の下げ幅を最も小さくすることができる。
【０１３７】
＜入力ビットレートの増大制御の基本的な考え方＞
以下、伝送スループットの増大時の入力ビットレートを増大させる制御の基本的な考え方の概略について記載する。
【０１３８】
伝送路の状態の悪化が回復して伝送スループット即ちバッファ１７から出力されるメディアデータの出力ビットレート２４が大きくなると、例えば映像データの配信中であれば高画質な映像を視聴者に提供するために、メディアデータのデータレート即ちバッファ１７に入力されるメディアデータの入力ビットレート２３が増大するように入力ビットレート２３の制御が行われる。
【０１３９】
本実施の形態では、従来技術のように入力ビットレート２３の値が出力ビットレート２４の値になるように入力ビットレート２３を増大させるのではなくて、バッファ１７のバッファ空き容量２２を利用して入力ビットレート２３の値が出力ビットレート２４の値より小さくなるように入力ビットレート２３の値を増大させる。具体的には、バッファ１７のバッファ空き容量２２の値が上記の確保時間後に増加率設定値になるような増加率の値を算出し、現在の入力ビットレート２３の値が出力ビットレート２４の値から増加率の値を減算した減算値（入力ビットレート下限値）より小さければ入力ビットレート２３の値が入力ビットレート下限値になるように入力ビットレート２３の制御を行う。なお、バッファ１７のバッファ空き容量２２の値は入力ビットレート２３の値と出力ビットレート２４の値との差分に応じて増減することから、入力ビットレート２３の値が入力ビットレート下限値になるように制御した場合、伝送スループットが変化しない場合であってもバッファ１７のバッファ空き容量２２は増加率に応じて増加する。
【０１４０】
上記の伝送スループットの増大時の入力ビットレートを増大させる制御方法によれば、バッファ１７のバッファ空き容量２２の値が確保時間後に減少率設定値より大きい増加率設定値になるようにした場合のバッファ空き容量２２の増加率はバッファ１７のバッファ空き容量２２の値が大きくなるのに伴い徐々に小さくなる。このため、入力ビットレート２３の値を緩やかに大きくすることができる。これにより、例えば映像データの送信中に伝送スループットの低下が回復した場合に、受信側で再生される映像の解像度やフレームレートを緩やかに上げることができ、視聴者が感じる違和感を少なくすることができる。
【０１４１】
また、増加率設定値をバッファ１７の最大蓄積量とすることにより、伝送スループットが回復した状態が継続した場合のバッファ１７のバッファ空き容量２２の値を最大にすることができるので、バッファ１７の容量を最も有効に利用することができる。
【０１４２】
＜入力ビットレート更新値の決定の基本的な考え方＞
以下、入力ビットレート更新値の決定の基本的な考え方の概略について記載する。
【０１４３】
無線の伝送路や電灯線の伝送路を用いて通信を行う場合、平均伝送スループットはほぼ一定で安定している状態でも、各時点での伝送スループットは細かく変動している。このため、出力ビットレート２４の値が上昇すると常に入力ビットレート２３の値を増大させ、出力ビットレート２４の値が低下すると常に入力ビットレート２３の値を低下させることにすると、入力ビットレート２３を低下させる制御と入力ビットレート２４を増大させる制御との切り替えが頻繁に発生する。
【０１４４】
仮に、入力ビットレート２３の値が常に出力ビットレート２４の値からバッファ空き容量２４の増加率の値を減算した値となるように入力ビットレート２３を増大させる制御状態から、入力ビットレート２３の値が常に出力ビットレート２４の値にバッファ空き容量２４の減少率の値を加算した値となるように入力ビットレート２３を低下させる制御状態に切り替わった場合、入力ビットレート２３の値は、出力ビットレート２４の値からバッファ空き容量２２の増加率の値を減算した値から、出力ビットレート２４の値にバッファ空き容量２２の減少率の値を加算した値に変化する。つまり、入力ビットレート２３の値は、増加率の値と減少率の値とを加算した値分増加し、急激に増加することになる。このため、伝送スループットが低下したタイミングにおいて、クライアント側のＡＶ機器３で再生される映像の解像度やフレームレートが急激に高くなってしまう。
【０１４５】
これを回避するために、本実施の形態では、伝送スループットが増大して入力ビットレート２３を増大させる制御状態から、伝送スループットが低下して入力ビットレートを低下させる制御状態に切り替わった場合、出力ビットレート２４の値にバッファ１７のバッファ空き容量２２の減少率の値を加算した加算値（入力ビットレート上限値）が現在の入力ビットレート２３の値よりも大きい間は現在の入力ビットレート２３の値を維持するようにしている。
【０１４６】
つまり、現在の入力ビットレート２３の値が入力ビットレート上限値より大きい場合には入力ビットレート更新値を入力ビットレート上限値とし、現在の入力ビットレート２３の値が入力ビットレート上限値以下であれば入力ビットレート更新値を現在の入力ビットレートの値とする。
【０１４７】
これにより、伝送スループットが回復した状態から再度低下した場合に、入力ビットレート２３の値が急激に上がることを防止できるため、入力ビットレート２３を安定させることができる。従って、伝送スループットが回復した状態から再度低下した場合に、例えばクライアント側のＡＶ機器３で再生される映像の解像度やフレームレートが急激に上がるということがなくなり、視聴者は安定した品質の映像を視聴することができる。
【０１４８】
逆に、入力ビットレート２３の値が常に出力ビットレート２４の値にバッファ空き容量２４の減少率の値を加算した値となるように入力ビットレート２３を低下させる制御状態から、入力ビットレート２３の値が常に出力ビットレート２４の値からバッファ空き容量２４の増加率の値を減算した値となるように入力ビットレート２３を増大させる制御状態に切り替わった場合、入力ビットレート２３の値は、出力ビットレート２４の値にバッファ空き容量２２の減少率の値を加算した値から、出力ビットレート２４の値からバッファ空き容量２２の増加率の値を減算した値に変化する。つまり、入力ビットレート２３の値は、増加率の値と減少率の値とを加算した値分減少し、急激に減少することになる。このため、伝送スループットが増大したタイミングにおいて、例えばクライアント側のＡＶ機器３で再生される映像の解像度やフレームレートが急激に下がってしまう。
【０１４９】
これを回避するために、本実施の形態では、伝送スループットが低下して入力ビットレート２３を低下させる制御状態から、伝送スループットが増大して入力ビットレートを増大させる制御状態に切り替わった場合、出力ビットレート２４の値からバッファ１７のバッファ空き容量２２の増加率の値を減算した減算値（入力ビットレート下限値）が現在の入力ビットレート２２の値よりも小さい間は現在の入力ビットレート２３の値を維持するようにしている。
【０１５０】
つまり、現在の入力ビットレート２３の値が入力ビットレート下限値より小さい場合には入力ビットレート更新値を入力ビットレート下限値とし、現在の入力ビットレート２３の値が入力ビットレート下限値以上であれば入力ビットレート更新値を現在の入力ビットレートの値とする。
【０１５１】
これにより、伝送スループットが低下した状態から回復した場合に、入力ビットレート２３の値が急激に下がることを防止できるため、入力ビットレートを安定させることができる。従って、伝送スループットが低下した状態から回復した場合に、例えばクライアント側のＡＶ機器３で再生される映像の解像度やフレームレートが急激に下がるということがなくなり、視聴者は安定した品質の映像を視聴することができる。
【０１５２】
＜従来技術との比較＞
本実施の形態の入力ビットレートの制御手法と従来技術の入力ビットレートの制御手法とを図１０及び図１１を参照しつつ比較する。但し、図１０及び図１１の各図において、縦軸はレート（ｂｐｓ）を、横軸は時間を表す。
【０１５３】
図１０（ａ）及び図１１（ａ）は、従来の入力ビットレートの制御手法による、伝送スループット即ちバッファ１７から出力されるメディアデータの出力ビットレート２４の時間的変動と、送信されるデータのデータレート即ちバッファ１７に入力されるメディアデータの入力ビットレート２３の時間的変動を示す図である。
【０１５４】
図１０（ｂ）及び図１１（ｂ）は、本実施の形態の入力ビットレートの制御手法による、伝送スループット即ちバッファ１７から出力されるメディアデータの出力ビットレート２４の時間的変動と、送信されるデータのデータレート即ちバッファ１７に入力されるメディアデータの入力ビットレート２３の時間的変動を示す図である。
【０１５５】
［伝送スループットが瞬間的に低下する場合における両者の比較］
以下、伝送スループットが瞬間的に低下する場合における本実施の形態の入力ビットレートの制御手法と従来技術の入力ビットレートの制御手法とを図１０（ａ），（ｂ）を参照して比較する。
【０１５６】
従来技術の入力ビットレートの制御手法では、図１０（ａ）に示すように、伝送スループットの瞬間的な低下に追従して入力ビットレート２３の値が低下する。なお、バッファ１７がオーバーフローするのを防ぐために、入力ビットレートの制御を行う時間間隔を短く設定しているものとする。
【０１５７】
これに対して、本実施の形態の入力ビットレートの制御手法では、図１０（ｂ）に示すように、入力ビットレート２３を更新する入力ビットレート更新値を、伝送スループット即ち出力ビットレート２４の値に減少率の値を加算した値（入力ビットレート上限値）としている。このため、本実施の形態の入力ビットレートの制御手法では、従来技術の入力ビットレートの制御手法と比較して、入力ビットレート２４の下げ幅が小さくなり、例えば高画質な映像を視聴者に提供することが可能である。
【０１５８】
また、本実施の形態の入力ビットレートの制御手法では、入力ビットレート２３を更新する入力ビットレート更新値を、出力ビットレート２４の値に減少率の値を加算した値（入力ビットレート上限値）や出力ビットレート２４の値から増加率の値を減算した値（入力ビットレート下限値）などとしている。このため、本実施の形態の入力ビットレートの制御手法では、従来技術の入力ビットレートの制御手法と比較して、入力ビットレート２３を低下させる場合及び増大させる場合とも、入力ビットレート２３が変化する割合が緩やかであり、例えば視聴者に与える視覚的な違和感を小さくすることが可能である。
【０１５９】
［伝送スループットの低下幅が大きく、伝送スループットが低下する期間が長い場合における両者の比較］
以下、伝送スループットが低下する幅が大きく、且つ、伝送スループットが低下する期間が長い場合における本実施の形態の入力ビットレートの制御手法と従来技術の入力ビットレートの制御手法とを図１１（ａ），（ｂ）を参照して比較する。
【０１６０】
従来技術の入力ビットレートの制御手法では、図１１（ａ）に示すように、伝送スループットの低下に追従して入力ビットレート２３の値が低下する。なお、バッファ１７がオーバーフローするのを防ぐために、入力ビットレートの制御を行う時間間隔を短く設定しているものとする。
【０１６１】
これに対して、本実施の形態の入力ビットレートの制御手法では、図１１（ｂ）に示すように、従来技術の入力ビットレートの制御手法と比較して、入力ビットレートを緩やかに下げて、上げているために例えば視聴者に与える視覚的な違和感を小さくすることが可能である。例えば、入力ビットレート２３を下げるのに要する時間を比較すると、従来技術の入力ビットレートの制御手法における時間ＴＡ（図１１（ａ）参照）に対して、本実施の形態の入力ビットレートの制御手法における時間ＴＢ（図１１（ｂ）参照）は長い。このように、本実施の形態の入力ビットレートの制御手法は従来技術の入力ビットレートの制御手法に比べて時間をかけて緩やかに画質を低下させているために、例えば視聴者への視覚的な違和感を低下させることが可能である。
【０１６２】
≪第２の実施の形態≫
以下、本発明の第２の実施の形態について図面を参照しつつ説明する。
【０１６３】
第１の実施の形態では、サーバ側のＡＶ機器２が入力ビットレート更新値を算出し、バッファ１７に入力されるメディアデータのビットレート（データレート）を算出した入力ビットレート更新値に従って変換する。これに対して、第２の実施の形態では、サーバ側のＡＶ機器２に接続された中継装置が入力ビットレート更新値を算出し、バッファ１７に入力されるメディアデータのビットレート（データレート）を算出した入力ビットレート更新値に従って変換する。
【０１６４】
なお、本実施の形態において、第１の実施の形態の構成要素と実質的に同じ構成要素には同じ符号を付し、第１の実施の形態の説明が適用できるため本実施の形態ではその説明を省略し或いは概略を記載するに留める。
【０１６５】
＜ネットワーク構成及び動作＞
図１２は本実施の形態のネットワーク構成図であり、ネットワーク１００にはＡＶ機器１０１，１０２及び中継装置１０３，１０４が含まれている。
【０１６６】
本実施の形態では、ＡＶ機器１０１は、メディアデータを送信するサーバ側のＡＶ機器であり、第１の実施の形態のサーバ側のＡＶ機器２と異なり、入力ビットレートの制御を行わない。ＡＶ機器１０２は、他の機器から送信されたメディアデータを受信し、受信したメディアデータを再生、表示するクライアント側のＡＶ機器である。ＡＶ機器１０１は、例えば、通信機能を備えた映像コンテンツデータを記憶可能なＨＤＤレコーダ機器やＢｌｕ−ｒａｙ  Ｄｉｓｋ（登録商標）レコーダ機器などである。ＡＶ機器１０２は、通信機能を備えたテレビなどのディスプレイ装置などである。
【０１６７】
中継装置１０３及び中継装置１０４は、通信を中継する装置であり、例えば、ゲートウェイ、ルータ、ブリッジ、スイッチングハブなでである。中継装置１０３は、入力ビットレートの制御を行う。ここでは、中継装置１０３及び中継装置１０４は、有線−無線ブリッジとして説明する。
【０１６８】
ネットワーク１００では、ＡＶ機器１０１と中継装置１０３との間の通信及びＡＶ機器１０２と中継装置１０４との間の通信は夫々有線通信で実現されており、中継装置１０３と中継装置１０４との間の通信は無線通信で実現されている。
【０１６９】
ＡＶ機器１０１は例えば蓄積している映像コンテンツデータをストリーミング配信する。ＡＶ機器１０２はストリーミング配信されている映像コンテンツデータを中継装置１０３及び中継装置１０４を介して受信し、受信した映像コンテンツデータを再生、表示する。これによって、視聴者はＡＶ機器１０１に蓄積されている映像コンテンツデータの映像をＡＶ機器１０２で視聴することができる。
【０１７０】
以下、サーバ側のＡＶ機器１０１に接続された中継装置１０３の詳細を図面を参照しつつ説明する。なお、ＡＶ機器１０１，１０２は一般的なＡＶ機器が利用でき、クライアント側に接続された中継装置１０４は一般的な中継装置が利用でき、詳細な説明を省略する。
【０１７１】
＜サーバ側のＡＶ機器に接続された中継装置の装置構成＞
図１３は、図１２のサーバ側のＡＶ機器１０１に接続された中継装置１０３の装置構成図であり、中継装置１０３は、符号変換部１２と、入力ビットレート制御プログラム１６を格納したメモリ１３と、ＣＰＵ１４と、バッファ１７を備えた通信Ｉ／Ｆ部１５と、通信Ｉ／Ｆ部１１１とを備える。但し、中継装置１０３は、通信Ｉ／Ｆ部１５によって中継装置１０４に接続され、通信Ｉ／Ｆ部１１１によってＡＶ機器１０１に接続されている。
【０１７２】
通信Ｉ／Ｆ部１１１は、ネットワークを介してデータを送受信する機能、例えば、データ信号の変復調やメディアアクセス制御を行う機能を有し、ここでは、有線通信の通信Ｉ／Ｆ部とする。
【０１７３】
例えば、通信Ｉ／Ｆ部１１１はＡＶ機器１０１に記録されたメディアデータをＡＶ機器１０１から受信する。ＣＰＵ１４はメモリ１３に記憶されている入力ビットレート制御プログラム１６を実行して入力ビットレート更新値を算出し（図６、図７参照）、符号変換部１２は算出された入力ビットレート更新値に従って受信したメディアデータのビットレート（データレート）を変換する。そして、通信Ｉ／Ｆ部１５は符号変換部１２による変換により得られたメディアデータをバッファ１７に一時的に蓄積しながらネットワークを介して中継装置１０４へ送信する。中継装置１０４は、受信したメディアデータをクライアント側のＡＶ機器１０２へ送出する。
【０１７４】
本実施の形態によれば、第１の実施の形態と実質的に同じ効果が得られる。
【０１７５】
≪第３の実施の形態≫
以下、本発明の第３の実施の形態について図面を参照しつつ説明する。
【０１７６】
第１の実施の形態では、サーバ側のＡＶ機器２が入力ビットレート更新値を算出し、バッファ１７に入力されるメディアデータのビットレート（データレート）を算出した入力ビットレート更新値に従って変換する。これに対して、第３の実施の形態では、クライアント側のＡＶ機器がサーバ側のＡＶ機器によって行われるメディアデータのビットレート（データレート）の変換に用いられるデータレート更新値を算出し、算出したデータレート更新値をサーバ側のＡＶ機器へフィードバックし、サーバ側のＡＶ機器はクライアント側のＡＶ機器からフィードバックされたデータレート更新値に従ってメディアデータのビットレート（データレート）を変換する。
【０１７７】
なお、本実施の形態において、第１の実施の形態の構成要素と実質的に同じ構成要素には同じ符号を付し、第１の実施の形態の説明が適用できるため本実施の形態ではその説明を省略し或いは概略を記載するに留める。
【０１７８】
＜ネットワーク構成及び動作＞
図１４は本実施の形態のネットワーク構成図であり、ネットワーク５００にはＡＶ機器５０１，５０２が含まれている。
【０１７９】
本実施の形態では、ＡＶ機器５０１は、メディアデータを記憶保持し、メディアデータを送信するサーバ側のＡＶ機器であり、ＡＶ機器５０２は、他の機器から送信されたメディアデータを受信し、受信したメディアデータを再生、表示するクライアント側のＡＶ機器である。ＡＶ機器５０１は、例えば、通信機能を備えた映像コンテンツデータを記憶可能なＨＤＤレコーダ機器やＢｌｕ−ｒａｙ  Ｄｉｓｋ（登録商標）レコーダ機器などである。ＡＶ機器３は、通信機能を備えたテレビなどのディスプレイ装置などである。通信機能として、例えば、第１の実施の形態で列挙したものがあり、図１４では通信機能を無線通信で表している。
【０１８０】
ＡＶ機器５０１は例えば蓄積している映像コンテンツデータをストリーミング配信し、ＡＶ機器５０２はストリーミング配信されている映像コンテンツデータを受信し、受信した映像コンテンツデータを再生、表示する。これによって、視聴者はＡＶ機器５０１に蓄積されている映像コンテンツデータの映像をＡＶ機器５０２で視聴することができる。
【０１８１】
以下、サーバ側のＡＶ機器５０１及びクライアント側のＡＶ機器５０２の詳細を図面を参照しつつ説明する。
【０１８２】
＜ＡＶ機器（サーバ側）の装置構成＞
図１５は図１４のサーバ側のＡＶ機器５０１の装置構成図であり、ＡＶ機器５０１は、メディアデータ記憶部１１と、符号変換部１２と、メモリ５１１と、ＣＰＵ５１２と、通信Ｉ／Ｆ部５１３とを備える。
【０１８３】
メモリ５１１は、例えば、ＲＯＭやＲＡＭなどの半導体メモリで構築される。メモリ５１１は、各種制御プログラムや各種アプリケーションなどのプログラムを記憶保持しており、例えば、クライアント側のＡＶ機器５０２から送信されたデータレート情報を解析してそれに含まれるデータレート更新値を符号変換部１２に対して通知するためのプログラム（以下、「データレート変更プログラム」と言う。）５１４を記憶保持している。また、メモリ５１１は、ＣＰＵ５１２が動作する際に使用する領域を有する。
【０１８４】
ＣＰＵ５１２は、メモリ５１１に記憶保持されているプログラムを読み出し、読み出したプログラムを実行することによって、ＡＶ機器５０１全体の各種制御や各種演算を行う機能を有する。例えば、ＣＰＵ５１２は、データレート変更プログラム５１４をメモリ５１１から読み出して、読み出したデータレート変更プログラム５１４を実行する。なお、この処理については、図１６から図１７を参照して後述する。
【０１８５】
通信Ｉ／Ｆ部５１３は、ネットワークを介してデータを送受信する機能、例えば、データ信号の変復調やメディアアクセス制御を行う機能を有し、ここでは、無線通信の通信Ｉ／Ｆ部とする。なお、通信Ｉ／Ｆ部５１３は不図示の送信用のバッファを有している。
【０１８６】
＜ＣＰＵの機能構成＞
図１６は図１５のＣＰＵ５１２の機能構成図である。但し、図１６には、ＣＰＵ５１２の機能構成の理解を容易にするため、ＡＶ機器５０１の他の構成要素も図示している。
【０１８７】
ＣＰＵ５１２は、メモリ５１１からそれに記憶保持されているデータレート変更プログラム５１４を読み出し、読み出したデータレート変更プログラム５１４を実行する。これによって、ＣＰＵ５１２は、レート情報受信解析部５３１として機能する。
【０１８８】
レート情報受信解析部５３１は、クライアント側のＡＶ機器５０２から送信されたデータレート情報を通信Ｉ／Ｆ部５１３を介して受信し、受信したデータレート情報を解析し、データレート更新値をそれに含まれるデータレート更新値に設定する。レート情報受信解析部５３１は、データレート更新値が送信すべきメディアデータに設定可能な最大データレートの値以下の場合にはデータレート更新値を変更することなくデータレート更新値を符号変換部１２に通知する。一方、レート情報受信解析部５３１は、データレート更新値が送信すべきメディアデータに設定可能な最大データレートの値より大きい場合にはデータレート更新値を最大データレートの値に再設定し、再設定したデータレート更新値を符号変換部１２に通知する。
【０１８９】
なお、符号変換部１２は、メディアデータ記憶部１１に記憶されているメディアデータのビットレート（データレート）をレート情報受信解析部５３１から通知されたデータレート更新値に従って変換し、変換により得られたメディアデータを通信Ｉ／Ｆ部５１３内の不図示のバッファへ出力する。
【０１９０】
＜ＣＰＵの動作＞
図１７は図１５のＣＰＵ５１２が行うデータレート変更処理の流れを示すフローチャートである。但し、ＣＰＵ５１２はメモリ５１１からそれに記憶されているデータレート変更プログラム５１４を読み出し、読み出したデータレート変更プログラム５１４を実行することによって、図１７のフローチャートの処理を実行する。
【０１９１】
ＣＰＵ５１２のレート情報受信解析部５３１は、クライアント側のＡＶ機器５０２から通信Ｉ／Ｆ部５１３を介してデータレート情報を受信したかを判定する（ステップＳ３０１）。レート情報受信解析部５３１は、データレート情報を受信していないと判定している間（Ｓ３０１：ＮＯ）、ステップＳ３０１の処理を繰り返す。レート情報受信解析部５３１は、データレート情報を受信したと判定すると（Ｓ３０１：ＹＥＳ）、受信したデータレート情報を解析し、データレート更新値をそれに含まれるデータレート更新値に設定する（ステップＳ３０２）。
【０１９２】
レート情報受信解析部５３１は、ステップＳ３０２で設定したデータレート更新値（受信したデータレート情報に含まれるデータレート更新値）が、送信するメディアデータに設定可能な最大データレートの値より大きいか否かを判定する（ステップＳ３０３）。ステップＳ３０２で設定されたデータレート更新値が最大データレートの値より大きければ（Ｓ３０３：ＹＥＳ）、レート情報受信解析部５３１は、データレート更新値を最大データレートの値に再設定し（ステップＳ３０４）、ステップＳ３０４で再設定したデータレート更新値を符号変換部１２に対して通知する（ステップＳ３０５）。このようにすることにより、符号変換部１２に通知されるデータレート更新値が最大データレートの値を超えることがなくなるため、符号変換部１２が最大データレートの値を超えるデータレート更新値に従ってメディアデータのビットレート（データレート）を変換することがなく、メディアデータの変換時のエラー発生を回避することができる。一方、ステップＳ３０２で設定されたデータレート更新値が最大データレートの値より大きくなければ（Ｓ３０３：ＹＥＳ）、レート情報受信解析部５３１は、ステップＳ３０２で設定したデータレート更新値を符号変換部１２に対して通知する（ステップＳ３０５）。なお、ステップＳ３０５が行われた後、ステップＳ３０１の処理に戻る。
【０１９３】
符号変換部１２は、メディアデータ記憶部１１に記憶されているメディアデータのビットレート（データレート）をレート情報受信解析部５３１から通知を受けたデータレート更新値に従って変換し、変換により得られたメディアデータを通信Ｉ／Ｆ部５１３内の不図示のバッファへ出力する。通信Ｉ／Ｆ部５１３は不図示のバッファに蓄積されたメディアデータをネットワークを介して例えばクライアント側のＡＶ機器５０２へ送信する。
【０１９４】
＜ＡＶ機器（クライアント側）の装置構成＞
図１８は図１４のクライアント側のＡＶ機器５０２の装置構成図であり、ＡＶ機器５０２は、メモリ５５１と、ＣＰＵ５５２と、通信Ｉ／Ｆ部５５３とを備える。
【０１９５】
メモリ５５１は、例えば、ＲＯＭやＲＡＭなどの半導体メモリで構築される。メモリ５５１は、各種制御プログラムや各種アプリケーションプログラムなどのプログラムを記憶保持しており、例えば、サーバ側のＡＶ機器５０１の符号変換部１２（図１５参照）がメディアデータのビットレート（データレート）の変換に用いるデータレート更新値を決定し、決定したデータレート更新値を例えばサーバ側のＡＶ機器５０１に対して通知するためのプログラム（以下、「データレート演算プログラム」と言う。）５５４を記憶保持している。また、メモリ５５１は、通信Ｉ／Ｆ部５５３によって受信されたメディアデータを一時的に記憶保持するバッファ５５５やＣＰＵ５５２が動作する際に使用する領域を有する。なお、バッファ５５５については図１９を参照して後述する。
【０１９６】
ＣＰＵ５５２は、メモリ５５１に記憶保持されているプログラムを読み出し、読み出したプログラムを実行することによって、ＡＶ機器５０２全体の各種制御や各種演算を行う機能を有する。例えば、ＣＰＵ５５２は、データレート演算プログラム５５４をメモリ５５１から読み出して、読み出したデータレート演算プログラム５５４を実行する。なお、この処理については、図２０から図２３を参照して後述する。
【０１９７】
通信Ｉ／Ｆ部５５３は、ネットワークを介してデータを送受信する機能、例えば、データ信号の変復調やメディアアクセス制御を行う機能を有し、ここでは、無線通信の通信Ｉ／Ｆ部とする。
【０１９８】
＜バッファの構成＞
図１９は図１８のバッファ５５５の一構成例を説明するための図である。
【０１９９】
蓄積量５６１はバッファ５５５に蓄積されているデータのデータ量を表し、バッファ空き容量５６２はバッファ５５５に蓄積可能な残りのデータのデータ量を表す。データ量の単位は蓄積量５６１及びバッファ空き容量５６２ともビット或いはバイト等で表すことができ、本実施の形態ではビットを用いて説明する。
【０２００】
入力ビットレート５６３は、バッファ５５５に入力されるメディアデータの単位時間当たりのデータ量を表し、出力ビットレート５６４はバッファ５５５から出力されるメディアデータの単位時間当たりのデータ量を表す。本実施の形態では、入力ビットレート５６３及び出力ビットレート５６４の単位としてｂｐｓ（bit per second）を用いて説明する。ここでは、入力ビットレート５６３は通信Ｉ／Ｆ部５５３がメディアデータを受信する際の伝送スループットと等しく、出力ビットレート５６４はサーバ側のＡＶ機器５０２の符号変換部１２（図１５参照）から出力されるメディアデータのビットレート（データレート）と等しいとする。
【０２０１】
バッファ５５５は、ＦＩＦＯの動作原理に従い、入力されたメディアデータを入力された順に出力する。このとき、入力ビットレート５６３と出力ビットレート５６４とが等しい場合、バッファ５５５の蓄積量５６１は変化しない。入力ビットレート５６３と出力ビットレート５６４とが等しくない場合、入力ビットレート５６３と出力ビットレート５６４との差分に応じて、バッファ５５５の蓄積量５６１は増減する。つまり、入力ビットレート５６３が出力ビットレート５６４より大きい場合にはバッファ５５５の蓄積量５６１は増加し、入力ビットレート５６３が出力ビットレート５６４より小さい場合にはバッファ５５５の蓄積量５６１は減少する。
【０２０２】
例えば、入力ビットレート５６３が１２Ｍｂｐｓで出力ビットレート５６４が８Ｍｂｐｓの場合、４Ｍｂｐｓの速度でバッファ５５５の蓄積量５６１は増加し、言い換えると、４Ｍｂｐｓの速度でバッファ５５５のバッファ空き容量５６２は減少する。一方、入力ビットレート５６３が６Ｍｂｐｓで出力ビットレート５６４が９Ｍｂｐｓの場合、３Ｍｂｐｓの速度でバッファ５５５の蓄積量５６１は減少し、言い換えると、３Ｍｂｐｓの速度でバッファ５５５のバッファ空き容量５６２は増加する。
【０２０３】
バッファ５５５はメディアデータが再生されるまでメディアデータを一時的に保持するものである。バッファ５５５の蓄積量５６１がゼロになる、すなわち、バッファアンダーフローが発生すると、再生すべきデータがなくなるため映像や音声の途切れが発生する。本実施の形態では、バッファアンダーフローの発生をできるだけ防止すべく、クライアント側のＡＶ機器５０２はバッファ５５５の蓄積量５６１がある一定量を超えた後にメディアデータの再生を開始するものとする。
【０２０４】
＜ＣＰＵの機能構成＞
図２０は図１８のＣＰＵ５５２の機能構成図である。但し、図２０には、ＣＰＵ５５２の機能構成の理解を容易にするため、ＡＶ機器５０２の他の構成要素も図示している。
【０２０５】
ＣＰＵ５５２は、メモリ５５１からそれに記憶保持されているデータレート演算プログラム５５４を読み出し、読み出したデータレート演算プログラム５５４を実行する。これによって、ＣＰＵ５５２は、伝送スループット検出部５７１、バッファ蓄積量検出部５７２、減少率／増加率演算部５７３、データレート演算部５７４、データレート決定部５７５、及びデータレート情報送信制御部５７６として機能する。
【０２０６】
伝送スループット検出部５７１は、バッファ５５５に入力されるメディアデータの入力ビットレート５６３の値即ち伝送スループットの値を検出し、検出した入力ビットレート５６３の値即ち伝送スループットの値をデータレート演算部５７４へ出力する。
【０２０７】
ここで、伝送スループット検出部５７１の機能構成について図２１を参照しつつ説明する。図２１は図２０の伝送スループット検出部５７１の機能構成図である。なお、図２１では、伝送スループット検出部５７１の内部要素とメモリ５５１及びデータレート演算部５７４との接続関係を明確にするために、メモリ５５１及びデータレート演算部５７４も図示している。
【０２０８】
伝送スループット検出部５７１は、データレート検出部５９１、バッファ変化率演算部５９２、及び伝送スループット演算部５９３として機能する。
【０２０９】
データレート検出部５９１は、バッファ５５５から出力されるメディアデータの単位時間当たりのデータ量を検出し、検出結果をバッファ５５５から出力されるメディアデータの出力ビットレート５６４の値即ちメディアデータのデータレートの値として伝送スループット演算部５９３へ出力する。
【０２１０】
バッファ変化率演算部５９２は、バッファ５５５の蓄積量５６１に基づいて、単位時間当たりの蓄積量５６１の増加や減少を変化率として算出し、算出した変化率の値を伝送スループット演算部５９３へ出力する。但し、蓄積量５６１が増加した場合の変化率を正の値で表し、蓄積量５６１が減少した場合の変化率を負の値で表すことにする。
【０２１１】
伝送スループット演算部５９３は、データレート検出部５９１から入力された出力ビットレート５６４の値即ちデータレートの値からバッファ変化率演算部５９２から入力された変化率の値を減算することによって入力ビットレート５６３の値即ち伝送スループットの値を算出し（入力ビットレート＝出力ビットレート−変化率；伝送スループット＝データレート−変化率）、算出した伝送スループットの値をデータレート演算部５７４へ出力する。
【０２１２】
バッファ蓄積量検出部５７２は、バッファ５５５の蓄積量５６１の値を検出し、検出した蓄積量５６１の値を減少率／増加率演算部５７３へ出力する。
【０２１３】
減少率／増加率演算部５７３は、バッファ蓄積量検出部５７２から入力されたバッファ５５５の蓄積量５６１を利用して、バッファ５５５の蓄積量５６１の許容される減少率の値及び増加率の値を算出し、算出した減少率の値及び増加率の値をデータレート演算部５７４へ出力する。
【０２１４】
減少率／増加率演算部５７３は増加率の算出を次のようにして行う。減少率／増加率演算部５７３は、予め設定された増加率設定値からバッファ５５５の蓄積量５６１の値を減算し、減算値を確保時間で除算することによって、増加率の値を算出する（増加率＝（増加率設定値−蓄積量）／確保時間）。但し、増加率設定値とは、出力ビットレート５６４即ちデータレートを制御してバッファ５５５の蓄積量５６１の増減を調整し、確保時間後の目標とするバッファ５５５の蓄積量５６１の最大値であり、増加率設定値は主として出力ビットレート５６４即ちデータレートを増大させる制御を行う際に利用される。算出される増加率の値は、確保時間後に増加率設定値までバッファ５５５の蓄積量５６１を増加させようとした場合に必要な単位時間当たりのバッファ５５５の蓄積量５６１の増加率ということになる。
【０２１５】
また、減少率／増加率演算部５７３は減少率の算出を次のようにして行う。減少率／増加率演算部５７３は、バッファ５５５の蓄積量５６１の値から予め設定された減少率設定値を減算し、減算値を確保時間で除算することによって、減少率の値を算出する（減少率＝（蓄積量−減少率設定値）／確保時間）。但し、減少率設定値とは、出力ビットレート５６４即ちデータレートを制御してバッファ５５５の蓄積量５６１の増減を調整し、確保時間後の目標とするバッファ５５５の蓄積量５６１の最小値であり、減少率設定値は主として出力ビットレート５６４即ちデータレートを低下させる制御を行う際に利用される。算出される減少率の値は、確保時間後に減少率設定値までバッファ５５５の蓄積量５６１を減少させようとした場合に必要な単位時間当たりのバッファ５５５の蓄積量５６１の減少率ということになる。
【０２１６】
但し、増加率設定値は減少率設定値より大きい。増加率設定値は設計時に任意の値にすることができるが、例えば増加率設定値をバッファ５５５の最大蓄積量としてもよい。減少率設定値は設計時に任意の値にすることができるが、例えば減少率設定値をゼロに設定してもよい。増加率及び減少率の算出に用いる確保時間は設計時に任意の値に設定することができるが、例えば連続的に発生する伝送路誤りの継続時間とすることができる。なお、増加率の算出に用いる確保時間と減少率の算出に用いる確保時間とを同じ値にしてもよいし、異なる値にしてもよい。
【０２１７】
データレート演算部５７４は、伝送スループット検出部５７１から入力された入力ビットレート５６３の値即ち伝送スループットの値に減少率／増加率演算部５７３から入力された減少率の値を加算し、加算値をデータレート上限値としてデータレート決定部５７５へ出力する（データレート上限値＝入力ビットレート＋減少率；データレート上限値＝伝送スループット＋減少率）。但し、データレート上限値は、データレート更新値を設定する場合に許容されるデータレートの上限値である。
【０２１８】
また、データレート演算部５７４は、伝送スループット検出部５７１から入力された入力ビットレート５６３の値即ち伝送スループットの値から減少率／増加率演算部５７３から入力された増加率の値を減算し、減算値をデータレート下限値としてデータレート決定部５７５へ出力する（データレート下限値＝入力ビットレート−増加率；データレート下限値＝伝送スループット−増加率）。但し、データレート下限値は、データレート更新値を設定する場合に許容されるデータレートの下限値である。
【０２１９】
データレート決定部５７５は、図２１のデータレート検出部５９１で検出される現在のデータレートの値と、データレート演算部５７４から入力されるデータレート上限値及びデータレート下限値とに基づいて、データレート更新値を決定し、決定したデータレート更新値をデータレート情報送信制御部５７６へ出力する。
【０２２０】
詳述すれば、データレート決定部５７５は、現在のデータレートの値がデータレート下限値以上データレート上限値以下であれば、データレート更新値を現在のデータレートの値に設定する。データレート決定部５７５は、現在のデータレートの値がデータレート下限値より小さければ、データレート更新値をデータレート下限値に設定し、現在のデータレートの値がデータレート上限値より大きければ、データレート更新値をデータレート上限値に設定する。
【０２２１】
データレート情報送信制御部５７６は、データレート決定部５７５から入力されたデータレート更新値を含むデータレート情報を通信Ｉ／Ｆ部５５３へ出力する。データレート情報は通信Ｉ／Ｆ部５５３から例えばサーバ側のＡＶ機器５０１へ送信される。
【０２２２】
図２０及び図２１を用いて説明したＣＰＵ５５２の構成によれば、バッファ５５５の蓄積量５６１、出力ビットレート５６４、及びバッファ５５５の蓄積量５６１の変化率というバッファ５５５の状態を検出するだけで、サーバ側のＡＶ機器５０１の符号変換部１２によるメディアデータのデータレートの変換を制御することができる。このため、データレートの変換の制御が容易になり、ＡＶ機器５０２の構成を簡略化することができる。
【０２２３】
＜ＣＰＵの動作＞
図２２は図１８のＣＰＵ５５２が行うデータレート演算処理の流れを示すフローチャートである。但し、ＣＰＵ５５２はメモリ５５１からそれに記憶されているデータレート演算プログラム５５４を読み出し、読み出したデータレート演算プログラム５５４を実行することによって、図２２及び後述する図２３のフローチャートの処理を実行する。
【０２２４】
ＣＰＵ５５２は、バッファ５５５の蓄積量５６１の値が予め設定された制御開始閾値より小さいかを判定する（ステップＳ５０１）。
【０２２５】
バッファ５５５の蓄積量５６１の値が制御開始閾値以上である間（Ｓ５０１：ＮＯ）、ステップＳ５０１の処理が繰り返し行われ、データレートの演算処理は行われない。例えば、蓄積量５６１の値が制御開始閾値より小さくなるまで、伝送スループットが安定していると判断し、データレートの更新が行われない。また、伝送路の状態が回復して蓄積量５６１の値が制御開始閾値以上になってから再度蓄積量５６１の値が制御開始閾値よりも小さくなるまで、伝送スループットが安定していると判断し、データレートの値は蓄積量５６１の値が制御開始閾値以上になった時点のデータレートの値で固定される。このように、バッファ５５５の蓄積量５６１の値が制御開始閾値以上にある場合は伝送スループットが安定していると判断し、伝送スループットが安定している場合におけるバッファ５５５の蓄積量５６１の瞬時的な変動に対してデータレートの更新は行われない。このため、伝送スループットが安定した状態ではデータレートが一定値に保たれる。これにより、例えば映像データの送信時に、伝送スループットが安定した状態ではクライアント側のＡＶ機器３で再生される映像の解像度が下がったりフレームレートが低くなったりする変化が発生せず、視聴者は違和感なく映像を視聴することができる。
【０２２６】
一方、バッファ５５５の蓄積量５６１の値が制御開始閾値より小さいと判定された場合（Ｓ５０１：ＹＥＳ）、ＣＰＵ５５２は、図２３に処理の流れを示すデータレート更新値決定処理を実行することによってデータレート更新値を決定する（ステップＳ５０２）。ＣＰＵ５５２のデータレート情報送信制御部５７６は、ステップＳ５０２の処理で決定されたデータレート更新値を含むデータレート情報を通信Ｉ／Ｆ部５５３へ出力し（ステップＳ５０３）、ステップＳ５０１の処理が行われる。通信Ｉ／Ｆ部５５３はデータレート情報送信制御部５７６から入力されたデータレート情報をネットワークを介して例えばサーバ側のＡＶ機器５０１へ送信する。
【０２２７】
［データレート更新値決定処理］
図２３は図２２のデータレート更新値決定処理（ステップＳ５０２）の流れを示すフローチャートである。
【０２２８】
伝送スループット検出部５７１において、データレート検出部５９１はバッファ５５５から出力されるメディアデータの出力ビットレート５９４の値即ちメディアデータのデータレートの値を検出し、バッファ変化率演算部５９２はバッファ５５５の蓄積量５６１の変化率の値を算出する。そして、伝送スループット演算部５９３は検出された出力ビットレート５６４の値即ちデータレートの値から算出された変化率の値を減算することによって入力ビットレート５６３の値即ち伝送スループットの値を算出する（ステップＳ６０１）。
【０２２９】
バッファ蓄積量検出部５７２はバッファ５５５の蓄積量５６１の値を検出する（ステップＳ６０２）。減少率／増加率演算部５７３は、増加率設定値からステップＳ６０２で検出されたバッファ５５５の蓄積量５６１の値を減算し、減算値を確保時間で除算することによって、増加率の値を算出する（ステップＳ６０３）。また、減少率／増加率演算部５７３は、ステップＳ６０２で検出されたバッファ５５５の蓄積量５６１の値から減少率設定値を減算し、減算値を確保時間で除算することによって、減少率の値を算出する（ステップＳ６０４）。
【０２３０】
データレート演算部５７４は、ステップＳ６０１で検出された伝送スループットの値にステップＳ６０４で算出された減少率の値を加算し、加算値をデータレート上限値とする（ステップＳ６０５）。また、データレート演算部５７４は、ステップＳ６０１で検出された伝送スループットの値からステップＳ６０３で算出された増加率の値を減算し、減算値をデータレート下限値とする（ステップＳ６０６）。
【０２３１】
データレート決定部５７５は、現在のデータレートの値がステップＳ６０６で得られたデータレート下限値以上ステップＳ６０５で得られたデータレート上限値以下の範囲内であるかを判定する（ステップＳ６０７）。
【０２３２】
現在のデータレートの値がその範囲内であれば（Ｓ６０７：ＹＥＳ）、データレート決定部５７５は、データレート更新値を現在のデータレートの値に設定し（ステップＳ６０８）、図２２のステップＳ５０３が行われる。このようにすることにより、伝送スループットが回復した状態から再度低下した場合や伝送スループットが低下した状態から回復した場合に、現在のデータレートの値がデータレート下限値以上データレート上限値以下の範囲内であればデータレートの更新が行われない。このため、現在のデータレートの値が上記の範囲内にあれば伝送スループットが変動してもデータレートは変動することなく安定する。これにより、例えばクライアント側のＡＶ機器５０２で再生される映像の解像度やフレームレートが急激に上がったり下がったりするような状況を回避でき、視聴者は安定した品質の映像を視聴することができる。
【０２３３】
一方、現在のデータレートの値がその範囲内になければ（Ｓ６０７：ＮＯ）、データレート決定部５７５は、現在のデータレートの値がデータレート上限値より大きいかを判定する（ステップＳ６０９）。
【０２３４】
現在のデータレートの値がデータレート上限値より大きければ（Ｓ６０９：ＹＥＳ）、バッファ５５５の蓄積量５６１が減少してデータレート上限値が現在のデータレートの値より低下した状況であることから、データレート決定部５７５は、データレートを下げるべく、データレート更新値をデータレート上限値に設定し（ステップＳ６１０）、図２２のステップＳ５０３の処理が行われる。
【０２３５】
一方、現在のデータレートの値がデータレート上限値より大きくなければ、つまり、現在のデータレートの値がデータレート下限値より小さければ（Ｓ６０９：ＮＯ）、バッファ５５５の蓄積量５６１が増加してデータレート下限値が現在のデータレートの値より大きくなった状況であることから、データレート決定部５７５は、データレートを上げるべく、データレート更新値をデータレート下限値に設定し（ステップＳ６１１）、図２２のステップＳ５０３の処理が行われる。
【０２３６】
＜データレート更新のシーケンス例＞
図２４はサーバ側のＡＶ機器５０１からクライアント側のＡＶ機器５０２へデータストリームを配信する場合のシーケンス図である。
【０２３７】
サーバ側のＡＶ機器５０１では、符号変換部１２はメディアデータ記憶部１１に記憶されている映像データのビットレート（データレート）を変換し、この変換によって得られた映像データは通信Ｉ／Ｆ部５１３を介してストリーム配信される。クライアント側のＡＶ機器５０２は、ストリーム配信されている映像データを通信Ｉ／Ｆ部５５３で受信し、受信した映像データをメモリ５５１のバッファ５５５に蓄積しながら順次再生する（ステップＳ７０１）。
【０２３８】
このとき、クライアント側のＡＶ機器５０２では、ＣＰＵ５５２はデータレート演算プログラム５５４をメモリ５５１から読み出して実行することによって（図２２、図２３参照）、データレート更新値を算出し（ステップＳ７０２）、算出したデータレート更新値を含むデータレート情報を通信Ｉ／Ｆ部５５３を介してＡＶ機器５０１へ送信する（ステップＳ７０３）。
【０２３９】
サーバ側のＡＶ機器５０１では、ＣＰＵ５１２はデータレート変更プログラム５１４をメモリ５１１から読み出して実行することによって（図１７参照）、データレート情報に含まれるデータレート更新値と最大データレートの値とを用いてデータレート更新値を決定する（ステップＳ７０４）。符号変換部１２はメディアデータ記憶部１１に記憶されている映像データのビットレート（データレート）を決定されたデータレート更新値に従って変換する（ステップＳ７０５）。符号変換部１２による変換によって得られた映像データは通信Ｉ／Ｆ部５１３を介してストリーム配信される。クライアント側のＡＶ機器５０２は、ストリーム配信されている映像データを通信Ｉ／Ｆ部５５３で受信し、受信した映像データをメモリ５５１のバッファ５５５に蓄積しながら順次再生する（ステップＳ７０６）。
【０２４０】
これによって、映像データのデータレートはリアルタイムに変換されて、バッファ５５５のアンダーフローを防ぎ、映像の途切れを防ぐことが可能になる。
【０２４１】
＜データレートの制御例＞
出力ビットレート５６４即ちデータレートの制御の一例として、伝送スループットが低下し、一定時間後に伝送スループットが回復する状況におけるバッファ５５５から出力されるメディアデータの出力ビットレート即ちメディアデータのデータレートの制御について図２５及び図２６を参照しつつ説明する。
【０２４２】
図２５（ａ）及び図２６（ａ）は、伝送スループット即ちバッファ５５５に入力されるメディアデータの入力ビットレート５６３の時間的変動を示す図であり、縦軸はレート（ｂｐｓ）を、横軸は時間を表す。図２５（ａ）及び図２６（ａ）では、時間ｔ０で伝送路の状態の悪化が発生して伝送スループットが急激に下がり始め、一定時間後の時間ｔ３で伝送路の状態が回復して伝送スループットが急激に上がり始めている様子が示されている。
【０２４３】
図２５（ｂ）及び図２６（ｂ）は、受信されるメディアデータのデータレート即ちバッファ５５５から出力されるメディアデータの出力ビットレート５６４の時間的な変動を示す図であり、縦軸はレート（ｂｐｓ）を、横軸は時間を表す。
【０２４４】
図２５（ｃ）及び図２６（ｃ）は、バッファ５５５の蓄積量５６１の時間的な変動を示す図であり、縦軸はバッファの蓄積量を、横軸は時間を表す。
【０２４５】
［伝送スループット低下時のデータレートを低下させる制御］
以下、伝送スループット低下時の出力ビットレート５６４即ちデータレートを低下させる制御の一例を図２５（ａ）〜図２５（ｃ）を参照して説明する。
【０２４６】
時間ｔ０で、伝送路状態が悪化して伝送スループット即ちバッファ５５５に入力されるメディアデータの入力ビットレート５６３が低下し始め、入力ビットレート５６３の値がｔｐａからｔｐｂまで低下する。この入力ビットレート５６３の低下に伴い、バッファ５５５の蓄積量５６１が減少する。そして、時間ｔ１まではバッファ５５５の蓄積量５６１の値が制御開始閾値ｄｔｈ以上なので、出力ビットレート５６４の値即ちデータレートの値はそのままである（図２２のステップＳ５０１参照）。このように、蓄積量５６１の値が制御開始閾値ｄｔｈ以上の間は、伝送スループットの値が低下しても出力ビットレート５６４の値即ちデータレートの値は低下しない。
【０２４７】
バッファ５５５の蓄積量５６１の値は、入力ビットレート５６３の値と出力ビットレート５６４の値との差分に応じて減少し、時間ｔ１でバッファ５５５の蓄積量５６１の値が制御開始閾値ｄｔｈを下回ったとする。ＣＰＵ５５２はデータレート更新値の決定及びサーバ側のＡＶ機器５０１に対する決定したデータレート更新値を含むデータレート情報の送信を開始し、バッファ５５５の蓄積量５６１の値が制御開始閾値ｄｔｈ以上になるまで、データレート更新値の決定及びサーバ側のＡＶ機器５０１に対する決定したデータレート更新値を含むデータレート情報の送信を行う（図２２参照）。
【０２４８】
ＣＰＵ５５２の伝送スループット検出部５７１は入力ビットレート５６３の値即ち伝送スループットの値を検出し、バッファ蓄積量検出部５７２はバッファ５５５の蓄積量５６１の値を検出し、減少率／増加率演算部５７３は増加率の値及び減少率の値を算出し、データレート演算部５７４はデータレート上限値及びデータレート下限値を算出する（図２３のステップＳ６０１〜ステップＳ６０６参照）。ここでは、データレート決定部５７５は、現在のデータレートの値がデータレート上限値より大きいとし、データレート更新値をデータレート上限値に設定し、データレート情報送信制御部５７６はデータレート更新値を含むデータレート情報を通信Ｉ／Ｆ部５５３へ出力する（図２３のステップＳ６０７、Ｓ６０９、Ｓ６１０、図２２のステップＳ５０３参照）。これにより、データレートの値は伝送スループットの値より大きな値で徐々に小さくなる。
【０２４９】
例えば、減少率設定値がｄｄｗ、確保時間がｔａであり、時間ｔ２におけるバッファ５５５の蓄積量５６１がｄ２、時間ｔ２における入力ビットレート５６３即ち伝送スループットがｔｐｂであるとする。時間ｔ２における減少率をｔｐｄ２で表わすと、ｔｐｄ２＝（ｄ２−ｄｄｗ）／ｔａになる。時間ｔ２におけるデータレート上限値は時間ｔ２における伝送スループットの値（ｔｐｂ）に時間ｔ２における減算率の値（ｔｐｄ２）を加算した加算値ｔｐｂ＋ｔｐｄ２になる。そして、時間ｔ２におけるデータレート更新値をｔｐ２で表わすと、ｔｐ２＝ｔｐｂ＋ｔｐｄ２になる。
【０２５０】
［伝送スループット増大時のデータレートを増大させる制御］
以下、伝送スループット増大時の出力ビットレート５６４即ちデータレートを増大させる制御の一例を図２６（ａ）〜図２６（ｃ）を参照して説明する。
【０２５１】
時間ｔ３で、伝送路状態の悪化により伝送スループットが低下した状態から伝送路状態の回復に伴い伝送スループットが回復したとする。
【０２５２】
ＣＰＵ５５２の伝送スループット検出部５７１は入力ビットレート５６３の値即ち伝送スループットの値を検出し、バッファ蓄積量検出部５７２はバッファ５５５の蓄積量５６１の値を検出し、減少率／増加率演算部５７３は増加率の値及び減少率の値を算出し、データレート演算部５７４はデータレート上限値及びデータレート下限値を算出する（図２３のステップＳ６０１〜ステップＳ６０６参照）。ここでは、データレート決定部５７５は、現在のデータレートの値がデータレート下限値より小さいとし、データレート更新値をデータレート下限値に設定し、データレート情報送信制御部５７６はデータレート更新値を含むデータレート情報を通信Ｉ／Ｆ部５５３へ出力する（図２３のステップＳ６０７、Ｓ６０９、Ｓ６１０、図２２のステップＳ５０３参照）。これにより、データレートの値は伝送スループットの値より小さな値で徐々に大きくなる。
【０２５３】
例えば、増加率設定値がｄｕｐ、確保時間がｔａであり、時間ｔ４におけるバッファ５５５の蓄積量５６１がｄ４、時間ｔ４における伝送スループット即ち入力ビットレート５６３がｔｐａであるとする。時間ｔ４における増加率をｔｐｕ４で表わすと、ｔｐｕ４＝（ｄｕｐ−ｄ４）／ｔａになる。時間ｔ４におけるデータレート下限値は時間ｔ４における伝送スループットの値（ｔｐａ）から時間ｔ４における増加率の値（ｔｐｕ４）を減算した減算値ｔｐａ−ｔｐｕ４になる。そして、時間ｔ４におけるデータレート更新値をｔｐ４で表わすと、ｔｐ４＝ｔｐａ−ｔｐｕ４になる。
【０２５４】
時間ｔ３で伝送路状態の悪化が回復して伝送スループット即ちバッファ５５５に入力されるメディアデータの入力ビットレート５６３が増大すると、バッファ５５５の蓄積量５６１が増大し始める。そして、時間ｔ５でバッファ５５５の蓄積量５６１の値が制御開始閾値ｄｔｈ以上になると、バッファ５５５から出力されるメディアデータの出力ビットレート５６４の値即ちメディアデータのデータレートの値は固定される（図２２のステップＳ５０１参照）。
【０２５５】
＜データレートの低下制御の基本的な考え方＞
以下、伝送スループットの低下時の出力ビットレート即ちデータレートを低下させる制御の基本的な考え方の概略について記載する。
【０２５６】
伝送路の状態が悪化して伝送スループットが低下すると、バッファ５５５のアンダーフローを防ぐために、バッファ５５５から出力されるメディアデータの出力ビットレート５６４が低下するように出力ビットレート５６４即ちデータレートの制御が行われる。
【０２５７】
本実施の形態では、出力ビットレート５６４の値が入力ビットレート５６３の値になるように出力ビットレート５６４即ちデータレートを低下させるのではなくて、バッファ５５５の蓄積量５６１を利用して出力ビットレート５６４の値が入力ビットレート５６３の値より大きくなるように出力ビットレート５６４の値即ちデータレートの値を低下させる。具体的には、バッファ５５５の蓄積量５６１の値が上記の確保時間後に減少率設定値になるような減少率の値を算出し、現在のデータレートの値が減少率の値と伝送スループットの値との加算値（データレート上限値）より大きければデータレートの値がデータレート上限値になるようにデータレートの制御を行う。なお、バッファ５５５の蓄積量５６１の値は入力ビットレート５６３の値と出力ビットレート５６４の値との差分に応じて増減することから、出力ビットレート５６３の値即ちデータレートの値がデータレート上限値になるように制御した場合、伝送スループットが変化しない場合であってもバッファ５５５の蓄積量５６１は減少率に応じて減少する。
【０２５８】
上記の伝送スループットの低下時のデータレートを低下させる制御方法によれば、バッファ５５５の蓄積量５６１の値が大きい場合は、伝送スループットの値に加算する減算率の値が大きくなり、データレート上限値が大きくなる。このため、一時的に伝送スループットが低下した場合に、出力ビットレート５６４の値が入力ビットレート５６３の値になるように出力ビットレート５６４即ちデータレートを低下させる場合と比較して、データレートの下げ幅がより小さくなり、データレートの時間的な変動をより小さくすることができる。これにより、例えば映像データの配信中に一時的に伝送スループットが低下した場合に、受信側で再生される映像の解像度やフレームレートの下げ幅を小さくすることができ、視聴者は安定した品質の映像を視聴することができる。
【０２５９】
また、バッファ５５５の蓄積量５６１の値が小さい場合、伝送スループットの値に加算する減少率の値が小さくなるが、バッファ５５５の蓄積量５６１の値が減少率設定値以下にならない範囲で入力ビットレートの値と出力ビットレートの値との差を小さくする。このため、伝送スループットの低下が一定期間継続することによってバッファ５５５の蓄積量５６１の値が小さくなっても、バッファ５５５の蓄積量５６１の値は減少率設定値までにしか小さくならずバッファ５５５のアンダーフローは発生しない。これにより、例えば映像データの送信中に伝送スループットの低下が一定期間継続しても、バッファ５５５のアンダーフローによる映像の途切れが発生せず、視聴者は途切れることがない映像を視聴できる。
【０２６０】
更に、バッファ５５５の蓄積量５６１の値が確保時間後に減少率設定値になるようにした場合のバッファ５５５の蓄積量５６１の減少率はバッファ５５５の蓄積量５６１の値が小さくなるのに伴い徐々に小さくなるので、データレートの値を緩やかに小さくすることができる。これにより、例えば映像データの送信中に伝送スループットが低下した場合に、受信側で再生される映像の解像度やフレームレーを緩やかに下げることができ、視聴者が感じる違和感を少なくすることができる。
【０２６１】
更に、減少率設定値をゼロとすることにより、バッファ５５５の蓄積量５６１の値が確保時間後に減少率設定値になるようにした場合の蓄積量５６１の減少率の値を最大にすることができる。このため、減少率設定値をゼロよりも大きい値にする場合と比べてデータレートの値の下げ幅を最も小さくすることができる。
【０２６２】
＜データレートの増大制御の基本的な考え方＞
以下、伝送スループットの回復時の出力ビットレート即ちデータレートを増大させる制御の基本的な考え方の概略について記載する。
【０２６３】
伝送路の状態の悪化が回復して伝送スループットが増大すると、例えば映像データの配信中であれば高画質な映像を視聴者に提供するために、バッファ５５５から出力されるメディアデータの出力ビットレート５６４が増大するように出力ビットレート５６４即ちデータレートの制御が行われる。
【０２６４】
本実施の形態では、出力ビットレート５６４の値が入力ビットレート５６３の値になるように出力ビットレート５６４即ちデータレートを増大させるのではなくて、バッファ５５５の蓄積量５６１を利用して出力ビットレート５６４の値即ちデータレートの値が入力ビットレート５６３の値より小さくなるように出力ビットレート５６４の値即ちデータレートの値を増大させる。具体的には、バッファ５５５の蓄積量５６１の値が上記の確保時間後に増加率設定値になるような増加率の値を算出し、現在のデータレートの値が伝送スループットの値から増加率の値を減算した減算値（データレート下限値）より小さければデータレートの値がデータレート下限値になるようにデータレートの制御を行う。なお、バッファ５５５の蓄積量５６１の値は入力ビットレート５６３の値と出力ビットレート５６４の値との差分に応じて増減することから、出力ビットレート５６３の値即ちデータレートの値がデータレート下限値になるように制御した場合、伝送スループットが変化しない場合であってもバッファ５５５の蓄積量５６１は増加率に応じて増加する。
【０２６５】
上記の伝送スループットの回復時のデータレートを増大させる制御方法によれば、バッファ５５５の蓄積量５６１の値が確保時間後に減少率設定値より大きい増加率設定値になるようにした場合の蓄積量５６１の増加率はバッファ５５５の蓄積量５６１の値が大きくなるのに伴い徐々に小さくなる。このため、データレートの値を緩やかに大きくすることができる。これにより、例えば映像データの送信中に伝送スループットが回復した場合に、受信側で再生される映像の解像度やフレームレートを緩やかに上げることができ、視聴者が感じる違和感を少なくすることができる。
【０２６６】
また、増加率設定値をバッファ５５５の最大蓄積量とすることにより、伝送スループットが回復した状態が継続した場合のバッファ５５５の蓄積量５６１の値を最大にすることができるので、バッファ５５５の容量を最も有効に利用することができる。
【０２６７】
＜データレート更新値の決定の基本的な考え方＞
以下、データレート更新値の決定の基本的な考え方の概略について記載する。
【０２６８】
無線の伝送路や電灯線の伝送路を用いて通信を行う場合、平均伝送スループットはほぼ一定で安定している状態でも、各時点での伝送スループットは細かく変動している。このため、仮に、伝送スループットの値即ち入力ビットレート５６３の値が上昇するとデータレートの値即ち出力ビットレート５６４の値を増大させ、伝送スループットの値即ち入力ビットレート５６３の値が低下するとデータレートの値即ち出力ビットレート５６４の値を低下させることにすると、データレートを低下させる制御とデータレートを増大させる制御との切り替えが頻繁に発生することが予想される。
【０２６９】
仮に、データレートの値が常に伝送スループットの値からバッファ５５５の蓄積量６７１の増加率の値を減算した値となるようにデータレートを増大させる制御状態から、データレートの値が常に伝送スループットの値にバッファ５５５の蓄積量６７１の減少率の値を加算した値となるようにデータを低下させる制御状態に切り替わった場合、データレートの値は、伝送スループットの値からバッファ５５５の蓄積量６７１の増加率の値を減算した値から、伝送スループットの値にバッファ５５５の蓄積量６７１の減少率の値を加算した値に変化する。つまり、データレートの値は、増加率の値と減少率の値とを加算した値分増加し、急激に増加することになる。このため、伝送スループットが低下した場合、例えばクライアント側のＡＶ機器５０２で再生される映像の解像度やフレームレートが急激に高くなってしまう。
【０２７０】
これを回避するために、本実施の形態では、伝送スループットが回復してデータレートを増大させる制御状態から、伝送スループットが悪化してデータレートを低下させる制御状態に切り替わった場合、伝送スループットの値にバッファ５５５の蓄積量５６１の減少率の値を加算した加算値（データレート上限値）が現在のデータレートの値よりも大きい間は現在のデータレートの値を維持するようにしている。
【０２７１】
つまり、現在のデータレートの値がデータレート上限値より大きい場合にはデータレート更新値をデータレート上限値とし、現在のデータレートの値がデータレート上限値以下であればデータレート更新値を現在のデータレートの値とする。
【０２７２】
これにより、伝送スループットが回復した状態から再度低下した場合に、データレートの値が急激に上がることを防止できるため、データレートを安定させることができる。従って、伝送スループットが回復した状態から再度低下した場合に、例えばクライアント側のＡＶ機器５０２で再生される映像の解像度やフレームレートが急激に上がるということがなくなり、視聴者は安定した品質の映像を視聴することができる。
【０２７３】
逆に、仮に、データレートの値が常に伝送スループットの値にバッファ５５５の蓄積量６７１の減少率の値を加算した値となるようにデータを低下させる制御状態から、データレートの値が常に伝送スループットの値からバッファ５５５の蓄積量６７１の増加率の値を減算した値となるようにデータレートを増大させる制御状態に切り替わった場合、データレートの値は、伝送スループットの値にバッファ５５５の蓄積量６７１の減少率の値を加算した値から、伝送スループットの値からバッファ５５５の蓄積量６７１の増加率の値を減算した値に変化する。つまり、データレートの値は、増加率の値と減少率の値とを加算した値分減少し、急激に減少することになる。このため、伝送スループットが回復した場合に、例えばクライアント側のＡＶ機器３で再生される映像の解像度やフレームレートが急激に下がってしまう。
【０２７４】
これを回避するために、本実施の形態では、伝送スループットが悪化してデータレートを低下させる制御状態から、伝送スループットが回復してデータレートを増大させる制御状態に切り替わった場合、伝送スループットの値からバッファ５５５の蓄積量５６１の増加率の値を減算した減算値（データレート下限値）が現在のデータレートの値よりも小さい間は現在のデータレートの値を維持するようにしている。
【０２７５】
つまり、現在のデータレートの値がデータレート下限値より小さい場合にはデータレート更新値をデータレート下限値とし、現在のデータレートの値がデータレート下限値以上であればデータレート更新値を現在のデータレートの値とする。
【０２７６】
これにより、伝送スループットが低下した状態から回復した場合に、データレートの値が急激に下がることを防止できるため、データレートを安定させることができる。従って、伝送スループットが低下した状態から回復した場合に、例えばクライアント側のＡＶ機器５０２で再生される映像の解像度やフレームレートが急激に下がるということがなくなり、視聴者は安定した品質の映像を視聴することができる。
【０２７７】
≪補足≫
本発明は上記の実施の形態で説明した内容に限定されず、本発明の目的とそれに関連又は付随する目的を達成するためのいかなる形態においても実施可能であり、例えば、以下であってもよい。
【０２７８】
（１）第１の実施の形態では、バッファ１７から出力されるメディアデータの出力ビットレート２４の検出を図５に示す機能構成を有する出力ビットレート検出部３１を用いて行っているが、これに限らず、例えば次のようなものであってもよい。
【０２７９】
例えば、バッファ１７から出力されるメディアデータの出力ビットレート２４の検出に、単位時間当たりの送信成功フレーム数をＡＣＫ（Acknowledgement）やＮＡＣＫ（Negative ACK）から求めて、伝送スループットの値を算出し、算出した伝送スループットの値を出力ビットレートの値とする方法を用いてもよい。実際の通信の状態から伝送スループットを測定する一例として以下が考えられる。サーバ側のＡＶ機器が１５００バイト／フレームのデータを連続送信しているとき、ある１秒間当たりのＡＣＫ返答数が１０００個であれば、伝送スループット＝１０００（フレーム）×１５００（バイト／フレーム）／１（秒）として、伝送スループットが約１２Ｍｂｐｓであると算出できる。
【０２８０】
このように、通信Ｉ／Ｆ部が行う通信の伝送スループットを出力ビットレート２４として検出する場合は、実際に測定した伝送スループットの値を用いて入力ビットレート２３の制御を行うので、バッファ１７へ入力されるメディアデータの入力ビットレート２３及びバッファ１７のバッファ空き容量２２の変化率から出力ビットレート２４を算出する場合に比べて、入力ビットレート２３の制御を確実に行うことができる。
【０２８１】
第３の実施の形態では、伝送スループットの検出を図２１に示す機能構成を有する伝送スループット検出部５７１を用いて行っているが、これに限らず、例えば次のようなものであってもよい。
【０２８２】
例えば、伝送スループットの検出に、単位時間当たりの受信成功フレーム数をＣＲＣ（Cyclic Redundancy Check）やＦＣＳ（Frame Check Sequence）を用いて求めて、伝送スループットを算出する方法を用いてもよい。実際の通信の状態から伝送スループットを測定する一例として以下が考えられる。サーバ側のＡＶ機器５０１が１５００バイト／フレームのデータを連続送信しているとき、ある１秒間当たりの受信成功フレーム数が１０００個であれば、伝送スループット＝１０００（フレーム）×１５００（バイト／フレーム）／１（秒）として、伝送スループットが約１２Ｍｂｐsであることが算出できる。
【０２８３】
このように、通信Ｉ／Ｆ部５５３が行う通信の伝送スループットを入力ビットレートとして検出する場合は、実際に測定した伝送スループットを用いてサーバ側のＡＶ機器５０１の符号変換部１２が行うデータレートの変換の制御を行うので、バッファ５５５から出力されるメディアデータの出力ビットレート５６４及びバッファ５５５の蓄積量５６１の変化率から出力ビットレート５６４を算出する場合に比べて、サーバ側のＡＶ機器５０１において行われるメディアデータのデータレートの変換の制御を確実に行うことができる。
【０２８４】
（２）第１の実施の形態では、伝送スループットが回復してバッファ１７のバッファ空き容量２２の値が制御開始閾値以上になると、入力ビットレートの値をその時点の入力ビットレートの値に固定するようにしているが、これに限られるものではなく、例えば、入力ビットレートの値を所定値（例えばメディアデータに設定可能な最大データレートの値）に固定するようにしてもよい。
【０２８５】
第３の実施の形態では、伝送スループットが回復してバッファ５５５の蓄積量５６１の値が制御開始閾値以上になると、データレートの値をその時点のデータレートの値に固定するようにしているが、これに限られるものではなく、例えば、データレートの値を所定値（メディアデータに設定可能な最大データレートの値）に固定するようにしてもよい。
【０２８６】
（３）第１の実施の形態では、伝送スループットが増大してバッファ１７のバッファ空き容量２２の値が制御開始閾値以上になった時点で入力ビットレートの値を固定しているが、これに限られるものではなく、例えば、バッファ１７のバッファ空き容量２２の値が例えば制御開始閾値と増加率設定値との間に設定された閾値以上になった時点で入力ビットレートの値を固定するようにしてもよい。
【０２８７】
上記の第３の実施の形態では、伝送スループットが回復してバッファ５５５の蓄積量５６１の値が制御開始閾値以上になった時点でデータレートの値を固定しているが、これに限られるものではなく、バッファ５５５の蓄積量５６１の値が制御開始閾値と増加率設定値との間に設定された閾値以上になった時点でデータレートの値を固定するようにしてもよい。
【０２８８】
（４）第１の実施の形態のＡＶ機器２とＡＶ機器３との間、第２の実施の形態の中継装置１０３と中継装置１０４との間、上記の第３の実施の形態のＡＶ機器５０１とＡＶ機器５０２との間は、無線としているが、これに限られるものではなく、例えば、電力線、電話線、同軸ケーブル、光ケーブルなどであってもよい。
【０２８９】
また、第１及び第２の実施の形態の通信Ｉ／Ｆ部１５、第３の実施の形態の通信Ｉ／Ｆ部５１３，５５３は無線通信インターフェースとしたが、これに限られるものではなく、例えば、Ｅｒｔｈｅｒｎｅｔ（登録商標）、ＵＳＢ（Universal Serial Bus）、ＨＤＭＩ（登録商標）（High-Definition Multimedia Interface）、ＩＥＥＥ１３９４などの通信インターフェースなどであってもよい。
【０２９０】
（５）第１の実施の形態では、現在の入力ビットレートの値を入力ビットレート下限値及び入力ビットレート上限値と比較して、比較結果に応じて入力ビットレート更新値を設定するようにしているが、これに限られるものではなく、例えば次のようなものであってもよい。伝送スループットの低下を検出した場合には、現在の入力ビットレートの値と入力ビットレート上限値とを比較して、現在の入力ビットレートの値が入力ビットレート上限値より大きければ入力ビットレート更新値を入力ビットレート上限値に設定し、現在の入力ビットレートの値が入力ビットレート上限値以下であれば入力ビットレート更新値を現在の入力ビットレートの値に設定するようにしてもよい。また、伝送スループットの増大を検出した場合には、現在の入力ビットレートの値と入力ビットレート下限値とを比較して、現在の入力ビットレートの値が入力ビットレート下限値より小さければ入力ビットレート更新値を入力ビットレート下限値に設定し、現在の入力ビットレートの値が入力ビットレート下限値以上であれば入力ビットレート更新値を現在の入力ビットレートの値に設定するようにしてもよい。
【０２９１】
第３の実施の形態では、現在の出力ビットレート即ちデータレートの値をデータレート下限値及びデータレート上限値と比較して、比較結果に応じてデータレート更新値を設定するようにしているが、これに限られるものではなく、例えば次のようなものであってもよい。伝送スループットの低下を検出した場合には、現在のデータレートの値とデータレート上限値とを比較して、現在のデータレートの値がデータレート上限値より大きければデータレート更新値をデータレート上限値に設定し、現在のデータレートの値がデータレート上限値以下であればデータレート更新値を現在のデータレートの値に設定するようにしてもよい。また、伝送スループットの増大を検出した場合には、現在のデータレートの値とデータレート下限値とを比較して、現在のデータレートの値がデータレート下限値より小さければデータレート更新値をデータレート下限値に設定し、現在のデータレートの値がデータレート下限値以上であればデータレート更新値を現在のデータレートの値に設定するようにしてもよい。
【０２９２】
（６）第１の実施の形態において、図７の処理と同じ内容を実現できるものであれば、その処理手順を入れ替えてもよいことは言うまでもない。例えば、ステップＳ２０４、ステップＳ２０３の順番で処理をしてもよく、ステップＳ２０６、ステップＳ２０５の順番で処理をしてもよく、さらに、ステップＳ２０３、ステップＳ２０５、ステップＳ２０４、ステップＳ２０６の順番で処理をしてもよい。
【０２９３】
第３の実施の形態において、図２３の処理と同じ内容を実現できるものであれば、その処理手順を入れ替えてもよいことは言うまでもない。例えば、ステップＳ６０４、ステップＳ６０３の順番で処理をしてもよく、ステップＳ６０６、ステップＳ６０５の順番で処理をしてもよく、さらに、ステップＳ６０３、ステップＳ６０５、ステップＳ６０４、ステップＳ６０６の順番で処理をしてもよい。
【０２９４】
（７）第１から第３の実施の形態は、例えば、映像データ、音声データ、映像データ及び音声データの双方など各種データに適用可能である。
【０２９５】
（８）第１から第３の実施の形態は、通信機能を有するＡＶ機器や中継装置を始めとする各種送信装置や受信装置に適用可能である。
【０２９６】
（９）第１の実施の形態では、通信Ｉ／Ｆ部１５内のバッファ１７のバッファ空き容量２２などの情報を検出するとしたが、これに限られるものではなく、メモリ１３にシステムバッファを構成してそのバッファ情報を検出するようにしてもよい。バッファ１７のキューサイズが制限により大きく確保できない場合、メモリ１３のシステムバッファをさらに上乗せして、キューサイズを大きくすることも可能である。これにより利用するアプリケーションシステムに応じて、バッファサイズを容易に変更することが可能であり、バッファサイズが大きければ、第１の実施の形態の手法の効果がさらに大きく表れる。
【０２９７】
（１０）第１から第３の実施の形態の各構成を適宜組み合わせて新たな構成とすることも可能である。例えば、第３の実施の形態において、サーバ側のＡＶ機器５０１を、第２の実施の形態のように、中継装置と分離したネットワーク構成とすることも可能である。
【０２９８】
（１１）上記の各実施の形態の各装置は、ＣＰＵやＭＰＵで動作するソフトウェア構成に限られるものではなく、例えば、ハードウェア構成で実現されてもよい。この場合、典型的には集積回路であるＬＳＩ（Large Scale Integration）として実現される。これらは、個別に１チップ化されてもよいし、全てまたは一部を含むように１チップ化されてもよい。ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（Field Programmable Gate Array）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
【０２９９】
（１２）なお、補足において第１の実施の形態について述べた変形は第２の実施の形態に対して適用可能である。
【産業上の利用可能性】
【０３００】
本発明は、伝送路の状態に応じた送信するデータのデータレートの制御に利用することができる。
【符号の説明】
【０３０１】
１  ネットワーク
２  ＡＶ機器（サーバ側）
３  ＡＶ機器（クライアント側）
１１  メディアデータ記憶部
１２  符号変換部
１３  メモリ
１４  ＣＰＵ
１５  通信Ｉ／Ｆ部
１６  入力ビットレート制御プログラム
１７  バッファ
３１  出力ビットレート検出部
３２  バッファ空き容量検出部
３３  減少率／増加率演算部
３４  入力ビットレート演算部
３５  入力ビットレート決定部
４１  入力ビットレート検出部
４２  バッファ変化率演算部
４３  出力ビットレート演算部
【図１】
2010007749.tif 000003
【図２】
2010007749.tif 000004
【図３】
2010007749.tif 000005
【図４】
2010007749.tif 000006
【図５】
2010007749.tif 000007
【図６】
2010007749.tif 000008
【図７】
2010007749.tif 000009
【図８】
2010007749.tif 000010
【図９】
2010007749.tif 000011
【図１０】
2010007749.tif 000012
【図１１】
2010007749.tif 000013
【図１２】
2010007749.tif 000014
【図１３】
2010007749.tif 000015
【図１４】
2010007749.tif 000016
【図１５】
2010007749.tif 000017
【図１６】
2010007749.tif 000018
【図１７】
2010007749.tif 000019
【図１８】
2010007749.tif 000020
【図１９】
2010007749.tif 000021
【図２０】
2010007749.tif 000022
【図２１】
2010007749.tif 000023
【図２２】
2010007749.tif 000024
【図２３】
2010007749.tif 000025
【図２４】
2010007749.tif 000026
【図２５】
2010007749.tif 000027
【図２６】
2010007749.tif 000028
【手続補正書】
【提出日】平成22年2月10日(2010.2.10)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、送信データのデータレートを可変制御する技術に関する。
【背景技術】
【０００２】
送信装置は、送信すべきデータを一時的に保持するバッファを備えている。無線通信やＰＬＣ（Power Line Communications）通信等の伝送路の状態が変化しやすい通信では、一時的に伝送路の状態が悪化して通信の伝送スループットが低下すると、バッファから出力されるデータのビットレート（以下、「出力ビットレート」と言う。）が低下する。すなわち、伝送スループットは出力ビットレートに等しい。映像データ等のストリーミングデータを送信する場合、バッファに入力されるデータのビットレート（以下、「入力ビットレート」と言う。）はストリーミングデータのビットレートに等しい。
【０００３】
無線通信やＰＬＣ通信等でストリーミングデータを送信する場合、伝送スループットが低下して出力ビットレートが入力ビットレートよりも低くなると、バッファに蓄積されているデータのデータ量が増加する。伝送スループットの低下が継続し、バッファに蓄積されたデータのデータ量がバッファの最大蓄積量に達すると、バッファのオーバーフローが発生し、送信すべきデータが破棄されてしまう。その結果、映像や音声の途切れが発生する。
【０００４】
伝送スループットの低下に伴うオーバーフローの発生を防止する従来技術として、伝送路の状態の変化に応じて入力ビットレート、即ち送信データのビットレート（データレート）を制御する方法が特許文献１や特許文献２に開示されている。
特許文献１には、伝送スループットを測定するためのテストパケットを送信し、当該テストパケットの到達率の値に基づいて伝送スループットの値を測定し、入力ビットレートの値が測定された伝送スループットの値になるよう入力ビットレートを制御する技術が開示されている。
【０００５】
特許文献２には、特許文献１における伝送スループットの値を測定するためのテストパケットを送信する代わりに、バッファの単位時間当たりの蓄積量の変動率の値と入力ビットレートの値を測定し、測定された蓄積量の変動率の値と入力ビットレートの値とを加算した値を伝送スループットの値とし、入力ビットレートの値がこの伝送スループットの値になるよう入力ビットレートを制御する技術が開示されている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００４−３５７２２６号公報
【特許文献２】特開２００６−１１５３０６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上記の従来の技術は、何れも入力ビットレートを伝送スループットに追従させるものであり、以下のような課題がある。
例えば、無線伝送路や電灯線では、瞬間的な伝送路状態の悪化が度々発生する。この場合、一時的に伝送スループットの低下が発生するが、すぐに伝送スループットが回復することが多いので、入力ビットレートを下げなくてもバッファのオーバーフローは発生しない。しかし、上記の従来の技術では、伝送スループットの低下を検出すると入力ビットレートの値を伝送スループットの値に追従させる制御を行うため、一時的な伝送スループットの低下が発生した場合であっても受信装置で再生される映像の解像度を下げるか、フレームレートを下げることになって、映像品質の低下が発生し、視聴者に違和感を与えるという問題がある。
【０００８】
上記のような一時的な伝送スループットの低下による映像品質の低下を防ぐには、入力ビットレートの制御を行う時間間隔を長くする手法が考えられる。この手法を用いると、一時的な伝送スループットの低下が発生しても、次の入力ビットレートの制御を行うタイミングになるまでに伝送スループットが回復すれば、入力ビットレートの低下は発生しない。しかし、入力ビットレートの制御を行う時間間隔を長くすると、一定時間伝送スループットの低下が継続した場合に、次の入力ビットレートの制御を行うタイミングになるまでにバッファのオーバーフローが発生する可能性が高くなるという問題が生じる。これを避けるために、入力ビットレートの制御を行う時間間隔を短くすると、一時的な伝送スループットの低下によって映像品質の低下が発生するという問題が生じる。
【０００９】
そこで、本発明は、伝送路状態の変動に対して送信されるデータのデータレートの変動を抑えることが可能な送信装置、受信装置、レート制御装置、送信方法及び受信方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために本発明の送信装置は、データを伝送路に送信する送信装置において、伝送路に送信されるデータを一時的に保持するバッファと、前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートの値を検出する第１検出部と、前記バッファの空き容量の値を検出する第２検出部と、前記第２検出部により検出された前記空き容量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記空き容量の減少率の値を算出する減少率演算部と、前記第１検出部によって検出される前記出力レートの値に応じて前記バッファへ入力される所定時間当たりのデータのデータ量を表す入力レートを下げる場合、前記第１検出部によって検出された前記出力レートの値と前記減少率演算部によって算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記入力レートを制御するレート制御処理を行う制御部と、を備える。
【発明の効果】
【００１１】
上記送信装置によれば、出力レートに対応する伝送スループットの低下時に伝送スループットの変動に対して入力レートに対応する送信するデータのデータレートの変動を小さく抑えることが可能になる。その結果、例えば、データレートの激しい変化によって起こされる画質や音質の違和感を抑えることが可能になる。
【図面の簡単な説明】
【００１２】
【図１】第１の実施の形態のネットワーク構成図。
【図２】図１のサーバ側のＡＶ機器の装置構成図。
【図３】図２のバッファの一構成例を説明するための図。
【図４】図２のＣＰＵの機能構成図。
【図５】図４の出力ビットレート検出部の機能構成図。
【図６】図２のＣＰＵが行う入力ビットレート制御処理の流れを示すフローチャート。
【図７】図６の入力ビットレート更新値決定処理の流れを示すフローチャート。
【図８】（ａ），（ｂ），（ｃ）は伝送スループットの低下時の入力レートの制御の一例を説明するための図。
【図９】（ａ），（ｂ），（ｃ）は伝送スループットの増大時の入力レートの制御の一例を説明するための図。
【図１０】（ａ），（ｂ）は、第１の実施の形態の入力ビットレートの制御手法と従来技術の入力ビットレートの制御手法とを比較するための図。
【図１１】（ａ），（ｂ）は、第１の実施の形態の入力ビットレートの制御手法と従来技術の入力ビットレートの制御手法とを比較するための図。
【図１２】第２の実施の形態のネットワーク構成図。
【図１３】図１２のサーバ側のＡＶ機器に接続された中継装置の装置構成図。
【図１４】第３の実施の形態のネットワーク構成図。
【図１５】図１４のサーバ側のＡＶ機器の装置構成図。
【図１６】図１５のＣＰＵの機能構成図。
【図１７】図１５のＣＰＵが行うデータレート変更処理の流れを示すフローチャート。
【図１８】図１４のクライアント側のＡＶ機器の装置構成図。
【図１９】図１８のバッファの一構成例を説明するための図。
【図２０】図１８のＣＰＵの機能構成図である。
【図２１】図２０の伝送スループット検出部の機能構成図。
【図２２】図１８のＣＰＵが行うデータレート演算処理の流れを示すフローチャート。
【図２３】図２２のデータレート更新値決定処理の流れを示すフローチャート。
【図２４】図１４のサーバ側のＡＶ機器からクライアント側のＡＶ機器へデータストリームを配信する場合のシーケンス図。
【図２５】（ａ），（ｂ），（ｃ）は伝送スループットの低下時のデータレートの制御の一例を説明するための図。
【図２６】（ａ），（ｂ），（ｃ）は伝送スループットの増大時のデータレートの制御の一例を説明するための図。
【発明を実施するための形態】
【００１３】
本発明の一態様である第１の送信装置は、データを伝送路に送信する送信装置において、伝送路に送信されるデータを一時的に保持するバッファと、前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートの値を検出する第１検出部と、前記バッファの空き容量の値を検出する第２検出部と、前記第２検出部により検出された前記空き容量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記空き容量の減少率の値を算出する減少率演算部と、前記第１検出部によって検出される前記出力レートの値に応じて前記バッファへ入力される所定時間当たりのデータのデータ量を表す入力レートを下げる場合、前記第１検出部によって検出された前記出力レートの値と前記減少率演算部によって算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記入力レートを制御するレート制御処理を行う制御部と、を備える。
【００１４】
本発明の一態様である第１のレート制御装置は、伝送路に送信されるデータを一時的に保持するバッファと、前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートの値を検出する第１検出部と、前記バッファの空き容量の値を検出する第２検出部と、前記第２検出部により検出された前記空き容量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記空き容量の減少率の値を算出する減少率演算部と、前記第１検出部によって検出される前記出力レートの値に応じて前記バッファへ入力される所定時間当たりのデータのデータ量を表す入力レートを下げる場合、前記第１検出部によって検出された前記出力レートの値と前記減少率演算部によって算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記入力レートを制御するレート制御処理を行う制御部と、を備える。
【００１５】
本発明の一態様である第１の送信方法は、データを伝送路に送信する送信装置において行われる送信方法であって、伝送路に送信されるデータを一時的にバッファに保持する保持ステップと、前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートの値を検出する第１検出ステップと、前記バッファの空き容量の値を検出する第２検出ステップと、前記第２検出ステップにおいて検出された前記空き容量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記空き容量の減少率の値を算出する減少率演算ステップと、前記第１検出ステップにおいて検出される前記出力レートの値に応じて前記バッファへ入力される所定時間当たりのデータのデータ量を表す入力レートを下げる場合、前記第１検出ステップにおいて検出された前記出力レートの値と前記減少率演算ステップにおいて算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記入力レートを制御するレート制御処理を行う制御ステップと、を備える。
【００１６】
これらによれば、出力レートに対応する伝送スループットの低下時に伝送スループットの変動に対して入力レートに対応する送信するデータのデータレートの変動を小さく抑えることが可能になる。
本発明の一態様である第２の送信装置は、第１の送信装置において、前記第１設定値より大きい所定の第２設定値から前記第２検出部により検出された前記空き容量の値を減算した減算値を所定の確保時間で除算することによって前記空き容量の増加率の値を算出する増加率演算部を更に備え、前記制御部は、前記第１検出部によって検出される前記出力レートの値に応じて前記入力レートを上げる場合、前記第１検出部によって検出された前記出力レートの値から前記増加率演算部によって算出された前記増加率の値を減算し、減算値である第２制御値に基づいて前記入力レートを制御する。
【００１７】
これによれば、出力レートに対応する伝送スループットの増大時に伝送スループットの変動に対して入力レートに対応する送信するデータのデータレートの変動を小さく抑えることが可能になる。
本発明の一態様である第３の送信装置は、第１の送信装置において、前記制御部は、前記第２検出部によって検出された前記空き容量の値が所定の第１閾値より小さい場合に、前記レート制御処理を行う。
【００１８】
これによれば、バッファの空き容量の値が第１閾値以上の場合には伝送スループットが安定していると判断し、伝送スループットが安定している間は入力レートを変更しないようにする。これにより、伝送スループットが安定している状態で伝送スループットが変動したとしても入力レートに対応する送信するデータのデータレートを一定に保つことが可能になる。
【００１９】
本発明の一態様である第４の送信装置は、第２の送信装置において、前記制御部は、前記第２検出部によって検出された前記空き容量の値が所定の第２閾値以上の場合に、前記入力レートの値が固定され又は所定値になるように前記入力レートを制御する。
これによれば、バッファの空き容量の値が第２閾値以上の場合には伝送スループットが安定していると判断し、伝送スループットが安定している間は入力レートを変更しないようにする。これにより、伝送スループットが安定している状態で伝送スループットが変動したとしても入力レートに対応する送信するデータのデータレートを一定に保つことが可能になる。
【００２０】
本発明の一態様である第５の送信装置は、第２の送信装置において、前記制御部は、現在の前記入力レートの値が前記第１制御値を上回る場合、前記入力レートの値が前記第１制御値になるように前記入力レートを制御し、現在の前記入力レートの値が前記第２制御値を下回る場合、前記入力レートの値が前記第２制御値になるように前記入力レートを制御する。
【００２１】
これによれば、現在の入力レートの値と第１制御値及び第２制御値との大小関係を利用することによって、伝送スループットの変動に合わせて入力レートの制御を適切に行うことができる。
本発明の一態様である第６の送信装置は、第５の送信装置において、前記制御部は、現在の前記入力レートの値が前記第２制御値以上前記第１制御値以下の場合、前記入力レートの値が維持されるように前記入力レートを制御する。
【００２２】
これによれば、入力レートの値の急激な変化を防止することができる。
本発明の一態様である第７の送信装置は、第１の送信装置において、前記制御部は、前記第１制御値が送信するデータに設定可能な最大データレートの値を上回る場合、前記入力レートの値が前記最大データレートの値になるように前記入力レートを制御する。
これによれば、送信するデータに設定可能な最大データレートの値を上回るデータレートでのデータ変換が行われることを回避でき、データ変換時のエラー発生を防止できる。
【００２３】
本発明の一態様である第８の送信装置は、第２の送信装置において、前記制御部は、前記第２制御値が送信するデータに設定可能な最大データレートの値を上回る場合、前記入力レートの値が前記最大データレートの値になるように前記入力レートを制御する。
これによれば、送信するデータに設定可能な最大データレートの値を上回るデータレートでのデータ変換が行われることを回避でき、データ変換時のエラー発生を防止できる。
【００２４】
本発明の一態様である第１の受信装置は、データを伝送路から受信する受信装置において、伝送路から受信されるデータを一時的に保持するバッファと、前記バッファに入力される所定時間当たりのデータのデータ量を表す入力レートの値を検出する第１検出部と、前記バッファのデータの蓄積量の値を検出する第２検出部と、前記第２検出部により検出された前記蓄積量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記蓄積量の減少率の値を算出する減少率演算部と、前記第１検出部によって検出される前記入力レートの値に応じて前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートを下げる場合、前記第１検出部によって検出された前記入力レートの値と前記減少率演算部によって算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記出力レートを更新しようとする出力レートの更新値を決定し、決定した前記出力レートの更新値を送信装置に対して通知するレート制御処理を行う制御部と、を備える。
【００２５】
本発明の一態様である第２のレート制御装置は、伝送路から受信されるデータを一時的に保持するバッファと、前記バッファに入力される所定時間当たりのデータのデータ量を表す入力レートの値を検出する第１検出部と、前記バッファのデータの蓄積量の値を検出する第２検出部と、前記第２検出部により検出された前記蓄積量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記蓄積量の減少率の値を算出する減少率演算部と、前記第１検出部によって検出される前記入力レートの値に応じて前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートを下げる場合、前記第１検出部によって検出された前記入力レートの値と前記減少率演算部によって算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記出力レートを更新しようとする出力レートの更新値を決定し、決定した前記出力レートの更新値を送信装置に対して通知するレート制御処理を行う制御部と、を備える。
【００２６】
本発明の一態様である第１の受信方法は、データを伝送路から受信する受信装置において行われる受信方法であって、伝送路から受信されるデータを一時的にバッファに保持する保持ステップと、前記バッファに入力される所定時間当たりのデータのデータ量を表す入力レートの値を検出する第１検出ステップと、前記バッファのデータの蓄積量の値を検出する第２検出ステップと、前記第２検出ステップにおいて検出された前記蓄積量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記蓄積量の減少率の値を算出する減少率演算ステップと、前記第１検出ステップにおいて検出される前記入力レートの値に応じて前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートを下げる場合、前記第１検出ステップにおいて検出された前記入力レートの値と前記減少率演算部によって算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記出力レートを更新しようとする出力レートの更新値を決定し、決定した前記出力レートの更新値を送信装置に対して通知するレート制御処理を行うステップと、を備える。
【００２７】
これらによれば、入力レートに対応する伝送スループットの低下時に伝送スループットの変動に対して出力レートに対応する送信するデータのデータレートの変動を小さく抑えることが可能になる。
本発明の一態様である第２の受信装置は、第１の受信装置において、前記第１設定値より大きい所定の第２設定値から前記第２検出部により検出された前記蓄積量の値を減算した減算値を所定の確保時間で除算することによって前記蓄積量の増加率の値を算出する増加率演算部を更に備え、前記制御部は、前記第１検出部によって検出される前記入力レートの値に応じて前記出力レートを上げる場合、前記第１検出部によって検出された前記入力レートの値から前記増加率演算部によって算出された前記増加率の値を減算し、減算値である第２制御値に基づいて前記出力レートの更新値を決定し、決定した前記出力レートの更新値を前記送信装置に対して通知する。
【００２８】
これによれば、入力レートに対応する伝送スループットの増大時に伝送スループットの変動に対して出力レートに対応する送信するデータのデータレートの変動を小さく抑えることが可能になる。
本発明の一態様である第３の受信装置は、第１の受信装置において、前記制御部は、前記第２検出部によって検出された前記蓄積量の値が所定の第１閾値より小さい場合に、前記レート制御処理を行う。
【００２９】
これによれば、バッファの蓄積量の値が第１閾値以上の場合には伝送スループットが安定していると判断し、伝送スループットが安定している間は出力レートを変更しないようにする。これにより、伝送スループットが安定している状態で伝送スループットが変動したとしても出力レートに対応する送信するデータのデータレートを一定に保つことが可能になる。
【００３０】
本発明の一態様である第４の受信装置は、第２の受信装置において、前記制御部は、前記第２検出部によって検出された前記蓄積量の値が所定の第２閾値以上の場合に、前記出力レートの値が固定され又は所定値になるように前記出力レートの更新値を決定する。
これによれば、バッファの蓄積量の値が第２閾値以上の場合には伝送スループットが安定していると判断し、伝送スループットが安定している間は出力レートを変更しないようにする。これにより、伝送スループットが安定している状態で伝送スループットが変動したとしても出力レートに対応する送信するデータのデータレートを一定に保つことが可能になる。
【００３１】
本発明の一態様である第５の受信装置は、第２の受信装置において、前記制御部は、現在の前記出力レートの値が前記第１制御値を上回る場合、前記出力レートの更新値を前記第１制御値に決定し、現在の前記出力レートの値が前記第２制御値を下回る場合、前記出力レートの更新値を前記第２制御値に決定する。
これによれば、現在の入力レートの値と第１制御値及び第２制御値との大小関係を利用することによって、伝送スループットの変動に合わせて入力レートの制御を適切に行うことができる。
【００３２】
本発明の一態様である第６の受信装置は、第５の受信装置において、前記制御部は、現在の前記出力レートの値が前記第２制御値以上前記第１制御値以下の場合、前記出力レートの値が維持されるように前記出力レートの更新値を決定する。
これによれば、出力レートの値の急激な変化を防止することができる。
以下、本発明の実施の形態について、図面を参照しつつ説明する。
【００３３】
≪第１の実施の形態≫
以下、本発明の第１の実施の形態について図面を参照しつつ説明する。
＜ネットワーク構成及び動作＞
図１は本実施の形態のネットワーク構成図であり、ネットワーク１にはＡＶ機器２，３が含まれている。
【００３４】
本実施の形態では、ＡＶ機器２は、メディアデータを記憶保持し、メディアデータを送信するサーバ側のＡＶ機器であり、ＡＶ機器３は、他の機器から送信されたメディアデータを受信し、受信したメディアデータを再生、表示するクライアント側のＡＶ機器である。ＡＶ機器２は、例えば、通信機能を備えた映像コンテンツデータを記憶可能なＨＤＤ（HardDisk Drive）レコーダ機器やＢｌｕ−ｒａｙ  Ｄｉｓｋ（登録商標）レコーダ機器などである。ＡＶ機器３は、通信機能を備えたテレビなどのディスプレイ装置などである。通信機能として、ＩＥＥＥ８０２．１１標準規格の無線ＬＡＮ（LocalArea Network）などの無線通信、ＨＤ−ＰＬＣ（登録商標）などの電力線通信、Ｅｔｈｅｒｎｅｔ（登録商標）などの通信、同軸ケーブル通信などがあり、図１では通信機能を無線通信で表している。
【００３５】
ＡＶ機器２は例えば蓄積している映像コンテンツデータをストリーミング配信し、ＡＶ機器３はストリーミング配信されている映像コンテンツデータを受信し、受信した映像コンテンツデータを再生、表示する。これによって、視聴者はＡＶ機器２に蓄積されている映像コンテンツデータの映像をＡＶ機器３で視聴することができる。
以下、サーバ側のＡＶ機器２の詳細を図面を参照しつつ説明する。なお、クライアント側のＡＶ機器３は一般的なＡＶ機器が利用でき、詳細な説明を省略する。
【００３６】
＜ＡＶ機器（サーバ側）の装置構成＞
図２は図１のサーバ側のＡＶ機器２の装置構成図であり、ＡＶ機器２は、メディアデータ記憶部１１と、符号変換部１２と、メモリ１３と、ＣＰＵ（CentralProcessing Unit）１４と、通信インターフェース部（以下、「通信Ｉ／Ｆ部」と称する。）１５とを備える。
【００３７】
メディアデータ記憶部１１は、例えばＨＤＤで構築され、映像データや音声データなどのメディアコンテンツを記憶保持する機能を有する。
符号変換部１２は、映像データや音声データなどのメディアデータのビットレート（データレート）を変換する機能を有する。メディアデータのビットレートを変換する方法として、圧縮、符号化されたメディアデータを一旦デコードし、異なるビットレートに再エンコードする方法や、メディアデータをデコードせずに、異なるビットレートに再エンコードするトランスコーディングと呼ばれる方法などがあるが、入力されたメディアデータを異なるビットレートのメディアデータに変換して出力できれば、いかなる変換方法や符号化方法で実装されていてもよい。なお、符号変換部１２に入力される例えば映像データ及び音声データは、必ずしも圧縮、符号化されている必要はない。例えば、圧縮、符号化されていない映像データ及び音声データを入力して、圧縮、符号化処理を行って圧縮、符号化された映像データ及び音声データを出力してもよい。
【００３８】
メモリ１３は、例えば、ＲＯＭ（Read Only Memory）やＲＡＭ（Random Access Memory）などの半導体メモリで構築される。メモリ１３は、各種制御プログラムや各種アプリケーションプログラムなどのプログラムを記憶保持しており、例えば、通信Ｉ／Ｆ部１５内の後述するバッファ１７へ入力される所定時間当たりのメディアデータのデータ量を制御するためのプログラム（以下、「入力ビットレート制御プログラム」と言う。）１６を記憶保持している。また、メモリ１３は、ＣＰＵ１４が動作する際に使用する領域を有する。
【００３９】
ＣＰＵ１４は、メモリ１３に記憶保持されているプログラムを読み出し、読み出したプログラムを実行することによって、ＡＶ機器２全体の各種制御や各種演算を行う機能を有する。例えば、ＣＰＵ１４は、メモリ１３から入力ビットレート制御プログラム１６を読み出して、読み出した入力ビットレート制御プログラム１６を実行する。なお、この処理については、図４から図７を参照して後述する。
【００４０】
通信Ｉ／Ｆ部１５は、ネットワークを介してデータを送受信する機能、例えば、データ信号の変復調やメディアアクセス制御を行う機能を有し、ここでは、無線通信の通信Ｉ／Ｆ部とする。通信Ｉ／Ｆ部１５は内部にバッファ１７を有し、バッファ１７は送信バッファである。なお、バッファ１７については図３を参照して後述する。
例えば、メディアデータをクライアント側のＡＶ機器３へ送信する場合、ＣＰＵ１４は入力ビットレート制御プログラム１６を実行して後述する入力ビットレート更新値を算出し、符号変換部１２は算出された入力ビットレート更新値に従ってメディアデータ記憶部１１に記憶保持されているメディアデータに対してビットレート（データレート）の変換を施す。そして、通信Ｉ／Ｆ部１５は変換されて得られたメディアデータをバッファ１７に一時的に蓄積しながらネットワークを介してクライアント側のＡＶ機器３へ送出する。
【００４１】
このように、ＡＶ機器２内にバッファ１７に入力されるデータのビットレート（データレート）を変更する符号変換部１２を備えることで、入力ビットレートの変更を即座に行うことが可能になる。
＜バッファの構成＞
図３は図２のバッファ１７の一構成例を説明するための図である。
【００４２】
蓄積量２１はバッファ１７に蓄積されているデータのデータ量を表し、バッファ空き容量２２はバッファ１７に蓄積可能な残りのデータのデータ量を表す。データ量の単位は蓄積量２１及びバッファ空き容量２２ともビット或いはバイト等で表すことができ、本実施の形態ではビットを用いて説明する。
入力ビットレート２３は、バッファ１７に入力されるメディアデータの単位時間当たりのデータ量を表し、出力ビットレート２４はバッファ１７から出力されるメディアデータの単位時間当たりのデータ量を表す。本実施の形態では、入力ビットレート２３及び出力ビットレート２４の単位としてｂｐｓ（bitper second）を用いて説明する。ここでは、入力ビットレート２３は符号変換部１２から出力されるメディアデータのビットレート（データレート）と等しく、出力ビットレート２４は通信Ｉ／Ｆ部１５がメディアデータを送信する際の伝送スループットと等しいとする。
【００４３】
バッファ１７は、ＦＩＦＯ（First In First Out）の動作原理に従い、入力されたメディアデータを入力された順に出力する。このとき、入力ビットレート２３と出力ビットレート２４とが等しい場合、バッファ１７の蓄積量２１は変化しない。入力ビットレート２３と出力ビットレート２４とが等しくない場合、入力ビットレート２３と出力ビットレート２４との差分に応じて、バッファ１７の蓄積量２１は増減する。つまり、入力ビットレート２３が出力ビットレート２４より大きい場合にはバッファ１７の蓄積量２１は増加し、入力ビットレート２３が出力ビットレート２４より小さい場合にはバッファ１７の蓄積量２１は減少する。
【００４４】
例えば、入力ビットレート２３が１２Ｍｂｐｓで出力ビットレート２４が８Ｍｂｐｓの場合、４Ｍｂｐｓの速度でバッファ１７の蓄積量２１は増加し、言い換えると、４Ｍｂｐｓの速度でバッファ１７のバッファ空き容量２２は減少する。一方、入力ビットレート２３が６Ｍｂｐｓで出力ビットレート２４が９Ｍｂｐｓの場合、３Ｍｂｐｓの速度でバッファ１７の蓄積量２１は減少し、言い換えると、３Ｍｂｐｓの速度でバッファ１７のバッファ空き容量２２は増加する。
【００４５】
＜ＣＰＵの機能構成＞
図４は図２のＣＰＵ１４の機能構成図である。但し、図４には、ＣＰＵ１４の機能構成の理解を容易にするため、ＡＶ機器２の他の構成要素も図示している。
ＣＰＵ１４は、メモリ１３からそれに記憶保持されている入力ビットレート制御プログラム１６を読み出し、読み出した入力ビットレート制御プログラム１６を実行する。これによって、ＣＰＵ１４は、出力ビットレート検出部３１、バッファ空き容量検出部３２、減少率／増加率演算部３３、入力ビットレート演算部３４、及び入力ビットレート決定部３５として機能する。
【００４６】
出力ビットレート検出部３１は、バッファ１７から出力されるメディアデータの出力ビットレート２４の値即ち伝送スループットの値を検出し、検出した出力ビットレート２４の値を入力ビットレート演算部３４へ出力する。
ここで、出力ビットレート検出部３１の機能構成について図５を参照しつつ説明する。図５は図４の出力ビットレート検出部３１の機能構成図である。なお、図５では、出力ビットレート検出部３１の内部要素と通信Ｉ／Ｆ部１５及び入力ビットレート演算部３４の接続関係を明確にするために、通信Ｉ／Ｆ部１５及び入力ビットレート演算部３４も図示している。
【００４７】
出力ビットレート検出部３１は、入力ビットレート検出部４１、バッファ変化率演算部４２、及び出力ビットレート演算部４３として機能する。
入力ビットレート検出部４１は、バッファ１７に入力されるメディアデータの単位時間当たりのデータ量を検出し、検出結果を入力ビットレート２３の値として出力ビットレート演算部４３へ出力する。なお、入力ビット検出部４１は、入力ビットレート決定部３５が符号変換部１２に対して出力する後述の入力ビットレート更新値を入力ビットレート２３の値として検出するようにしてもよい。
【００４８】
バッファ変化率演算部４２は、バッファ１７の蓄積量２１の単位時間当たりの増加や減少を変化率として算出し、算出した変化率の値を出力ビットレート演算部４３へ出力する。但し、蓄積量２１が増加した場合の変化率を正の値で表し、蓄積量２１が減少した場合の変化率を負の値で表すことにする。
出力ビットレート演算部４３は、入力ビットレート検出部４１から入力された入力ビットレート２３の値からバッファ変化率演算部４２から入力された変化率の値を減算することによって出力ビットレート２４の値を算出し（出力ビットレート＝入力ビットレート−変化率）、算出した出力ビットレート２４の値を入力ビットレート演算部３４へ出力する。
【００４９】
バッファ空き容量検出部３２は、バッファ１７のバッファ空き容量２２の値を検出し、検出したバッファ空き容量２２の値を減少率／増加率演算部３３へ出力する。
減少率／増加率演算部３３は、バッファ空き容量検出部３２から入力されたバッファ１７のバッファ空き容量２２の値を利用して、バッファ１７のバッファ空き容量２２の許容される減少率の値及び増加率の値を算出し、算出した減少率の値及び増加率の値を入力ビットレート演算部３４へ出力する。
【００５０】
減少率／増加率演算部３３は増加率の算出を次のようにして行う。減少率／増加率演算部３３は、予め設定された増加率設定値からバッファ１７のバッファ空き容量２２の値を減算し、減算値を予め定められた一定時間（以下、「確保時間」と言う。）で除算することによって、増加率の値を算出する（増加率＝（増加率設定値−バッファ空き容量）／確保時間）。但し、増加率設定値とは、入力ビットレート２３を制御してバッファ空き容量２２の増減を調整し、確保時間後の目標とするバッファ空き容量２２の最大値であり、増加率設定値は主として入力ビットレートを増大させる制御を行う際に利用される。算出される増加率の値は、確保時間後に増加率設定値までバッファ空き容量２２の値を増加させようとした場合に必要な単位時間当たりのバッファ空き容量２２の増加率の値ということになる。
【００５１】
また、減少率／増加率演算部３３は減少率の算出を次のようにして行う。減少率／増加率演算部３３は、バッファ１７のバッファ空き容量２２の値から予め設定された減少率設定値を減算し、減算値を確保時間で除算することによって、減少率の値を算出する（減少率＝（バッファ空き容量−減少率設定値）／確保時間）。但し、減少率設定値とは、入力ビットレート２３を制御してバッファ空き容量２２の増減を調整し、確保時間後の目標とするバッファ空き容量２２の最小値であり、減少率設定値は主として入力ビットレートを低下させる制御を行う際に利用される。算出される減少率の値は、確保時間後に減少率設定値までバッファ空き容量２２の値を減少させようとした場合に必要な単位時間当たりのバッファ空き容量２２の減少率の値ということになる。
【００５２】
但し、増加率設定値は減少率設定値より大きい。増加率設定値は設計時に任意の値にすることができるが、例えば増加率設定値をバッファ１７の最大蓄積量としてもよい。減少率設定値は設計時に任意の値にすることができるが、例えば減少率設定値をゼロに設定してもよい。増加率及び減少率の算出に用いる確保時間は設計時に任意の値に設定することができるが、例えば連続的に発生する伝送路誤りの継続時間とすることができる。なお、増加率の算出に用いる確保時間と減少率の算出に用いる確保時間とを同じ値にしてもよいし、異なる値にしてもよい。
【００５３】
入力ビットレート演算部３４は、出力ビットレート検出部３１から入力された出力ビットレートの値に減少率／増加率演算部３３から入力された減少率の値を加算し、加算値を入力ビットレート上限値として入力ビットレート決定部３５へ出力する（入力ビットレート上限値＝出力ビットレート＋減少率）。但し、入力ビットレート上限値は、入力ビットレートを更新する際に許容される入力ビットレートの上限値である。
【００５４】
また、入力ビットレート演算部３４は、出力ビットレート検出部３１から入力された出力ビットレートの値から減少率／増加率演算部３３から入力された増加率の値を減算し、減算値を入力ビットレート下限値として入力ビットレート決定部３５へ出力する（入力ビットレート下限値＝出力ビットレート−増加率）。但し、入力ビットレート下限値は、入力ビットレートを更新する際に許容される入力ビットレートの下限値である。
【００５５】
入力ビットレート決定部３５は、図５の入力ビットレート検出部４１で検出される現在の入力ビットレートの値と、入力ビットレート演算部３４から入力される入力ビットレート上限値及び入力ビットレート下限値と、送信するメディアデータに設定可能な最大データレートの値とに基づいて、入力ビットレート更新値を決定し、決定した入力ビットレート更新値を符号変換部１２に対して通知する。但し、現在の入力ビットレートの値として符号変換部１２に対して出力する入力ビットレート更新値を用いるようにしてもよい。なお、符号変換部１２は、メディアデータ記憶部１１に記憶されているメディアデータのビットレート（データレート）をＣＰＵ１４の入力ビットレート決定部３５から通知された入力ビットレート更新値に従って変換し、変換により得られたメディアデータを通信Ｉ／Ｆ部１５内のバッファ１７へ出力する。
【００５６】
詳述すれば、入力ビットレート決定部３５は、現在の入力ビットレートの値が入力ビットレート下限値以上入力ビットレート上限値以下であれば、入力ビットレート更新値を現在の入力ビットレートの値に設定する。入力ビットレート決定部３５は、現在の入力ビットレートの値が入力ビットレート下限値より小さければ、入力ビットレート更新値を入力ビットレート下限値に設定し、現在の入力ビットレートの値が入力ビットレート上限値より大きければ、入力ビットレート更新値を入力ビットレート上限値に設定する。
【００５７】
さらに、入力ビットレート決定部３５は、上述したように設定した入力ビットレート更新値が送信するメディアデータに設定可能な最大データレートの値より大きければ、入力ビットレート更新値を最大データレートの値に再設定する。
図４及び図５を用いて説明したＣＰＵ１４の構成によれば、バッファ１７のバッファ空き容量２２、入力ビットレート２３、及びバッファ１７のバッファ空き容量２２の変化率というバッファの状態を検出するだけで、入力ビットレートの制御を行うことができる。このため、入力ビットレートの制御が容易になり、ＡＶ機器２の構成を簡略化することができる。
【００５８】
＜ＣＰＵの動作＞
図６は図２のＣＰＵ１４が行う入力ビットレート制御処理の流れを示すフローチャートである。但し、ＣＰＵ１４はメモリ１３からそれに記憶されている入力ビットレート制御プログラム１６を読み出し、読み出した入力ビットレート制御プログラム１６を実行することによって、図６及び後述する図７のフローチャートの処理を実行する。
【００５９】
ＣＰＵ１４は、バッファ１７のバッファ空き容量２２の値が予め設定された制御開始閾値より小さいかを判定する（ステップＳ１０１）。
バッファ空き容量２２の値が制御開始閾値以上である間（Ｓ１０１：ＮＯ）、ステップＳ１０１の処理が繰り返し行われ、入力ビットレート２３の更新は行われない。例えば、バッファ空き容量２２の値が制御開始閾値より小さくなるまで、伝送スループットが安定していると判断し、入力ビットレート２３の更新が行われない。また、伝送路の状態が回復してバッファ空き容量２２の値が制御開始閾値以上になってから再度バッファ空き容量２２の値が制御開始閾値よりも小さくなるまで、伝送スループットが安定していると判断し、入力ビットレート２３の値はバッファ空き容量２２の値が制御開始閾値以上になった時点の入力ビットレート２３の値で固定される。このように、バッファ１７のバッファ空き容量２２の値が制御開始閾値以上にある場合は伝送スループットが安定していると判断し、伝送スループットが安定している場合におけるバッファ１７のバッファ空き容量２２の瞬時的な変動に対して入力ビットレート２３の更新は行われない。このため、伝送スループットが安定した状態では入力ビットレート２３が一定値に保たれる。これにより、例えば映像データの送信時に、伝送スループットが安定した状態ではクライアント側のＡＶ機器３で再生される映像の解像度が下がったりフレームレートが低くなったりする変化が発生せず、視聴者は違和感なく映像を視聴することができる。
【００６０】
一方、バッファ空き容量２２の値が制御開始閾値より小さいと判定された場合（Ｓ１０１：ＹＥＳ）、ＣＰＵ１４は、図７に処理の流れを示す入力ビットレート更新値決定処理を実行することによって入力ビットレート更新値を決定する（ステップＳ１０２）。そして、ＣＰＵ１４の入力ビットレート決定部３５は、ステップＳ１０２で決定された入力ビットレート更新値を符号変換部１２に対して通知し（ステップＳ１０３）、ステップＳ１０１の処理が行われる。符号変換部１２は、メディアデータ記憶部１１に記憶されているメディアデータのビットレート（データレート）を通知された入力ビットレート更新値に従って変換し、変換により得られたメディアデータを通信Ｉ／Ｆ部１５内のバッファ１７へ出力する。通信Ｉ／Ｆ部１５はバッファ１７に蓄積されているメディアデータをネットワークを介して例えばクライアント側のＡＶ機器３へ送信する。
【００６１】
［入力ビットレート更新値決定処理］
図７は図６の入力ビットレート更新値決定処理（ステップＳ１０２）の流れを示すフローチャートである。
出力ビットレート検出部３１において、入力ビットレート検出部４１はバッファ１７に入力されているメディアデータの入力ビットレート２３の値を検出し、バッファ変化率演算部４２はバッファ１７の蓄積量２１の変化率の値を算出する。そして、出力ビットレート演算部４３は検出された入力ビットレート２３の値から算出された変化率の値を減算することによって、出力ビットレート２４の値を算出する（ステップＳ２０１）。
【００６２】
バッファ空き容量検出部３２はバッファ１７のバッファ空き容量２２の値を検出する（ステップＳ２０２）。減少率／増加率演算部３３は、増加率設定値からステップＳ２０２で検出されたバッファ空き容量２２の値を減算し、減算値を確保時間で除算することによって、増加率の値を算出する（ステップＳ２０３）。また、減少率／増加率演算部３３は、ステップＳ２０２で検出されたバッファ空き容量２２の値から減少率設定値を減算し、減算値を確保時間で除算することによって、減少率の値を算出する（ステップＳ２０４）。
【００６３】
入力ビットレート演算部３４は、ステップＳ２０１で検出された出力ビットレートの値にステップＳ２０４で算出された減少率の値を加算し、加算値を入力ビットレート上限値とする（ステップＳ２０５）。また、入力ビットレート演算部３４は、ステップＳ２０１で検出された出力ビットレートの値からステップＳ２０３で算出された増加率の値を減算し、減算値を入力ビットレート下限値とする（ステップＳ２０６）。
【００６４】
入力ビットレート決定部３５は、現在の入力ビットレートの値がステップＳ２０６で得られた入力ビットレート下限値以上ステップＳ２０５で得られた入力ビットレート上限値以下の範囲内であるかを判定する（ステップＳ２０７）。
現在の入力ビットレートの値がその範囲内であれば（Ｓ２０７：ＹＥＳ）、入力ビットレート決定部３５は、入力ビットレート更新値を現在の入力ビットレートの値に設定し（ステップＳ２０８）、ステップＳ２１２の処理へ移行する。このようにすることにより、伝送スループットが回復した状態から再度低下した場合や伝送スループットが低下した状態から回復した場合に、現在の入力ビットレートの値が入力ビットレート下限値以上入力ビットレート上限値以下の範囲内であれば入力ビットレートの更新が行われない。このため、現在の入力ビットレートの値が上記の範囲内であれば伝送スループットが変動しても入力ビットレートは変動することなく安定する。これにより、例えばクライアント側のＡＶ機器３で再生される映像の解像度やフレームレートが急激に上がったり下がったりするような状況を回避でき、視聴者は安定した品質の映像を視聴することができる。
【００６５】
一方、現在の入力ビットレートの値がその範囲内になければ（Ｓ２０７：ＮＯ）、入力ビットレート決定部３５は、現在の入力ビットレートの値が入力ビットレート上限値より大きいかを判定する（ステップＳ２０９）。
現在の入力ビットレートの値が入力ビットレート上限値より大きければ（Ｓ２０９：ＹＥＳ）、出力ビットレートの低下かバッファ１７のバッファ空き容量２２の低下により入力ビットレート上限値が現在の入力ビットレートの値より低下した状況であることから、入力ビットレート決定部３５は、入力ビットレートを下げるべく、入力ビットレート更新値を入力ビットレート上限値に設定し（ステップＳ２１０）、ステップＳ２１２の処理へ移行する。
【００６６】
一方、現在の入力ビットレートの値が入力ビットレート上限値より大きくなければ、つまり、現在の入力ビットレートの値が入力ビットレート下限値より小さければ（Ｓ２０９：ＮＯ）、出力ビットレートの増大かバッファ１７のバッファ空き容量２２の増加により入力ビットレート下限値が現在の入力ビットレートの値より増大した状況であることから、入力ビットレート決定部３５は、入力ビットレートを上げるべく、入力ビットレート更新値を入力ビットレート下限値に設定し（ステップＳ２１１）、ステップＳ２１２の処理へ移行する。
【００６７】
入力ビットレート決定部３５は、ステップＳ２０８、ステップＳ２１０又はステップＳ２１１で設定された入力ビットレート更新値が、送信するメディアデータに設定可能な最大データレートの値より大きいかを判定する（ステップＳ２１２）。設定された入力ビットレート更新値が最大データレートの値より大きければ（Ｓ２１２：ＹＥＳ）、入力ビットレート決定部３５は、入力ビットレート更新値を最大データレートの値に再設定し（ステップＳ２１３）、図６のステップＳ１０３が行われる。このようにすることにより、符号変換部１２に通知される入力ビットレート更新値が最大データレートの値を超えることがなくなるため、符号変換部１２が最大データレートの値を超える入力ビットレート更新値に従ってメディアデータのビットレート（データレート）を変換することがなく、メディアデータの変換時のエラー発生を回避することができる。一方、設定された入力ビットレート更新値が最大データレートの値以下であれば（Ｓ２１２：ＮＯ）、入力ビットレート更新値を再設定することなく、図６のステップＳ１０３が行われる。
【００６８】
＜入力ビットレートの制御例＞
入力ビットレートの制御の一例として、伝送スループットが低下し、一定時間後に伝送スループットが回復する状況におけるバッファ１７へ入力されるメディアデータの入力ビットレート即ちメディアデータのデータレートの制御について図８及び図９を参照しつつ説明する。
【００６９】
図８（ａ）及び図９（ａ）は、伝送スループット即ちバッファ１７から出力されるメディアデータの出力ビットレート２４の時間的変動を示す図であり、縦軸はレート（ｂｐｓ）を、横軸は時間を表す。図８（ａ）及び図９（ａ）では、時間Ｔ０で伝送路の状態の悪化が発生して伝送スループットが急激に下がり始め、一定時間後の時間Ｔ３で伝送路の状態が回復して伝送スループットが急激に上がり始めている様子が示されている。
【００７０】
図８（ｂ）及び図９（ｂ）は、送信されるメディアデータのデータレート即ちバッファ１７に入力されるメディアデータの入力ビットレート２３の時間的な変動を示す図であり、縦軸はレート（ｂｐｓ）を、横軸は時間を表す。
図８（ｃ）及び図９（ｃ）は、バッファ１７のバッファ空き容量２２の時間的な変動を示す図であり、縦軸はバッファ空き容量を、横軸は時間を表す。
【００７１】
［伝送スループット低下時の入力ビットレートを低下させる制御］
以下、伝送スループット低下時の入力ビットレートを低下させる制御の一例を図８（ａ）〜図８（ｃ）を参照して説明する。
時間Ｔ０で、伝送路状態が悪化して伝送スループット即ちバッファ１７から出力されるメディアデータの出力ビットレート２４が低下し始め、出力ビットレート２４の値がＴＰＡからＴＰＢまで低下する。この出力ビットレート２４の低下に伴い、バッファ空き容量２２が減少する。そして、時間Ｔ１まではバッファ空き容量２２の値が制御開始閾値ＲＴＨ以上なので、入力ビットレート２３の値はそのままである（図６のステップＳ１０１参照）。このように、バッファ空き容量２２の値が制御開始閾値ＲＴＨ以上の間は、出力ビットレート２４の値が低下しても入力ビットレート２３の値は低下しない。
【００７２】
バッファ空き容量２２の値は、入力ビットレート２３の値と出力ビットレート２４の値との差分に応じて減少し、時間Ｔ１でバッファ空き容量２２の値が制御開始閾値ＲＴＨを下回ったとする。ＣＰＵ１４は入力ビットレート更新値の決定及び符号変換部１２に対する入力ビットレート更新値の通知を開始し、バッファ空き容量２２の値が制御開始閾値ＲＴＨ以上になるまで、入力ビットレート更新値の決定及び符号変換部１２に対する入力ビットレート更新値の通知を行う（図６参照）。
【００７３】
ＣＰＵ１４の出力ビットレート検出部３１は出力ビットレート２４の値を検出し、バッファ空き容量検出部３２はバッファ１７のバッファ空き容量２２の値を検出し、減少率／増加率演算部３３は増加率の値及び減少率の値を算出し、入力ビットレート演算部３４は入力ビットレート上限値及び入力ビットレート下限値を算出する（図７のステップＳ２０１〜ステップＳ２０６参照）。ここでは、入力ビットレート決定部３５は、現在の入力ビットレートの値が入力ビットレート上限値より大きいとし、入力ビットレート更新値を入力ビットレート上限値に設定する（図７のステップＳ２０７、Ｓ２０９、Ｓ２１０参照）。ここでは、入力ビットレート決定部３５は、入力ビットレート更新値が最大データレートの値以下であるとし（図７のステップＳ２１２参照）、入力ビットレート更新値を再設定することなく入力ビットレート更新値（ここでは、入力ビットレート上限値に等しい値）を符号変換部１２に対して通知する（図６のステップＳ１０３参照）。これにより、入力ビットレート２３の値は出力ビットレート２４の値より大きな値で徐々に小さくなる。
【００７４】
例えば、減少率設定値がＲＤＷ、確保時間がＴａであり、時間Ｔ２におけるバッファ１７のバッファ空き容量２２がＲ２、時間Ｔ２における出力ビットレート２４がＴＰＢであるとする。時間Ｔ２における減少率をＴＰＤ２で表わすと、ＴＰＤ２＝（Ｒ２−ＲＤＷ）／Ｔａになる。時間Ｔ２における入力ビットレート上限値は時間Ｔ２における出力ビットレート２４の値（ＴＰＢ）に時間Ｔ２における減算率の値（ＴＰＤ２）を加算した加算値ＴＰＢ＋ＴＰＤ２になる。そして、時間Ｔ２における入力ビットレート更新値をＴＰ２で表わすと、ＴＰ２＝ＴＰＢ＋ＴＰＤ２になる。
【００７５】
［伝送スループット増大時の入力ビットレートを増大させる制御］
以下、伝送スループット増大時の入力ビットレートを増大させる制御の一例を図９（ａ）〜図９（ｃ）を参照して説明する。
時間Ｔ３で、伝送路状態の悪化により伝送スループットが低下した状態から伝送路状態の回復に伴い伝送スループットが回復したとする。
【００７６】
ＣＰＵ１４の出力ビットレート検出部３１は出力ビットレートの値を検出し、バッファ空き容量検出部３２はバッファ１７のバッファ空き容量２２の値を検出し、減少率／増加率演算部３３は増加率の値及び減少率の値を算出し、入力ビットレート演算部３４は入力ビットレート上限値及び入力ビットレート下限値を算出する（図７のステップＳ２０１〜ステップＳ２０６参照）。ここでは、入力ビットレート決定部３５は、現在の入力ビットレートの値が入力ビットレート下限値より小さいとし、入力ビットレート更新値を入力ビットレート下限値に設定する（図７のステップＳ２０７、Ｓ２０９、Ｓ２１１参照）。ここでは、入力ビットレート決定部３５は、入力ビットレート更新値が最大データレートの値以下であるとし（図７のステップＳ２１２参照）、入力ビットレート更新値を再設定することなく入力ビットレート更新値（ここでは、入力ビットレート下限値に等しい値）を符号変換部１２に対して通知する（図６のステップＳ１０３参照）。これにより、入力ビットレート２３の値は出力ビットレート２４の値より小さな値で徐々に大きくなる。
【００７７】
例えば、増加率設定値がＲＵＰ、確保時間がＴａであり、時間Ｔ４におけるバッファ１７のバッファ空き容量２２がＲ４、時間Ｔ４における出力ビットレート２４がＴＰＡであるとする。時間Ｔ４における増加率をＴＰＵ４で表わすと、ＴＰＵ４＝（ＲＵＰ−Ｒ４）／Ｔａになる。時間Ｔ４における入力ビットレート下限値は時間Ｔ４における出力ビットレート２４の値（ＴＰＡ）から時間Ｔ４における増加率の値（ＴＰＵ４）を減算した減算値ＴＰＡ−ＴＰＵ４になる。そして、時間Ｔ４における入力ビットレート更新値をＴＰ４で表わすと、ＴＰ４＝ＴＰＡ−ＴＰＵ４になる。
【００７８】
時間Ｔ３で伝送路状態の悪化が回復して伝送スループット即ちバッファ１７から出力されるメディアデータの出力ビットレート２４が増大すると、バッファ空き容量２２が増加し始める。そして、時間Ｔ５でバッファ１７のバッファ空き容量２２の値が制御開始閾値ＲＴＨ以上になると、入力ビットレートの値は固定される（図６のステップＳ１０１参照）。
【００７９】
＜入力ビットレートの制御における数値例＞
以下、本実施の形態における入力ビットレートの制御における数値例を示す。但し、初期条件として、最大データレートの値を１２Ｍｂｐｓ、バッファ１７の最大蓄積量を５００パケット（以下、「Ｐｋｔ」と記載する。）、制御開始閾値を４５０Ｐｋｔ、増加率設定値を５００Ｐｋｔ、減少率設定値を５０Ｐｋｔ、確保時間を５００ｍｓｅｃとする。但し、１Ｐｋｔは１５００バイトとする。
【００８０】
［伝送スループット低下時の数値例］
現在の入力ビットレート２３の値を１２Ｍｂｐｓとし、伝送路状態の悪化により伝送スループットが１２Ｍｂｐｓから６Ｍｂｐｓに低下し、バッファ１７のバッファ空き容量２２が制御開始閾値“４５０Ｐｋｔ”を下回ったとする。
ＣＰＵ１４は、減少率及び入力ビットレート上限値を算出する。
【００８１】
減少率＝（バッファ空き容量−減少率設定値）／確保時間＝（４５０−５０）×１５００×８／０．５＝９．６Ｍｂｐｓ
入力ビットレート上限値＝出力ビットレート＋減少率＝６＋９．６＝１５．６Ｍｂｐｓ
ＣＰＵ１４は、増加率及び入力ビットレート下限値を算出する。
増加率＝（増加率設定値−バッファ空き容量）／確保時間＝（５００−４５０）×１５００×８／０．５＝１．２Ｍｂｐｓ
入力ビットレート下限値＝出力ビットレート−増加率＝６−１．２＝４．８Ｍｂｐｓ
ＣＰＵ１４は、現在の入力ビットレート２３の値“１２Ｍｂｐｓ”が入力ビットレート下限値“４．８Ｍｂｐｓ”以上入力ビットレート上限値“１５．６Ｍｂｐｓ”以下であることから、入力ビットレート更新値を現在の入力ビットレート２３の値“１２Ｍｂｐｓ”とする。さらに、ＣＰＵ１４は、入力ビットレート更新値“１２Ｍｂｐｓ”が最大データレートの値“１２Ｍｂｐｓ”より大きくないので、入力ビットレート更新値を１２Ｍｂｐｓのままにする。
【００８２】
現在の入力ビットレート２３の値を１２Ｍｂｐｓとし、伝送路状態の悪化により伝送スループットが６Ｍｂｐｓになり、バッファ１７のバッファ空き容量２２が２５０Ｐｋｔになったとする。
ＣＰＵ１４は、減少率及び入力ビットレート上限値を算出する。
減少率＝（バッファ空き容量−減少率設定値）／確保時間＝（２５０−５０）×１５００×８／０．５＝４．８Ｍｂｐｓ
入力ビットレート上限値＝出力ビットレート＋減少率＝６＋４．８＝１０．８Ｍｂｐｓ
ＣＰＵ１４は、増加率及び入力ビットレート下限値を算出する。
【００８３】
増加率＝（増加率設定値−バッファ空き容量）／確保時間＝（５００−２５０）×１５００×８／０．５＝６Ｍｂｐｓ
入力ビットレート下限値＝出力ビットレート−増加率＝６−６＝０Ｍｂｐｓ
ＣＰＵ１４は、現在の入力ビットレート２３の値“１２Ｍｂｐｓ”が入力ビットレート上限値“１０．８Ｍｂｐｓ”より大きいことから、入力ビットレート更新値を入力ビットレート上限値“１０．８Ｍｂｐｓ”とする。さらに、ＣＰＵ１４は、入力ビットレート更新値“１０．８Ｍｂｐｓ”が最大データレートの値“１２Ｍｂｐｓ”より大きくないので、入力ビットレート更新値を１０．８Ｍｂｐｓのままにする。
【００８４】
［伝送スループット回復時の数値例］
現在の入力ビットレート２３の値を３Ｍｂｐｓとし、伝送路状態の回復により伝送スループットが３Ｍｂｐｓから１２Ｍｂｐｓに増大し、バッファ１７のバッファ空き容量２２が８０Ｐｋｔを下回ったとする。
ＣＰＵ１４は、減少率及び入力ビットレート上限値を算出する。
【００８５】
減少率＝（バッファ空き容量−減少率設定値）／確保時間＝（８０−５０）×１５００×８／０．５＝０．７２Ｍｂｐｓ
入力ビットレート上限値＝出力ビットレート＋減少率＝１２＋０．７２＝１２．７２Ｍｂｐｓ
ＣＰＵ１４は、増加率及び入力ビットレート下限値を算出する。
【００８６】
増加率＝（増加率設定値−バッファ空き容量）／確保時間＝（５００−８０）×１５００×８／０．５＝１０．０８Ｍｂｐｓ
入力ビットレート下限値＝出力ビットレート−増加率＝１２−１０．０８＝１．９２Ｍｂｐｓ
ＣＰＵ１４は、現在の入力ビットレート２３の値“３Ｍｂｐｓ”が入力ビットレート下限値“１．９２Ｍｂｐｓ”以上入力ビットレート上限値“１２．７２Ｍｂｐｓ”以下であることから、入力ビットレート更新値を現在の入力ビットレート２３の値“３Ｍｂｐｓ”とする。さらに、ＣＰＵ１４は、入力ビットレート更新値“３Ｍｂｐｓ”が最大データレートの値“１２Ｍｂｐｓ”より大きくないので、入力ビットレート更新値を３Ｍｂｐｓのままにする。
【００８７】
現在の入力ビットレート２３の値を３Ｍｂｐｓとし、伝送路状態の回復により伝送スループットが１２Ｍｂｐｓになり、バッファ１７のバッファ空き容量２２が１５０Ｐｋｔになったとする。
ＣＰＵ１４は、減少率及び入力ビットレート上限値を算出する。
減少率＝（バッファ空き容量−減少率設定値）／確保時間＝（１５０−５０）×１５００×８／０．５＝２．４Ｍｂｐｓ
入力ビットレート上限値＝出力ビットレート＋減少率＝１２＋２．４＝１４．４Ｍｂｐｓ
ＣＰＵ１４は、増加率及び入力ビットレート下限値を算出する。
【００８８】
増加率＝（増加率設定値−バッファ空き容量）／確保時間＝（５００−１５０）×１５００×８／０．５＝８．４Ｍｂｐｓ
入力ビットレート下限値＝出力ビットレート−増加率＝１２−８．４＝３．６Ｍｂｐｓ
ＣＰＵ１４は、現在の入力ビットレート２３の値“３Ｍｂｐｓ”が入力ビットレート下限値“３．６Ｍｂｐｓ”より小さいことから、入力ビットレート更新値を入力ビットレート下限値“３．６Ｍｂｐｓ”とする。さらに、ＣＰＵ１４は、入力ビットレート更新値“３．６Ｍｂｐｓ”が最大データレートの値“１２Ｍｂｐｓ”より大きくないので、入力ビットレート更新値を３．６Ｍｂｐｓのままにする。
【００８９】
＜入力ビットレートの低下制御の基本的な考え方＞
以下、伝送路スループットの低下時の入力ビットレートを低下させる制御の基本的な考え方の概略について記載する。
伝送路の状態が悪化して伝送スループット即ちバッファ１７から出力されるメディアデータの出力ビットレート２４が低下すると、バッファ１７のオーバーフローを防ぐために、メディアデータのデータレート即ちバッファ１７に入力されるメディアデータの入力ビットレート２３が低下するように入力ビットレート２３の制御が行われる。
【００９０】
本実施の形態では、従来技術のように入力ビットレート２３の値が出力ビットレート２４の値になるように入力ビットレート２３を低下させるのではなくて、バッファ１７のバッファ空き容量２２を利用して入力ビットレート２３の値が出力ビットレート２４の値より大きくなるように入力ビットレート２３の値を低下させる。具体的には、バッファ１７のバッファ空き容量２２の値が上記の確保時間後に減少率設定値になるような減少率の値を算出し、現在の入力ビットレート２３の値が減少率の値と出力ビットレート２４の値との加算値（入力ビットレート上限値）より大きければ入力ビットレート２３の値が入力ビットレート上限値になるように入力ビットレート２３の制御を行う。なお、バッファ１７のバッファ空き容量２２の値は入力ビットレート２３の値と出力ビットレート２４の値との差分に応じて増減することから、入力ビットレート２３の値が入力ビットレート上限値になるように制御した場合、伝送スループットが変化しない場合であってもバッファ１７のバッファ空き容量２２は減少率に応じて減少する。
【００９１】
上記の伝送スループットの低下時の入力ビットレートを低下させる制御方法によれば、バッファ１７のバッファ空き容量２２の値が大きい場合は、出力ビットレート２４の値に加算する減算率の値が大きくなり、入力ビットレート上限値が大きくなる。このため、一時的に伝送スループットが低下した場合に入力ビットレート２３の値が伝送スループット即ち出力ビットレート２４の値になるように入力ビットレートを下げる場合と比較して、入力ビットレートの下げ幅が小さくなり、入力ビットレートの時間的な変動を小さくすることができる。これにより、例えば映像データの配信中に一時的に伝送スループットが低下した場合に、受信側で再生される映像の解像度やフレームレートの下げ幅を小さくすることができ、視聴者は安定した品質の映像を視聴することができる。
【００９２】
また、バッファ１７のバッファ空き容量２２の値が小さい場合、出力ビットレートの値に加算する減少率の値が小さくなるが、バッファ１７のバッファ空き容量２２の値が減少率設定値以下にならない範囲で入力ビットレートの値と出力ビットレートの値との差を小さくする。このため、伝送スループットの低下が一定期間継続することによってバッファ１７のバッファ空き容量２２の値が小さくなっても、バッファ１７のバッファ空き容量２２の値は減少率設定値までにしか小さくならずバッファ１７のオーバーフローは発生しない。これにより、例えば映像データの送信中に伝送スループットの低下が一定期間継続しても、バッファ１７のオーバーフローによりパケットが受信側まで到達せずに失われることを防止し、視聴者は途切れることがない映像を視聴できる。
【００９３】
更に、バッファ１７のバッファ空き容量２２の値が確保時間後に減少率設定値になるようにした場合のバッファ空き容量２２の減少率はバッファ１７のバッファ空き容量２２の値が小さくなるのに伴い徐々に小さくなるので、入力ビットレート２３の値を緩やかに小さくすることができる。これにより、例えば映像データの送信中に伝送スループットが低下した場合に、受信側で再生される映像の解像度やフレームレーを緩やかに下げることができ、視聴者が感じる違和感を少なくすることができる。
【００９４】
更に、減少率設定値をゼロとすることにより、バッファ１７のバッファ空き容量２２の値が確保時間後に減少率設定値になるようにした場合のバッファ空き容量２２の減少率の値を最大にすることができる。このため、減少率設定値をゼロよりも大きい値にする場合と比べて入力ビットレートの値の下げ幅を最も小さくすることができる。
＜入力ビットレートの増大制御の基本的な考え方＞
以下、伝送スループットの増大時の入力ビットレートを増大させる制御の基本的な考え方の概略について記載する。
【００９５】
伝送路の状態の悪化が回復して伝送スループット即ちバッファ１７から出力されるメディアデータの出力ビットレート２４が大きくなると、例えば映像データの配信中であれば高画質な映像を視聴者に提供するために、メディアデータのデータレート即ちバッファ１７に入力されるメディアデータの入力ビットレート２３が増大するように入力ビットレート２３の制御が行われる。
【００９６】
本実施の形態では、従来技術のように入力ビットレート２３の値が出力ビットレート２４の値になるように入力ビットレート２３を増大させるのではなくて、バッファ１７のバッファ空き容量２２を利用して入力ビットレート２３の値が出力ビットレート２４の値より小さくなるように入力ビットレート２３の値を増大させる。具体的には、バッファ１７のバッファ空き容量２２の値が上記の確保時間後に増加率設定値になるような増加率の値を算出し、現在の入力ビットレート２３の値が出力ビットレート２４の値から増加率の値を減算した減算値（入力ビットレート下限値）より小さければ入力ビットレート２３の値が入力ビットレート下限値になるように入力ビットレート２３の制御を行う。なお、バッファ１７のバッファ空き容量２２の値は入力ビットレート２３の値と出力ビットレート２４の値との差分に応じて増減することから、入力ビットレート２３の値が入力ビットレート下限値になるように制御した場合、伝送スループットが変化しない場合であってもバッファ１７のバッファ空き容量２２は増加率に応じて増加する。
【００９７】
上記の伝送スループットの増大時の入力ビットレートを増大させる制御方法によれば、バッファ１７のバッファ空き容量２２の値が確保時間後に減少率設定値より大きい増加率設定値になるようにした場合のバッファ空き容量２２の増加率はバッファ１７のバッファ空き容量２２の値が大きくなるのに伴い徐々に小さくなる。このため、入力ビットレート２３の値を緩やかに大きくすることができる。これにより、例えば映像データの送信中に伝送スループットの低下が回復した場合に、受信側で再生される映像の解像度やフレームレートを緩やかに上げることができ、視聴者が感じる違和感を少なくすることができる。
【００９８】
また、増加率設定値をバッファ１７の最大蓄積量とすることにより、伝送スループットが回復した状態が継続した場合のバッファ１７のバッファ空き容量２２の値を最大にすることができるので、バッファ１７の容量を最も有効に利用することができる。
＜入力ビットレート更新値の決定の基本的な考え方＞
以下、入力ビットレート更新値の決定の基本的な考え方の概略について記載する。
【００９９】
無線の伝送路や電灯線の伝送路を用いて通信を行う場合、平均伝送スループットはほぼ一定で安定している状態でも、各時点での伝送スループットは細かく変動している。このため、出力ビットレート２４の値が上昇すると常に入力ビットレート２３の値を増大させ、出力ビットレート２４の値が低下すると常に入力ビットレート２３の値を低下させることにすると、入力ビットレート２３を低下させる制御と入力ビットレート２４を増大させる制御との切り替えが頻繁に発生する。
【０１００】
仮に、入力ビットレート２３の値が常に出力ビットレート２４の値からバッファ空き容量２４の増加率の値を減算した値となるように入力ビットレート２３を増大させる制御状態から、入力ビットレート２３の値が常に出力ビットレート２４の値にバッファ空き容量２４の減少率の値を加算した値となるように入力ビットレート２３を低下させる制御状態に切り替わった場合、入力ビットレート２３の値は、出力ビットレート２４の値からバッファ空き容量２２の増加率の値を減算した値から、出力ビットレート２４の値にバッファ空き容量２２の減少率の値を加算した値に変化する。つまり、入力ビットレート２３の値は、増加率の値と減少率の値とを加算した値分増加し、急激に増加することになる。このため、伝送スループットが低下したタイミングにおいて、クライアント側のＡＶ機器３で再生される映像の解像度やフレームレートが急激に高くなってしまう。
【０１０１】
これを回避するために、本実施の形態では、伝送スループットが増大して入力ビットレート２３を増大させる制御状態から、伝送スループットが低下して入力ビットレートを低下させる制御状態に切り替わった場合、出力ビットレート２４の値にバッファ１７のバッファ空き容量２２の減少率の値を加算した加算値（入力ビットレート上限値）が現在の入力ビットレート２３の値よりも大きい間は現在の入力ビットレート２３の値を維持するようにしている。
【０１０２】
つまり、現在の入力ビットレート２３の値が入力ビットレート上限値より大きい場合には入力ビットレート更新値を入力ビットレート上限値とし、現在の入力ビットレート２３の値が入力ビットレート上限値以下であれば入力ビットレート更新値を現在の入力ビットレートの値とする。
これにより、伝送スループットが回復した状態から再度低下した場合に、入力ビットレート２３の値が急激に上がることを防止できるため、入力ビットレート２３を安定させることができる。従って、伝送スループットが回復した状態から再度低下した場合に、例えばクライアント側のＡＶ機器３で再生される映像の解像度やフレームレートが急激に上がるということがなくなり、視聴者は安定した品質の映像を視聴することができる。
【０１０３】
逆に、入力ビットレート２３の値が常に出力ビットレート２４の値にバッファ空き容量２４の減少率の値を加算した値となるように入力ビットレート２３を低下させる制御状態から、入力ビットレート２３の値が常に出力ビットレート２４の値からバッファ空き容量２４の増加率の値を減算した値となるように入力ビットレート２３を増大させる制御状態に切り替わった場合、入力ビットレート２３の値は、出力ビットレート２４の値にバッファ空き容量２２の減少率の値を加算した値から、出力ビットレート２４の値からバッファ空き容量２２の増加率の値を減算した値に変化する。つまり、入力ビットレート２３の値は、増加率の値と減少率の値とを加算した値分減少し、急激に減少することになる。このため、伝送スループットが増大したタイミングにおいて、例えばクライアント側のＡＶ機器３で再生される映像の解像度やフレームレートが急激に下がってしまう。
【０１０４】
これを回避するために、本実施の形態では、伝送スループットが低下して入力ビットレート２３を低下させる制御状態から、伝送スループットが増大して入力ビットレートを増大させる制御状態に切り替わった場合、出力ビットレート２４の値からバッファ１７のバッファ空き容量２２の増加率の値を減算した減算値（入力ビットレート下限値）が現在の入力ビットレート２２の値よりも小さい間は現在の入力ビットレート２３の値を維持するようにしている。
【０１０５】
つまり、現在の入力ビットレート２３の値が入力ビットレート下限値より小さい場合には入力ビットレート更新値を入力ビットレート下限値とし、現在の入力ビットレート２３の値が入力ビットレート下限値以上であれば入力ビットレート更新値を現在の入力ビットレートの値とする。
これにより、伝送スループットが低下した状態から回復した場合に、入力ビットレート２３の値が急激に下がることを防止できるため、入力ビットレートを安定させることができる。従って、伝送スループットが低下した状態から回復した場合に、例えばクライアント側のＡＶ機器３で再生される映像の解像度やフレームレートが急激に下がるということがなくなり、視聴者は安定した品質の映像を視聴することができる。
【０１０６】
＜従来技術との比較＞
本実施の形態の入力ビットレートの制御手法と従来技術の入力ビットレートの制御手法とを図１０及び図１１を参照しつつ比較する。但し、図１０及び図１１の各図において、縦軸はレート（ｂｐｓ）を、横軸は時間を表す。
図１０（ａ）及び図１１（ａ）は、従来の入力ビットレートの制御手法による、伝送スループット即ちバッファ１７から出力されるメディアデータの出力ビットレート２４の時間的変動と、送信されるデータのデータレート即ちバッファ１７に入力されるメディアデータの入力ビットレート２３の時間的変動を示す図である。
【０１０７】
図１０（ｂ）及び図１１（ｂ）は、本実施の形態の入力ビットレートの制御手法による、伝送スループット即ちバッファ１７から出力されるメディアデータの出力ビットレート２４の時間的変動と、送信されるデータのデータレート即ちバッファ１７に入力されるメディアデータの入力ビットレート２３の時間的変動を示す図である。
［伝送スループットが瞬間的に低下する場合における両者の比較］
以下、伝送スループットが瞬間的に低下する場合における本実施の形態の入力ビットレートの制御手法と従来技術の入力ビットレートの制御手法とを図１０（ａ），（ｂ）を参照して比較する。
【０１０８】
従来技術の入力ビットレートの制御手法では、図１０（ａ）に示すように、伝送スループットの瞬間的な低下に追従して入力ビットレート２３の値が低下する。なお、バッファ１７がオーバーフローするのを防ぐために、入力ビットレートの制御を行う時間間隔を短く設定しているものとする。
これに対して、本実施の形態の入力ビットレートの制御手法では、図１０（ｂ）に示すように、入力ビットレート２３を更新する入力ビットレート更新値を、伝送スループット即ち出力ビットレート２４の値に減少率の値を加算した値（入力ビットレート上限値）としている。このため、本実施の形態の入力ビットレートの制御手法では、従来技術の入力ビットレートの制御手法と比較して、入力ビットレート２４の下げ幅が小さくなり、例えば高画質な映像を視聴者に提供することが可能である。
【０１０９】
また、本実施の形態の入力ビットレートの制御手法では、入力ビットレート２３を更新する入力ビットレート更新値を、出力ビットレート２４の値に減少率の値を加算した値（入力ビットレート上限値）や出力ビットレート２４の値から増加率の値を減算した値（入力ビットレート下限値）などとしている。このため、本実施の形態の入力ビットレートの制御手法では、従来技術の入力ビットレートの制御手法と比較して、入力ビットレート２３を低下させる場合及び増大させる場合とも、入力ビットレート２３が変化する割合が緩やかであり、例えば視聴者に与える視覚的な違和感を小さくすることが可能である。
【０１１０】
［伝送スループットの低下幅が大きく、伝送スループットが低下する期間が長い場合における両者の比較］
以下、伝送スループットが低下する幅が大きく、且つ、伝送スループットが低下する期間が長い場合における本実施の形態の入力ビットレートの制御手法と従来技術の入力ビットレートの制御手法とを図１１（ａ），（ｂ）を参照して比較する。
【０１１１】
従来技術の入力ビットレートの制御手法では、図１１（ａ）に示すように、伝送スループットの低下に追従して入力ビットレート２３の値が低下する。なお、バッファ１７がオーバーフローするのを防ぐために、入力ビットレートの制御を行う時間間隔を短く設定しているものとする。
これに対して、本実施の形態の入力ビットレートの制御手法では、図１１（ｂ）に示すように、従来技術の入力ビットレートの制御手法と比較して、入力ビットレートを緩やかに下げて、上げているために例えば視聴者に与える視覚的な違和感を小さくすることが可能である。例えば、入力ビットレート２３を下げるのに要する時間を比較すると、従来技術の入力ビットレートの制御手法における時間ＴＡ（図１１（ａ）参照）に対して、本実施の形態の入力ビットレートの制御手法における時間ＴＢ（図１１（ｂ）参照）は長い。このように、本実施の形態の入力ビットレートの制御手法は従来技術の入力ビットレートの制御手法に比べて時間をかけて緩やかに画質を低下させているために、例えば視聴者への視覚的な違和感を低下させることが可能である。
【０１１２】
≪第２の実施の形態≫
以下、本発明の第２の実施の形態について図面を参照しつつ説明する。
第１の実施の形態では、サーバ側のＡＶ機器２が入力ビットレート更新値を算出し、バッファ１７に入力されるメディアデータのビットレート（データレート）を算出した入力ビットレート更新値に従って変換する。これに対して、第２の実施の形態では、サーバ側のＡＶ機器２に接続された中継装置が入力ビットレート更新値を算出し、バッファ１７に入力されるメディアデータのビットレート（データレート）を算出した入力ビットレート更新値に従って変換する。
【０１１３】
なお、本実施の形態において、第１の実施の形態の構成要素と実質的に同じ構成要素には同じ符号を付し、第１の実施の形態の説明が適用できるため本実施の形態ではその説明を省略し或いは概略を記載するに留める。
＜ネットワーク構成及び動作＞
図１２は本実施の形態のネットワーク構成図であり、ネットワーク１００にはＡＶ機器１０１，１０２及び中継装置１０３，１０４が含まれている。
【０１１４】
本実施の形態では、ＡＶ機器１０１は、メディアデータを送信するサーバ側のＡＶ機器であり、第１の実施の形態のサーバ側のＡＶ機器２と異なり、入力ビットレートの制御を行わない。ＡＶ機器１０２は、他の機器から送信されたメディアデータを受信し、受信したメディアデータを再生、表示するクライアント側のＡＶ機器である。ＡＶ機器１０１は、例えば、通信機能を備えた映像コンテンツデータを記憶可能なＨＤＤレコーダ機器やＢｌｕ−ｒａｙ  Ｄｉｓｋ（登録商標）レコーダ機器などである。ＡＶ機器１０２は、通信機能を備えたテレビなどのディスプレイ装置などである。
【０１１５】
中継装置１０３及び中継装置１０４は、通信を中継する装置であり、例えば、ゲートウェイ、ルータ、ブリッジ、スイッチングハブなでである。中継装置１０３は、入力ビットレートの制御を行う。ここでは、中継装置１０３及び中継装置１０４は、有線−無線ブリッジとして説明する。
ネットワーク１００では、ＡＶ機器１０１と中継装置１０３との間の通信及びＡＶ機器１０２と中継装置１０４との間の通信は夫々有線通信で実現されており、中継装置１０３と中継装置１０４との間の通信は無線通信で実現されている。
【０１１６】
ＡＶ機器１０１は例えば蓄積している映像コンテンツデータをストリーミング配信する。ＡＶ機器１０２はストリーミング配信されている映像コンテンツデータを中継装置１０３及び中継装置１０４を介して受信し、受信した映像コンテンツデータを再生、表示する。これによって、視聴者はＡＶ機器１０１に蓄積されている映像コンテンツデータの映像をＡＶ機器１０２で視聴することができる。
【０１１７】
以下、サーバ側のＡＶ機器１０１に接続された中継装置１０３の詳細を図面を参照しつつ説明する。なお、ＡＶ機器１０１，１０２は一般的なＡＶ機器が利用でき、クライアント側に接続された中継装置１０４は一般的な中継装置が利用でき、詳細な説明を省略する。
＜サーバ側のＡＶ機器に接続された中継装置の装置構成＞
図１３は、図１２のサーバ側のＡＶ機器１０１に接続された中継装置１０３の装置構成図であり、中継装置１０３は、符号変換部１２と、入力ビットレート制御プログラム１６を格納したメモリ１３と、ＣＰＵ１４と、バッファ１７を備えた通信Ｉ／Ｆ部１５と、通信Ｉ／Ｆ部１１１とを備える。但し、中継装置１０３は、通信Ｉ／Ｆ部１５によって中継装置１０４に接続され、通信Ｉ／Ｆ部１１１によってＡＶ機器１０１に接続されている。
【０１１８】
通信Ｉ／Ｆ部１１１は、ネットワークを介してデータを送受信する機能、例えば、データ信号の変復調やメディアアクセス制御を行う機能を有し、ここでは、有線通信の通信Ｉ／Ｆ部とする。
例えば、通信Ｉ／Ｆ部１１１はＡＶ機器１０１に記録されたメディアデータをＡＶ機器１０１から受信する。ＣＰＵ１４はメモリ１３に記憶されている入力ビットレート制御プログラム１６を実行して入力ビットレート更新値を算出し（図６、図７参照）、符号変換部１２は算出された入力ビットレート更新値に従って受信したメディアデータのビットレート（データレート）を変換する。そして、通信Ｉ／Ｆ部１５は符号変換部１２による変換により得られたメディアデータをバッファ１７に一時的に蓄積しながらネットワークを介して中継装置１０４へ送信する。中継装置１０４は、受信したメディアデータをクライアント側のＡＶ機器１０２へ送出する。
【０１１９】
本実施の形態によれば、第１の実施の形態と実質的に同じ効果が得られる。
≪第３の実施の形態≫
以下、本発明の第３の実施の形態について図面を参照しつつ説明する。
第１の実施の形態では、サーバ側のＡＶ機器２が入力ビットレート更新値を算出し、バッファ１７に入力されるメディアデータのビットレート（データレート）を算出した入力ビットレート更新値に従って変換する。これに対して、第３の実施の形態では、クライアント側のＡＶ機器がサーバ側のＡＶ機器によって行われるメディアデータのビットレート（データレート）の変換に用いられるデータレート更新値を算出し、算出したデータレート更新値をサーバ側のＡＶ機器へフィードバックし、サーバ側のＡＶ機器はクライアント側のＡＶ機器からフィードバックされたデータレート更新値に従ってメディアデータのビットレート（データレート）を変換する。
【０１２０】
なお、本実施の形態において、第１の実施の形態の構成要素と実質的に同じ構成要素には同じ符号を付し、第１の実施の形態の説明が適用できるため本実施の形態ではその説明を省略し或いは概略を記載するに留める。
＜ネットワーク構成及び動作＞
図１４は本実施の形態のネットワーク構成図であり、ネットワーク５００にはＡＶ機器５０１，５０２が含まれている。
【０１２１】
本実施の形態では、ＡＶ機器５０１は、メディアデータを記憶保持し、メディアデータを送信するサーバ側のＡＶ機器であり、ＡＶ機器５０２は、他の機器から送信されたメディアデータを受信し、受信したメディアデータを再生、表示するクライアント側のＡＶ機器である。ＡＶ機器５０１は、例えば、通信機能を備えた映像コンテンツデータを記憶可能なＨＤＤレコーダ機器やＢｌｕ−ｒａｙ  Ｄｉｓｋ（登録商標）レコーダ機器などである。ＡＶ機器３は、通信機能を備えたテレビなどのディスプレイ装置などである。通信機能として、例えば、第１の実施の形態で列挙したものがあり、図１４では通信機能を無線通信で表している。
【０１２２】
ＡＶ機器５０１は例えば蓄積している映像コンテンツデータをストリーミング配信し、ＡＶ機器５０２はストリーミング配信されている映像コンテンツデータを受信し、受信した映像コンテンツデータを再生、表示する。これによって、視聴者はＡＶ機器５０１に蓄積されている映像コンテンツデータの映像をＡＶ機器５０２で視聴することができる。
以下、サーバ側のＡＶ機器５０１及びクライアント側のＡＶ機器５０２の詳細を図面を参照しつつ説明する。
【０１２３】
＜ＡＶ機器（サーバ側）の装置構成＞
図１５は図１４のサーバ側のＡＶ機器５０１の装置構成図であり、ＡＶ機器５０１は、メディアデータ記憶部１１と、符号変換部１２と、メモリ５１１と、ＣＰＵ５１２と、通信Ｉ／Ｆ部５１３とを備える。
メモリ５１１は、例えば、ＲＯＭやＲＡＭなどの半導体メモリで構築される。メモリ５１１は、各種制御プログラムや各種アプリケーションなどのプログラムを記憶保持しており、例えば、クライアント側のＡＶ機器５０２から送信されたデータレート情報を解析してそれに含まれるデータレート更新値を符号変換部１２に対して通知するためのプログラム（以下、「データレート変更プログラム」と言う。）５１４を記憶保持している。また、メモリ５１１は、ＣＰＵ５１２が動作する際に使用する領域を有する。
【０１２４】
ＣＰＵ５１２は、メモリ５１１に記憶保持されているプログラムを読み出し、読み出したプログラムを実行することによって、ＡＶ機器５０１全体の各種制御や各種演算を行う機能を有する。例えば、ＣＰＵ５１２は、データレート変更プログラム５１４をメモリ５１１から読み出して、読み出したデータレート変更プログラム５１４を実行する。なお、この処理については、図１６から図１７を参照して後述する。
【０１２５】
通信Ｉ／Ｆ部５１３は、ネットワークを介してデータを送受信する機能、例えば、データ信号の変復調やメディアアクセス制御を行う機能を有し、ここでは、無線通信の通信Ｉ／Ｆ部とする。なお、通信Ｉ／Ｆ部５１３は不図示の送信用のバッファを有している。
＜ＣＰＵの機能構成＞
図１６は図１５のＣＰＵ５１２の機能構成図である。但し、図１６には、ＣＰＵ５１２の機能構成の理解を容易にするため、ＡＶ機器５０１の他の構成要素も図示している。
【０１２６】
ＣＰＵ５１２は、メモリ５１１からそれに記憶保持されているデータレート変更プログラム５１４を読み出し、読み出したデータレート変更プログラム５１４を実行する。これによって、ＣＰＵ５１２は、レート情報受信解析部５３１として機能する。
レート情報受信解析部５３１は、クライアント側のＡＶ機器５０２から送信されたデータレート情報を通信Ｉ／Ｆ部５１３を介して受信し、受信したデータレート情報を解析し、データレート更新値をそれに含まれるデータレート更新値に設定する。レート情報受信解析部５３１は、データレート更新値が送信すべきメディアデータに設定可能な最大データレートの値以下の場合にはデータレート更新値を変更することなくデータレート更新値を符号変換部１２に通知する。一方、レート情報受信解析部５３１は、データレート更新値が送信すべきメディアデータに設定可能な最大データレートの値より大きい場合にはデータレート更新値を最大データレートの値に再設定し、再設定したデータレート更新値を符号変換部１２に通知する。
【０１２７】
なお、符号変換部１２は、メディアデータ記憶部１１に記憶されているメディアデータのビットレート（データレート）をレート情報受信解析部５３１から通知されたデータレート更新値に従って変換し、変換により得られたメディアデータを通信Ｉ／Ｆ部５１３内の不図示のバッファへ出力する。
＜ＣＰＵの動作＞
図１７は図１５のＣＰＵ５１２が行うデータレート変更処理の流れを示すフローチャートである。但し、ＣＰＵ５１２はメモリ５１１からそれに記憶されているデータレート変更プログラム５１４を読み出し、読み出したデータレート変更プログラム５１４を実行することによって、図１７のフローチャートの処理を実行する。
【０１２８】
ＣＰＵ５１２のレート情報受信解析部５３１は、クライアント側のＡＶ機器５０２から通信Ｉ／Ｆ部５１３を介してデータレート情報を受信したかを判定する（ステップＳ３０１）。レート情報受信解析部５３１は、データレート情報を受信していないと判定している間（Ｓ３０１：ＮＯ）、ステップＳ３０１の処理を繰り返す。レート情報受信解析部５３１は、データレート情報を受信したと判定すると（Ｓ３０１：ＹＥＳ）、受信したデータレート情報を解析し、データレート更新値をそれに含まれるデータレート更新値に設定する（ステップＳ３０２）。
【０１２９】
レート情報受信解析部５３１は、ステップＳ３０２で設定したデータレート更新値（受信したデータレート情報に含まれるデータレート更新値）が、送信するメディアデータに設定可能な最大データレートの値より大きいか否かを判定する（ステップＳ３０３）。ステップＳ３０２で設定されたデータレート更新値が最大データレートの値より大きければ（Ｓ３０３：ＹＥＳ）、レート情報受信解析部５３１は、データレート更新値を最大データレートの値に再設定し（ステップＳ３０４）、ステップＳ３０４で再設定したデータレート更新値を符号変換部１２に対して通知する（ステップＳ３０５）。このようにすることにより、符号変換部１２に通知されるデータレート更新値が最大データレートの値を超えることがなくなるため、符号変換部１２が最大データレートの値を超えるデータレート更新値に従ってメディアデータのビットレート（データレート）を変換することがなく、メディアデータの変換時のエラー発生を回避することができる。一方、ステップＳ３０２で設定されたデータレート更新値が最大データレートの値より大きくなければ（Ｓ３０３：ＹＥＳ）、レート情報受信解析部５３１は、ステップＳ３０２で設定したデータレート更新値を符号変換部１２に対して通知する（ステップＳ３０５）。なお、ステップＳ３０５が行われた後、ステップＳ３０１の処理に戻る。
【０１３０】
符号変換部１２は、メディアデータ記憶部１１に記憶されているメディアデータのビットレート（データレート）をレート情報受信解析部５３１から通知を受けたデータレート更新値に従って変換し、変換により得られたメディアデータを通信Ｉ／Ｆ部５１３内の不図示のバッファへ出力する。通信Ｉ／Ｆ部５１３は不図示のバッファに蓄積されたメディアデータをネットワークを介して例えばクライアント側のＡＶ機器５０２へ送信する。
【０１３１】
＜ＡＶ機器（クライアント側）の装置構成＞
図１８は図１４のクライアント側のＡＶ機器５０２の装置構成図であり、ＡＶ機器５０２は、メモリ５５１と、ＣＰＵ５５２と、通信Ｉ／Ｆ部５５３とを備える。
メモリ５５１は、例えば、ＲＯＭやＲＡＭなどの半導体メモリで構築される。メモリ５５１は、各種制御プログラムや各種アプリケーションプログラムなどのプログラムを記憶保持しており、例えば、サーバ側のＡＶ機器５０１の符号変換部１２（図１５参照）がメディアデータのビットレート（データレート）の変換に用いるデータレート更新値を決定し、決定したデータレート更新値を例えばサーバ側のＡＶ機器５０１に対して通知するためのプログラム（以下、「データレート演算プログラム」と言う。）５５４を記憶保持している。また、メモリ５５１は、通信Ｉ／Ｆ部５５３によって受信されたメディアデータを一時的に記憶保持するバッファ５５５やＣＰＵ５５２が動作する際に使用する領域を有する。なお、バッファ５５５については図１９を参照して後述する。
【０１３２】
ＣＰＵ５５２は、メモリ５５１に記憶保持されているプログラムを読み出し、読み出したプログラムを実行することによって、ＡＶ機器５０２全体の各種制御や各種演算を行う機能を有する。例えば、ＣＰＵ５５２は、データレート演算プログラム５５４をメモリ５５１から読み出して、読み出したデータレート演算プログラム５５４を実行する。なお、この処理については、図２０から図２３を参照して後述する。
【０１３３】
通信Ｉ／Ｆ部５５３は、ネットワークを介してデータを送受信する機能、例えば、データ信号の変復調やメディアアクセス制御を行う機能を有し、ここでは、無線通信の通信Ｉ／Ｆ部とする。
＜バッファの構成＞
図１９は図１８のバッファ５５５の一構成例を説明するための図である。
【０１３４】
蓄積量５６１はバッファ５５５に蓄積されているデータのデータ量を表し、バッファ空き容量５６２はバッファ５５５に蓄積可能な残りのデータのデータ量を表す。データ量の単位は蓄積量５６１及びバッファ空き容量５６２ともビット或いはバイト等で表すことができ、本実施の形態ではビットを用いて説明する。
入力ビットレート５６３は、バッファ５５５に入力されるメディアデータの単位時間当たりのデータ量を表し、出力ビットレート５６４はバッファ５５５から出力されるメディアデータの単位時間当たりのデータ量を表す。本実施の形態では、入力ビットレート５６３及び出力ビットレート５６４の単位としてｂｐｓ（bitper second）を用いて説明する。ここでは、入力ビットレート５６３は通信Ｉ／Ｆ部５５３がメディアデータを受信する際の伝送スループットと等しく、出力ビットレート５６４はサーバ側のＡＶ機器５０２の符号変換部１２（図１５参照）から出力されるメディアデータのビットレート（データレート）と等しいとする。
【０１３５】
バッファ５５５は、ＦＩＦＯの動作原理に従い、入力されたメディアデータを入力された順に出力する。このとき、入力ビットレート５６３と出力ビットレート５６４とが等しい場合、バッファ５５５の蓄積量５６１は変化しない。入力ビットレート５６３と出力ビットレート５６４とが等しくない場合、入力ビットレート５６３と出力ビットレート５６４との差分に応じて、バッファ５５５の蓄積量５６１は増減する。つまり、入力ビットレート５６３が出力ビットレート５６４より大きい場合にはバッファ５５５の蓄積量５６１は増加し、入力ビットレート５６３が出力ビットレート５６４より小さい場合にはバッファ５５５の蓄積量５６１は減少する。
【０１３６】
例えば、入力ビットレート５６３が１２Ｍｂｐｓで出力ビットレート５６４が８Ｍｂｐｓの場合、４Ｍｂｐｓの速度でバッファ５５５の蓄積量５６１は増加し、言い換えると、４Ｍｂｐｓの速度でバッファ５５５のバッファ空き容量５６２は減少する。一方、入力ビットレート５６３が６Ｍｂｐｓで出力ビットレート５６４が９Ｍｂｐｓの場合、３Ｍｂｐｓの速度でバッファ５５５の蓄積量５６１は減少し、言い換えると、３Ｍｂｐｓの速度でバッファ５５５のバッファ空き容量５６２は増加する。
【０１３７】
バッファ５５５はメディアデータが再生されるまでメディアデータを一時的に保持するものである。バッファ５５５の蓄積量５６１がゼロになる、すなわち、バッファアンダーフローが発生すると、再生すべきデータがなくなるため映像や音声の途切れが発生する。本実施の形態では、バッファアンダーフローの発生をできるだけ防止すべく、クライアント側のＡＶ機器５０２はバッファ５５５の蓄積量５６１がある一定量を超えた後にメディアデータの再生を開始するものとする。
【０１３８】
＜ＣＰＵの機能構成＞
図２０は図１８のＣＰＵ５５２の機能構成図である。但し、図２０には、ＣＰＵ５５２の機能構成の理解を容易にするため、ＡＶ機器５０２の他の構成要素も図示している。
ＣＰＵ５５２は、メモリ５５１からそれに記憶保持されているデータレート演算プログラム５５４を読み出し、読み出したデータレート演算プログラム５５４を実行する。これによって、ＣＰＵ５５２は、伝送スループット検出部５７１、バッファ蓄積量検出部５７２、減少率／増加率演算部５７３、データレート演算部５７４、データレート決定部５７５、及びデータレート情報送信制御部５７６として機能する。
【０１３９】
伝送スループット検出部５７１は、バッファ５５５に入力されるメディアデータの入力ビットレート５６３の値即ち伝送スループットの値を検出し、検出した入力ビットレート５６３の値即ち伝送スループットの値をデータレート演算部５７４へ出力する。
ここで、伝送スループット検出部５７１の機能構成について図２１を参照しつつ説明する。図２１は図２０の伝送スループット検出部５７１の機能構成図である。なお、図２１では、伝送スループット検出部５７１の内部要素とメモリ５５１及びデータレート演算部５７４との接続関係を明確にするために、メモリ５５１及びデータレート演算部５７４も図示している。
【０１４０】
伝送スループット検出部５７１は、データレート検出部５９１、バッファ変化率演算部５９２、及び伝送スループット演算部５９３として機能する。
データレート検出部５９１は、バッファ５５５から出力されるメディアデータの単位時間当たりのデータ量を検出し、検出結果をバッファ５５５から出力されるメディアデータの出力ビットレート５６４の値即ちメディアデータのデータレートの値として伝送スループット演算部５９３へ出力する。
【０１４１】
バッファ変化率演算部５９２は、バッファ５５５の蓄積量５６１に基づいて、単位時間当たりの蓄積量５６１の増加や減少を変化率として算出し、算出した変化率の値を伝送スループット演算部５９３へ出力する。但し、蓄積量５６１が増加した場合の変化率を正の値で表し、蓄積量５６１が減少した場合の変化率を負の値で表すことにする。
伝送スループット演算部５９３は、データレート検出部５９１から入力された出力ビットレート５６４の値即ちデータレートの値からバッファ変化率演算部５９２から入力された変化率の値を減算することによって入力ビットレート５６３の値即ち伝送スループットの値を算出し（入力ビットレート＝出力ビットレート−変化率；伝送スループット＝データレート−変化率）、算出した伝送スループットの値をデータレート演算部５７４へ出力する。
【０１４２】
バッファ蓄積量検出部５７２は、バッファ５５５の蓄積量５６１の値を検出し、検出した蓄積量５６１の値を減少率／増加率演算部５７３へ出力する。
減少率／増加率演算部５７３は、バッファ蓄積量検出部５７２から入力されたバッファ５５５の蓄積量５６１を利用して、バッファ５５５の蓄積量５６１の許容される減少率の値及び増加率の値を算出し、算出した減少率の値及び増加率の値をデータレート演算部５７４へ出力する。
【０１４３】
減少率／増加率演算部５７３は増加率の算出を次のようにして行う。減少率／増加率演算部５７３は、予め設定された増加率設定値からバッファ５５５の蓄積量５６１の値を減算し、減算値を確保時間で除算することによって、増加率の値を算出する（増加率＝（増加率設定値−蓄積量）／確保時間）。但し、増加率設定値とは、出力ビットレート５６４即ちデータレートを制御してバッファ５５５の蓄積量５６１の増減を調整し、確保時間後の目標とするバッファ５５５の蓄積量５６１の最大値であり、増加率設定値は主として出力ビットレート５６４即ちデータレートを増大させる制御を行う際に利用される。算出される増加率の値は、確保時間後に増加率設定値までバッファ５５５の蓄積量５６１を増加させようとした場合に必要な単位時間当たりのバッファ５５５の蓄積量５６１の増加率ということになる。
【０１４４】
また、減少率／増加率演算部５７３は減少率の算出を次のようにして行う。減少率／増加率演算部５７３は、バッファ５５５の蓄積量５６１の値から予め設定された減少率設定値を減算し、減算値を確保時間で除算することによって、減少率の値を算出する（減少率＝（蓄積量−減少率設定値）／確保時間）。但し、減少率設定値とは、出力ビットレート５６４即ちデータレートを制御してバッファ５５５の蓄積量５６１の増減を調整し、確保時間後の目標とするバッファ５５５の蓄積量５６１の最小値であり、減少率設定値は主として出力ビットレート５６４即ちデータレートを低下させる制御を行う際に利用される。算出される減少率の値は、確保時間後に減少率設定値までバッファ５５５の蓄積量５６１を減少させようとした場合に必要な単位時間当たりのバッファ５５５の蓄積量５６１の減少率ということになる。
【０１４５】
但し、増加率設定値は減少率設定値より大きい。増加率設定値は設計時に任意の値にすることができるが、例えば増加率設定値をバッファ５５５の最大蓄積量としてもよい。減少率設定値は設計時に任意の値にすることができるが、例えば減少率設定値をゼロに設定してもよい。増加率及び減少率の算出に用いる確保時間は設計時に任意の値に設定することができるが、例えば連続的に発生する伝送路誤りの継続時間とすることができる。なお、増加率の算出に用いる確保時間と減少率の算出に用いる確保時間とを同じ値にしてもよいし、異なる値にしてもよい。
【０１４６】
データレート演算部５７４は、伝送スループット検出部５７１から入力された入力ビットレート５６３の値即ち伝送スループットの値に減少率／増加率演算部５７３から入力された減少率の値を加算し、加算値をデータレート上限値としてデータレート決定部５７５へ出力する（データレート上限値＝入力ビットレート＋減少率；データレート上限値＝伝送スループット＋減少率）。但し、データレート上限値は、データレート更新値を設定する場合に許容されるデータレートの上限値である。
【０１４７】
また、データレート演算部５７４は、伝送スループット検出部５７１から入力された入力ビットレート５６３の値即ち伝送スループットの値から減少率／増加率演算部５７３から入力された増加率の値を減算し、減算値をデータレート下限値としてデータレート決定部５７５へ出力する（データレート下限値＝入力ビットレート−増加率；データレート下限値＝伝送スループット−増加率）。但し、データレート下限値は、データレート更新値を設定する場合に許容されるデータレートの下限値である。
【０１４８】
データレート決定部５７５は、図２１のデータレート検出部５９１で検出される現在のデータレートの値と、データレート演算部５７４から入力されるデータレート上限値及びデータレート下限値とに基づいて、データレート更新値を決定し、決定したデータレート更新値をデータレート情報送信制御部５７６へ出力する。
詳述すれば、データレート決定部５７５は、現在のデータレートの値がデータレート下限値以上データレート上限値以下であれば、データレート更新値を現在のデータレートの値に設定する。データレート決定部５７５は、現在のデータレートの値がデータレート下限値より小さければ、データレート更新値をデータレート下限値に設定し、現在のデータレートの値がデータレート上限値より大きければ、データレート更新値をデータレート上限値に設定する。
【０１４９】
データレート情報送信制御部５７６は、データレート決定部５７５から入力されたデータレート更新値を含むデータレート情報を通信Ｉ／Ｆ部５５３へ出力する。データレート情報は通信Ｉ／Ｆ部５５３から例えばサーバ側のＡＶ機器５０１へ送信される。
図２０及び図２１を用いて説明したＣＰＵ５５２の構成によれば、バッファ５５５の蓄積量５６１、出力ビットレート５６４、及びバッファ５５５の蓄積量５６１の変化率というバッファ５５５の状態を検出するだけで、サーバ側のＡＶ機器５０１の符号変換部１２によるメディアデータのデータレートの変換を制御することができる。このため、データレートの変換の制御が容易になり、ＡＶ機器５０２の構成を簡略化することができる。
【０１５０】
＜ＣＰＵの動作＞
図２２は図１８のＣＰＵ５５２が行うデータレート演算処理の流れを示すフローチャートである。但し、ＣＰＵ５５２はメモリ５５１からそれに記憶されているデータレート演算プログラム５５４を読み出し、読み出したデータレート演算プログラム５５４を実行することによって、図２２及び後述する図２３のフローチャートの処理を実行する。
【０１５１】
ＣＰＵ５５２は、バッファ５５５の蓄積量５６１の値が予め設定された制御開始閾値より小さいかを判定する（ステップＳ５０１）。
バッファ５５５の蓄積量５６１の値が制御開始閾値以上である間（Ｓ５０１：ＮＯ）、ステップＳ５０１の処理が繰り返し行われ、データレートの演算処理は行われない。例えば、蓄積量５６１の値が制御開始閾値より小さくなるまで、伝送スループットが安定していると判断し、データレートの更新が行われない。また、伝送路の状態が回復して蓄積量５６１の値が制御開始閾値以上になってから再度蓄積量５６１の値が制御開始閾値よりも小さくなるまで、伝送スループットが安定していると判断し、データレートの値は蓄積量５６１の値が制御開始閾値以上になった時点のデータレートの値で固定される。このように、バッファ５５５の蓄積量５６１の値が制御開始閾値以上にある場合は伝送スループットが安定していると判断し、伝送スループットが安定している場合におけるバッファ５５５の蓄積量５６１の瞬時的な変動に対してデータレートの更新は行われない。このため、伝送スループットが安定した状態ではデータレートが一定値に保たれる。これにより、例えば映像データの送信時に、伝送スループットが安定した状態ではクライアント側のＡＶ機器３で再生される映像の解像度が下がったりフレームレートが低くなったりする変化が発生せず、視聴者は違和感なく映像を視聴することができる。
【０１５２】
一方、バッファ５５５の蓄積量５６１の値が制御開始閾値より小さいと判定された場合（Ｓ５０１：ＹＥＳ）、ＣＰＵ５５２は、図２３に処理の流れを示すデータレート更新値決定処理を実行することによってデータレート更新値を決定する（ステップＳ５０２）。ＣＰＵ５５２のデータレート情報送信制御部５７６は、ステップＳ５０２の処理で決定されたデータレート更新値を含むデータレート情報を通信Ｉ／Ｆ部５５３へ出力し（ステップＳ５０３）、ステップＳ５０１の処理が行われる。通信Ｉ／Ｆ部５５３はデータレート情報送信制御部５７６から入力されたデータレート情報をネットワークを介して例えばサーバ側のＡＶ機器５０１へ送信する。
【０１５３】
［データレート更新値決定処理］
図２３は図２２のデータレート更新値決定処理（ステップＳ５０２）の流れを示すフローチャートである。
伝送スループット検出部５７１において、データレート検出部５９１はバッファ５５５から出力されるメディアデータの出力ビットレート５９４の値即ちメディアデータのデータレートの値を検出し、バッファ変化率演算部５９２はバッファ５５５の蓄積量５６１の変化率の値を算出する。そして、伝送スループット演算部５９３は検出された出力ビットレート５６４の値即ちデータレートの値から算出された変化率の値を減算することによって入力ビットレート５６３の値即ち伝送スループットの値を算出する（ステップＳ６０１）。
【０１５４】
バッファ蓄積量検出部５７２はバッファ５５５の蓄積量５６１の値を検出する（ステップＳ６０２）。減少率／増加率演算部５７３は、増加率設定値からステップＳ６０２で検出されたバッファ５５５の蓄積量５６１の値を減算し、減算値を確保時間で除算することによって、増加率の値を算出する（ステップＳ６０３）。また、減少率／増加率演算部５７３は、ステップＳ６０２で検出されたバッファ５５５の蓄積量５６１の値から減少率設定値を減算し、減算値を確保時間で除算することによって、減少率の値を算出する（ステップＳ６０４）。
【０１５５】
データレート演算部５７４は、ステップＳ６０１で検出された伝送スループットの値にステップＳ６０４で算出された減少率の値を加算し、加算値をデータレート上限値とする（ステップＳ６０５）。また、データレート演算部５７４は、ステップＳ６０１で検出された伝送スループットの値からステップＳ６０３で算出された増加率の値を減算し、減算値をデータレート下限値とする（ステップＳ６０６）。
【０１５６】
データレート決定部５７５は、現在のデータレートの値がステップＳ６０６で得られたデータレート下限値以上ステップＳ６０５で得られたデータレート上限値以下の範囲内であるかを判定する（ステップＳ６０７）。
現在のデータレートの値がその範囲内であれば（Ｓ６０７：ＹＥＳ）、データレート決定部５７５は、データレート更新値を現在のデータレートの値に設定し（ステップＳ６０８）、図２２のステップＳ５０３が行われる。このようにすることにより、伝送スループットが回復した状態から再度低下した場合や伝送スループットが低下した状態から回復した場合に、現在のデータレートの値がデータレート下限値以上データレート上限値以下の範囲内であればデータレートの更新が行われない。このため、現在のデータレートの値が上記の範囲内にあれば伝送スループットが変動してもデータレートは変動することなく安定する。これにより、例えばクライアント側のＡＶ機器５０２で再生される映像の解像度やフレームレートが急激に上がったり下がったりするような状況を回避でき、視聴者は安定した品質の映像を視聴することができる。
【０１５７】
一方、現在のデータレートの値がその範囲内になければ（Ｓ６０７：ＮＯ）、データレート決定部５７５は、現在のデータレートの値がデータレート上限値より大きいかを判定する（ステップＳ６０９）。
現在のデータレートの値がデータレート上限値より大きければ（Ｓ６０９：ＹＥＳ）、バッファ５５５の蓄積量５６１が減少してデータレート上限値が現在のデータレートの値より低下した状況であることから、データレート決定部５７５は、データレートを下げるべく、データレート更新値をデータレート上限値に設定し（ステップＳ６１０）、図２２のステップＳ５０３の処理が行われる。
【０１５８】
一方、現在のデータレートの値がデータレート上限値より大きくなければ、つまり、現在のデータレートの値がデータレート下限値より小さければ（Ｓ６０９：ＮＯ）、バッファ５５５の蓄積量５６１が増加してデータレート下限値が現在のデータレートの値より大きくなった状況であることから、データレート決定部５７５は、データレートを上げるべく、データレート更新値をデータレート下限値に設定し（ステップＳ６１１）、図２２のステップＳ５０３の処理が行われる。
【０１５９】
＜データレート更新のシーケンス例＞
図２４はサーバ側のＡＶ機器５０１からクライアント側のＡＶ機器５０２へデータストリームを配信する場合のシーケンス図である。
サーバ側のＡＶ機器５０１では、符号変換部１２はメディアデータ記憶部１１に記憶されている映像データのビットレート（データレート）を変換し、この変換によって得られた映像データは通信Ｉ／Ｆ部５１３を介してストリーム配信される。クライアント側のＡＶ機器５０２は、ストリーム配信されている映像データを通信Ｉ／Ｆ部５５３で受信し、受信した映像データをメモリ５５１のバッファ５５５に蓄積しながら順次再生する（ステップＳ７０１）。
【０１６０】
このとき、クライアント側のＡＶ機器５０２では、ＣＰＵ５５２はデータレート演算プログラム５５４をメモリ５５１から読み出して実行することによって（図２２、図２３参照）、データレート更新値を算出し（ステップＳ７０２）、算出したデータレート更新値を含むデータレート情報を通信Ｉ／Ｆ部５５３を介してＡＶ機器５０１へ送信する（ステップＳ７０３）。
【０１６１】
サーバ側のＡＶ機器５０１では、ＣＰＵ５１２はデータレート変更プログラム５１４をメモリ５１１から読み出して実行することによって（図１７参照）、データレート情報に含まれるデータレート更新値と最大データレートの値とを用いてデータレート更新値を決定する（ステップＳ７０４）。符号変換部１２はメディアデータ記憶部１１に記憶されている映像データのビットレート（データレート）を決定されたデータレート更新値に従って変換する（ステップＳ７０５）。符号変換部１２による変換によって得られた映像データは通信Ｉ／Ｆ部５１３を介してストリーム配信される。クライアント側のＡＶ機器５０２は、ストリーム配信されている映像データを通信Ｉ／Ｆ部５５３で受信し、受信した映像データをメモリ５５１のバッファ５５５に蓄積しながら順次再生する（ステップＳ７０６）。
【０１６２】
これによって、映像データのデータレートはリアルタイムに変換されて、バッファ５５５のアンダーフローを防ぎ、映像の途切れを防ぐことが可能になる。
＜データレートの制御例＞
出力ビットレート５６４即ちデータレートの制御の一例として、伝送スループットが低下し、一定時間後に伝送スループットが回復する状況におけるバッファ５５５から出力されるメディアデータの出力ビットレート即ちメディアデータのデータレートの制御について図２５及び図２６を参照しつつ説明する。
【０１６３】
図２５（ａ）及び図２６（ａ）は、伝送スループット即ちバッファ５５５に入力されるメディアデータの入力ビットレート５６３の時間的変動を示す図であり、縦軸はレート（ｂｐｓ）を、横軸は時間を表す。図２５（ａ）及び図２６（ａ）では、時間ｔ０で伝送路の状態の悪化が発生して伝送スループットが急激に下がり始め、一定時間後の時間ｔ３で伝送路の状態が回復して伝送スループットが急激に上がり始めている様子が示されている。
【０１６４】
図２５（ｂ）及び図２６（ｂ）は、受信されるメディアデータのデータレート即ちバッファ５５５から出力されるメディアデータの出力ビットレート５６４の時間的な変動を示す図であり、縦軸はレート（ｂｐｓ）を、横軸は時間を表す。
図２５（ｃ）及び図２６（ｃ）は、バッファ５５５の蓄積量５６１の時間的な変動を示す図であり、縦軸はバッファの蓄積量を、横軸は時間を表す。
【０１６５】
［伝送スループット低下時のデータレートを低下させる制御］
以下、伝送スループット低下時の出力ビットレート５６４即ちデータレートを低下させる制御の一例を図２５（ａ）〜図２５（ｃ）を参照して説明する。
時間ｔ０で、伝送路状態が悪化して伝送スループット即ちバッファ５５５に入力されるメディアデータの入力ビットレート５６３が低下し始め、入力ビットレート５６３の値がｔｐａからｔｐｂまで低下する。この入力ビットレート５６３の低下に伴い、バッファ５５５の蓄積量５６１が減少する。そして、時間ｔ１まではバッファ５５５の蓄積量５６１の値が制御開始閾値ｄｔｈ以上なので、出力ビットレート５６４の値即ちデータレートの値はそのままである（図２２のステップＳ５０１参照）。このように、蓄積量５６１の値が制御開始閾値ｄｔｈ以上の間は、伝送スループットの値が低下しても出力ビットレート５６４の値即ちデータレートの値は低下しない。
【０１６６】
バッファ５５５の蓄積量５６１の値は、入力ビットレート５６３の値と出力ビットレート５６４の値との差分に応じて減少し、時間ｔ１でバッファ５５５の蓄積量５６１の値が制御開始閾値ｄｔｈを下回ったとする。ＣＰＵ５５２はデータレート更新値の決定及びサーバ側のＡＶ機器５０１に対する決定したデータレート更新値を含むデータレート情報の送信を開始し、バッファ５５５の蓄積量５６１の値が制御開始閾値ｄｔｈ以上になるまで、データレート更新値の決定及びサーバ側のＡＶ機器５０１に対する決定したデータレート更新値を含むデータレート情報の送信を行う（図２２参照）。
【０１６７】
ＣＰＵ５５２の伝送スループット検出部５７１は入力ビットレート５６３の値即ち伝送スループットの値を検出し、バッファ蓄積量検出部５７２はバッファ５５５の蓄積量５６１の値を検出し、減少率／増加率演算部５７３は増加率の値及び減少率の値を算出し、データレート演算部５７４はデータレート上限値及びデータレート下限値を算出する（図２３のステップＳ６０１〜ステップＳ６０６参照）。ここでは、データレート決定部５７５は、現在のデータレートの値がデータレート上限値より大きいとし、データレート更新値をデータレート上限値に設定し、データレート情報送信制御部５７６はデータレート更新値を含むデータレート情報を通信Ｉ／Ｆ部５５３へ出力する（図２３のステップＳ６０７、Ｓ６０９、Ｓ６１０、図２２のステップＳ５０３参照）。これにより、データレートの値は伝送スループットの値より大きな値で徐々に小さくなる。
【０１６８】
例えば、減少率設定値がｄｄｗ、確保時間がｔａであり、時間ｔ２におけるバッファ５５５の蓄積量５６１がｄ２、時間ｔ２における入力ビットレート５６３即ち伝送スループットがｔｐｂであるとする。時間ｔ２における減少率をｔｐｄ２で表わすと、ｔｐｄ２＝（ｄ２−ｄｄｗ）／ｔａになる。時間ｔ２におけるデータレート上限値は時間ｔ２における伝送スループットの値（ｔｐｂ）に時間ｔ２における減算率の値（ｔｐｄ２）を加算した加算値ｔｐｂ＋ｔｐｄ２になる。そして、時間ｔ２におけるデータレート更新値をｔｐ２で表わすと、ｔｐ２＝ｔｐｂ＋ｔｐｄ２になる。
【０１６９】
［伝送スループット増大時のデータレートを増大させる制御］
以下、伝送スループット増大時の出力ビットレート５６４即ちデータレートを増大させる制御の一例を図２６（ａ）〜図２６（ｃ）を参照して説明する。
時間ｔ３で、伝送路状態の悪化により伝送スループットが低下した状態から伝送路状態の回復に伴い伝送スループットが回復したとする。
【０１７０】
ＣＰＵ５５２の伝送スループット検出部５７１は入力ビットレート５６３の値即ち伝送スループットの値を検出し、バッファ蓄積量検出部５７２はバッファ５５５の蓄積量５６１の値を検出し、減少率／増加率演算部５７３は増加率の値及び減少率の値を算出し、データレート演算部５７４はデータレート上限値及びデータレート下限値を算出する（図２３のステップＳ６０１〜ステップＳ６０６参照）。ここでは、データレート決定部５７５は、現在のデータレートの値がデータレート下限値より小さいとし、データレート更新値をデータレート下限値に設定し、データレート情報送信制御部５７６はデータレート更新値を含むデータレート情報を通信Ｉ／Ｆ部５５３へ出力する（図２３のステップＳ６０７、Ｓ６０９、Ｓ６１０、図２２のステップＳ５０３参照）。これにより、データレートの値は伝送スループットの値より小さな値で徐々に大きくなる。
【０１７１】
例えば、増加率設定値がｄｕｐ、確保時間がｔａであり、時間ｔ４におけるバッファ５５５の蓄積量５６１がｄ４、時間ｔ４における伝送スループット即ち入力ビットレート５６３がｔｐａであるとする。時間ｔ４における増加率をｔｐｕ４で表わすと、ｔｐｕ４＝（ｄｕｐ−ｄ４）／ｔａになる。時間ｔ４におけるデータレート下限値は時間ｔ４における伝送スループットの値（ｔｐａ）から時間ｔ４における増加率の値（ｔｐｕ４）を減算した減算値ｔｐａ−ｔｐｕ４になる。そして、時間ｔ４におけるデータレート更新値をｔｐ４で表わすと、ｔｐ４＝ｔｐａ−ｔｐｕ４になる。
【０１７２】
時間ｔ３で伝送路状態の悪化が回復して伝送スループット即ちバッファ５５５に入力されるメディアデータの入力ビットレート５６３が増大すると、バッファ５５５の蓄積量５６１が増大し始める。そして、時間ｔ５でバッファ５５５の蓄積量５６１の値が制御開始閾値ｄｔｈ以上になると、バッファ５５５から出力されるメディアデータの出力ビットレート５６４の値即ちメディアデータのデータレートの値は固定される（図２２のステップＳ５０１参照）。
【０１７３】
＜データレートの低下制御の基本的な考え方＞
以下、伝送スループットの低下時の出力ビットレート即ちデータレートを低下させる制御の基本的な考え方の概略について記載する。
伝送路の状態が悪化して伝送スループットが低下すると、バッファ５５５のアンダーフローを防ぐために、バッファ５５５から出力されるメディアデータの出力ビットレート５６４が低下するように出力ビットレート５６４即ちデータレートの制御が行われる。
【０１７４】
本実施の形態では、出力ビットレート５６４の値が入力ビットレート５６３の値になるように出力ビットレート５６４即ちデータレートを低下させるのではなくて、バッファ５５５の蓄積量５６１を利用して出力ビットレート５６４の値が入力ビットレート５６３の値より大きくなるように出力ビットレート５６４の値即ちデータレートの値を低下させる。具体的には、バッファ５５５の蓄積量５６１の値が上記の確保時間後に減少率設定値になるような減少率の値を算出し、現在のデータレートの値が減少率の値と伝送スループットの値との加算値（データレート上限値）より大きければデータレートの値がデータレート上限値になるようにデータレートの制御を行う。なお、バッファ５５５の蓄積量５６１の値は入力ビットレート５６３の値と出力ビットレート５６４の値との差分に応じて増減することから、出力ビットレート５６３の値即ちデータレートの値がデータレート上限値になるように制御した場合、伝送スループットが変化しない場合であってもバッファ５５５の蓄積量５６１は減少率に応じて減少する。
【０１７５】
上記の伝送スループットの低下時のデータレートを低下させる制御方法によれば、バッファ５５５の蓄積量５６１の値が大きい場合は、伝送スループットの値に加算する減算率の値が大きくなり、データレート上限値が大きくなる。このため、一時的に伝送スループットが低下した場合に、出力ビットレート５６４の値が入力ビットレート５６３の値になるように出力ビットレート５６４即ちデータレートを低下させる場合と比較して、データレートの下げ幅がより小さくなり、データレートの時間的な変動をより小さくすることができる。これにより、例えば映像データの配信中に一時的に伝送スループットが低下した場合に、受信側で再生される映像の解像度やフレームレートの下げ幅を小さくすることができ、視聴者は安定した品質の映像を視聴することができる。
【０１７６】
また、バッファ５５５の蓄積量５６１の値が小さい場合、伝送スループットの値に加算する減少率の値が小さくなるが、バッファ５５５の蓄積量５６１の値が減少率設定値以下にならない範囲で入力ビットレートの値と出力ビットレートの値との差を小さくする。このため、伝送スループットの低下が一定期間継続することによってバッファ５５５の蓄積量５６１の値が小さくなっても、バッファ５５５の蓄積量５６１の値は減少率設定値までにしか小さくならずバッファ５５５のアンダーフローは発生しない。これにより、例えば映像データの送信中に伝送スループットの低下が一定期間継続しても、バッファ５５５のアンダーフローによる映像の途切れが発生せず、視聴者は途切れることがない映像を視聴できる。
【０１７７】
更に、バッファ５５５の蓄積量５６１の値が確保時間後に減少率設定値になるようにした場合のバッファ５５５の蓄積量５６１の減少率はバッファ５５５の蓄積量５６１の値が小さくなるのに伴い徐々に小さくなるので、データレートの値を緩やかに小さくすることができる。これにより、例えば映像データの送信中に伝送スループットが低下した場合に、受信側で再生される映像の解像度やフレームレーを緩やかに下げることができ、視聴者が感じる違和感を少なくすることができる。
【０１７８】
更に、減少率設定値をゼロとすることにより、バッファ５５５の蓄積量５６１の値が確保時間後に減少率設定値になるようにした場合の蓄積量５６１の減少率の値を最大にすることができる。このため、減少率設定値をゼロよりも大きい値にする場合と比べてデータレートの値の下げ幅を最も小さくすることができる。
＜データレートの増大制御の基本的な考え方＞
以下、伝送スループットの回復時の出力ビットレート即ちデータレートを増大させる制御の基本的な考え方の概略について記載する。
【０１７９】
伝送路の状態の悪化が回復して伝送スループットが増大すると、例えば映像データの配信中であれば高画質な映像を視聴者に提供するために、バッファ５５５から出力されるメディアデータの出力ビットレート５６４が増大するように出力ビットレート５６４即ちデータレートの制御が行われる。
本実施の形態では、出力ビットレート５６４の値が入力ビットレート５６３の値になるように出力ビットレート５６４即ちデータレートを増大させるのではなくて、バッファ５５５の蓄積量５６１を利用して出力ビットレート５６４の値即ちデータレートの値が入力ビットレート５６３の値より小さくなるように出力ビットレート５６４の値即ちデータレートの値を増大させる。具体的には、バッファ５５５の蓄積量５６１の値が上記の確保時間後に増加率設定値になるような増加率の値を算出し、現在のデータレートの値が伝送スループットの値から増加率の値を減算した減算値（データレート下限値）より小さければデータレートの値がデータレート下限値になるようにデータレートの制御を行う。なお、バッファ５５５の蓄積量５６１の値は入力ビットレート５６３の値と出力ビットレート５６４の値との差分に応じて増減することから、出力ビットレート５６３の値即ちデータレートの値がデータレート下限値になるように制御した場合、伝送スループットが変化しない場合であってもバッファ５５５の蓄積量５６１は増加率に応じて増加する。
【０１８０】
上記の伝送スループットの回復時のデータレートを増大させる制御方法によれば、バッファ５５５の蓄積量５６１の値が確保時間後に減少率設定値より大きい増加率設定値になるようにした場合の蓄積量５６１の増加率はバッファ５５５の蓄積量５６１の値が大きくなるのに伴い徐々に小さくなる。このため、データレートの値を緩やかに大きくすることができる。これにより、例えば映像データの送信中に伝送スループットが回復した場合に、受信側で再生される映像の解像度やフレームレートを緩やかに上げることができ、視聴者が感じる違和感を少なくすることができる。
【０１８１】
また、増加率設定値をバッファ５５５の最大蓄積量とすることにより、伝送スループットが回復した状態が継続した場合のバッファ５５５の蓄積量５６１の値を最大にすることができるので、バッファ５５５の容量を最も有効に利用することができる。
＜データレート更新値の決定の基本的な考え方＞
以下、データレート更新値の決定の基本的な考え方の概略について記載する。
【０１８２】
無線の伝送路や電灯線の伝送路を用いて通信を行う場合、平均伝送スループットはほぼ一定で安定している状態でも、各時点での伝送スループットは細かく変動している。このため、仮に、伝送スループットの値即ち入力ビットレート５６３の値が上昇するとデータレートの値即ち出力ビットレート５６４の値を増大させ、伝送スループットの値即ち入力ビットレート５６３の値が低下するとデータレートの値即ち出力ビットレート５６４の値を低下させることにすると、データレートを低下させる制御とデータレートを増大させる制御との切り替えが頻繁に発生することが予想される。
【０１８３】
仮に、データレートの値が常に伝送スループットの値からバッファ５５５の蓄積量６７１の増加率の値を減算した値となるようにデータレートを増大させる制御状態から、データレートの値が常に伝送スループットの値にバッファ５５５の蓄積量６７１の減少率の値を加算した値となるようにデータを低下させる制御状態に切り替わった場合、データレートの値は、伝送スループットの値からバッファ５５５の蓄積量６７１の増加率の値を減算した値から、伝送スループットの値にバッファ５５５の蓄積量６７１の減少率の値を加算した値に変化する。つまり、データレートの値は、増加率の値と減少率の値とを加算した値分増加し、急激に増加することになる。このため、伝送スループットが低下した場合、例えばクライアント側のＡＶ機器５０２で再生される映像の解像度やフレームレートが急激に高くなってしまう。
【０１８４】
これを回避するために、本実施の形態では、伝送スループットが回復してデータレートを増大させる制御状態から、伝送スループットが悪化してデータレートを低下させる制御状態に切り替わった場合、伝送スループットの値にバッファ５５５の蓄積量５６１の減少率の値を加算した加算値（データレート上限値）が現在のデータレートの値よりも大きい間は現在のデータレートの値を維持するようにしている。
【０１８５】
つまり、現在のデータレートの値がデータレート上限値より大きい場合にはデータレート更新値をデータレート上限値とし、現在のデータレートの値がデータレート上限値以下であればデータレート更新値を現在のデータレートの値とする。
これにより、伝送スループットが回復した状態から再度低下した場合に、データレートの値が急激に上がることを防止できるため、データレートを安定させることができる。従って、伝送スループットが回復した状態から再度低下した場合に、例えばクライアント側のＡＶ機器５０２で再生される映像の解像度やフレームレートが急激に上がるということがなくなり、視聴者は安定した品質の映像を視聴することができる。
【０１８６】
逆に、仮に、データレートの値が常に伝送スループットの値にバッファ５５５の蓄積量６７１の減少率の値を加算した値となるようにデータを低下させる制御状態から、データレートの値が常に伝送スループットの値からバッファ５５５の蓄積量６７１の増加率の値を減算した値となるようにデータレートを増大させる制御状態に切り替わった場合、データレートの値は、伝送スループットの値にバッファ５５５の蓄積量６７１の減少率の値を加算した値から、伝送スループットの値からバッファ５５５の蓄積量６７１の増加率の値を減算した値に変化する。つまり、データレートの値は、増加率の値と減少率の値とを加算した値分減少し、急激に減少することになる。このため、伝送スループットが回復した場合に、例えばクライアント側のＡＶ機器３で再生される映像の解像度やフレームレートが急激に下がってしまう。
【０１８７】
これを回避するために、本実施の形態では、伝送スループットが悪化してデータレートを低下させる制御状態から、伝送スループットが回復してデータレートを増大させる制御状態に切り替わった場合、伝送スループットの値からバッファ５５５の蓄積量５６１の増加率の値を減算した減算値（データレート下限値）が現在のデータレートの値よりも小さい間は現在のデータレートの値を維持するようにしている。
【０１８８】
つまり、現在のデータレートの値がデータレート下限値より小さい場合にはデータレート更新値をデータレート下限値とし、現在のデータレートの値がデータレート下限値以上であればデータレート更新値を現在のデータレートの値とする。
これにより、伝送スループットが低下した状態から回復した場合に、データレートの値が急激に下がることを防止できるため、データレートを安定させることができる。従って、伝送スループットが低下した状態から回復した場合に、例えばクライアント側のＡＶ機器５０２で再生される映像の解像度やフレームレートが急激に下がるということがなくなり、視聴者は安定した品質の映像を視聴することができる。
【０１８９】
≪補足≫
本発明は上記の実施の形態で説明した内容に限定されず、本発明の目的とそれに関連又は付随する目的を達成するためのいかなる形態においても実施可能であり、例えば、以下であってもよい。
（１）第１の実施の形態では、バッファ１７から出力されるメディアデータの出力ビットレート２４の検出を図５に示す機能構成を有する出力ビットレート検出部３１を用いて行っているが、これに限らず、例えば次のようなものであってもよい。
【０１９０】
例えば、バッファ１７から出力されるメディアデータの出力ビットレート２４の検出に、単位時間当たりの送信成功フレーム数をＡＣＫ（Acknowledgement）やＮＡＣＫ（NegativeACK）から求めて、伝送スループットの値を算出し、算出した伝送スループットの値を出力ビットレートの値とする方法を用いてもよい。実際の通信の状態から伝送スループットを測定する一例として以下が考えられる。サーバ側のＡＶ機器が１５００バイト／フレームのデータを連続送信しているとき、ある１秒間当たりのＡＣＫ返答数が１０００個であれば、伝送スループット＝１０００（フレーム）×１５００（バイト／フレーム）／１（秒）として、伝送スループットが約１２Ｍｂｐｓであると算出できる。
【０１９１】
このように、通信Ｉ／Ｆ部が行う通信の伝送スループットを出力ビットレート２４として検出する場合は、実際に測定した伝送スループットの値を用いて入力ビットレート２３の制御を行うので、バッファ１７へ入力されるメディアデータの入力ビットレート２３及びバッファ１７のバッファ空き容量２２の変化率から出力ビットレート２４を算出する場合に比べて、入力ビットレート２３の制御を確実に行うことができる。
【０１９２】
第３の実施の形態では、伝送スループットの検出を図２１に示す機能構成を有する伝送スループット検出部５７１を用いて行っているが、これに限らず、例えば次のようなものであってもよい。
例えば、伝送スループットの検出に、単位時間当たりの受信成功フレーム数をＣＲＣ（Cyclic Redundancy Check）やＦＣＳ（FrameCheck Sequence）を用いて求めて、伝送スループットを算出する方法を用いてもよい。実際の通信の状態から伝送スループットを測定する一例として以下が考えられる。サーバ側のＡＶ機器５０１が１５００バイト／フレームのデータを連続送信しているとき、ある１秒間当たりの受信成功フレーム数が１０００個であれば、伝送スループット＝１０００（フレーム）×１５００（バイト／フレーム）／１（秒）として、伝送スループットが約１２Ｍｂｐsであることが算出できる。
【０１９３】
このように、通信Ｉ／Ｆ部５５３が行う通信の伝送スループットを入力ビットレートとして検出する場合は、実際に測定した伝送スループットを用いてサーバ側のＡＶ機器５０１の符号変換部１２が行うデータレートの変換の制御を行うので、バッファ５５５から出力されるメディアデータの出力ビットレート５６４及びバッファ５５５の蓄積量５６１の変化率から出力ビットレート５６４を算出する場合に比べて、サーバ側のＡＶ機器５０１において行われるメディアデータのデータレートの変換の制御を確実に行うことができる。
【０１９４】
（２）第１の実施の形態では、伝送スループットが回復してバッファ１７のバッファ空き容量２２の値が制御開始閾値以上になると、入力ビットレートの値をその時点の入力ビットレートの値に固定するようにしているが、これに限られるものではなく、例えば、入力ビットレートの値を所定値（例えばメディアデータに設定可能な最大データレートの値）に固定するようにしてもよい。
【０１９５】
第３の実施の形態では、伝送スループットが回復してバッファ５５５の蓄積量５６１の値が制御開始閾値以上になると、データレートの値をその時点のデータレートの値に固定するようにしているが、これに限られるものではなく、例えば、データレートの値を所定値（メディアデータに設定可能な最大データレートの値）に固定するようにしてもよい。
（３）第１の実施の形態では、伝送スループットが増大してバッファ１７のバッファ空き容量２２の値が制御開始閾値以上になった時点で入力ビットレートの値を固定しているが、これに限られるものではなく、例えば、バッファ１７のバッファ空き容量２２の値が例えば制御開始閾値と増加率設定値との間に設定された閾値以上になった時点で入力ビットレートの値を固定するようにしてもよい。
【０１９６】
上記の第３の実施の形態では、伝送スループットが回復してバッファ５５５の蓄積量５６１の値が制御開始閾値以上になった時点でデータレートの値を固定しているが、これに限られるものではなく、バッファ５５５の蓄積量５６１の値が制御開始閾値と増加率設定値との間に設定された閾値以上になった時点でデータレートの値を固定するようにしてもよい。
【０１９７】
（４）第１の実施の形態のＡＶ機器２とＡＶ機器３との間、第２の実施の形態の中継装置１０３と中継装置１０４との間、上記の第３の実施の形態のＡＶ機器５０１とＡＶ機器５０２との間は、無線としているが、これに限られるものではなく、例えば、電力線、電話線、同軸ケーブル、光ケーブルなどであってもよい。
また、第１及び第２の実施の形態の通信Ｉ／Ｆ部１５、第３の実施の形態の通信Ｉ／Ｆ部５１３，５５３は無線通信インターフェースとしたが、これに限られるものではなく、例えば、Ｅｒｔｈｅｒｎｅｔ（登録商標）、ＵＳＢ（UniversalSerial Bus）、ＨＤＭＩ（登録商標）（High-Definition Multimedia Interface）、ＩＥＥＥ１３９４などの通信インターフェースなどであってもよい。
【０１９８】
（５）第１の実施の形態では、現在の入力ビットレートの値を入力ビットレート下限値及び入力ビットレート上限値と比較して、比較結果に応じて入力ビットレート更新値を設定するようにしているが、これに限られるものではなく、例えば次のようなものであってもよい。伝送スループットの低下を検出した場合には、現在の入力ビットレートの値と入力ビットレート上限値とを比較して、現在の入力ビットレートの値が入力ビットレート上限値より大きければ入力ビットレート更新値を入力ビットレート上限値に設定し、現在の入力ビットレートの値が入力ビットレート上限値以下であれば入力ビットレート更新値を現在の入力ビットレートの値に設定するようにしてもよい。また、伝送スループットの増大を検出した場合には、現在の入力ビットレートの値と入力ビットレート下限値とを比較して、現在の入力ビットレートの値が入力ビットレート下限値より小さければ入力ビットレート更新値を入力ビットレート下限値に設定し、現在の入力ビットレートの値が入力ビットレート下限値以上であれば入力ビットレート更新値を現在の入力ビットレートの値に設定するようにしてもよい。
【０１９９】
第３の実施の形態では、現在の出力ビットレート即ちデータレートの値をデータレート下限値及びデータレート上限値と比較して、比較結果に応じてデータレート更新値を設定するようにしているが、これに限られるものではなく、例えば次のようなものであってもよい。伝送スループットの低下を検出した場合には、現在のデータレートの値とデータレート上限値とを比較して、現在のデータレートの値がデータレート上限値より大きければデータレート更新値をデータレート上限値に設定し、現在のデータレートの値がデータレート上限値以下であればデータレート更新値を現在のデータレートの値に設定するようにしてもよい。また、伝送スループットの増大を検出した場合には、現在のデータレートの値とデータレート下限値とを比較して、現在のデータレートの値がデータレート下限値より小さければデータレート更新値をデータレート下限値に設定し、現在のデータレートの値がデータレート下限値以上であればデータレート更新値を現在のデータレートの値に設定するようにしてもよい。
【０２００】
（６）第１の実施の形態において、図７の処理と同じ内容を実現できるものであれば、その処理手順を入れ替えてもよいことは言うまでもない。例えば、ステップＳ２０４、ステップＳ２０３の順番で処理をしてもよく、ステップＳ２０６、ステップＳ２０５の順番で処理をしてもよく、さらに、ステップＳ２０３、ステップＳ２０５、ステップＳ２０４、ステップＳ２０６の順番で処理をしてもよい。
【０２０１】
第３の実施の形態において、図２３の処理と同じ内容を実現できるものであれば、その処理手順を入れ替えてもよいことは言うまでもない。例えば、ステップＳ６０４、ステップＳ６０３の順番で処理をしてもよく、ステップＳ６０６、ステップＳ６０５の順番で処理をしてもよく、さらに、ステップＳ６０３、ステップＳ６０５、ステップＳ６０４、ステップＳ６０６の順番で処理をしてもよい。
【０２０２】
（７）第１から第３の実施の形態は、例えば、映像データ、音声データ、映像データ及び音声データの双方など各種データに適用可能である。
（８）第１から第３の実施の形態は、通信機能を有するＡＶ機器や中継装置を始めとする各種送信装置や受信装置に適用可能である。
（９）第１の実施の形態では、通信Ｉ／Ｆ部１５内のバッファ１７のバッファ空き容量２２などの情報を検出するとしたが、これに限られるものではなく、メモリ１３にシステムバッファを構成してそのバッファ情報を検出するようにしてもよい。バッファ１７のキューサイズが制限により大きく確保できない場合、メモリ１３のシステムバッファをさらに上乗せして、キューサイズを大きくすることも可能である。これにより利用するアプリケーションシステムに応じて、バッファサイズを容易に変更することが可能であり、バッファサイズが大きければ、第１の実施の形態の手法の効果がさらに大きく表れる。
【０２０３】
（１０）第１から第３の実施の形態の各構成を適宜組み合わせて新たな構成とすることも可能である。例えば、第３の実施の形態において、サーバ側のＡＶ機器５０１を、第２の実施の形態のように、中継装置と分離したネットワーク構成とすることも可能である。
（１１）上記の各実施の形態の各装置は、ＣＰＵやＭＰＵで動作するソフトウェア構成に限られるものではなく、例えば、ハードウェア構成で実現されてもよい。この場合、典型的には集積回路であるＬＳＩ（LargeScale Integration）として実現される。これらは、個別に１チップ化されてもよいし、全てまたは一部を含むように１チップ化されてもよい。ここでは、ＬＳＩとしたが、集積度の違いにより、ＩＣ、システムＬＳＩ、スーパーＬＳＩ、ウルトラＬＳＩと呼称されることもある。また、集積回路化の手法はＬＳＩに限るものではなく、専用回路又は汎用プロセサで実現してもよい。ＬＳＩ製造後に、プログラムすることが可能なＦＰＧＡ（FieldProgrammable Gate Array）や、ＬＳＩ内部の回路セルの接続や設定を再構成可能なリコンフィギュラブル・プロセッサを利用しても良い。さらには、半導体技術の進歩又は派生する別技術によりＬＳＩに置き換わる集積回路化の技術が登場すれば、当然、その技術を用いて機能ブロックの集積化を行ってもよい。バイオ技術の適応等が可能性としてありえる。
【０２０４】
（１２）なお、補足において第１の実施の形態について述べた変形は第２の実施の形態に対して適用可能である。
【産業上の利用可能性】
【０２０５】
本発明は、伝送路の状態に応じた送信するデータのデータレートの制御に利用することができる。
【符号の説明】
【０２０６】
１  ネットワーク
２  ＡＶ機器（サーバ側）
３  ＡＶ機器（クライアント側）
１１  メディアデータ記憶部
１２  符号変換部
１３  メモリ
１４  ＣＰＵ
１５  通信Ｉ／Ｆ部
１６  入力ビットレート制御プログラム
１７  バッファ
３１  出力ビットレート検出部
３２  バッファ空き容量検出部
３３  減少率／増加率演算部
３４  入力ビットレート演算部
３５  入力ビットレート決定部
４１  入力ビットレート検出部
４２  バッファ変化率演算部
４３  出力ビットレート演算部
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データを伝送路に送信する送信装置において、
伝送路に送信されるデータを一時的に保持するバッファと、
前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートの値を検出する第１検出部と、
前記バッファの空き容量の値を検出する第２検出部と、
前記第２検出部により検出された前記空き容量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記空き容量の減少率の値を算出する減少率演算部と、
前記第１検出部によって検出される前記出力レートの値に応じて前記バッファへ入力される所定時間当たりのデータのデータ量を表す入力レートを下げる場合、前記第１検出部によって検出された前記出力レートの値と前記減少率演算部によって算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記入力レートを制御するレート制御処理を行う制御部と、
を備える送信装置。
【請求項２】
前記第１設定値より大きい所定の第２設定値から前記第２検出部により検出された前記空き容量の値を減算した減算値を所定の確保時間で除算することによって前記空き容量の増加率の値を算出する増加率演算部を更に備え、
前記制御部は、
前記第１検出部によって検出される前記出力レートの値に応じて前記入力レートを上げる場合、前記第１検出部によって検出された前記出力レートの値から前記増加率演算部によって算出された前記増加率の値を減算し、減算値である第２制御値に基づいて前記入力レートを制御する
請求項１記載の送信装置。
【請求項３】
前記制御部は、前記第２検出部によって検出された前記空き容量の値が所定の第１閾値より小さい場合に、前記レート制御処理を行う
請求項１記載の送信装置。
【請求項４】
前記制御部は、前記第２検出部によって検出された前記空き容量の値が所定の第２閾値以上の場合に、前記入力レートの値が固定され又は所定値になるように前記入力レートを制御する
請求項２記載の送信装置。
【請求項５】
前記制御部は、
現在の前記入力レートの値が前記第１制御値を上回る場合、前記入力レートの値が前記第１制御値になるように前記入力レートを制御し、
現在の前記入力レートの値が前記第２制御値を下回る場合、前記入力レートの値が前記第２制御値になるように前記入力レートを制御する
請求項２記載の送信装置。
【請求項６】
前記制御部は、
現在の前記入力レートの値が前記第２制御値以上前記第１制御値以下の場合、前記入力レートの値が維持されるように前記入力レートを制御する
請求項５記載の送信装置。
【請求項７】
前記制御部は、前記第１制御値が送信するデータに設定可能な最大データレートの値を上回る場合、前記入力レートの値が前記最大データレートの値になるように前記入力レートを制御する
請求項１記載の送信装置。
【請求項８】
前記制御部は、前記第２制御値が送信するデータに設定可能な最大データレートの値を上回る場合、前記入力レートの値が前記最大データレートの値になるように前記入力レートを制御する
請求項２記載の送信装置。
【請求項９】
データを伝送路から受信する受信装置において、
伝送路から受信されるデータを一時的に保持するバッファと、
前記バッファに入力される所定時間当たりのデータのデータ量を表す入力レートの値を検出する第１検出部と、
前記バッファのデータの蓄積量の値を検出する第２検出部と、
前記第２検出部により検出された前記蓄積量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記蓄積量の減少率の値を算出する減少率演算部と、
前記第１検出部によって検出される前記入力レートの値に応じて前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートを下げる場合、前記第１検出部によって検出された前記入力レートの値と前記減少率演算部によって算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記出力レートを更新しようとする出力レートの更新値を決定し、決定した前記出力レートの更新値を送信装置に対して通知するレート制御処理を行う制御部と、
を備える受信装置。
【請求項１０】
前記第１設定値より大きい所定の第２設定値から前記第２検出部により検出された前記蓄積量の値を減算した減算値を所定の確保時間で除算することによって前記蓄積量の増加率の値を算出する増加率演算部を更に備え、
前記制御部は、
前記第１検出部によって検出される前記入力レートの値に応じて前記出力レートを上げる場合、前記第１検出部によって検出された前記入力レートの値から前記増加率演算部によって算出された前記増加率の値を減算し、減算値である第２制御値に基づいて前記出力レートの更新値を決定し、決定した前記出力レートの更新値を前記送信装置に対して通知する
請求項９記載の受信装置。
【請求項１１】
前記制御部は、前記第２検出部によって検出された前記蓄積量の値が所定の第１閾値より小さい場合に、前記レート制御処理を行う
請求項９記載の受信装置。
【請求項１２】
前記制御部は、前記第２検出部によって検出された前記蓄積量の値が所定の第２閾値以上の場合に、前記出力レートの値が固定され又は所定値になるように前記出力レートの更新値を決定する
請求項１０記載の受信装置。
【請求項１３】
前記制御部は、
現在の前記出力レートの値が前記第１制御値を上回る場合、前記出力レートの更新値を前記第１制御値に決定し、
現在の前記出力レートの値が前記第２制御値を下回る場合、前記出力レートの更新値を前記第２制御値に決定する
請求項１０記載の受信装置。
【請求項１４】
前記制御部は、
現在の前記出力レートの値が前記第２制御値以上前記第１制御値以下の場合、前記出力レートの値が維持されるように前記出力レートの更新値を決定する
請求項１３記載の受信装置。
【請求項１５】
伝送路に送信されるデータを一時的に保持するバッファと、
前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートの値を検出する第１検出部と、
前記バッファの空き容量の値を検出する第２検出部と、
前記第２検出部により検出された前記空き容量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記空き容量の減少率の値を算出する減少率演算部と、
前記第１検出部によって検出される前記出力レートの値に応じて前記バッファへ入力される所定時間当たりのデータのデータ量を表す入力レートを下げる場合、前記第１検出部によって検出された前記出力レートの値と前記減少率演算部によって算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記入力レートを制御するレート制御処理を行う制御部と、
を備えるレート制御装置。
【請求項１６】
伝送路から受信されるデータを一時的に保持するバッファと、
前記バッファに入力される所定時間当たりのデータのデータ量を表す入力レートの値を検出する第１検出部と、
前記バッファのデータの蓄積量の値を検出する第２検出部と、
前記第２検出部により検出された前記蓄積量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記蓄積量の減少率の値を算出する減少率演算部と、
前記第１検出部によって検出される前記入力レートの値に応じて前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートを下げる場合、前記第１検出部によって検出された前記入力レートの値と前記減少率演算部によって算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記出力レートを更新しようとする出力レートの更新値を決定し、決定した前記出力レートの更新値を送信装置に対して通知するレート制御処理を行う制御部と、
を備えるレート制御装置。
【請求項１７】
データを伝送路に送信する送信装置において行われる送信方法であって、
伝送路に送信されるデータを一時的にバッファに保持する保持ステップと、
前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートの値を検出する第１検出ステップと、
前記バッファの空き容量の値を検出する第２検出ステップと、
前記第２検出ステップにおいて検出された前記空き容量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記空き容量の減少率の値を算出する減少率演算ステップと、
前記第１検出ステップにおいて検出される前記出力レートの値に応じて前記バッファへ入力される所定時間当たりのデータのデータ量を表す入力レートを下げる場合、前記第１検出ステップにおいて検出された前記出力レートの値と前記減少率演算ステップにおいて算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記入力レートを制御するレート制御処理を行う制御ステップと、
を備える送信方法。
【請求項１８】
データを伝送路から受信する受信装置において行われる受信方法であって、
伝送路から受信されるデータを一時的にバッファに保持する保持ステップと、
前記バッファに入力される所定時間当たりのデータのデータ量を表す入力レートの値を検出する第１検出ステップと、
前記バッファのデータの蓄積量の値を検出する第２検出ステップと、
前記第２検出ステップにおいて検出された前記蓄積量の値から所定の第１設定値を減算した減算値を所定の確保時間で除算することによって前記蓄積量の減少率の値を算出する減少率演算ステップと、
前記第１検出ステップにおいて検出される前記入力レートの値に応じて前記バッファから出力される所定時間当たりのデータのデータ量を表す出力レートを下げる場合、前記第１検出ステップにおいて検出された前記入力レートの値と前記減少率演算部によって算出された前記減少率の値とを加算し、加算値である第１制御値に基づいて前記出力レートを更新しようとする出力レートの更新値を決定し、決定した前記出力レートの更新値を送信装置に対して通知するレート制御処理を行うステップと、
を備える受信方法。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】全図
【補正方法】変更
【補正の内容】
【図１】
2010007749.tif 000029
【図２】
2010007749.tif 000030
【図３】
2010007749.tif 000031
【図４】
2010007749.tif 000032
【図５】
2010007749.tif 000033
【図６】
2010007749.tif 000034
【図７】
2010007749.tif 000035
【図８】
2010007749.tif 000036
【図９】
2010007749.tif 000037
【図１０】
2010007749.tif 000038
【図１１】
2010007749.tif 000039
【図１２】
2010007749.tif 000040
【図１３】
2010007749.tif 000041
【図１４】
2010007749.tif 000042
【図１５】
2010007749.tif 000043
【図１６】
2010007749.tif 000044
【図１７】
2010007749.tif 000045
【図１８】
2010007749.tif 000046
【図１９】
2010007749.tif 000047
【図２０】
2010007749.tif 000048
【図２１】
2010007749.tif 000049
【図２２】
2010007749.tif 000050
【図２３】
2010007749.tif 000051
【図２４】
2010007749.tif 000052
【図２５】
2010007749.tif 000053
【図２６】
2010007749.tif 000054
【国際調査報告】
2010007749.tif 000055
2010007749.tif 000056