JP2005175837A - 送信装置および方法、受信装置および方法、記録媒体、並びにプログラム - Google Patents

送信装置および方法、受信装置および方法、記録媒体、並びにプログラム Download PDF

Info

Publication number
JP2005175837A
JP2005175837A JP2003412459A JP2003412459A JP2005175837A JP 2005175837 A JP2005175837 A JP 2005175837A JP 2003412459 A JP2003412459 A JP 2003412459A JP 2003412459 A JP2003412459 A JP 2003412459A JP 2005175837 A JP2005175837 A JP 2005175837A
Authority
JP
Japan
Prior art keywords
packet
fec
error correction
packets
transmission
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2003412459A
Other languages
English (en)
Other versions
JP4349114B2 (ja
Inventor
Kenji Yamane
健治 山根
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Corp
Original Assignee
Sony Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sony Corp filed Critical Sony Corp
Priority to JP2003412459A priority Critical patent/JP4349114B2/ja
Priority to US10/999,980 priority patent/US7539925B2/en
Priority to KR1020040103604A priority patent/KR20050056886A/ko
Priority to CNB2004101002744A priority patent/CN100377516C/zh
Publication of JP2005175837A publication Critical patent/JP2005175837A/ja
Application granted granted Critical
Publication of JP4349114B2 publication Critical patent/JP4349114B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/0001Systems modifying transmission characteristics according to link quality, e.g. power backoff
    • H04L1/0009Systems modifying transmission characteristics according to link quality, e.g. power backoff by adapting the channel coding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/27Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques
    • H03M13/2703Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes using interleaving techniques the interleaver involving at least two directions
    • H03M13/2707Simple row-column interleaver, i.e. pure block interleaving
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • H03M13/2909Product codes
    • H03M13/2915Product codes with an error detection code in one dimension
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • H03M13/353Adaptation to the channel
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/63Joint error correction and other techniques
    • H03M13/6306Error control coding in combination with Automatic Repeat reQuest [ARQ] and diversity transmission, e.g. coding schemes for the multiple transmission of the same information or the transmission of incremental redundancy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/098Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit using single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes

Abstract

【課題】 通信網の状態に応じて、冗長データを含むデータの送信をより効率的に行う。
【解決手段】 輻輳/非輻輳判定部105は、通信網が輻輳状態であるか否かを判定する。FECパケット生成部84は、送信パケットに格納されているストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケットを生成する。FEC送信制御部86は、輻輳状態でない旨の判定結果から輻輳状態である旨の判定結果に変化した場合、誤り訂正パケットの数を変更するように、誤り訂正パケットの生成を制御する。本発明は、遠隔テレビ会議システムに適用できる。
【選択図】 図6

Description

本発明は送信装置および方法、受信装置および方法、記録媒体、並びにプログラムに関し、特に、通信網の状態に応じて、冗長データを含むデータの送信をより効率的に行うことができるようにした送信装置および方法、受信装置および方法、記録媒体、並びにプログラムに関する。
昨今、インターネットなど、種々の通信媒体を介して、画像データまたは音声データを伝送して提供するサービスが一般に行われている。特に、近年、ダウンロード型の伝送方式のサービスに加えて、ストリーム型の伝送方式のサービスがより多く提供されるようになってきた。
ストリーム型の伝送方式のサービスにおいては、送信装置が、データを順次送信し、受信装置が、送信装置から送信されてくるデータを受信するとともに、これに並行して、受信されたデータを基に画像または音声を再生する。ストリーム型の伝送方式は、インターネット電話、遠隔テレビ会議、またはビデオオンデマンドなどのインターネットサービスに利用されている。
ストリーム型の伝送方式において、送信装置から送信されてくるデータを、一般に、ストリーミングデータと称する。
しかしながら、インターネットなどのデータの到達が保証されない伝送路を介して、動画像または音声のストリーミングデータを伝送すると、伝送負荷の増大により、パケットロスが生じる場合がある。
パケットロスが生じると、受信側において、再生される動画像が乱れたり、音声が途切れたりしてしまう。
この問題を解決するために、ストリーミングデータと共に冗長データを送信し、受信側でロスしたパケットのエラーを訂正する方法が用いられている。その一例として、FEC(Forward Error Correction)方式がある。FEC方式においては、複数のパケットからなる集合に対して、冗長パケットを複数生成して、集合と共に冗長パケットが送信される。受信側においては、集合に属するパケットにパケットロスが生じた場合、冗長パケットを用いて、ロスしたパケットのエラーが訂正される。
例えば、図1で示されるように、送信側は、データパケット1−1乃至データパケット1−5の5つのパケットからなる集合に、FECパケット2−1およびFECパケット2−2の2つの冗長パケットを付加して、受信側に送信する。FECパケット2−1およびFECパケット2−2は、データパケット1−1乃至データパケット1−5の所定の組み合わせに対して排他的論理和(exclusive-OR)の演算を適用することにより生成される。
例えば、伝送路において、データパケット1−2がロスされた場合、受信側において、データパケット1−1とFECパケット2−1とに排他的論理和の演算が適用されることにより、データパケット1−2が復元される。
図1で示される例において、FECパケット2−1およびFECパケット2−2の数と同じ数のロスしたパケットのエラーを訂正することができる。すなわち、データパケット1−1乃至データパケット1−5のうち、1つまたは2つがロスされても、そのパケットを回復することができる。
FEC方式によって、1フレームの集合に対して、冗長データを生成することが考えられるが、冗長データの生成をソフトウェアで行うと、非常に負荷の高い処理になってしまうという問題がある。
図2は、データパケット1−1乃至データパケット1−5からなる集合、およびFECパケット2−1およびFECパケット2−2の冗長パケットの送信の順序を説明する図である。図2の横方向は、時間を示す。
データパケット1−1乃至データパケット1−5の集合、およびFECパケット2−1およびFECパケット2−2の冗長パケットの送信において、最初に、データパケット1−1乃至データパケット1−5が順に送信され、その後、FECパケット2−1およびFECパケット2−2が順に送信される。
図3は、従来のFECパケットを付加した送信の処理を説明するフローチャートである。ステップS11において、送信装置は、内蔵しているタイマを初期化する。
ステップS12において、送信装置は、タイマの値を基に、タイマが終了したか否かを判定し、タイマが終了していない場合、ステップS12に戻り、タイマが終了するまで、判定の処理を繰り返す。
ステップS12において、タイマが終了したと判定された場合、1つのフレームに対応する期間が経過したので、ステップS13に進み、送信装置は、供給された画像データをキャプチャする。ステップS14において、送信装置は、キャプチャされた画像データを、エンコード(符号化)する。
ステップS15において、送信装置は、符号化された画像データを格納するデータパケットであるRTP(Real-time Transport Protocol)パケットを生成する。ステップS16において、送信装置は、RTPパケットを相手に送信する。
ステップS17において、送信装置は、RTPパケットを基に、FECパケットを生成する。
ステップS18において、送信装置は、FECパケットを相手に送信する。
ステップS19において、送信装置は、RTPパケットに付加するタイムスタンプを更新する。ステップS20において、送信装置は、内蔵しているタイマをセットして、ステップS12に戻り、上述した処理を繰り返す。
また、送信側では、各パケットの情報ブロックを、先行パケットおよび後続パケットの情報ブロックとの共通部分を持つように構成し、誤り訂正符号にて符号化して送信し、共通部分の大きさは伝送路状態に応じて変化させ、一方、受信側では、その情報ブロックを復号および誤り訂正符号の機能によって誤り訂正し、復号に失敗した場合には、情報ブロックの共通部分を先行パケットのものと置換して、この共通部分が置換された情報ブロックを、再度、復号および誤り訂正するようにしているものもある(特許文献1参照)。
さらに、パケット伝送において、ネットワーク監視部によって監視されるネットワーク状況に基づいてエラー訂正制御を行うシステムもある(特許文献2参照)。このシステムにおいては、FECによるエラー制御、再送要求処理(ARQ)に基づくエラー制御等の態様をネットワークにおけるパケット損失、エラー発生状況に応じて動的に変更してパケット転送を実行し、RTT(Round-Trip Time)が短いならば、ARQによるエラー訂正選択、RTTが長い状況である場合には、ARQではなくFECによるエラー訂正を選択するといった動的なエラー訂正制御が可能となる。
特開2000−224226号公報
特開2003−179580号公報
しかしながら、常にストリーミングデータと共に冗長パケットを送信すると、無駄なデータを送信してしまうことになる。
また、通信網において、パケットロスがどの程度発生しているかが分からないので、冗長パケットをいくつ送信してよいか分からないという問題があった。
本発明の送信装置は、通信網が輻輳状態であるか否かを判定する判定手段と、送信パケットに格納されているストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケットを生成する生成手段と、輻輳状態でない旨の判定結果から輻輳状態である旨の判定結果に変化した場合、誤り訂正パケットの数を変更するように、生成手段における誤り訂正パケットの生成を制御する制御手段とを備えることを特徴とする。
制御手段は、輻輳状態であると判定された場合、生成手段に所定の数の誤り訂正パケットを生成させ、輻輳状態でないと判定された場合、生成手段の誤り訂正パケットの生成を抑制するように、生成手段における誤り訂正パケットの生成を制御するようにすることができる。
制御手段は、輻輳状態でない旨の判定結果から輻輳状態である旨の判定結果に変化した場合、直前の輻輳状態における送信パケットの受信の状態を基に、誤り訂正パケットの数を変更するように、生成手段における誤り訂正パケットの生成を制御するようにすることができる。
制御手段は、所定の期間における1または複数の送信パケットからなる誤り訂正の単位であって、所定の期間における1または複数の誤り訂正の単位の受信状態を基に、所定の期間における1または複数の誤り訂正の単位のいずれかにおいて、誤り訂正パケットの数が不足している場合、誤り訂正パケットの数を増加させるように、生成手段における誤り訂正パケットの生成を制御するようにすることができる。
判定手段は、第1の時刻から現在時刻までの期間における送信パケットの相手への伝送に要する遅延時間に依存する短期依存遅延時間と、第1の時刻より過去の第2の時刻から現在時刻までの期間における遅延時間に依存する長期依存遅延時間とを基に、輻輳状態であるか否かを判定するようにすることができる。
本発明の送信方法は、通信網が輻輳状態であるか否かを判定する判定ステップと、送信パケットに格納されているストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケットを生成する生成ステップと、輻輳状態でない旨の判定結果から輻輳状態である旨の判定結果に変化した場合、誤り訂正パケットの数を変更するように、生成ステップにおける誤り訂正パケットの生成を制御する制御ステップとを含むことを特徴とする。
本発明の記録媒体のプログラムは、通信網が輻輳状態であるか否かを判定する判定ステップと、送信パケットに格納されているストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケットを生成する生成ステップと、輻輳状態でない旨の判定結果から輻輳状態である旨の判定結果に変化した場合、誤り訂正パケットの数を変更するように、生成ステップにおける誤り訂正パケットの生成を制御する制御ステップとを含むことを特徴とする。
本発明のプログラムは、通信網が輻輳状態であるか否かを判定する判定ステップと、送信パケットに格納されているストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケットを生成する生成ステップと、輻輳状態でない旨の判定結果から輻輳状態である旨の判定結果に変化した場合、誤り訂正パケットの数を変更するように、生成ステップにおける誤り訂正パケットの生成を制御する制御ステップとをコンピュータに実行させることを特徴とする。
送信装置は、独立した装置であってもよいし、通信装置の送信処理を行うブロックであってもよい。
本発明の受信装置は、送信パケットに格納されているストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケットを受信する受信制御手段と、受信された誤り訂正パケットの数が、ストリーミングデータの誤りを訂正するのに適正であるか否かを判定する判定手段とを備えることを特徴とする。
判定手段は、受信された誤り訂正パケットの数が、ストリーミングデータの誤りを訂正するのに不足であるか、適正であるか、および過多であるかの何れであるかを判定するようにすることができる。
判定手段は、1または複数の送信パケットからなる誤り訂正の単位ごとに、受信された誤り訂正パケットの数が、ストリーミングデータの誤りを訂正するのに不足であるか、適正であるか、および過多であるかの何れであるかを判定し、所定の期間における1または複数の誤り訂正の単位に対する判定結果を基に、所定の期間における1または複数の誤り訂正の単位のいずれかにおいて、誤り訂正パケットの数が不足していると判定された場合、相手への通知に誤り訂正パケットの数が不足している旨を設定する設定手段をさらに設けることができる。
受信装置は、判定結果に基づく通知を格納するフィードバックパケットを生成する生成手段と、生成手段によって、生成されたフィードバックパケットの相手への送信を制御する送信制御手段とをさらに設けることができる。
本発明の受信方法は、送信パケットに格納されているストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケットを受信する受信制御ステップと、受信制御ステップにおいて受信された誤り訂正パケットの数が、ストリーミングデータの誤りを訂正するのに適正であるか否かを判定する判定ステップとを含むことを特徴とする。
本発明の記録媒体のプログラムは、送信パケットに格納されているストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケットを受信する受信制御ステップと、受信制御ステップにおいて受信された誤り訂正パケットの数が、ストリーミングデータの誤りを訂正するのに適正であるか否かを判定する判定ステップとを含むことを特徴とする。
本発明のプログラムは、送信パケットに格納されているストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケットを受信する受信制御ステップと、受信制御ステップにおいて受信された誤り訂正パケットの数が、ストリーミングデータの誤りを訂正するのに適正であるか否かを判定する判定ステップとをコンピュータに実行させることを特徴とする。
受信装置は、独立した装置であってもよいし、通信装置の受信処理を行うブロックであってもよい。
本発明の送信装置および方法、記録媒体、並びにプログラムにおいては、通信網が輻輳状態であるか否かが判定され、送信パケットに格納されているストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケットが生成され、輻輳状態でない旨の判定結果から輻輳状態である旨の判定結果に変化した場合、誤り訂正パケットの数を変更するように、誤り訂正パケットの生成が制御される。
本発明の受信装置および方法、記録媒体、並びにプログラムにおいては、送信パケットに格納されているストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケットが受信され、受信された誤り訂正パケットの数が、ストリーミングデータの誤りを訂正するのに適正であるか否かが判定される。
第1の本発明によれば、誤り訂正のための冗長データを送信することができる。また、第1の本発明によれば、通信網の状態に応じて、冗長データを含むデータの送信をより効率的に行うことができる。
第2の本発明によれば、受信したデータの誤りを訂正することができる。また、第2の本発明によれば、送信側において、通信網の状態に応じて、冗長データを含むデータの送信をより効率的に行うことができる。
以下に本発明の実施の形態を説明するが、本明細書に記載の発明と、発明の実施の形態との対応関係を例示すると、次のようになる。この記載は、本明細書に記載されている発明をサポートする実施の形態が本明細書に記載されていることを確認するためのものである。従って、発明の実施の形態中には記載されているが、発明に対応するものとして、ここには記載されていない実施の形態があったとしても、そのことは、その実施の形態が、その発明に対応するものではないことを意味するものではない。逆に、実施の形態が発明に対応するものとしてここに記載されていたとしても、そのことは、その実施の形態が、その発明以外の発明には対応しないものであることを意味するものでもない。
さらに、この記載は、本明細書に記載されている発明の全てを意味するものではない。換言すれば、この記載は、本明細書に記載されている発明であって、この出願では請求されていない発明の存在、すなわち、将来、分割出願されたり、補正により出現、追加される発明の存在を否定するものではない。
本発明によれば、送信装置が提供される。この送信装置(例えば、図4のサーバ12)は、通信網が輻輳状態であるか否かを判定する判定手段(例えば、図6の輻輳/非輻輳判定部105)と、送信パケット(例えば、図8のRTPパケット集合181−1)に格納されているストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケット(例えば、図8のFECパケット集合182−1)を生成する生成手段(例えば、図6のFECパケット生成部84)と、輻輳状態でない旨の判定結果から輻輳状態である旨の判定結果に変化した場合、誤り訂正パケットの数を変更するように、生成手段における誤り訂正パケットの生成を制御する制御手段(例えば、図6のFEC送信制御部86)とを備える。
この送信装置は、制御手段(例えば、図6のFEC送信制御部86)が、輻輳状態であると判定された場合、生成手段(例えば、図6のFECパケット生成部84)に所定の数の誤り訂正パケット(例えば、図8のFECパケット集合182−1)を生成させ、輻輳状態でないと判定された場合、生成手段の誤り訂正パケットの生成を抑制するように、生成手段における誤り訂正パケットの生成を制御するようにすることができる。
この送信装置は、制御手段(例えば、図6のFEC送信制御部86)が、輻輳状態でない旨の判定結果から輻輳状態である旨の判定結果に変化した場合、直前の輻輳状態における送信パケットの受信の状態を基に、誤り訂正パケットの数を変更するように、生成手段(例えば、図6のFECパケット生成部84)における誤り訂正パケットの生成を制御するようにすることができる。
この送信装置は、制御手段(例えば、図6のFEC送信制御部86)が、所定の期間における1または複数の送信パケットからなる誤り訂正の単位(例えば、図8のFECブロック171−1)であって、所定の期間における1または複数の誤り訂正の単位の受信状態を基に、所定の期間における1または複数の誤り訂正の単位のいずれかにおいて、誤り訂正パケットの数が不足している場合、誤り訂正パケットの数を増加させるように、生成手段(例えば、図6のFECパケット生成部84)における誤り訂正パケットの生成を制御するようにすることができる。
この送信装置は、判定手段(例えば、図6の輻輳/非輻輳判定部105)が、第1の時刻から現在時刻までの期間における送信パケットの相手への伝送に要する遅延時間に依存する短期依存遅延時間と、第1の時刻より過去の第2の時刻から現在時刻までの期間における遅延時間に依存する長期依存遅延時間とを基に、輻輳状態であるか否かを判定するようにすることができる。
また、本発明によれば、送信方法が提供される。この送信方法は、通信網が輻輳状態であるか否かを判定する判定ステップ(例えば、図12のステップS87の処理)と、送信パケットに格納されているストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケットを生成する生成ステップ(例えば、図10のステップS59の処理)と、輻輳状態でない旨の判定結果から輻輳状態である旨の判定結果に変化した場合、誤り訂正パケットの数を変更するように、生成ステップにおける誤り訂正パケットの生成を制御する制御ステップ(例えば、図12のステップS91の処理)とを含む。
また、本発明によれば、プログラムが提供される。このプログラムは、通信網が輻輳状態であるか否かを判定する判定ステップ(例えば、図12のステップS87の処理)と、送信パケットに格納されているストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケットを生成する生成ステップ(例えば、図10のステップS59の処理)と、輻輳状態でない旨の判定結果から輻輳状態である旨の判定結果に変化した場合、誤り訂正パケットの数を変更するように、生成ステップにおける誤り訂正パケットの生成を制御する制御ステップ(例えば、図12のステップS91の処理)とをコンピュータに実行させる。
このプログラムは、記録媒体(例えば、図5の磁気ディスク51)に記録することができる。
本発明によれば、受信装置が提供される。この受信装置(例えば、図4のクライアント14)は、送信パケット(例えば、図8のRTPパケット集合181−1)に格納されているストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケット(例えば、図8のFECパケット集合182−1)を受信する受信制御手段(例えば、図7の受信部152)と、受信された誤り訂正パケットの数が、ストリーミングデータの誤りを訂正するのに適正であるか否かを判定する判定手段(例えば、図7のFEC処理部135)とを備える。
この受信装置は、判定手段(例えば、図7のFEC処理部135)が、受信された誤り訂正パケットの数が、ストリーミングデータの誤りを訂正するのに不足であるか、適正であるか、および過多であるかの何れであるかを判定するようにすることができる。
この受信装置は、判定手段(例えば、図7のFEC処理部135)が、1または複数の送信パケットからなる誤り訂正の単位(例えば、図8のFECブロック171−1)ごとに、受信された誤り訂正パケット(例えば、図8のFECパケット集合182−1)の数が、ストリーミングデータの誤りを訂正するのに不足であるか、適正であるか、および過多であるかの何れであるかを判定し、所定の期間における1または複数の誤り訂正の単位に対する判定結果を基に、所定の期間における1または複数の誤り訂正の単位のいずれかにおいて、誤り訂正パケットの数が不足していると判定された場合、相手への通知に誤り訂正パケットの数が不足している旨を設定する設定手段(例えば、図7の通知FEC状態保持部137)を設けることができる。
この受信装置は、判定結果に基づく通知を格納するフィードバックパケットを生成する生成手段(例えば、図7のFECフィードバックパケット生成部153)と、生成手段によって、生成されたフィードバックパケットの相手への送信を制御する送信制御手段(例えば、図7の送信部151)とをさらに設けることができる。
また、本発明によれば、受信方法が提供される。この受信方法は、送信パケットに格納されているストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケットを受信する受信制御ステップ(例えば、図18のステップS172の処理)と、受信制御ステップにおいて受信された誤り訂正パケットの数が、ストリーミングデータの誤りを訂正するのに適正であるか否かを判定する判定ステップ(例えば、図22のステップS221の処理)とを含む。
また、本発明によれば、プログラムが提供される。このプログラムは、送信パケットに格納されているストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケットを受信する受信制御ステップ(例えば、図18のステップS172の処理)と、受信制御ステップにおいて受信された誤り訂正パケットの数が、ストリーミングデータの誤りを訂正するのに適正であるか否かを判定する判定ステップ(例えば、図22のステップS221の処理)とをコンピュータに実行させる。
このプログラムは、記録媒体(例えば、図5の磁気ディスク51)に記録することができる。
本発明は、例えば、インターネット電話、遠隔テレビ会議システム、ライブ映像ストリーミング配信システム、またはテレビ電話などのリアルタイムにストリーミングデータを伝送する通信システムに適用できる。
図4は、本発明に係る通信システムの一実施の形態を示す図である。カメラ11は、画像を撮像して、撮像した画像に対応する画像データをサーバ12に供給する。例えば、カメラ11は、動画像を撮像して、動画像に対応する画像データをサーバ12に供給する。
画像データは、ストリーミングデータの一例である。ストリーミングデータは、音声のデータ、またはリアルタイム制御データなど、時間の経過に対応して順次送信または受信が要求されるデータであればよい。
サーバ12は、カメラ11から供給された画像データをパケットに格納して、パケットを通信網13を介して、クライアント14に送信する。サーバ12は、画像を格納したパケットを訂正するための冗長データを生成して、冗長データを格納したパケットを通信網13を介して、クライアント14に送信する。
通信網13は、有線または無線の、通信回線、ネットワーク、またはインターネットなどからなる伝送路であり、サーバ12から送信されたパケットをクライアント14まで伝送する。
クライアント14は、通信網13を介してサーバ12から送信されてきた各種のパケットを受信する。
クライアント14は、ストリーミングデータが格納されているパケットを正常に受信できなかった場合、冗長データを格納したパケットを基に、正常に受信できなかった画像データを格納するパケットのエラーを訂正する。
クライアント14は、サーバ12から通信網13を介して送信されてきたパケットの受信状態をサーバ12に通知する。サーバ12は、通信網13の伝送状態を取得する。例えば、サーバ12は、往復遅延時間(RTT)を基に、通信網13の輻輳状態を取得する。サーバ12は、クライアント14からの通知および通信網13の伝送状態に基づいて、クライアント14に送信する冗長データを格納したパケット数を変更する。
図5は、サーバ12の構成の例を示すブロック図である。CPU(Central Processing Unit)31は、ROM(Read Only Memory)32、または記録部38に記録されているプログラムに従って各種の処理を実行する。RAM(Random Access Memory)33には、CPU31が実行するプログラムやデータなどが適宜記憶される。これらのCPU31、ROM32、およびRAM33は、バス34により相互に接続されている。
CPU31にはまた、バス34を介して入出力インタフェース35が接続されている。入出力インタフェース35には、キーボード、マウス、スイッチなどよりなる入力部36、ディスプレイ、スピーカ、ランプなどよりなる出力部37が接続されている。CPU31は、入力部36から入力される指令に対応して各種の処理を実行する。
入出力インタフェース35に接続されている記録部38は、例えばハードディスクなどで構成され、CPU31が実行するプログラムや各種のデータを記録する。通信部39は、インターネット、その他のネットワークなどの通信網13を介して、クライアント14などの外部の装置と通信する。
また、通信部39を介してプログラムを取得し、記録部38に記録してもよい。
入出力インタフェース35に接続されているドライブ40は、磁気ディスク51、光ディスク52、光磁気ディスク53、或いは半導体メモリ54などが装着されたとき、それらを駆動し、そこに記録されているプログラムやデータなどを取得する。取得されたプログラムやデータは、必要に応じて記録部38に転送され、記録される。
なお、クライアント14は、サーバ12と同様に構成されるので、その説明は省略する。
図6は、本発明に係るサーバ12の一実施の形態の構成を示すブロック図である。
サーバ12は、通信部39、エンコーダ81、バッファ82、RTPパケット生成部83、FECパケット生成部84、RTT計測部85、FEC送信制御部86、FECパケット数増減状態保持部87、FEC送信モード記憶部88、およびFECパケット数保持部89を含むように構成される。
エンコーダ81は、カメラ11から供給されたストリーミングデータの一例である画像データをエンコード(符号化)し、エンコードされた画像データをバッファ82に供給する。
バッファ82は、エンコーダ81から供給された画像データを一時的に記憶する。
RTPパケット生成部83は、バッファ82からエンコードされた画像データを取得する。RTPパケット生成部83は、取得した画像データをRTP方式のパケットに格納することにより、RTPパケットを生成し、生成したRTPパケットを通信部39に供給する。
RTPパケットは、IETF RFC(Internet Engineering Task Force Request For Comments)1889で規定されているプロトコルであるRTPに基づく方式のパケットである。
また、RTPパケット生成部83は、生成されたRTPパケットに格納されているRTPパケットのデータをFECパケット生成部84に供給する。
FECパケット生成部84は、FEC送信モード記憶部88に記憶されているFEC送信モードフラグを参照し、FEC送信モードである場合、RTPパケット生成部83から供給されたRTPパケットのデータを基に、所定の誤り訂正方式により、FECパケット数保持部89から供給されたFECパケット数で示される数のFECパケットを生成する。FECパケット生成部84は、生成したFECパケットを通信部39に供給する。
FECパケット生成部84は、FEC送信モードでない場合、FECパケットを生成しない。
通信部39は、各種のパケットを送信する送信部101をよび各種のパケットを受信する受信部102を備えており、通信網13を介してパケットの送受信を行う。
通信部39の送信部101は、RTPパケット生成部83から供給されたRTPパケットおよびFECパケット生成部84から供給されたFECパケットを、通信網13を介して、クライアント14に送信する。
より詳細には、通信部39の送信部101は、RTPパケット生成部83から供給されたRTPパケットおよびFECパケット生成部84から供給されたFECパケットを一時的に保持し、同一のFECブロックIDを含むRTPパケットおよびFECパケットを1つのFECブロックとして、例えば、バースト転送方式などの所定の方式により通信網13を介して、クライアント14に送信する。FECブロックを特定するFECブロックIDの詳細は後述する。
また、通信部39の送信部101は、RTT計測部85から供給されたRTT計測パケットを、通信網13を介して、クライアント14あてに送信する。
通信部39の受信部102は、通信網13を介して、クライアント14から送信されてきたRTT計測パケットをRTT計測部85に供給する。また、通信部39の受信部102は、通信網13を介して、クライアント14から送信されてきたFECフィードバックパケットをFEC送信制御部86に供給する。
RTT計測部85は、RTT計測パケットを生成し、生成したRTT計測パケットを通信部39に供給する。RTT計測部85は、通信部39に受信され、通信部39から供給されたRTT計測パケットを基に、遅延時間(RTT)を計算する。
RTT計測部85は、長期依存RTTを計算する長期依存RTT演算部103および短期依存RTTを計算する短期依存RTT演算部104を備えている。RTT計測部85の長期依存RTT演算部103は、RTT計測部85によって計算された遅延時間を基に、長期依存RTTを計算する。RTT計測部85の短期依存RTT演算部104は、RTT計測部85によって計算された遅延時間を基に、短期依存RTTを計算する。長期依存RTTおよび短期依存RTTの詳細は、後述する。
さらに、RTT計測部85は、長期依存RTT演算部103によって計算された長期依存RTTおよび短期依存RTT演算部104によって計算された短期依存RTTをFEC送信制御部86に供給する。
FEC送信制御部86は、FECパケット生成部84のFECパケットの生成を制御する。FEC送信制御部86は、通信網13が、輻輳状態であるか否かを判定する輻輳/非輻輳判定部105を備えている。
FEC送信制御部86の輻輳/非輻輳判定部105は、RTT計測部85から供給された長期依存RTTおよび短期依存RTTを基に、通信網13が輻輳状態であるか否かを判定し、輻輳状態であるか否かの判定結果を記憶する。FEC送信制御部86は、判定結果が、輻輳状態である旨の判定結果であった場合、FEC送信モード記憶部88のFEC送信モードフラグをセットし(例えば、“1”を設定する)、輻輳状態でない旨の判定結果であった場合、すなわち非輻輳状態である旨の判定結果であった場合、FEC送信モード記憶部88のFEC送信モードフラグをリセットする(例えば、“0”を設定する)。
また、FEC送信制御部86は、通信部39が受信し、通信部39から供給されたFECフィードバックパケットを基に、FECパケット数増減状態保持部87に保持されているFECパケット数増減状態を更新する。ここで、FECパケット数増減状態は、FECパケットの数を増加させるか、減少させるか、または維持するかを示す状態である。FECパケット数増減状態の変更の処理の詳細は、後述する。
さらに、FEC送信制御部86は、FECパケット数増減状態保持部87に保持されているFECパケット数増減状態を読み込み、FECパケット数保持部89に保持されているFECパケット数を変更する。FECパケット数の変更の処理の詳細は、後述する。
FECパケット数増減状態保持部87は、FEC送信制御部86から供給されたFECパケット数増減状態を保持(記憶)する。
FEC送信モード記憶部88は、FEC送信モードであるか否かを示すFEC送信モードフラグを記憶する。セットされている(例えば、“1”が設定されている)FEC送信モードフラグは、FEC送信モードであることを示し、リセットされている(例えば、“0”が設定されている)FEC送信モードフラグは、FEC送信モードでないことを示す。FEC送信モードである場合、FECパケット生成部84は、FECパケットを生成し、FEC送信モードでない場合、FECパケット生成部84は、FECパケットを生成しない。
FEC送信モード記憶部88に記憶されているFEC送信モードフラグは、通信網13が輻輳状態である場合、FEC送信制御部86によって、セットされる。また、通信網13が非輻輳状態である場合、FEC送信モード記憶部88に記憶されているFEC送信モードフラグは、FEC送信制御部86によって、リセットされる。
すなわち、通信網13が輻輳状態である場合、FEC送信モードになるので、FECパケットが生成されて、FECパケットが送信され、通信網13が輻輳状態でない場合、FEC送信モードではないので、FECパケットは生成されず、FECパケットは送信されない。
FECパケット数保持部89は、FEC送信制御部86から供給されたFECパケット数を保持する。FECパケット数保持部89は、FEC送信制御部86からFECパケット数を供給されると、供給されたFECパケット数をFECパケット生成部84に供給する。
なお、FECパケット数増減状態保持部87、FEC送信モード記憶部88、およびFECパケット数保持部89が、FECパケット生成部84に含まれる構成とすることも可能である。
図7は、本発明に係るクライアント14の一実施の形態の構成を示すブロック図である。
クライアント14は、通信部131、RTP処理部132、バッファ133、デコーダ134、FEC処理部135、FECブロック情報保持部136、通知FEC状態保持部137、およびRTT計測部138を含むように構成される。
通信部131は、クライアント14の通信部39に対応し、パケットの受信を制御する受信部151およびパケットの送信を制御する送信部152を備えている。通信部131の受信部151は、通信網13を介して送信されてきた各種のパケットを受信し、受信したパケットをRTP処理部132またはRTT計測部138に供給する。通信部131の送信部152は、通信網13を介して、各種のパケットを送信する。
RTP処理部132は、通信部131に受信され、通信部131から供給されたRTPパケットおよびFECパケットを検査する。RTP処理部132は、正常なFECパケットが受信された場合、受信されたFECパケットをFEC処理部135に供給するとともに、FECヘッダ情報をFECブロック情報保持部136に供給する。RTP処理部132は、正常ではないFECパケットが受信された場合、受信されたFECパケットを破棄する。
また、RTP処理部132は、正常なRTPパケットが受信された場合、受信されたRTPパケットを一時的に保持すると共に、RTPヘッダ情報をFECブロック情報保持部136に供給する。RTP処理部132は、正常ではないRTPパケットが受信された場合、受信したRTPパケットに含まれるFECブロックIDと同一のFECブロックIDを含むFECパケットを受信したとき、正常ではないRTPパケットの復元を指示する信号をFEC処理部135に供給する。
RTP処理部132は、正常ではないRTPパケットが受信された場合、受信したRTPパケットに含まれるFECブロックIDと同一のFECブロックIDを含むFECパケットを受信していないとき、RTPパケットを破棄する。
RTP処理部132は、RTPパケットの復元を指示する信号をFEC処理部135に供給しなかった場合、パケットの受信が完了すると、一時的に保持しているRTPパケットをバッファ133に供給する。
また、RTP処理部132は、RTPパケットの復元を指示する信号をFEC処理部135に供給した場合、パケットの受信が完了し、FEC処理部135から復元されたRTPパケットが供給されてから、保持しているRTPパケットおよび復元されたRTPパケットをバッファ133に供給する。
さらに、RTP処理部132は、RTPパケットまたはFECパケットが正常に受信された場合、FECブロック情報保持部136に保持されているFECブロック情報であるFECブロック情報テーブルの受信パケット数をインクリメントする。RTP処理部136は、受信されたRTPパケットまたはFECパケットに含まれるFECブロックIDが変化した場合、FECブロック情報保持部136に保持されているFECブロック情報を更新する。FECブロック情報テーブルの詳細およびFECブロック情報更新の処理の詳細は後述する。
バッファ133は、RTP処理部132から供給されたRTPパケットを一時的に記憶する。
デコーダ134は、バッファ133に記憶されているRTPパケットを順に取得して、取得したRTPパケットから画像データを抽出する。そして、デコーダ134は、エンコーダ81に対応する復号方式で、抽出された画像データをデコード(復号)して、デコードされた画像データを出力する。
FEC処理部135は、FECフィードバックパケットを生成するFECフィードバックパケット生成部153を備えている。
FEC処理部135は、RTP処理部132から供給されたFECパケットを一時的に保持する。FEC処理部135は、正常ではないRTPパケットの復元を指示する信号がRTP処理部132から供給された場合、FECパケットを基に、RTPパケットを復元し、復元したRTPパケットをRTP処理部132に供給する。
より具体的には、例えば、FEC処理部135は、RTP処理部132に一時的に記憶されている正常に受信されたRTPパケットであって復元の処理に要するRTPパケットをRTP処理部132から取得して、取得したRTPパケットおよびFECパケットを基に、正常に受信されなかったRTPパケットを復元する。
また、FEC処理部135は、正常ではないRTPパケットの復元を指示する信号がRTP処理部132から供給されなかった場合、パケットの受信が完了すると、保持しているFECパケットを破棄する。
なお、RTP処理部132がRTPパケットの復元を行うような構成としてもよい。
FEC処理部135は、FECブロック情報保持部136に保持されているFECブロック情報テーブルに記録されているFECブロックIDが変化した場合、FECブロック情報を基に、FECブロック情報保持部136に保持(記録)されている、FECパケットの数が適正であるか否かを示すFECブロック状態を更新する。FEC処理部135は、FECブロック情報保持部136に保持されているFECブロック情報を読み込み、通知FEC状態保持部137に保持されている通知FEC状態を更新する。FECブロック状態更新の処理および通知FEC状態更新の処理の詳細は後述する。
また、FEC処理部135のFECフィードバックパケット生成部153は、通知FEC状態保持部137に保持されている通知FEC状態を基に、FECフィードバックパケットを生成し、FEC処理部135は、生成されたFECフィードバックパケットを通信部131に供給する。FECフィードバックパケットの詳細は後述する。
FECブロック情報保持部136は、RTP処理部132およびFEC処理部135によって更新されるFECブロック情報を保持(記録)している。
通知FEC状態保持部137は、FEC処理部135によって更新される通知FEC状態を保持している。
RTT計測部138は、通信部131に受信され、通信部131から供給されたRTT計測パケットを取得する。RTT計測部138は、取得したRTT計測パケットのデータ部と同じデータ部を含むRTT計測パケットを生成し、生成したRTT計測パケットを通信部131に供給する。
なお、図6または図7で示されるサーバ12またはクライアント14の機能は、ハードウェアにより実現するようにしてもよく、ソフトウェア(プログラム)により実現するようにしてもよい。
次に、図8のタイムチャートを参照して、サーバ12によるFECブロック送信の処理を説明する。
図8における横方向は、時間を示す。図8において、時刻t1から時刻t2までの期間D1および時刻t3から時刻t4までの期間D3は、通信網13が輻輳状態である期間を示す。また、時刻t2から時刻t3までの期間D2は、通信網13が非輻輳状態である期間を示す。
サーバ12は、通信網13が輻輳状態である場合、FECパケット集合を含むFECブロックを送信し、通信網13が非輻輳状態である場合には、FECパケット集合を含まないFECブロックを送信する。さらに、サーバ12は、通信網13を介して、クライアント14から受信したFECフィードバックパケットを基に、FECパケット集合に含まれるFECパケットの数を変更する。すなわち、時刻t11において、通信網13が輻輳状態であるため、サーバ12は、同一のFECブロックIDを含むRTPパケットおよびFECパケットを1つのFECブロックとしてクライアント14あてに送信する。
より詳細に説明すれば、サーバ12は、例えば、図8において、1つのフレームを再生するための画像データであるストリーミングデータをFECブロック171−1の4つのRTPパケットに格納する。また、サーバ12は、そのフレームを再生するためのストリーミングデータの冗長データをFECブロック171−1の2つのFECパケットに格納する。そして、サーバ12は、そのフレームを再生するためのストリーミングデータが格納された、4つのRTPパケットからなるRTPパケット集合181−1および2つのFECパケットからなるFECパケット集合182−1をFECブロック171−1として通信網13を介してクライアント14あてに送信する。
クライアント14は、通信網13を介して、サーバ12から送信されてきたFECブロック171−1を時刻t21に受信する。
同様に、サーバ12は、次の1つのフレームを再生するための画像データであるストリーミングデータをFECブロック171−2の4つのRTPパケットに格納する。また、サーバ12は、そのフレームを再生するためのストリーミングデータの冗長データをFECブロック171−2の2つのFECパケットに格納する。そして、サーバ12は、そのフレームを再生するためのストリーミングデータが格納された、4つのRTPパケットからなるRTPパケット集合181−2および2つのFECパケットからなるFECパケット集合182−2をFECブロック171−2として通信網13を介してクライアント14あてに送信する。
サーバ12は、さらに次の1つのフレームを再生するための画像データであるストリーミングデータをFECブロック171−3の4つのRTPパケットに格納する。また、サーバ12は、そのフレームを再生するためのストリーミングデータの冗長データをFECブロック171−3の2つのFECパケットに格納する。そして、サーバ12は、そのフレームを再生するためのストリーミングデータが格納された、4つのRTPパケットからなるRTPパケット集合181−3および2つのFECパケットからなるFECパケット集合182−3をFECブロック171−3として通信網13を介してクライアント14あてに送信する。
時刻t2において、通信網13が輻輳状態から非輻輳状態に変化したので、時刻t2以降において、サーバ12は、通信網13を介して、クライアント14あてにFECパケットを含まないFECブロックを送信する。
サーバ12は、FECブロック171−3のフレームの次の1つのフレームを再生するための画像データであるストリーミングデータをFECブロック171−4の4つのRTPパケットに格納し、4つのRTPパケットからなるRTPパケット集合181−4をFECブロック171−4として通信網13を介してクライアント14あてに送信する。サーバ12は、さらに次の1つのフレームを再生するための画像データであるストリーミングデータをFECブロック171−5の4つのRTPパケットに格納し、4つのRTPパケットからなるRTPパケット集合181−5をFECブロック171−5として、通信網13を介してクライアント14あてに送信する。サーバ12は、さらに次の1つのフレームを再生するための画像データであるストリーミングデータをFECブロック171−6の4つのRTPパケットに格納し、4つのRTPパケットからなるRTPパケット集合181−6をFECブロック171−6として、通信網13を介してクライアント14あてに送信する。
時刻t3において、通信網13が非輻輳状態から輻輳状態に変化したので、時刻t3以降において、サーバ12は、通信網13を介して、ストリーミングデータとともに冗長データをクライアント14あてに送信する。
すなわち、サーバ12は、FECブロック171−6のフレームの次の1つのフレームを再生するための画像データであるストリーミングデータをFECブロック171−7の4つのRTPパケットに格納する。また、サーバ12は、そのフレームを再生するためのストリーミングデータの冗長データをFECブロック171−7の2つのFECパケットに格納する。そして、サーバ12は、そのフレームを再生するためのストリーミングデータが格納された、4つのRTPパケットからなるRTPパケット集合181−7および2つのFECパケットからなるFECパケット集合182−4をFECブロック171−7として通信網13を介してクライアント14あてに送信する。
時刻t21から時刻t23までの期間T1、時刻t23から時刻t24までの期間T2、時刻t24から時刻t25までの期間T3、および時刻t25から時刻t26までの期間T4のそれぞれは、クライアント14におけるFECフィードバックパケット送信処理を実行する時間間隔であり、タイマで定まる。すなわち、クライアント14は、タイマが終了する時刻である時刻t23、時刻t24、時刻t25、および時刻t26のそれぞれの時刻にFECフィードバックパケットを生成し、生成したFECフィードバックパケットを、通信網13を介して、サーバ12あてに送信する。
以下、FECブロック171−1乃至FECブロック171−7を個々に区別する必要がないとき、単にFECブロック171と称する。同様に、以下、RTPパケット集合181−1乃至RTPパケット集合181−7を個々に区別する必要がないとき、単にRTPパケット集合181と称し、FECパケット集合182−1乃至FECパケット集合182−4を個々に区別する必要がないとき、単にFECパケット集合182と称する。
クライアント14は、通信網13を介して、サーバ12から送信されてきたFECブロック171を受信すると、FECブロック情報を記録する。FECブロック情報は、例えば、図9で示すFECブロック情報テーブルに記録される。
クライアント14は、FECブロック171を受信すると、FECブロック171に固有の識別番号であるFECブロックID、FECブロック171に含まれるRTPパケットの数を示すオリジナルデータパケット数、FECブロック171に含まれるRTPパケット数およびFECパケット数の合計である総パケット数、正常に受信されたパケット数を示す受信パケット数、並びに受信されたFECパケットの数がロスパケットを復元する場合に、不足であるか、適正であるか、あるいは過多であるかを表すFECブロック状態をそれぞれFECブロック情報テーブルに記録する。
図9は、FECブロック情報テーブルの例を示す図である。
ここで、例えば、図9において、FECブロックID1のFECブロック171は、総パケット数が6であるのに対して、受信パケット数が4であり、2つのパケットをロスしている。また、FECブロックID1のFECブロック171の総パケット数が6であるのに対して、オリジナルパケット数は4であるから、FECブロックID1のFECブロック171には、2つのFECパケットが含まれることが分かる。
FECパケット1つにつきRTPパケット1つを復元できるので、FECブロックID1のFECブロック171に含まれる2つのFECパケットを用いることにより、2つのロスパケットを回復することができる。したがって、FECブロックID1に含まれるFECパケットの数は、過多でもなく、不足でもないので、FECブロック状態は、適正状態に設定される。
同様に、FECブロックID2のFECブロック171においては、FECブロック171に含まれるFECパケットが2つであるのに対して、ロスパケットは3つであるから、3つのロスパケットのうち、1つのロスパケットは回復することができない。すなわち、FECパケットが1つ不足しているので、FECブロック状態は、不足状態に設定される。
また、FECブロックID3のFECブロック171においては、FECブロック171に含まれるFECパケットが、2つであるのに対して、ロスパケットは0であるから、2つのFECパケットが用いられずに破棄されることになる。したがって、FECパケットが2つ過多であるので、FECブロック状態は、過多状態に設定される。
図8のタイムチャートの説明に戻り、例えば、時刻t22において、クライアント14は、FECブロック171−2において3つのパケットのパケットロスを検知する。そして、クライアント14は、FECブロック171−2のFECブロック状態を不足状態に設定する。時刻t23に期間T1が経過したので(タイマが終了したので)、クライアント14は、時刻t21から時刻t23までに受信されたFECブロック171のそれぞれのFECブロック状態を基に、例えば、FECパケットが不足している旨のFECフィードバックパケットを生成し、生成されたFECフィードバックパケットを、通信網13を介して、サーバ12あてに送信する。FECフィードバックパケットの詳細は、後述する。
また、クライアント14は、期間T2および期間T3のそれぞれの終了時刻t24および時刻t25のそれぞれにおいて、通信網13を介して、サーバ12あてにFECフィードバックパケットを送信する。
時刻t3において、通信網13が非輻輳状態から輻輳状態に変化したので、サーバ12は、時刻t1から時刻t3までに、通信網13を介して、クライアント14から受信されたフィードバックパケットを基に、FECブロック171に含まれるFECパケットの数を変更し、例えば、時刻t12に3つのFECパケットが含まれるFECブロック171−7を、通信網13を介して、クライアント14あてに送信する。
このように、サーバ12は、通信網13における輻輳状態およびクライアント14から送信されてきたFECフィードバックパケットを基に、FECブロック171に含まれるFECパケットの数を変更し、FECブロック171を送信する。
次に、図10のフローチャートを参照して、サーバプログラムを実行するサーバ12によるデータ送信の処理を説明する。
ステップS51において、サーバ12は、送信の処理に必要なデータを初期化する。例えば、ステップS51において、エンコーダ81は、内蔵しているタイマの値を0msにセットし、RTPパケット生成部83は、タイムスタンプおよびシーケンス番号を初期化し、FECブロックIDの値を1に設定する。
ステップS52において、エンコーダ81は、内蔵しているタイマの値を基に、タイマが終了したか否かを判定し、タイマが終了していない場合、ステップS52に戻り、タイマが終了したと判定されるまで、判定の処理を繰り返す。
ステップS52において、タイマが終了したと判定された場合、処理はステップS53に進む。
例えば、画像データのフレームの数が1秒当たり30である場合、タイマが時間の経過に対応して値を増加させるとき、ステップS52において、エンコーダ81は、33msなどの所定の値とタイマの値を比較することによりタイマが終了したか否かを判定する。
例えば、ステップS51において、タイマの値を33msにセットし、タイマの値が時間の経過に対応して値を減少させるとき、エンコーダ81は、タイマの値と、0msとを比較することによりタイマが終了したか否かを判定する。
この場合における、タイマの値と比較される0msまたは33msは、フレームの数が1秒当たり30である場合の例であり、本発明を限定するものではない。
以下に説明するタイマに関する処理において、同様である。
ステップS53において、エンコーダ81は、カメラ11から供給された画像データを1フレーム分キャプチャする。例えば、ステップS53において、エンコーダ81は、カメラ11から供給された画像データを順次取得して、取得した画像データのうち、1フレーム分をキャプチャする。
ステップS54において、エンコーダ81は、キャプチャされた画像データをエンコードする。例えば、ステップS54において、エンコーダ81は、キャプチャされた画像データをMPEG(Moving Picture Experts Group)1、2、4、7、もしくは21、JPEG(Joint Photographic Experts Group)、JPEG2000、またはモーションJPEGなどの方式によりエンコードする。
ステップS55において、エンコーダ81は、エンコードされた画像データをバッファ82に供給して、バッファ82にエンコードされた画像データを格納(記憶)させる。
ステップS56において、RTPパケット生成部83は、デコードされた画像データをバッファ82から取得し、取得した画像データを格納するRTPパケットを生成する。
図11は、RTPパケットを説明する図である。RTPパケットの先頭には、図11において“V”で表される、2ビットのバージョン情報が配置される。バージョン情報は、RTPパケットのバージョンを示す。
バージョン情報の次に図11中の“P”で表される1ビットのパディングが配置され、パディングに続いて、1ビットの拡張情報がRTPパケットに配置される。拡張情報は、図11において、“X”で表される。拡張情報は、RTPパケットに拡張ヘッダを配置する場合に、所定の値に設定される。
拡張情報に続いて、CSRC(Contributing Source)カウントがRTPパケットに配置される。CSRCカウントは、図11中において、“CC”で表される。CSRCカウントは、CSRC識別子の数を表す。
CSRCカウントに続いて配置される、1ビットのメーカー情報は、プロファイルによって定義される。メーカー情報は、図11中において“m”で表される。
メーカー情報に続いて配置される、7ビットのペイロードタイプは、RTPパケットのフォーマットを定義するための情報である。ペイロードタイプは、図11中において、“PT”で表される。RTPパケットにおいて、ペイロードタイプは、33とされる。
シーケンス番号は、ペイロードタイプの次に配置される、16ビットの情報である。シーケンス番号は、RTPパケットの再生の順番を示す番号であり、送信の度に、1ずつ増える。
シーケンス番号の次に配置される、32ビットのタイムスタンプは、そのRTPパケットに格納されているストリーミングデータの最初のオクテットがサンプルされた時刻を示す情報である。また、タイムスタンプにより、受信側においてRTPパケットの展開時に処理時間の制御が実行され、リアルタイム画像、または音声の再生制御を行うことが可能となる。タイムスタンプは、1つの画像フレームに属する複数のRTPパケットに共通のタイムスタンプが設定される。
SSRC(Synchronization Source)識別子は、タイムスタンプの次に配置される32ビットの情報であって、RTPパケットに格納されるストリーミングデータのソースを示す。
RTPパケットにおいて、SSRC識別子の次には、FECブロックIDが配置される。FECブロックIDは、サーバ12が通信網13を介して、クライアント14あてに送信するRTPパケットおよびFECパケットの集合であるFECブロック171を識別する番号である。例えば、図8において、RTPパケット集合181に属するRTPパケットには、同一のFECブロックIDが付与される。なお、1つのFECブロック171のFECパケット集合182に属するFECパケットには、そのFECブロック171のRTPパケット集合181に属するRTPパケットのFECブロックIDと同一のFECブロックIDが格納される。
FECブロックIDに続いて、総パケット数がRTPパケットに配置される。総パケット数は、図11において“N”で表され、1つのFECブロック171に含まれるRTPパケット数およびFECパケット数の合計である。
RTPパケットにおいて、総パケット数の次には、オリジナルデータパケット数が配置される。オリジナルデータパケット数は、図11において、“K”で表され、1つのFECブロック171に含まれるRTPパケットの数である。
オリジナルデータパケット数の次に、図11中の“R”で表される冗長パケット数が配置される。冗長パケット数は、1つのFECブロックに含まれるFECパケットの数を表す。
冗長パケット数に続いて、データ量を調整するための、図11中の“P”で表されるパディングが配置される。パディングに続いてストリーミングデータが格納される。図11において、“Original Data”は、ストリーミングデータを示す。
なお、FECパケットは、RTPパケットと同様に構成することができる。この場合、FECパケットのペイロードタイプは、例えば、34とされる。
図10に戻り、ステップS57において、RTPパケット生成部83は、生成されたRTPパケットを通信部39に供給し、通信部39は、供給されたRTPパケットを、通信網13を介してクライアント14あてに送信する。
ステップS58において、FECパケット生成部84は、FEC送信モードであるか否かを判定する。例えば、ステップS58において、FECパケット生成部84は、FEC送信モード記憶部88のFEC送信モードフラグのセットまたはリセットの設定を基に、FEC送信モードであるか否かを判定する。
ステップS58において、FEC送信モードであると判定された場合、通信網13は輻輳状態であるため、パケットロスが発生する可能性が高い。そこで、FECパケットをクライアント14あてに送信するため、処理は、ステップS59に進む。
ステップS59において、FECパケット生成部84は、RTPパケット生成部83から供給されたRTPパケットのデータを基に、FECパケット数保持部89から供給されたFECパケット数で示される数のFECパケットを生成する。
例えば、ステップS59において、FECパケット生成部84は、RTPパケット生成部83から供給されたRTPパケットに格納されるデータに排他的論理和の演算を適用することにより、FECパケットのデータを生成し、生成したデータに所定のヘッダを付加することにより、FECパケットを生成する。
ここで、FECパケットに付加されるヘッダは、例えば、図11で示されるRTPパケットのヘッダと同じフォーマットのヘッダが付加される。RTPパケットおよびFECパケットの識別は、FECパケットのヘッダにおいて、例えば、図11中の“X”で表される拡張情報を1にすることで、RTPパケットおよびFECパケットが識別される。また、例えば、FECパケットにおいて、ペイロードタイプは、34とされ、FECパケットにおいて、図11中の“Original Data”で表される領域には、誤り訂正のための冗長データが格納される。
なお、FECパケット生成部84によって生成されるFECパケットの誤り訂正方式(冗長データの方式)は、排他的論理和の演算によるものに限らず、例えば、ハミング符号などの線形符号、巡回符号、BCH(Bose‐Chaudhuri‐Hocquenghem)符号もしくはリードソロモン(Reed Solomon)符号などの代数的符号、または多数決論理符号などいずれの方式であってもよい。
ステップS60において、FECパケット生成部84は、生成されたFECパケットを通信部39に供給し、通信部39は、通信網13を介して、供給されたFECパケットをクライアント14あてに送信し、手続は、ステップS61に進む。
より詳細には、通信部39は、ステップS57において、RTPパケット生成部83から供給されたRTPパケットを一時的に保持する。そして、ステップS60において、通信部39は、保持しているRTPパケットに含まれるFECブロックIDと同一のFECブロックIDを含むFECパケットがFECパケット生成部84から供給されると、保持しているRTPパケットおよびFECパケット生成部84から供給されたFECパケットを1つのFECブロック171として、通信網13を介して、クライアント14あてに送信する。
例えば、図8の時刻t1から時刻t2において、サーバ12は、通信網13が輻輳状態(FECパケット送信モード)であるので、RTPパケットとともにFECパケットを、通信網13を介して、クライアント14あてに送信する。
一方、ステップS58において、FEC送信モードでないと判定された場合、通信網13は、非輻輳状態であるため、パケットロスが発生する可能性は低い。そこで、FECパケットのクライアント14への送信を抑制するため、ステップS59およびステップS60の処理はスキップされ、手続は、ステップS61に進む。
なお、ステップS58において、FEC送信モードでないと判定された場合、FECパケットの送信は、抑制されるので、通信部39は、ステップS57において、RTPパケット生成部83から供給されたRTPパケットを1つのFECブロック171として、通信網13を介して、クライアント14あてに送信する。
例えば、図8の時刻t2から時刻t3において、サーバ12は、通信網13が非輻輳状態であるので、RTPパケット集合181を1つのFECブロック171として、通信網13を介して、クライアント14あてに送信する。換言すれば、サーバ12は、FECパケット送信モードでないので、FECパケットのクライアント14への送信を抑制する。
ステップS61において、RTPパケット生成部83は、FECブロックIDを更新する。例えば、ステップS61において、RTPパケット生成部83は、パケットに格納されるFECブロックIDをインクリメントする。
ステップS62において、RTPパケット生成部83は、タイムスタンプを更新する。
なお、FECパケット生成部84は、RTPパケット生成部83から供給されるRTPヘッダ情報に含まれるFECブロックIDおよびタイムスタンプを基に、FECパケットを生成するようにしてもよく、自分自身が、RTPタイムスタンプおよびFECブロックIDを保持し、更新するようにしてもよい。
ステップS63において、エンコーダ81は、内蔵しているタイマをセットして、ステップS52に戻り、データ送信の処理を繰り返す。
例えば、ステップS63において、エンコーダ81は、タイマの値を0msにセットする。
このようにして、サーバ12は、FECブロック171ごとにFECブロックIDを付加し、通信網13が輻輳状態の場合、通信網13を介して、RTPパケットおよびFECパケットをクライアント14あてに送信し、通信網13が非輻輳状態の場合、通信網13を介して、RTPパケットをクライアント14あてに送信し、FECパケットの送信は抑制する。
図12のフローチャートを参照して、サーバプログラムを実行するサーバ12によるFECパケットの送信の制御の処理を説明する。
ステップS81において、サーバ12は、FECパケットの送信の制御の処理に必要なデータを初期化する。例えば、ステップS81において、RTT計測部85は、内蔵しているタイマの値を0msにセットする。
ステップS82において、FEC送信制御部86は、FECフィードバックパケットを受信したか否かを判定し、FECフィードバックパケットを受信したと判定された場合、ステップS83に進み、FEC送信制御部86は、FECパケット数増減状態の更新の処理を行い、FECパケット数増減状態保持部87に保持されているFECパケット数増減状態を更新する。FECパケット数増減状態の更新の処理が終了すると、ステップS82に戻り、FECパケットの送信の制御の処理を繰り返す。
なお、FECパケット数増減状態の更新の処理の詳細は後述する。
一方、ステップS82において、FECフィードバックパケットが受信されなかったと判定された場合、ステップS84に進み、RTT計測部85は、RTT計測パケットを受信したか否かを判定する。
ステップS84において、RTT計測パケットが受信されたと判定された場合、ステップS85に進み、RTT計測部85は、受信されたRTT計測パケットを基に、遅延時間(RTT)を計算する。そして、計算された遅延時間を基に、RTT計測部85の長期依存RTT演算部103は、長期依存RTTを計算し、RTT計測部85の短期依存RTT演算部104は、短期依存RTTを計算する。RTT計測部85は、計算された長期依存RTTおよび短期依存RTTをFEC送信制御部86の輻輳/非輻輳判定部105に供給する。
例えば、ステップS85において、RTT計測部85は、式(1)により遅延時間を計算する。
遅延時間=
(RTT計測パケットの受信時刻)−(RTT計測パケットの送信時刻) ・・・(1)
ここで、RTT計測パケットの受信時刻は、RTT計測部85がRTT計測パケットを受信したときに、内蔵しているRTC(Real Time Clock)から取得した時刻である。また、RTT計測パケットの送信時刻は、受信されたRTT計測パケットに格納されているRTT計測パケットの送信時刻である。
また、例えば、ステップS85において、RTT計測部85の長期依存RTT演算部103は、式(2)により長期依存RTTを計算する。
長期依存RTT=
0.9×(前回計算された長期依存RTT)+0.1×(遅延時間) ・・・(2)
ここで、前回計算された長期依存RTTは、前回のステップS85の処理により計算された長期依存RTTである。また、遅延時間は、RTT計測部85により計算された遅延時間である。
また、例えば、ステップS85において、RTT計測部85の短期依存RTT演算部104は、式(3)により短期依存RTTを計算する。
短期依存RTT=
0.5×(前回計算された短期依存RTT)+0.5×(遅延時間) ・・・(3)
ここで、前回計算された短期依存RTTは、前回のステップS85の処理により計算された短期依存RTTである。また、遅延時間は、RTT計測部85により計算された遅延時間である。
例えば、RTT計測部85の長期依存RTT演算部103および短期依存RTT演算部104は、それぞれステップS85の処理において、計算された長期依存RTTおよび短期依存RTTを記憶し、次回のステップS85の処理において、記憶されている長期依存RTTおよび短期依存RTTを利用することにより、次の長期依存RTTおよび短期依存RTTを計算する。
なお、長期依存RTTは、例えば、5秒間の平均遅延時間としてもよい。また、短期依存RTTは、例えば、1秒間の平均遅延時間としてもよい。
ステップS86において、FEC送信制御部86の輻輳/非輻輳判定部105は、RTT計測部85から供給された長期依存RTTと短期依存RTTとを比較する。
例えば、ステップS86において、輻輳/非輻輳判定部105は、RTT計測部85から供給された長期依存RTTおよび短期依存RTTを基に、式(4)で示す計算をすることによって、長期依存RTTと短期依存RTTとを比較する。
(短期依存RTT)/(長期依存RTT)>1 ・・・(4)
ステップS87において、輻輳/非輻輳判定部105は、ステップS86において計算された式(4)の計算結果を基に、通信網13が輻輳状態であるか否かを判定する。
例えば、ステップS87において、輻輳/非輻輳判定部105は、RTT計測部85から供給された長期依存RTTおよび短期依存RTTが式(4)を満たす場合、通信網13が輻輳状態であると判定し、RTT計測部85から供給された長期依存RTTおよび短期依存RTTが式(4)を満たさない場合、通信網13が輻輳状態でないと判定する。
ここで、輻輳状態とは、通信網13のトラフィックが増加して、パケットの伝送に支障が生ずる状態をいう。例えば、輻輳状態においては、正常にパケットの伝送ができなくなる場合がある。輻輳状態であるか否かの通信網13の状態は、例えば、通信網13のノードにおけるバッファのキュー長によって示すことができる。例えば、ノードにおけるバッファのキュー長が長い場合、伝送されずに伝送を待機しているパケットが多いので、通信網13は込みあっているといえる。逆に、ノードにおけるキュー長が短い場合、伝送を待機するパケットが少ないので、通信網13は込んでいないと言える。
例えば、バッファのキュー長に対して、所定の閾値を設け、バッファにおけるキュー長が閾値よりも大きい場合、輻輳状態であると判定し、バッファにおけるキュー長が閾値よりも小さい場合、非輻輳状態であると判定することができる。
通信網13におけるノードのキュー長は、例えば、SNMP(Simple Network Management Protocol)などを用いて観測することができる。
本出願人が、ノードにおけるキュー長、長期依存RTT、および短期依存RTTの測定を行った結果、ノードにおけるキュー長、長期依存RTT、および短期依存RTTの間には、一定の関係が満たされることが認められた。
図13は、ノードにおけるキュー長、長期依存RTT、および短期依存RTTの関係を説明する図である。
図13において、横方向は、時間を示す。図13において、実線は、長期依存RTTを表し、点線は、短期依存RTTを表し、一点鎖線は、ノードにおけるキュー長を表す。
図13で示すように、短期依存RTTが長期依存RTTより大きい状態から、長期依存RTTが短期依存RTTより大きい状態に変化したとき、ノードにおけるキュー長が、急激に小さくなっていることが分かる。例えば、図13の時刻t52において、短期依存RTTが長期依存RTTより大きい状態から、長期依存RTTが短期依存RTTより大きい状態に変化し、ノードにおけるキュー長が急激に小さくなっていることが分かる。
逆に短期依存RTTが長期依存RTTより小さい状態から、短期依存RTTが長期依存RTTより大きい状態に変化したとき、ノードにおけるキュー長が大きくなっていることが分かる。例えば、図13の時刻t53において、短期依存RTTが長期依存RTTより小さい状態から、短期依存RTTが長期依存RTTより大きい状態に変化したとき、ノードにおけるキュー長が大きくなっていることが分かる。
したがって、短期依存RTTが長期依存RTTより大きいか否かで、通信網13が輻輳状態であるか否かを判定することができる。換言すれば、長期依存RTTおよび短期依存RTTによって式(4)が満たされる場合、通信網13は輻輳状態であると判定し、式(4)が満たされない場合、通信網13は、非輻輳状態であると判定することができる。
例えば、図13において、時刻t51から時刻t52までの期間は、通信網13が輻輳状態であると判定し、時刻t52から時刻t53までの期間は、通信網13が非輻輳状態であると判定することができる。
図12のフローチャートに戻り、ステップS87において、通信網13が輻輳状態であると判定された場合、ステップS88に進み、輻輳/非輻輳判定部105は、通信網13が輻輳状態である旨を輻輳/非輻輳状態として記憶し、FEC送信制御部86に通信網13が輻輳状態である旨の信号を供給する。
なお、ステップS87における判定の処理は、長期依存RTTおよび短期依存RTTに基づくものに限らず、例えば、通信網13のトラフィック状態を観測するSNMP、ジッタ、あるいはパケットのロス率などを用いて、輻輳状態であるか否かを判定するようにしてもよい。
ステップS89において、FEC送信制御部86は、輻輳/非輻輳判定部105から通信網13が輻輳状態である旨の信号を取得すると、FEC送信モード記憶部88に記憶されているFEC送信モードフラグをセットする。
ここで、FEC送信モードとは、FECパケットを送信するモードである。すなわち、FEC送信制御部86は、ステップS87において、通信網13が輻輳状態であると判定された場合、FEC送信モード記憶部88に記憶されているFEC送信モードフラグをセットすることにより、FEC送信モードとされ、FECブロック171の送信において、FECパケットが送信される。
ステップS90において、FEC送信制御部86は、通信網13が非輻輳状態から輻輳状態に変化したか否かを判定する。
例えば、ステップS90において、FEC送信制御部86は、輻輳/非輻輳判定部105に記憶されている輻輳/非輻輳状態を参照することにより、通信網13が非輻輳状態から輻輳状態に変化したか否かを判定する。
また、例えば、ステップS90において、FEC送信制御部86は、FEC送信モード記憶部88に記憶されているFEC送信モードフラグを基に、通信網13が非輻輳状態から輻輳状態に変化したか否かを判定するようにしてもよい。
ステップS90において、非輻輳状態から輻輳状態に変化したと判定された場合、ステップS91に進み、FEC送信制御部86は、ステップS83の処理によって更新され、FECパケット数増減状態保持部87に保持されているFECパケット数増減状態を読み出す。
例えば、FECパケット数増減状態保持部87には、FECパケット数増減状態としての増加状態、維持状態、および削減状態の3つの状態のうち、いずれかの状態が保持されている。すなわち、増加状態は、サーバ12が、通信網13を介して、クライアント14あてに送信するFECブロック171に含まれるFECパケットの数を増加させることを表し、維持状態は、サーバ12が、通信網13を介して、クライアント14あてに送信するFECブロック171に含まれるFECパケットの数を維持させる(変化させない)ことを表し、削減状態は、サーバ12が、通信網13を介して、クライアント14あてに送信するFECブロック171に含まれるFECパケットの数を削減させることを表す。
なお、FECパケット数増減状態保持部87に保持されているFECパケット数増減状態は、通信網13を介して、クライアント14からFECフィードバックパケットを受信する度に更新される。
ステップS92において、FEC送信制御部86は、読み出したFECパケット数増減状態を基に、FECパケット数変更の処理を行う。FECパケット数変更の処理の詳細は後述する。
ここで、FECパケット数とは、サーバ12が、通信網13を介して、クライアント14あてに送信する1つのFECブロック171に含まれるFECパケットの数である。例えば、図8において、時刻t1から時刻t2までの期間におけるサーバ12のFECパケット数は、2である。
ステップS93において、FEC送信制御部86は、FECパケット数増減状態保持部87に保持されているFECパケット数状態を初期化し、処理は、ステップS82に戻り、FECパケットの送信の制御の処理を繰り返す。
例えば、ステップS93において、FEC送信制御部86は、FECパケット数増減状態保持部87に保持されているFECパケット数増減状態に維持状態を設定することによりFECパケット数状態を初期化する。
一方、ステップS90において、非輻輳状態から輻輳状態に変化したと判定されなかった場合、ステップS91乃至ステップS93の処理はスキップされ、処理はステップS82に戻り、FECパケットの送信の制御の処理を繰り返す。
また、ステップS87において、通信網13が輻輳状態でないと判定された場合、ステップS94に進み、輻輳/非輻輳判定部105は、通信網13が非輻輳状態である旨を輻輳/非輻輳状態として記憶し、FEC送信制御部86に通信網13が非輻輳状態である旨の信号を供給する。
ステップS95において、FEC送信制御部86は、輻輳/非輻輳判定部105から通信網13が非輻輳状態である旨の信号を取得すると、FEC送信モード記憶部88に記憶されているFEC送信モードフラグをリセットする。FEC送信モード記憶部88のFEC送信モードフラグがリセットされることにより、FEC送信モードではなくなり、FECブロック171の送信において、FECパケットは送信されなくなる。
FEC送信制御部86がFEC送信モードフラグをリセットすると、処理は、ステップS82に戻り、FECパケットの送信の制御の処理を繰り返す。
ステップS84において、RTT計測部85がRTT計測パケットを受信しなかったと判定された場合、ステップS96に進み、RTT計測部85は、内蔵しているタイマが終了したか否かを判定する。
例えば、ステップS96において、RTT計測部85は、タイマの値と10sなどの所定の値とを比較することによって、タイマが終了したか否かを判定する。
ステップS96において、タイマが終了していないと判定された場合、ステップS82に戻り、FECパケットの送信の制御の処理を繰り返す。
一方、ステップS96において、タイマが終了したと判定された場合、ステップS97に進み、RTT計測部85は、RTT計測パケットを生成し、生成したRTT計測パケットを、通信網13を介して、クライアント14あてに送信する。
例えば、ステップS97において、RTT計測部85は、内蔵しているRTCから現在時刻を取得し、図14で示されるRTT計測パケットを生成する。
図14は、RTT計測パケットを説明する図である。バージョン情報、パディング、およびSSRCは、図で示されるRTPパケットの場合と同様であるので、その説明は、省略する。
RTT計測パケットにおいて、パディングに続いて5ビットのサブタイプが配置される。
RTT計測パケットにおいて、ペイロードタイプは205とされる。ペイロードタイプの次に配置される、16ビットのメッセージ長は、RTT計測パケットの長さ(サイズ)を示す情報である。
32ビットのSSRCに続いて、32ビットの名前が配置される。名前は、例えば、RTT計測パケットを取り扱うアプリケーションプログラムの名前である。
RTT計測パケットにいおいて、名前の次に配置される送信時刻は、サーバ12がクライアント14に、そのRTT計測パケットを送信した時刻を示す。例えば、送信時刻には、ステップS97において、RTT計測部85が内蔵しているRTCから取得した時刻が格納される。
図12のフローチャートに戻り、ステップS98において、RTT計測部85は、内蔵しているタイマをセットして、処理は、ステップS82に戻り、上述した処理を繰り返す。
例えば、ステップS98において、RTT計測部85は、内蔵しているタイマの値を0sにセットする。
このようにして、サーバ12は、FECパケットの送信の制御の処理を行う。
次に、図15のフローチャートを参照して、図12のステップS83の処理に対応するFECパケット数増減状態の更新の処理について説明する。
ステップS111において、FEC送信制御部86は、FECパケット数増減状態保持部87に保持されているFECパケット数増減状態が増加状態であるか否かを判定する。
ステップS111において、FECパケット数増減状態が増加状態であると判定された場合、FEC送信制御部86は、FECパケット数増減状態保持部87に保持されているFECパケット数増減状態の設定を更新せずに、FECパケット数増減状態の更新の処理は、終了する。
一方、ステップS111において、増加状態でないと判定された場合、ステップS112に進み、FEC送信制御部86は、FECパケットの不足状態を示すFECフィードバックパケットを受信したか否かを判定する。
ここで、FECフィードバックパケットは、通信網13を介して、クライアント14から送信されてくるパケットである。例えば、図8において、クライアント14は、時刻t23、時刻t24、時刻t25、および時刻t26のそれぞれにおいて、通信網13を介して、サーバ12あてにFECフィードバックパケットを送信する。
また、FECフィードバックパケットには、クライアント14において、受信されたFECパケットが、ロスパケットを復元するのに不足状態であるか、適正状態であるか、および過多状態であるかのいずれであるかを示す通知FEC状態が格納されている。
ステップS112において、FECパケットの不足状態を示すFECフィードバックパケットを受信したと判定された場合、ステップS113に進み、クライアント14において、FECパケットが不足しているので、FEC送信制御部87は、FECパケット数増減状態保持部87に保持されているFECパケット数増減状態に増加状態を設定し、処理は、終了する。
ステップS112において、FECパケットの不足状態を示すFECフィードバックパケットを受信していないと判定された場合、ステップS114に進み、FEC送信制御部86は、FECパケットの過多状態を示すFECフィードバックパケットを受信したか否かを判定する。
ステップS114において、FECパケットの過多状態を示すFECフィードバックパケットを受信したと判定された場合、ステップS115において、FEC送信制御部86は、クライアント14において、受信されたFECパケットが過多であるので、FECパケット数増減状態に削減状態を設定し、処理は終了する。
また、ステップS114において、FECパケットの過多状態を示すFECフィードバックパケットを受信していないと判定された場合、FEC送信制御部86は、FECパケット数増減状態の更新を行わず、処理は終了する。
すなわち、FEC送信制御部86は、図12のステップS93の処理において、FECパケット数増減状態の初期化を行ってから、RTT計測パケットが受信されるまでの期間において、1度でもFECの不足状態を示すFECフィードバックパケットを受信した場合、FECパケット数状態を増加状態に設定し、FECの適正状態を示すFECフィードバックパケットだけを受信した場合、FECパケット数状態を維持状態に設定し、FECの適正状態を示すFECフィードバックパケットおよびFECの過多状態を示すFECフィードバックパケットを受信した場合、FECパケット数状態を削減状態に設定する。
このようにして、FEC送信制御部86は、クライアント14からFECフィードバックパケットを受信するごとに、FECパケット数増減状態の更新を行う。
次に、図16のフローチャートを参照して、図12のステップS92の処理に対応するFECパケット数変更の処理について説明する。
ステップS131において、FEC送信制御部86は、FECパケット数増減状態保持部87に記憶されているFECパケット数増減状態が維持状態であるか否かを判定し、維持状態であると判定された場合、FEC送信制御部86は、FECパケット数の変更をせず、処理は終了する。
一方、ステップS131において、FECパケット数増減状態保持部87に記憶されているFECパケット数増減状態が維持状態でないと判定された場合、ステップS132に進み、FEC送信制御部86は、FECパケット数増減状態保持部87に記憶されているFECパケット数増減状態が増加状態であるか否かを判定する。
ステップS132において、増加状態であると判定された場合、ステップS133に進み、FEC送信制御部86は、FECパケット数保持部89に保持されているFECパケット数が上限値であるか否かを判定する。
ステップS133において、FECパケット数が、上限値でないと判定された場合、ステップS134に進み、FEC送信制御部86は、FECパケット数をインクリメントする。
また、ステップS133において、FECパケット数保持部89に保持されているFECパケット数が上限値であると判定された場合、FECパケット数をこれ以上増加させることができないので、FEC送信制御部86は、FECパケット数の変更をせず、処理は終了する。
ステップS132において、FECパケット数増減状態保持部87に記憶されているFECパケット数増減状態が増加状態でないと判定された場合、ステップS135に進み、FEC送信制御部86は、FECパケット数増減状態保持部87に記憶されているFECパケット数増減状態が削減状態であるか否かを判定する。
ステップS135において、削減状態であると判定された場合、ステップS136に進み、FEC送信制御部86は、FECパケット数保持部89に保持されているFECパケット数が0であるか否かを判定する。
ステップS136において、FECパケット数が0でないと判定された場合、ステップS137に進み、FEC送信制御部86は、FECパケット数をデクリメントし、処理は終了する。
一方、ステップS136において、FECパケット数が0であると判定された場合、FEC送信制御部86は、これ以上FECパケット数を削減することができないので、FECパケット数を変更せず、処理は終了する。
また、ステップS135において、FECパケット数増減状態保持部87に記憶されているFECパケット数増減状態が削減状態でないと判定された場合、FEC送信制御部86は、FECパケット数の変更をせず、処理は終了する。
このようにして、FEC送信制御部86は、FECパケット数保持部89に保持されているFECパケット数を変更する。
図17のフローチャートを参照して、クライアントプログラムを実行するクライアント14によるデコードの処理について説明する。
ステップS151において、デコーダ134は、デコードの処理に必要なデータを初期化する。例えば、ステップS151において、デコーダ134は、500msの期間、待ち状態となって待機して、バッファ133が、所定の量の画像データを記憶するまで待つ。
また、例えば、画像データのフレームの数が1秒当たり30である場合、ステップS151において、デコーダ134は、内蔵しているタイマの値を0msにセットし、33msなどの所定の値と比較することによりタイマが終了したか否かを判定する。
ステップS152において、デコーダ134は、タイマの値を基に、タイマが終了したか否かを判定し、タイマが終了したと判定された場合、ステップS153に進み、デコーダ134は、バッファ133から1フレーム分のデータを取得する。ステップS154において、デコーダ134は、ステップS153の処理で取得したデータをデコードして、デコードにより得られた画像データを出力する。
ステップS155において、デコーダ134は、内蔵しているタイマをセットして、ステップS151に戻り、デコードの処理を繰り返す。例えば、ステップS155において、デコーダ134は、タイマの値を0msにセットする。
一方、ステップS152において、タイマが終了していないと判定された場合、ステップS156に進み、RTP処理部132は、RTPパケットを受信したか否かを判定する。
ステップS156において、RTPパケットを受信したと判定されなかった場合、ステップS152に戻り、デコードの処理を繰り返す。
ステップS156において、RTPパケットを受信したと判定された場合、ステップS157に進み、RTP処理部132は、受信されたRTPパケットを検査することにより、パケットロスが発生したか否かを判定する。
ステップS157において、パケットロスが発生したと判定された場合、ステップS158に進み、FEC処理部135は、ロスパケットを復元する。
例えば、ステップS158において、FEC処理部135は、ロスしたパケットのFECブロックIDと同じFECブロックIDを含むFECパケットをRTP処理部132から供給された場合、供給されたFECパケットを基に、ロスパケットを復元し、復元されたRTPパケットをRTP処理部132に供給する。
また、ステップS158において、FECパケットが供給されなかった場合および供給されたFECパケットの数がロスパケットの数に対して、不足している場合は、ロスパケットを復元することができないので、FECパケットが不足している分のロスパケットの復元は行わない。
ステップS157において、パケットロスが発生していないと判定された場合、RTPパケットを復元する必要がないので、ステップS158の処理をスキップし、ステップS159に進む。
ステップS159において、RTP処理部132は、受信されたRTPパケットおよび復元されたRTPパケットをバッファ133に供給して、ステップS152に戻り、上述した処理を繰り返す。
このようにして、デコーダ134は、デコードの処理を行う。
次に、図18のフローチャートを参照して、クライアントプログラムを実行するクライアント14によるFECフィードバックパケット送信の処理を説明する。
ステップS171において、クライアント14は、FECフィードバックパケット送信の処理に必要なデータの初期化を行う。例えば、ステップS171において、FEC処理部135は、後述するFECブロック情報を初期化し、内蔵しているタイマの値を0msに設定する。
ステップS172において、RTP処理部132は、パケットを受信したか否かを判定する。
ステップS172において、パケットが受信されたと判定された場合、ステップS173に進み、RTP処理部132は、受信したパケットのFECブロックIDが変化したか否かを判定する。ステップS173において、受信したパケットのFECブロックIDが変化したと判定された場合、ステップS174に進み、FEC処理部135は、受信が完了したFECブロック171に対するFECブロック状態の更新の処理を行う。
ここで、受信が完了したFECブロック171とは、ステップS174において、変化したと判定されたFECブロックIDの1つ前のFECブロックIDを含むFECブロック171である。FECブロック状態更新の処理は、通信網13を介してサーバ12から送信されてきた1つのFECブロック171に含まれるパケットの数と正常に受信されたパケットの数とを基に、処理が行われるため、FECブロック171に含まれる全てのパケットの受信が完了したとき、処理が実行できる。
従って、例えば、ステップS173において、受信したパケットのFECブロックIDが変化したか否かを基に、FECブロック171に含まれる全てのパケットの受信が、完了したか否かを判定する。
なお、ステップS174におけるFECブロック状態更新の処理の詳細は、後述する。
ステップS175において、RTP処理部132は、受信されたパケットに含まれるFECブロックID、オリジナルデータパケット数、および総パケット数をFECブロック情報として、FECブロック情報保持部136に記録する。
ここで、例えば、オリジナルデータパケット数は、図11で示されるRTPパケットの“K”に対応し、総パケット数は、図11で示されるRTPパケットの“N”に対応する。また、FECブロック情報は、例えば、図9で示すFECブロック情報テーブルに記録される。
図11において、“K”で示されるRTPパケットのオリジナルデータパケット数が、FECブロックIDと対応して、図9で示されるFECブロック情報のオリジナルデータパケット数として格納される。図11で示されるRTPパケットのFECブロックIDが図9のFECブロック情報のFECブロックIDとして格納される。また、図11において、“N”で示される総パケット数が、FECブロックIDと対応して、図9で示されるFECブロック情報の総パケット数として格納される。
ステップS175の処理において、処理の対象となる受信されたパケットは、ステップS173の処理において、FECブロックIDが変化したと判定されたパケットである。すなわち、ステップS174の処理の対象となるFECブロックIDと、ステップS175の処理の対象となるFECブロックのFECブロックIDとは異なる。
ステップS176において、RTP処理部132は、FECブロック情報保持部136に記録されているFECブロック情報テーブルの受信パケット数に0を設定する。
また、ステップS173において、FECブロックIDが変化していないと判定された場合、ステップS174乃至ステップS176の処理はスキップされ、ステップS177に進む。
ステップS177において、RTP処理部132は、FECブロック情報保持部136に記録されているFECブロック情報テーブルの受信パケット数をインクリメントし、ステップS172に戻り、FECフィードバックパケット送信の処理を繰り返す。
また、ステップS172において、パケットが受信されていないと判定された場合、ステップS178に進み、FEC処理部135は、内蔵しているタイマが終了したか否かを判定する。
例えば、ステップS178において、FEC処理部135は、内蔵しているタイマの値と100msなどの所定の値とを比較することによって、タイマが終了したか否かを判定する。
ステップS178において、タイマが終了していないと判定された場合、ステップS172に戻り、FECフィードバックパケット送信の処理を繰り返す。
ステップS178において、タイマが終了したと判定された場合、ステップS179に進み、FEC処理部135は、サーバ12に通知するFEC状態である通知FEC状態設定の処理を行う。
例えば、ステップS179において、FEC処理部135は、FECブロック情報保持部136に保持されているFECブロック情報テーブルに記録されている全てのFECブロック状態を基に、通知FEC状態設定の処理を行う。通知FEC状態設定の処理の詳細は、後述する。
ステップS180において、FEC処理部135のFECフィードバックパケット生成部153は、ステップS179において、設定されている通知FEC状態を基に、FECフィードバックパケットを生成する。
図19は、FECフィードバックパケットを説明する図である。バージョン情報、パディング、サブタイプ、メッセージ長、SSRC、および名前は、図14で示されるRTT計測パケットの場合と同様であるので、その説明は、省略する。
FECフィードバックパケットにおいて、ペイロードタイプは、204とされる。
FECフィードバックパケットにおいて、名前の次に配置される通知FEC状態は、相手に通知する通知FEC状態である。通知FEC状態には、例えば、図18のステップS179の処理において、適正状態、過多状態、および不足状態のいずれかの設定された通知FEC状態が格納される。
図18の説明に戻り、ステップS181において、FECフィードバックパケット生成部153は、生成されたFECフィードバックパケットを通信部131に供給し、通信部131は、FECフィードバックパケット生成部153から供給されたFECフィードバックパケットを、通信網13を介して、サーバ12あてに送信する。
ステップS182において、FEC処理部135は、内蔵しているタイマを更新し、ステップS172に戻り、上述した処理を繰り返す。
例えば、ステップS182において、FEC処理部135は、内蔵しているタイマを0msにセットする。
このようにして、FEC処理部135は、所定の期間ごとに通信網13を介して、サーバ12あてにFECフィードバックパケットを送信する。なお、ステップS178において、タイマの値と比較される100msは、図8におけるT1、T2、T3、およびT4に対応する期間の一例であり、本発明を限定するものではない。
次に、図20のフローチャートを参照して、図18のステップS174の処理に対応する受信完了FECブロック171に対するFECブロック状態更新の処理について説明する。
ステップS201において、RTP処理部132は、FECブロック情報保持部136に保持されているFECブロック情報テーブルに、受信が完了したFECブロック171の受信パケット数を格納(記録)する。
ステップS202において、FEC処理部135は、FECブロック情報保持部136に保持されているFECブロック情報テーブルを基に、受信が完了したFECブロック171の受信パケット数が、オリジナルデータパケット数と等しいか否かを判定する。
ステップS202において、受信パケット数が、オリジナルデータパケット数と等しいと判定された場合、RTPパケットを復元するFECパケットの数は、不足でもなく、過多でもないので、ステップS203に進み、FEC処理部135は、FECブロック情報保持部136に保持されているFECブロック情報テーブルのFECブロック状態に適正状態を設定し、処理は終了する。
ステップS202において、受信パケット数がオリジナルデータパケット数と等しくないと判定された場合、ステップS204に進み、FEC処理部135は、受信パケット数がオリジナルパケット数より多いか否かを判定する。
ステップS204において、受信パケット数がオリジナルデータパケット数より多いと判定された場合、RTPパケットを復元するFECパケットの数が過多であるので、ステップS205に進み、FEC処理部135は、FECブロック情報保持部136に保持されているFECブロック情報テーブルのFECブロック状態に過多状態を設定し、処理は終了する。
ステップS204において、受信パケット数がオリジナルデータパケット数より多いと判定されなかった場合、ステップS206に進み、FEC処理部135は、受信パケット数がオリジナルパケット数より少ないか否かを判定する。
ステップS206において、受信パケット数がオリジナルデータパケット数より少ないと判定された場合、RTPパケットを復元するFECパケットの数が不足しているので、ステップS207に進み、FEC処理部135は、FECブロック情報保持部136に保持されているFECブロック情報テーブルのFECブロック状態に不足状態を設定し、処理は終了する。
一方、ステップS206において、受信パケット数がオリジナルデータパケット数より少ないと判定されなかった場合、ステップS208に進み、FEC処理部135は、FECブロック情報保持部136に保持されているFECブロック情報テーブルのFECブロック状態に適正状態を設定し、処理は終了する。
このようにして、FEC処理部135は、FECブロック171の受信が完了するごとにFECブロック情報保持部136に保持されているFECブロック状態を更新する。
なお、ステップS206の判定の処理を省略して、FECブロック状態を不足状態と設定するようにしてもよい。
次に、図21のフローチャートを参照して、図18のステップS179の処理に対応する通知FECブロック状態設定の処理について説明する。
ステップS221において、FEC処理部135は、FECブロック情報保持部136に保持されているFECブロック情報テーブルに記録されているFECブロックIDごとのFEC状態のなかに、不足状態であるFECブロック171があるか否かを判定する。
ステップS221において、不足状態であるFECブロック171があると判定された場合、ステップS222に進み、FEC処理部135は、通知FEC状態保持部137に保持されている通知FEC状態に不足状態を設定する。ステップS223において、FECブロック情報を初期化し、処理は終了する。
例えば、ステップS223において、FEC処理部135は、FEC情報テーブルに記録されているFECブロック情報の全てをクリアすることにより初期化を行う。
また、ステップS221において、FECブロック情報保持部136に保持されているFECブロック情報テーブルに記録されているFECブロックIDごとのFEC状態のなかに、不足状態であるFECブロック171がないと判定された場合、ステップS224に進み、FEC処理部135は、FECブロックIDごとのFEC状態のなかに、過多状態であるFECブロック171があるか否かを判定する。
ステップS224において、過多状態であるFECブロック171があると判定された場合、ステップS225に進み、FEC処理部135は、通知FEC状態保持部137に保持されている通知FEC状態に過多状態を設定し、ステップS223に進む。
ステップS224において、過多状態であるFECブロック171がないと判定された場合、ステップS226に進み、FEC処理部135は、通知FEC状態保持部137に保持されている通知FEC状態に適正状態を設定し、ステップS223に進む。
すなわち、FEC処理部135は、FECブロック情報保持部136に保持されているFECブロック情報テーブルに記録されているFECブロック状態の中に、1つでも不足状態であるFECブロック171がある場合、通知FEC状態を不足状態に設定し、全てのFECブロック171が、適正状態である場合、通知FEC状態を適正状態に設定し、不足状態であるFECブロック171がなく、過多状態であるFECブロック171がある場合、通知FEC状態を過多状態に設定する。
このようにして、FEC処理部135は、所定の期間ごとに、FECブロック情報保持部136に保持されているFECブロックIDごとのFECブロック状態を基に、サーバ12に通知する通知FEC状態を設定する。
図22のフローチャートを参照して、RTT計測パケットの返信の処理を説明する。ステップS241において、RTT計測部138は、通信部131がパケットを受信した場合に、通信部131から供給されたパケットを基に、RTT計測パケットを受信したか否かを判定し、RTT計測パケットを受信していないと判定された場合、ステップS241に戻り、RTT計測パケットが受信されるまで、判定の処理を繰り返す。
ステップS241において、RTT計測パケットを受信したと判定された場合、ステップS242に進み、RTT計測部138は、直ちに、受信したRTT計測パケットのデータ部と同様のデータ部のRTT計測パケットを生成して、生成したRTT計測パケットを通信部131に供給する。そして、RTT計測部138は、通信部131に、通信網13を介して、RTT計測パケットをサーバ12あてに直ちに送信させて、ステップS241に戻り、上述した処理を繰り返す。
このように、クライアント14は、RTT計測パケットを受信すると、直ちに、サーバ12にRTT計測パケットを返送する。
以上のように、サーバ12は、クライアント14から送信されてきたFECフィードバックパケットを基に、クライアント14に送信するFECパケットの数を変更し、さらに、通信網13が輻輳状態である場合、FECパケットをクライアント14に送信し、通信網13が輻輳状態でない場合、FECパケットのクライアント14への送信を抑制することで、より効率的にデータの送信を行うことができる。
第1の本発明によれば、誤り訂正パケットを生成するようにしたので、誤り訂正のための冗長データを送信することができる。また、第1の本発明によれば、通信網が輻輳状態であるか否かを判定し、誤り訂正パケットを生成し、輻輳状態でない旨の判定結果から輻輳状態である旨の判定結果に変化した場合、誤り訂正パケットの数を変更するように、生成を制御するようにしたので、通信網の状態に応じて、冗長データを含むデータの送信をより効率的に行うことができる。
第2の本発明によれば、誤り訂正パケットを受信するようにしたので、受信したデータの誤りを訂正することができる。また、第2の本発明によれば、誤り訂正パケットを受信し、受信した誤り訂正パケットの数が、ストリーミングデータの誤りを訂正するのに適正であるか否かを判定するようにしたので、送信側において、通信網の状態に応じて、冗長データを含むデータの送信をより効率的に行うことができる。
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
この記録媒体は、図5に示すように、コンピュータとは別に、ユーザにプログラムを提供するために配布される、プログラムが記録されている磁気ディスク51(フレキシブルディスクを含む)、光ディスク52(CD-ROM(Compact Disc-Read Only Memory)、DVD(Digital Versatile Disc)を含む)、光磁気ディスク53(MD(Mini-Disc)(商標)を含む)、若しくは半導体メモリ54などよりなるパッケージメディアにより構成されるだけでなく、コンピュータに予め組み込まれた状態でユーザに提供される、プログラムが記録されているROM32や、記録部38に含まれるハードディスクなどで構成される。
なお、上述した一連の処理を実行させるプログラムは、必要に応じてルータ、モデムなどのインタフェースを介して、ローカルエリアネットワーク、インターネット、デジタル衛星放送といった、有線または無線の通信媒体を介してコンピュータにインストールされるようにしてもよい。
また、本明細書において、記録媒体に格納されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
なお、本明細書において、システムとは、複数の装置により構成される装置全体を表すものである。
従来のFECパケットの送信を説明する図である。 従来のFECパケットの送信の順序を説明する図である。 従来のFECパケットを付加した送信の処理を説明するフローチャートである。 本発明に係る通信システムの一実施の形態を示す図である。 サーバの構成の例を示すブロック図である。 サーバの機能の構成を示すブロック図である。 クライアントの機能の構成を示すブロック図である。 FECパケットの送信を説明するタイムチャートである。 FECブロック情報を説明する図である。 データ送信の処理を説明するフローチャートである。 RTPパケットを説明する図である。 FECパケットの送信の制御の処理を説明するフローチャートである。 輻輳状態、長期依存RTTおよび短期依存RTTの関係を説明する図である。 RTT計測パケットを説明する図である。 FECパケット数増減状態の更新の処理を説明するフローチャートである。 FECパケット数変更の処理を説明するフローチャートである。 デコードの処理を説明するフローチャートである。 FECフィードバックパケット送信の処理を説明するフローチャートである。 FECフィードバックパケットを説明する図である。 受信完了ブロックに対するFECブロック状態更新の処理を説明するフローチャートである。 通知FEC状態設定の処理を説明するフローチャートである。 RTT計測パケットの返信の処理を説明するフローチャートである。
符号の説明
31 CPU, 32 ROM, 33 RAM, 38 記録部, 51 磁気ディスク, 52 光ディスク, 53 光磁気ディスク, 54 半導体メモリ, 83 RTTパケット生成部, 84 FECパケット生成部, 85 RTT計測部, 86 FEC送信制御部, 87 FECパケット数増減状態保持部, 88 FEC送信モード記憶部, 89 FECパケット数保持部, 132 RTP処理部, 135 FEC処理部, 136 FECブロック情報保持部, 137 通知FEC状態保持部

Claims (15)

  1. 通信網を介して、ストリーミングデータが格納されている送信パケットを送信する送信装置において、
    前記通信網が輻輳状態であるか否かを判定する判定手段と、
    前記送信パケットに格納されている前記ストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケットを生成する生成手段と、
    輻輳状態でない旨の判定結果から輻輳状態である旨の判定結果に変化した場合、前記誤り訂正パケットの数を変更するように、前記生成手段における前記誤り訂正パケットの生成を制御する制御手段と
    を備えることを特徴とする送信装置。
  2. 前記制御手段は、輻輳状態であると判定された場合、前記生成手段に所定の数の前記誤り訂正パケットを生成させ、輻輳状態でないと判定された場合、前記生成手段の前記誤り訂正パケットの生成を抑制するように、前記生成手段における前記誤り訂正パケットの生成を制御する
    ことを特徴とする請求項1に記載の送信装置。
  3. 前記制御手段は、輻輳状態でない旨の判定結果から輻輳状態である旨の判定結果に変化した場合、直前の輻輳状態における前記送信パケットの受信の状態を基に、前記誤り訂正パケットの数を変更するように、前記生成手段における前記誤り訂正パケットの生成を制御する
    ことを特徴とする請求項1に記載の送信装置。
  4. 前記制御手段は、所定の期間における1または複数の前記送信パケットからなる誤り訂正の単位であって、所定の期間における1または複数の誤り訂正の単位の受信状態を基に、前記期間における1または複数の前記誤り訂正の単位のいずれかにおいて、前記誤り訂正パケットの数が不足している場合、前記誤り訂正パケットの数を増加させるように、前記生成手段における前記誤り訂正パケットの生成を制御する
    ことを特徴とする請求項1の記載の送信装置。
  5. 前記判定手段は、第1の時刻から現在時刻までの期間における前記送信パケットの相手への伝送に要する遅延時間に依存する短期依存遅延時間と、前記第1の時刻より過去の第2の時刻から現在時刻までの期間における前記遅延時間に依存する長期依存遅延時間とを基に、輻輳状態であるか否かを判定する
    ことを特徴とする請求項1に記載の送信装置。
  6. 通信網を介して、ストリーミングデータが格納されている送信パケットを送信する送信方法において、
    前記通信網が輻輳状態であるか否かを判定する判定ステップと、
    前記送信パケットに格納されている前記ストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケットを生成する生成ステップと、
    輻輳状態でない旨の判定結果から輻輳状態である旨の判定結果に変化した場合、前記誤り訂正パケットの数を変更するように、前記生成ステップにおける前記誤り訂正パケットの生成を制御する制御ステップと
    を含むことを特徴とする送信方法。
  7. 通信網を介して、ストリーミングデータが格納されている送信パケットを送信する送信処理用のプログラムであって、
    前記通信網が輻輳状態であるか否かを判定する判定ステップと、
    前記送信パケットに格納されている前記ストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケットを生成する生成ステップと、
    輻輳状態でない旨の判定結果から輻輳状態である旨の判定結果に変化した場合、前記誤り訂正パケットの数を変更するように、前記生成ステップにおける前記誤り訂正パケットの生成を制御する制御ステップと
    を含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。
  8. 通信網を介して、ストリーミングデータが格納されている送信パケットを送信する送信処理をコンピュータに行わせるプログラムにおいて、
    前記通信網が輻輳状態であるか否かを判定する判定ステップと、
    前記送信パケットに格納されている前記ストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケットを生成する生成ステップと、
    輻輳状態でない旨の判定結果から輻輳状態である旨の判定結果に変化した場合、前記誤り訂正パケットの数を変更するように、前記生成ステップにおける前記誤り訂正パケットの生成を制御する制御ステップと
    を含むことを特徴とするプログラム。
  9. 通信網を介して、ストリーミングデータが格納されている送信パケットを受信する受信装置において、
    前記送信パケットに格納されている前記ストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケットを受信する受信制御手段と、
    受信された誤り訂正パケットの数が、前記ストリーミングデータの誤りを訂正するのに適正であるか否かを判定する判定手段と
    を備えることを特徴とする受信装置。
  10. 前記判定手段は、受信された誤り訂正パケットの数が、前記ストリーミングデータの誤りを訂正するのに不足であるか、適正であるか、および過多であるかの何れであるかを判定する
    ことを特徴とする請求項9に記載の受信装置。
  11. 前記判定手段は、1または複数の前記送信パケットからなる誤り訂正の単位ごとに、受信された前記誤り訂正パケットの数が、前記ストリーミングデータの誤りを訂正するのに不足であるか、適正であるか、および過多であるかの何れであるかを判定し、
    所定の期間における1または複数の前記誤り訂正の単位に対する前記判定結果を基に、前記期間における1または複数の前記誤り訂正の単位のいずれかにおいて、前記誤り訂正パケットの数が不足していると判定された場合、相手への通知に前記誤り訂正パケットの数が不足している旨を設定する設定手段をさらに備える
    ことを特徴とする請求項9に記載の受信装置。
  12. 前記判定結果に基づく通知を格納するフィードバックパケットを生成する生成手段と、
    前記生成手段によって、生成された前記フィードバックパケットの相手への送信を制御する送信制御手段とをさらに備える
    ことを特徴とする請求項9に記載の受信装置。
  13. 通信網を介して、ストリーミングデータが格納されている送信パケットを受信する受信方法において、
    前記送信パケットに格納されている前記ストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケットを受信する受信制御ステップと、
    前記受信制御ステップにおいて受信された誤り訂正パケットの数が、前記ストリーミングデータの誤りを訂正するのに適正であるか否かを判定する判定ステップと
    を含むことを特徴とする受信方法。
  14. 通信網を介して、ストリーミングデータが格納されている送信パケットを受信する受信処理用のプログラムであって、
    前記送信パケットに格納されている前記ストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケットを受信する受信制御ステップと、
    前記受信制御ステップにおいて受信された誤り訂正パケットの数が、前記ストリーミングデータの誤りを訂正するのに適正であるか否かを判定する判定ステップと
    を含むことを特徴とするコンピュータが読み取り可能なプログラムが記録されている記録媒体。
  15. 通信網を介して、ストリーミングデータが格納されている送信パケットを受信する受信処理をコンピュータに行わせるプログラムにおいて、
    前記送信パケットに格納されている前記ストリーミングデータの誤りを訂正するための誤り訂正データが格納されている誤り訂正パケットを受信する受信制御ステップと、
    前記受信制御ステップにおいて受信された誤り訂正パケットの数が、前記ストリーミングデータの誤りを訂正するのに適正であるか否かを判定する判定ステップと
    を含むことを特徴とするプログラム。
JP2003412459A 2003-12-10 2003-12-10 送信装置および方法、受信装置および方法、記録媒体、並びにプログラム Expired - Fee Related JP4349114B2 (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2003412459A JP4349114B2 (ja) 2003-12-10 2003-12-10 送信装置および方法、受信装置および方法、記録媒体、並びにプログラム
US10/999,980 US7539925B2 (en) 2003-12-10 2004-12-01 Transmission apparatus and method, reception apparatus and method, storage medium, and program
KR1020040103604A KR20050056886A (ko) 2003-12-10 2004-12-09 송신 장치 및 방법, 수신 장치 및 방법, 기록 매체, 및프로그램
CNB2004101002744A CN100377516C (zh) 2003-12-10 2004-12-10 发送设备和方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2003412459A JP4349114B2 (ja) 2003-12-10 2003-12-10 送信装置および方法、受信装置および方法、記録媒体、並びにプログラム

Publications (2)

Publication Number Publication Date
JP2005175837A true JP2005175837A (ja) 2005-06-30
JP4349114B2 JP4349114B2 (ja) 2009-10-21

Family

ID=34732895

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2003412459A Expired - Fee Related JP4349114B2 (ja) 2003-12-10 2003-12-10 送信装置および方法、受信装置および方法、記録媒体、並びにプログラム

Country Status (4)

Country Link
US (1) US7539925B2 (ja)
JP (1) JP4349114B2 (ja)
KR (1) KR20050056886A (ja)
CN (1) CN100377516C (ja)

Cited By (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009027720A (ja) * 2007-07-23 2009-02-05 Polycom Inc 輻輳回避と共に損失パケット回復を行うシステム及び方法
JP2010016484A (ja) * 2008-07-01 2010-01-21 Fujitsu Ltd データ転送装置、データ転送方法及びデータ転送プログラム
JP2010050809A (ja) * 2008-08-22 2010-03-04 Toshiba Corp データ受信装置、データ受信方法、及びデータ受信プログラム
JP2010514348A (ja) * 2006-12-21 2010-04-30 トムソン ライセンシング インターネットプロトコルネットワークでのリアルタイムのオーディオ及びビデオデータの前方誤り訂正をサポートする方法
JP2010119133A (ja) * 2010-01-28 2010-05-27 Sony Corp パケット送信装置、通信システム及びプログラム
US8023533B2 (en) 2006-12-25 2011-09-20 Sony Corporation Data communication system, data transmitting apparatus, data transmitting method, and method for determining packet size and redundancy
US8234548B2 (en) 2005-11-09 2012-07-31 Sony Corporation Packet transmission apparatus, communication system and program
JP2013085293A (ja) * 2013-01-11 2013-05-09 Thomson Licensing インターネットプロトコルネットワークでのリアルタイムのオーディオ及びビデオデータの前方誤り訂正をサポートする方法
US8923151B2 (en) 2009-11-24 2014-12-30 Nec Corporation Quality control apparatus, moving image transmission system, quality control method, and recording medium
JP2015508979A (ja) * 2012-02-27 2015-03-23 サムスン エレクトロニクス カンパニー リミテッド 順方向エラー訂正スキームを使用するパケット送受信装置及び方法
JP2019501566A (ja) * 2016-03-11 2019-01-17 ▲騰▼▲訊▼科技(深▲セン▼)有限公司 ビデオデータ冗長制御方法および装置
JP2020145523A (ja) * 2019-03-04 2020-09-10 日本電信電話株式会社 無線通信システムおよび無線通信方法

Families Citing this family (35)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007531078A (ja) * 2003-07-16 2007-11-01 ハンヤン ハク ウォン カンパニー,リミテッド 3次元メッシュ情報の符号化及び復号化方法並びにその装置
US7904781B2 (en) * 2004-12-09 2011-03-08 Mitsubishi Electric Corporation Data transmitting device, data receiving device, and data distribution system
US7730385B2 (en) * 2005-11-30 2010-06-01 Motorola, Inc. Method for decoding a received control channel message with a priori information
JP2007201756A (ja) * 2006-01-26 2007-08-09 Sony Corp 情報処理装置および方法、並びにプログラム
US7787377B2 (en) * 2006-02-03 2010-08-31 Telefonaktiebolaget Lm Ericsson (Publ) Selective redundancy for Voice over Internet transmissions
US7577898B2 (en) * 2006-04-10 2009-08-18 At&T Intellectual Property I, L.P. System and method of correcting video data errors
JP4724613B2 (ja) * 2006-07-04 2011-07-13 富士通株式会社 通信装置、通信制御プログラム及び通信制御方法
WO2008013528A1 (en) 2006-07-25 2008-01-31 Thomson Licensing Recovery from burst packet loss in internet protocol based wireless networks using staggercasting and cross-packet forward error correction
US8300563B2 (en) * 2006-09-29 2012-10-30 Intel Corporation Aggregated transmission in WLAN systems with FEC MPDUs
CN1937631B (zh) * 2006-10-24 2010-12-08 杭州华三通信技术有限公司 用户数据报协议报文的处理方法及装置
JP4250654B2 (ja) * 2006-11-17 2009-04-08 株式会社東芝 通信装置、通信方法および通信プログラム
KR101177454B1 (ko) * 2007-03-02 2012-08-27 삼성전자주식회사 영상 데이터의 전송에 따른 에러 복원 결정을 위한 서버 및클라이언트와, 영상 데이터의 전송에 따른 에러 복원결정방법
JP4434242B2 (ja) * 2007-07-11 2010-03-17 ソニー株式会社 送信装置、受信装置、誤り訂正システム、送信方法及び誤り訂正方法
JP5075536B2 (ja) * 2007-09-03 2012-11-21 株式会社東芝 Fec送信処理装置、ならびにfec送信処理のための方法およびプログラム
CN101478442B (zh) * 2008-01-02 2011-11-30 中兴通讯股份有限公司 组网模拟测试的工具、系统和方法
US8839339B2 (en) * 2008-04-15 2014-09-16 International Business Machines Corporation Blade center KVM distribution
JP5094593B2 (ja) * 2008-06-27 2012-12-12 キヤノン株式会社 送信装置、受信装置、及び方法、プログラム
JP5191826B2 (ja) * 2008-07-04 2013-05-08 パナソニック株式会社 ストリーム通信装置、ストリーム通信方法及びストリーム通信システム
US8489954B2 (en) * 2008-08-29 2013-07-16 Ntt Docomo, Inc. Method and apparatus for reliable media transport
US8397140B2 (en) * 2010-06-04 2013-03-12 Apple Inc. Error correction coding for recovering multiple packets in a group view of limited bandwidth
GB2492830B (en) 2011-07-14 2018-06-27 Skype Correction data
US10498359B2 (en) 2011-07-14 2019-12-03 Microsoft Technology Licensing, Llc Correction data
CN103686055B (zh) * 2012-09-24 2017-05-10 中兴通讯股份有限公司 电视会议系统中丢包补偿的处理方法及装置
EP2827522A1 (en) * 2013-07-15 2015-01-21 Alcatel Lucent Method for a first network node for transmitting or retransmitting data to a second network node and first network node thereof and method for a second network node for receiving data transmitted or retransmitted from a first network node and second network node thereof
WO2016203870A1 (ja) * 2015-06-17 2016-12-22 ソニー株式会社 送信装置、送信方法、及び通信システム
GB2535819B (en) 2015-07-31 2017-05-17 Imagination Tech Ltd Monitoring network conditions
CN107769887B (zh) * 2016-08-17 2021-02-12 华为技术有限公司 一种数据传输、数据处理方法及装置
US10784986B2 (en) * 2017-02-28 2020-09-22 Intel Corporation Forward error correction mechanism for peripheral component interconnect-express (PCI-e)
CN107241166A (zh) * 2017-06-12 2017-10-10 京信通信系统(中国)有限公司 一种长期演进上的语音Volte数据保障方法和设备
US10771189B2 (en) 2018-12-18 2020-09-08 Intel Corporation Forward error correction mechanism for data transmission across multi-lane links
US11637657B2 (en) 2019-02-15 2023-04-25 Intel Corporation Low-latency forward error correction for high-speed serial links
US11249837B2 (en) 2019-03-01 2022-02-15 Intel Corporation Flit-based parallel-forward error correction and parity
US10997111B2 (en) 2019-03-01 2021-05-04 Intel Corporation Flit-based packetization
US11296994B2 (en) 2019-05-13 2022-04-05 Intel Corporation Ordered sets for high-speed interconnects
US11740958B2 (en) 2019-11-27 2023-08-29 Intel Corporation Multi-protocol support on common physical layer

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11239159A (ja) * 1994-07-21 1999-08-31 Fujitsu Ltd Atm交換機
JP2003179580A (ja) * 2001-12-12 2003-06-27 Sony Corp データ通信システム、データ送信装置、データ受信装置、および方法、並びにコンピュータ・プログラム
JP2003529289A (ja) * 2000-03-29 2003-09-30 サムスン エレクトロニクス カンパニー リミテッド マルチメディアデータ送受信装置及び方法
WO2005046125A1 (en) * 2003-10-28 2005-05-19 Docomo Communications Laboratories Usa, Inc. Method for supporting scalable and reliable multicast in tdma/tdd systems using feedback suppression techniques
JP2005515697A (ja) * 2001-12-28 2005-05-26 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ リード・ソロモン符号に基づいた前方誤り訂正を用いた不均一誤り保護

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5313454A (en) * 1992-04-01 1994-05-17 Stratacom, Inc. Congestion control for cell networks
WO1995003657A1 (fr) * 1993-07-21 1995-02-02 Fujitsu Limited Central mta
US5426635A (en) * 1993-09-08 1995-06-20 At&T Corp. Method for adaptive control of windows and rates in networks
JP2576776B2 (ja) * 1993-11-10 1997-01-29 日本電気株式会社 パケット伝送方法・パケット伝送装置
US5600663A (en) 1994-11-16 1997-02-04 Lucent Technologies Inc. Adaptive forward error correction system
JP3614907B2 (ja) * 1994-12-28 2005-01-26 株式会社東芝 データ再送制御方法及びデータ再送制御システム
US5699364A (en) * 1995-03-16 1997-12-16 Kabushiki Kaisha Toshiba Data communication system, apparatus and method which optimize the set value of parameters
JP2768297B2 (ja) 1995-03-23 1998-06-25 日本電気株式会社 データ転送方法とその装置
JP3307792B2 (ja) * 1995-04-13 2002-07-24 株式会社日立製作所 Atmスイッチおよびatm−lanにおける輻輳制御方式
US5732078A (en) * 1996-01-16 1998-03-24 Bell Communications Research, Inc. On-demand guaranteed bandwidth service for internet access points using supplemental user-allocatable bandwidth network
US5699365A (en) * 1996-03-27 1997-12-16 Motorola, Inc. Apparatus and method for adaptive forward error correction in data communications
US6310857B1 (en) * 1997-06-16 2001-10-30 At&T Corp. Method and apparatus for smoothing and multiplexing video data flows
US6424624B1 (en) * 1997-10-16 2002-07-23 Cisco Technology, Inc. Method and system for implementing congestion detection and flow control in high speed digital network
US6882624B1 (en) * 1998-04-09 2005-04-19 Nokia Networks Oy Congestion and overload control in a packet switched network
JP3556495B2 (ja) * 1998-12-15 2004-08-18 株式会社東芝 パケットスイッチ及びパケット交換方法
US6996097B1 (en) * 1999-05-21 2006-02-07 Microsoft Corporation Receiver-driven layered error correction multicast over heterogeneous packet networks
US7095729B2 (en) * 2000-12-22 2006-08-22 Intel Corporation Method for multimedia communication over packet channels
US7099273B2 (en) * 2001-04-12 2006-08-29 Bytemobile, Inc. Data transport acceleration and management within a network communication system
US7035220B1 (en) * 2001-10-22 2006-04-25 Intel Corporation Technique for providing end-to-end congestion control with no feedback from a lossless network
KR100408525B1 (ko) * 2001-10-31 2003-12-06 삼성전자주식회사 네트워크에 적응적인 실시간 멀티미디어 스트리밍 시스템및 방법

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH11239159A (ja) * 1994-07-21 1999-08-31 Fujitsu Ltd Atm交換機
JP2003529289A (ja) * 2000-03-29 2003-09-30 サムスン エレクトロニクス カンパニー リミテッド マルチメディアデータ送受信装置及び方法
JP2003179580A (ja) * 2001-12-12 2003-06-27 Sony Corp データ通信システム、データ送信装置、データ受信装置、および方法、並びにコンピュータ・プログラム
JP2005515697A (ja) * 2001-12-28 2005-05-26 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ リード・ソロモン符号に基づいた前方誤り訂正を用いた不均一誤り保護
WO2005046125A1 (en) * 2003-10-28 2005-05-19 Docomo Communications Laboratories Usa, Inc. Method for supporting scalable and reliable multicast in tdma/tdd systems using feedback suppression techniques
JP2007510363A (ja) * 2003-10-28 2007-04-19 株式会社エヌ・ティ・ティ・ドコモ フィードバック抑制技術を使用してtdma/tddシステムにおおけるスケーラブル且つリライアブルなマルチキャストをサポートする方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
吉村健、大矢智之、河原敏朗、栄藤稔: "モバイルストリーミングにおけるRTPモニタリングエージェントを用いたMPEGビデオ品質制御方式", 電子情報通信学会論文誌, vol. 85, no. 8, JPN6009014695, 25 July 2002 (2002-07-25), JP, pages 1243 - 1253, ISSN: 0001286903 *
高山修一、堀良影、上原聡、尾家祐二: "実時間情報伝送のためのFECシステム", 電子情報通信学会技術研究報告 IN95-5, vol. 95, no. 28, JPN6008053289, 12 May 1995 (1995-05-12), JP, pages 27 - 32, ISSN: 0001162855 *

Cited By (19)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8234548B2 (en) 2005-11-09 2012-07-31 Sony Corporation Packet transmission apparatus, communication system and program
US8516346B2 (en) 2005-11-09 2013-08-20 Sony Corporation Packet transmission apparatus, communication system and program
US8990663B2 (en) 2006-12-21 2015-03-24 Thomson Licensing Method to support forward error correction for real-time audio and video data over internet protocol networks
JP2010514348A (ja) * 2006-12-21 2010-04-30 トムソン ライセンシング インターネットプロトコルネットワークでのリアルタイムのオーディオ及びビデオデータの前方誤り訂正をサポートする方法
US8023533B2 (en) 2006-12-25 2011-09-20 Sony Corporation Data communication system, data transmitting apparatus, data transmitting method, and method for determining packet size and redundancy
US8711884B2 (en) 2006-12-25 2014-04-29 Sony Corporation Data communication system, data transmitting apparatus, data transmitting method, and method for determining packet size and redundancy
JP2009027720A (ja) * 2007-07-23 2009-02-05 Polycom Inc 輻輳回避と共に損失パケット回復を行うシステム及び方法
JP2010016484A (ja) * 2008-07-01 2010-01-21 Fujitsu Ltd データ転送装置、データ転送方法及びデータ転送プログラム
JP2010050809A (ja) * 2008-08-22 2010-03-04 Toshiba Corp データ受信装置、データ受信方法、及びデータ受信プログラム
US8923151B2 (en) 2009-11-24 2014-12-30 Nec Corporation Quality control apparatus, moving image transmission system, quality control method, and recording medium
JP2010119133A (ja) * 2010-01-28 2010-05-27 Sony Corp パケット送信装置、通信システム及びプログラム
US10177784B2 (en) 2012-02-27 2019-01-08 Samsung Electronics Co., Ltd. Packet transmission/reception apparatus and method using forward error correction scheme
JP2015508979A (ja) * 2012-02-27 2015-03-23 サムスン エレクトロニクス カンパニー リミテッド 順方向エラー訂正スキームを使用するパケット送受信装置及び方法
JP2013085293A (ja) * 2013-01-11 2013-05-09 Thomson Licensing インターネットプロトコルネットワークでのリアルタイムのオーディオ及びビデオデータの前方誤り訂正をサポートする方法
JP2019501566A (ja) * 2016-03-11 2019-01-17 ▲騰▼▲訊▼科技(深▲セン▼)有限公司 ビデオデータ冗長制御方法および装置
US10735029B2 (en) 2016-03-11 2020-08-04 Tencent Technology (Shenzhen) Company Limited Method and apparatus for encoding packets using video data redundancy control information
JP2020145523A (ja) * 2019-03-04 2020-09-10 日本電信電話株式会社 無線通信システムおよび無線通信方法
JP7338172B2 (ja) 2019-03-04 2023-09-05 日本電信電話株式会社 無線通信システムおよび無線通信方法
US11962408B2 (en) 2019-03-04 2024-04-16 Nippon Telegraph And Telephone Corporation Wireless communication system, and wireless communication method

Also Published As

Publication number Publication date
JP4349114B2 (ja) 2009-10-21
US7539925B2 (en) 2009-05-26
CN100377516C (zh) 2008-03-26
CN1638321A (zh) 2005-07-13
US20050160346A1 (en) 2005-07-21
KR20050056886A (ko) 2005-06-16

Similar Documents

Publication Publication Date Title
JP4349114B2 (ja) 送信装置および方法、受信装置および方法、記録媒体、並びにプログラム
JP2005136546A (ja) 送信装置および方法、記録媒体、並びにプログラム
KR100680671B1 (ko) 에러 정정용 데이터의 생성 방법 및 생성 장치와 생성 프로그램을 저장한 컴퓨터 판독가능한 기록 매체
JP5442816B2 (ja) 可変fecオーバヘッド及び保護期間を利用したストリーミング及びバッファリング
JP5141197B2 (ja) 符号化装置
WO2017157303A1 (zh) 实时通信中的抗丢包方法、装置和系统
CN107257270B (zh) 基于混合自动重传请求的数据传输方法及系统
US7584404B2 (en) Method and apparatus for multimedia communication over packet channels
JP5094546B2 (ja) 通信装置、及び通信方法、プログラム
JP2004032719A (ja) Fec符号化方式に基づいた可変長パケット送信方法及び受信方法
US9781488B2 (en) Controlled adaptive rate switching system and method for media streaming over IP networks
JP2004517534A (ja) パケット・チャネルを介するマルチメディア通信のための方法
JP2020502832A (ja) データストリーミングの前方誤り訂正
JP5344541B2 (ja) データ送信装置、送信方法及びプログラム
US10334322B1 (en) System and method for media delivery on broadcast video networks
JP4362761B2 (ja) 送信装置および方法、記録媒体、並びにプログラム
US8472310B2 (en) Packet distribution band controlling method, distributing apparatus, and video distributing system
CN115550459A (zh) 语音数据的发送和接收方法以及相关设备
JP2005065100A (ja) データ配信方法、中継装置及びコンピュータプログラム
JP3730977B2 (ja) データ伝送方法およびデータ処理方法
JP4367287B2 (ja) 受信装置および方法、記録媒体、プログラム、並びに通信システム
WO2016203870A1 (ja) 送信装置、送信方法、及び通信システム
JP2005136547A (ja) 通信システム、受信装置および方法、送信装置および方法、記録媒体、並びにプログラム
JP2006304351A (ja) 無線通信方法および無線通信装置
JP2006314120A (ja) 無線通信方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060927

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20081015

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081021

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081216

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090331

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090528

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090612

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090630

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090713

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120731

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120731

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130731

Year of fee payment: 4

LAPS Cancellation because of no payment of annual fees