説明

パケット送信制御方法、パケット送信制御装置及びパケット送信制御プログラム

【課題】 入力デバイスからのデータの量が所定の周期で送信されるパケットで処理できる量を超えた場合であっても、パケットを正常に送信できることを可能とする。
【解決手段】 データ群を入力する度に、パケット送信間隔から前回のデータ群入力時刻と今回のデータ群入力時刻との間隔を差し引いて得られる間隔差分を累積差分に加算し、該加算後の累積差分が第1所定値以下である場合には入力したデータ群をパケットとして送信し、該加算後の累積差分が前記第1所定値を超える場合には入力したデータ群を廃棄すると共に、前記累積差分を前記第1所定値から前記パケット送信間隔を差し引いて得られる値に初期化する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、パケットを送信するためのパケット送信制御方法、パケット送信制御装置及びパケット送信制御プログラムに関し、特に、時間的に一定間隔でパケットを送信するためのパケット送信制御方法、パケット送信制御装置及びパケット送信制御プログラムに関する。
【背景技術】
【0002】
近年、インターネットを利用した音声通信が行われるようになってきている。この音声通信はコーデック信号をIPパケット化することにより行われ、VoIP(Voice over Internet Protocol)として知られている。
【特許文献1】特開平01−101745号公報
【特許文献2】特開平11−150562号公報
【特許文献3】特表2002−532959号公報
【発明の開示】
【発明が解決しようとする課題】
【0003】
従来、VoIP端末において音声入力デバイスからの音声データの量が所定の周期で送信される音声パケットで処理できる量を超える場合、送信パケットを周期的に送信することが出来ないため、受話側のVoIP端末のバッファあふれなどによりノイズとなる場合があった。
【0004】
特許文献1に記載の発明は、送信フローが安定するまで受信側でパケットを破棄することにより高品質なリアルタイム音声通信を実現するものである。
【0005】
特許文献2に記載の発明は、ADPCM符号化前にサンプル値を破棄し、フロー制御のためのパケット廃棄時でも正しく復号化するものである。
【0006】
特許文献3に記載の発明は、WLLおよびワイヤレス情報の処理に関するものである。
【0007】
本発明は、入力デバイスからのデータの量が所定の周期で送信されるパケットで処理できる量を超えた場合であっても、パケットを正常に送信できることを可能とするパケット送信制御方法、パケット送信制御装置及びパケット送信制御プログラムを提供することを目的とする。
【課題を解決するための手段】
【0008】
本発明によれば、データ群を入力する度に、パケット送信間隔から前回のデータ群入力時刻と今回のデータ群入力時刻との間隔を差し引いて得られる間隔差分を累積差分に加算し、該加算後の累積差分が第1所定値以下である場合には入力したデータ群をパケットとして送信し、該加算後の累積差分が前記第1所定値を超える場合には入力したデータ群を廃棄すると共に、前記累積差分を前記第1所定値から前記パケット送信間隔を差し引いて得られる値に初期化することを特徴とするパケット送信制御方法が提供される。
【0009】
上記のパケット送信制御方法において、前記前回のデータ群入力時刻と前記今回のデータ群入力時刻との間隔が第2所定値を超える場合には、前記間隔差分を前記累積差分に加算する代わりに、前記累積差分を第3所定値に初期化してもよい。
【0010】
上記のパケット送信制御方法において、前記第3所定値は、前記第1所定値から前記パケット送信間隔を減じた値から前記第1所定値までの範囲にあってもよい。
【発明の効果】
【0011】
本発明によれば、所定の場合に入力データ群を廃棄するので、入力データ群の量がパケットとして送信しきれない量である場合であっても、入力データ群を正常なパケットとして送信することが可能となる。従って、受信側でバッファがオーバーフローし、受信側の動作が異常となることを防止することができる。
【発明を実施するための最良の形態】
【0012】
以下、図面を参照して本発明を実施するための最良の形態について詳細に説明する。
【0013】
以下の説明は、データは音声データであるとして行うが、本発明は、これに限られるものではなく、データは映像データその他種々のデータであってもよい。
【0014】
[実施形態1]
本発明の特徴は、VoIP端末において音声入力デバイスより受信した音声データをキャプチャする際、音声データの量が所定間隔で送信される音声パケットで送信できる量を超える場合でもデータ量を調整し、音声パケットを周期的に送信できるようにしたことにある。
【0015】
図1において、音声入力デバイス101は第1VoIP端末102にUSB(Universal Serial Bus)やオーディオ入力端子経由で接続され、VoIP通話における音声を第1VoIP端末102に送信する。第1VoIP端末102はVoIPアプリケーション部151(図2参照)を有し、第2VoIP端末103とVoIP通話を行うことができる。また、音声入力デバイス101より受信した音声データに実時間処理可能範囲を超える過不足がある場合にフロー制御を行い周期的に音声パケットを送信することができる。第2VoIP端末103は第1VoIP端末102と同様にVoIPアプリケーション部151を有し、互いにVoIP通話を行うことができる。
【0016】
このようにして本発明では、VoIP端末が音声キャプチャ処理の際に音声データのフロー制御を行うことにより音声パケットを周期的に送信できる。
【0017】
図1を参照すると、本実施形態は、互いにVoIP通話可能な第1VoIP端末102、第2VoIP端末103及び第1VoIP端末102に接続される音声入力デバイス101を含む。
【0018】
図2を参照すると、第1VoIP端末102は、VoIPアプリケーション部151、オペレーティングシステム152及びデバイスドライバ181を備える。なお、VoIPアプリケーション部151、オペレーティングシステム152及びデバイスドライバ181は、ハードウェアによって実現してもよいが、通常は、ソフトウェアによって実現される。
【0019】
デバイスドライバ181は、音声入力デバイス101を制御する。オペレーティングシステム152は、VoIPアプリケーション部151からの指示によりデバイスドライバ181を制御して、音声データを取得し、VoIPアプリケーション部151に音声データを転送する。また、オペレーティングシステム152は、実時間をカウントする内部タイマ171を有し、VoIPアプリケーション部151の指示によりそのタイマ値を返す。
【0020】
VoIPアプリケーション部は音声キャプチャ部161、入力バッファ162、フロー制御部163、エンコード部164及びパケット送信部165を備える。音声キャプチャ部161は送信間隔分の音声データを定期的にオペレーティングシステム152に要求し、オペレーティングシステム152から転送されたデータを入力バッファ162に格納する。また、そのデータを入力バッファ162に格納したことをフロー制御部163に通知する。フロー制御部163はその通知をトリガとして、入力バッファ162にあるデータをエンコード部164に転送する。この転送の際に、パケット量の調整を行う。エンコード部164はフロー制御部163から転送された音声データをエンコードし、パケット送信部165は、エンコードされた音声データにRTPヘッダを付与した後、第2VoIP端末103にパケット送信間隔のタイミングで音声パケットを送信する。
【0021】
第1VoIP端末102と第2VoIP端末103が、例えば30ミリ秒周期のコーデックを使用したVoIP通話を行っているとき、音声キャプチャ部161はオペレーティングシステム152に対して30ミリ秒分の音声データを要求する。オペレーティングシステム152はデバイスドライバ181を制御し、音声データを取得し、音声キャプチャ部161に渡す。音声キャプチャ部161は、受信した30ミリ秒分の音声データを入力バッファ162に格納し、フロー制御部163に書込通知を行う。フロー制御部163は、書込通知を受信する度に音声データの受信間隔をチェックし、パケット量の調整を行った後、入力バッファ162に格納されている音声データをエンコード部164に渡す。エンコード部164は、受信した音声データをエンコードし、パケット送信部165は、エンコードされた音声データにRTPヘッダを付与した後、第2VoIP端末103にパケット送信間隔のタイミングで音声パケットを送信する。
【0022】
次に、フロー制御部163について説明する。図3は、フロー制御部163の構成及び関連部分を示すブロック図である。
【0023】
図3を参照すると、フロー制御部163は、制御部163−1、CurrTimeレジスタ163−3、PrevTimeレジスタ163−4、減算器163−5、DiffTimeレジスタ163−6、Nレジスタ163−7、減算器163−8、DiffTotalTimeレジスタ163−9、加算器163−10、THレジスタ163−11、比較器163−12、廃棄部163−13及び減算器163−14を備える。
【0024】
制御部163−1は、フロー制御部163の各部の動作タイミングを制御する。CurrTimeレジスタ163−3は、内部タイマ171が出力するタイマー値を書込通知がある度にサンプリングする。PrevTimeレジスタ163−4は、CurrTimeレジスタ163−3の出力値を書込通知がある度にサンプリングする。減算器163−5は、CurrTimeレジスタ163−3の出力値からPrevTimeレジスタ163−4の出力値を減算する。DiffTimeレジスタ163−6は、減算器163−5の出力値を書込通知がある度にサンプリングする。Nレジスタ163−7は、パケット送信間隔Nを保持する。減算器163−8は、Nレジスタ163−7の出力値からDiffTimeレジスタ163−6の出力値を減算する。DiffTotalTimeレジスタ163−9は加算器163−10の出力を書込通知がある度にサンプリングする。また、DiffTotalTimeレジスタ163−9の出力値は、廃棄を行った場合に、減算器163−14の出力値にリセットされる。加算器163−10は、DiffTotalTimeレジスタ163−9の出力値に減算器163−8の出力値を加算する。TH1レジスタ163−11は、第1しきい値TH1を保持する。第1しきい値TH1は、任意の値で良く、例えばゼロであってもよい。比較器163−12はDiffTotalTimeレジスタ163−9の出力値がTH1レジスタ163−11の出力値以下であるかを判断する。廃棄部163−13は、DiffTotalTimeレジスタ163−9の出力値がTH1レジスタ163−11の出力値を超える場合に、入力バッファ162から読み出したデータを廃棄する。減算器163−14は、TH1レジスタ163−11の出力値からNレジスタ163−7の出力値を減算する。
【0025】
次に、図3及び図4を参照してフロー制御部163の動作について説明する。
【0026】
図4に示す動作は、書込通知がある度に行われる。
【0027】
まず、CurrTimeレジスタ163−3の出力値をPrevTimeレジスタ163−4に代入し、次いで、内部タイマ171の出力値である現在時刻をCurrTimeレジスタ163−3に代入する(ステップS201)。
【0028】
次に、減算器163−5が出力するCurrTimeからPrevTimeを差し引いた値をDiffTimeレジスタ163−6に代入する(ステップS202)。
【0029】
次に、加算器163−10が出力する、Nレジスタ163−7の出力値からDiffTimeレジスタ163−6の出力値を減算した値をDiffTotalTimeレジスタ163−9の出力値に加算した値をDiffTotalTimeレジスタ163−9に代入する(ステップS203)。
【0030】
次に、比較器163−12は、DiffTotalTimeレジスタ163−9の出力値がTH1レジスタ163−11の出力値以下であるか否かを判断する(ステップS204)。
【0031】
ステップS204の判断結果が真である場合には、エンコード部164は入力バッファ162から読み出した音声データをエンコードし、パケット送信部165は、エンコードされた音声データを送信する。
【0032】
ステップS204の判断結果が偽である場合には、廃棄部163−13は、入力バッファ162から読み出した音声データを廃棄する(ステップS207)。次に、TH1レジスタ163−11の出力値からNレジスタ163−7の出力値を減算した値をDiffTotalTimeレジスタ163−9に代入する(ステップS208)。
【0033】
図5に動作例を示す。図5の例では、パケット送信間隔Nの値は30ミリ秒であり、第1しきい値TH1の値はゼロであり、書込通知の間隔は20ミリ秒である。3回の書込通知につき1回データ廃棄を行うことにより、正常に30ミリ秒間隔でパケットを送信することが可能となっている。
【0034】
[実施形態2]
次に、実施形態2について説明する。実施形態2においては、DiffTimeが大き過ぎるかどうか判別し、大き過ぎた場合は音声入力デバイスによるミュート(音声データ入力停止)またはVoIP通話断と判断する。
【0035】
図6は、実施形態2によるフロー制御部163の構成及び関連部分を示すブロック図である。
【0036】
図6を図3と比較すると明らかなように、実施形態2によるフロー制御部163は、TH2レジスタ163−15、比較器163−16及びInitDiffTotalTimeレジスタ163−17が追加されている点が実施形態1によるフロー制御部163と異なる。
【0037】
TH2レジスタ163−15は、ミュート等が行われているか否かを判断するためのしきい値TH2を保持する。しきい値TH2の値は例えば300ミリ秒とする。比較器163−15は、DiffTimeレジスタ163−6の出力値とTH2レジスタ163−16の出力値を比較する。InitDiffTotalTimeレジスタ163−17は、DiffTotalTimeを初期化する場合のその初期値を保持する。
【0038】
図7は、実施形態2によるフロー制御部163の動作を示すフローチャートである。
【0039】
図7を図4と比較すると明らかなように、実施形態2によるフロー制御部163の動作は、ステップS309及びステップS310が追加されている点が実施形態1によるフロー制御部163の動作と異なる。
【0040】
ステップS309では、DiffTimeレジスタ163−6の出力値がTH2レジスタの出力値よりも少ないか否かを判断する(ステップS309)。
【0041】
ステップS309の判断結果が真であれば、実施形態1と同様にステップS303に進む。
【0042】
ステップS309の判断結果が偽であれば、DiffTotalTimeをInitDiffTotalTimeに初期化し(ステップS310)、ステップS304に進む。InitDiffTotalTimeは、TH1−N以上TH1以下の範囲の何れかの値に設定する。
【0043】
実施形態2によれば、ミュートから通話状態に復帰した直後に確実に音声データを送信することができる。また、DiffTotalTimeが絶対値の大きなマイナスの値になることを防止することができるので、ミュートから通話状態に復帰した直後から一定時間経過するまでの間、入力データが過剰であるにもかかわらず、データ廃棄が行われないという事態を防止することができる。
【産業上の利用可能性】
【0044】
本発明は、データが過剰となった場合であっても、一定間隔でデータをパケット化して送信するために利用することができる。
【図面の簡単な説明】
【0045】
【図1】本発明の実施形態によるVoIP通話システムの構成を示すブロック図である。
【図2】本発明の実施形態による第1VoIP端末の構成を示すブロック図である。
【図3】本発明の実施形態1によるフロー制御部の構成及びその周辺部を示すブロック図である。
【図4】本発明の実施形態1によるフロー制御部の動作を示すフローチャートである。
【図5】本発明の実施形態による動作例を示すタイミングチャートである。
【図6】本発明の実施形態2によるフロー制御部の構成及びその周辺部を示すブロック図である。
【図7】本発明の実施形態2によるフロー制御部の動作を示すフローチャートである。
【符号の説明】
【0046】
101 音声入力デバイス
102 第1VoIP端末
103 第2VoIP端末
151 VoIPアプリケーション部
152 オペレーティングシステム
161 音声キャプチャ部
162 入力バッファ
163 フロー制御部
164 エンコード部
165 パケット送信部
171 内部タイマ
181 デバイスドライバ
163−1 制御部
163−3 CurrTimeレジスタ
163−4 PrevTimeレジスタ
163−5 減算器
163−6 DiffTimeレジスタ
163−7 Nレジスタ
163−8 減算器
163−9 DiffTotalTimeレジスタ
163−10 加算器
163−11 THレジスタ
163−12 比較器
163−13 廃棄部
163−14 減算器
163−15 TH2レジスタ
163−16 比較器

【特許請求の範囲】
【請求項1】
データ群を入力する度に、パケット送信間隔から前回のデータ群入力時刻と今回のデータ群入力時刻との間隔を差し引いて得られる間隔差分を累積差分に加算し、該加算後の累積差分が第1所定値以下である場合には入力したデータ群をパケットとして送信し、該加算後の累積差分が前記第1所定値を超える場合には入力したデータ群を廃棄すると共に、前記累積差分を前記第1所定値から前記パケット送信間隔を差し引いて得られる値に初期化することを特徴とするパケット送信制御方法。
【請求項2】
請求項1に記載のパケット送信制御方法において、
前記前回のデータ群入力時刻と前記今回のデータ群入力時刻との間隔が第2所定値を超える場合には、前記間隔差分を前記累積差分に加算する代わりに、前記累積差分を第3所定値に初期化することを特徴とするパケット送信制御方法。
【請求項3】
請求項2に記載のパケット送信制御方法において、
前記第3所定値は、前記第1所定値から前記パケット送信間隔を減じた値から前記第1所定値までの範囲にあることを特徴とするパケット送信制御方法。
【請求項4】
データ群を入力する度に、パケット送信間隔から前回のデータ群入力時刻と今回のデータ群入力時刻との間隔を差し引いて得られる間隔差分を累積差分に加算し、該加算後の累積差分が第1所定値以下である場合には入力したデータ群をパケットとして送信し、該加算後の累積差分が前記第1所定値を超える場合には入力したデータ群を廃棄すると共に、前記累積差分を前記第1所定値から前記パケット送信間隔を差し引いて得られる値に初期化する手段を備えることを特徴とするパケット送信制御装置。
【請求項5】
請求項4に記載のパケット送信制御装置において、
前記前回のデータ群入力時刻と前記今回のデータ群入力時刻との間隔が第2所定値を超える場合には、前記間隔差分を前記累積差分に加算する代わりに、前記累積差分を第3所定値に初期化することを特徴とするパケット送信制御装置。
【請求項6】
請求項5に記載のパケット送信制御装置において、
前記第3所定値は、前記第1所定値から前記パケット送信間隔を減じた値から前記第1所定値までの範囲にあることを特徴とするパケット送信制御装置。
【請求項7】
データ群を入力する度に、パケット送信間隔から前回のデータ群入力時刻と今回のデータ群入力時刻との間隔を差し引いて得られる間隔差分を累積差分に加算し、該加算後の累積差分が第1所定値以下である場合には入力したデータ群をパケットとして送信し、該加算後の累積差分が前記第1所定値を超える場合には入力したデータ群を廃棄すると共に、前記累積差分を前記第1所定値から前記パケット送信間隔を差し引いて得られる値に初期化することを特徴とするパケット送信制御方法をコンピュータに行わせるためのパケット送信制御プログラム。
【請求項8】
請求項7に記載のパケット送信制御プログラムにおいて、
前記前回のデータ群入力時刻と前記今回のデータ群入力時刻との間隔が第2所定値を超える場合には、前記間隔差分を前記累積差分に加算する代わりに、前記累積差分を第3所定値に初期化することを特徴とするパケット送信制御プログラム。
【請求項9】
請求項8に記載のパケット送信制御プログラムにおいて、
前記第3所定値は、前記第1所定値から前記パケット送信間隔を減じた値から前記第1所定値までの範囲にあることを特徴とするパケット送信制御プログラム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate


【公開番号】特開2006−42022(P2006−42022A)
【公開日】平成18年2月9日(2006.2.9)
【国際特許分類】
【出願番号】特願2004−220186(P2004−220186)
【出願日】平成16年7月28日(2004.7.28)
【出願人】(000227205)NECインフロンティア株式会社 (1,047)
【Fターム(参考)】