(57)【要約】【課題】リードソロモン符号と同等の符号化率に対する誤り訂正能力を確保しつつ、誤り訂正能力に制限のない誤り訂正方法を提供することを目的とする。【解決手段】データパケットと冗長パケットによりデータパケットの誤りを訂正する誤り訂正方法であって、送信したいデータを複数のデータパケットに分割するステップと、複数のデータパケットの各々に任意の異なるｘ座標を割り当てるステップと、割り当てたｘ座標とは異なる任意のｘ座標を選択し、ｘ座標を割り当てた複数のデータパケットを元に、異なる任意のｘ座標に対応した冗長パケットを作成するステップと、データパケットと冗長パケットとに対応させたｘ座標の情報、データパケット、および冗長パケットを送信するステップと、を有する。【選択図】図３
2012142654.tif 000002
【特許請求の範囲】
【請求項１】
データパケットと冗長パケットによりデータパケットの誤りを訂正する誤り訂正方法であって、
送信したいデータを複数の前記データパケットに分割するステップと、
前記複数のデータパケットの各々に任意の異なるｘ座標を割り当てるステップと、
前記割り当てたｘ座標とは異なる任意のｘ座標を選択し、前記ｘ座標を割り当てた複数のデータパケットを元に、前記異なる任意のｘ座標に対応した前記冗長パケットを作成するステップと、
前記データパケットと前記冗長パケットとに対応させたｘ座標の情報、前記データパケット、および前記冗長パケットを送信するステップと、
を有する誤り訂正方法。
【請求項２】
前記データパケットを複数に分割して、分割したデータパケットに対応した冗長パケットを作成し、前記分割したデータパケットを元のサイズに結合し、前記分割したデータパケットに対応した冗長パケットをデータパケットと同じサイズに結合した後送信する請求項１記載の誤り訂正方法。
【請求項３】
前記冗長パケットは、多項式補間方法を用いて作成する請求項１記載の誤り訂正方法。
【請求項４】
前記冗長パケットは、前記ｘ座標に対応させたデータパケットから連立方程式を作成し、前記作成した連立方程式から前記冗長パケットを作成する請求項１記載の誤り訂正方法。
【請求項５】
受信したデータパケットと冗長パケットによりデータパケットの誤りを訂正する誤り訂正方法であって、
前記データパケットと前記冗長パケットとに対応させたｘ座標の情報、前記データパケット、および前記冗長パケットを受信するステップと、
前記データパケットに誤りがあった場合、前記誤りがあったデータパケットに対応する前記ｘ座標から前記誤りがあったデータパケットを復元するステップと、
を有する誤り訂正方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、相手装置と通信する際に、行う誤り訂正方法に関するものである。
【背景技術】
【０００２】
従来の技術として、（特許文献１）に記載された誤り訂正符号化方式であるリードソロモン符号化方式について、その概要を説明する。
【０００３】
特徴として、符号の生成方法にガロア体（有限体）の概念を用いている。これは複数のビットから構成されるシンボル単位で訂正符号化を行う。具体的には、本来送信したいｋ個のデータシンボルからｍ個の冗長シンボルを生成して、ｋ＋ｍ個のシンボルを送信して、受信側では、冗長シンボルを含めて最低ｋ個以上のシンボルを受信できれば、本来送信したいシンボルが伝送路で損失しても、これを回復することができる。
【０００４】
ここで、符号化率（ｋ＋ｍに対するｋの比率）が小さい程、また、符号長（ｋ＋ｍ）が大きい程、誤り訂正能力は高くなる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平９−１９１４５７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、一般に、シンボル長（１シンボルに含まれるビット数）をＬとするとき、最大符号長（１度の符号化処理に使用するシンボル数）は２L−１に制限されるため、リードソロモン符号においては、誤り訂正能力に制限があり、通信環境が非常に悪いところでは、誤りを訂正できない恐れがあった。
【０００７】
そこで本発明は上記従来の課題に鑑みて、リードソロモン符号と同等の符号化率に対する誤り訂正能力を確保しつつ、誤り訂正能力（符号長）に制限のない誤り訂正方法を提供することを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決するために本発明の誤り訂正方法は、データパケットと冗長パケットによりデータパケットの誤りを訂正する誤り訂正方法であって、送信したいデータを複数のデータパケットに分割するステップと、前記複数のデータパケットの各々に任意の異なるｘ座標を割り当てるステップと、前記割り当てたｘ座標とは異なる任意のｘ座標を選択し、前記ｘ座標を割り当てた複数のデータパケットを元に、前記異なる任意のｘ座標に対応した冗長パケットを作成するステップと、前記データパケットと前記冗長パケットとに対応させたｘ座標の情報、前記データパケット、および前記冗長パケットを送信するステップと、を有する。
【発明の効果】
【０００９】
本発明によれば、リードソロモン符号と同等の符号化率に対する誤り訂正能力を確保しつつ、誤り訂正能力（符号長）に制限のない誤り訂正方法を提供することができる。
【図面の簡単な説明】
【００１０】
【図１】本実施例における層毎のエラーレートを示す概念図
【図２】本実施例における送信装置のブロック図
【図３】本実施例における送信装置のフロー図
【図４】本実施例におけるパケット分割の概念図
【図５】本実施例における多項式グラフの概念図
【図６】本実施例における受信装置のブロック図
【図７】本実施例における受信装置のフロー図
【図８】本実施例における送受信装置のフロー図
【発明を実施するための形態】
【００１１】
本発明の誤り訂正方法は、データパケットと冗長パケットによりデータパケットの誤りを訂正する誤り訂正方法であって、送信したいデータを複数のデータパケットに分割するステップと、前記複数のデータパケットの各々に任意の異なるｘ座標を割り当てるステップと、前記割り当てたｘ座標とは異なる任意のｘ座標を選択し、前記ｘ座標を割り当てた複数のデータパケットを元に、前記異なる任意のｘ座標に対応した冗長パケットを作成するステップと、前記データパケットと前記冗長パケットとに対応させたｘ座標の情報、前記データパケット、および前記冗長パケットを送信するステップと、を有する。
【００１２】
これにより、リードソロモン符号と同等の符号化率に対する誤り訂正能力を確保しつつ、誤り訂正能力（符号長）に制限のない誤り訂正方法を提供することができる。
【００１３】
また、データパケットを複数に分割して、分割したデータパケットに対応した冗長パケットを作成し、分割したデータパケットを元のサイズに結合し、分割したデータパケットに対応した冗長パケットをデータパケットと同じサイズに結合した後送信することにより、データパケットおよび冗長パケットの処理を行うときのデータサイズを小さくすることができる。
【００１４】
また、冗長パケットは、多項式補間方法を用いて作成、もしくは、ｘ座標に対応させたデータパケットから連立方程式を作成し、作成した連立方程式から冗長パケットを作成する。
【００１５】
また、受信したデータパケットと冗長パケットによりデータパケットの誤りを訂正する誤り訂正方法であって、データパケットと冗長パケットとに対応させたｘ座標の情報、データパケット、および冗長パケットを受信するステップと、データパケットに誤りがあった場合、誤りがあったデータパケットに対応するｘ座標から誤りがあったデータパケットを復元するステップとを有する。
【００１６】
これにより、リードソロモン符号と同等の符号化率に対する誤り訂正能力を確保しつつ、誤り訂正能力（符号長）に制限のない誤り訂正方法を提供することができる。
【実施例】
【００１７】
本実施例は、アプリケーション層で誤り訂正を行うが、その背景について図１を用いて説明する。図１は、本実施例における層毎のエラーレートを示す概念図である。
【００１８】
一般的に、無線通信路では、信号レベルの変動や、干渉等の雑音の影響を受けやすい。例えば、物理層とデータリンク層の一部を規定する、無線ＬＡＮの標準規格ＩＥＥＥ８０２．１１では、パケットエラーレートを１０％以下に低減するように記載されている。対して、有線のイーサーネットでは、パケットエラーレートを通常１０-6以下に低減するように規定されている。
【００１９】
ここで、例えばイーサーネットの端子を有するテレビ会議端末は、有線のインターネットを想定して作られているため、アプリケーション層ではパケットエラーレートを１０-6以下としている。
【００２０】
そのため、テレビ会議端末を無線ＬＡＮを用いて使用するとき、伝送路が劣悪な場合には、伝送路で１０％以上のパケットエラーレートが発生することが想定される。この場合、受信信号が、無線ＬＡＮの物理層でパケットエラーレートが１０％まで低減されて、データリンク層より上位のレイヤに転送される。
【００２１】
しかしながら、何らかの工夫がなければ、上位レイヤに転送されるパケットのパケットエラーレートは１０％のままであるため、想定するパケットエラーレート１０-6以下より非常に大きなパケットエラーレート１０％でテレビ会議を行うことになり、サービス品質の大幅な低下を招くことになる。
【００２２】
そのため、本実施例では、アプリケーション層でエラー訂正を行い、伝送路が劣悪な場合においても、有線のインターネットを想定した作られた機器が正常に動作できるようにするものである。
【００２３】
以下、本実施例の具体的な内容について図を用いて説明する。本実施例では、送信したいデータから生成したパケットをデータパケット、そのデータパケットを元に生成したパケットを冗長パケットとする。
【００２４】
まず、送信側について図２、図３を用いて説明する。図２は、本実施例における送信装置のブロック図、図３は、本実施例における送信装置のフロー図である。
【００２５】
まず、送信装置の構成について説明する。送信装置は、送信したいデータを受け取る入力部１０、入力部１０から受け取ったデータに対して、画像、音声等の符号化処理を行う符号化部１１、そして、符号化部１１によって符号化されたデータを所定のサイズに分割しデータパケットを生成するパケット生成部１２、データパケットをさらに分割するパケット分割部１３、パケット分割部１３により分割されたデータパケットから冗長パケットを生成する冗長パケット生成部１４、上記分割したデータパケットおよび冗長パケットを元のパケットサイズに戻すパケット再生成部１５、冗長パケットを生成する際に用いるｘ座標生成部１６、上記のデータパケット、冗長パケットおよびｘ座標を送信する出力部１７により構成される。
【００２６】
次に、上記のように構成された送信装置の動作について説明する。
【００２７】
図３に示すように、送信装置は、まず、あらかじめ決められている送信データにおけるデータパケットの数とその送信データを元に生成する冗長パケットの数だけ、任意の数でｘ座標を生成する（ｓｔｅｐ１）。
【００２８】
ここで、任意の数でｘ座標を生成することについて詳細に説明する。データパケットに対して冗長パケットを何個付けて送るのは、あらかじめ決められているものであり、データパケットの数をｋ、冗長パケットの数をｍとすると、冗長パケットを生成する際に必要なｘ座標の数は、ｋ＋ｍ個であるということが分かり、生成するｘ座標はｘi（ｉ＝０、１、・・・、ｋ＋ｍ−１）と表すことができる。
【００２９】
なお、ここで、ｘi（ｉ＝０、１、・・・、ｋ−１）は、データパケットに付与するｘ座標であり、ｘi（ｉ＝ｋ、ｋ＋１、・・・、ｋ＋ｍ−１）は、冗長パケットに付与するｘ座標である。
【００３０】
なお、例えばデータパケットがｋ＝４個、冗長パケットがｍ＝２個であるとき、必要なｘ座標は６となるが、このとき、任意の数としては、１、２、３、４、５、６のように任意の数を用意し、ｘ0＝１、ｘ1＝２、ｘ2＝４、ｘ3＝６、ｘ4＝３、ｘ5＝５のようにｘ座標を定める。
【００３１】
次に、そのｘ座標を出力部１７送信し（ｓｔｅｐ２）、受信装置から受信成功通知を受信しすべてのｘ座標が送信されたことを確認する（ｓｔｅｐ３）と、送りたい送信データの処理を始める。
【００３２】
そして、入力部１０に入力された送信データは、まず符号化部１１において、画像符号化等の符号化処理を施し（ｓｔｅｐ４）、その後、パケット生成部１２において、符号化したデータをパケット化し、データパケットを生成する（ｓｔｅｐ５）。
【００３３】
次に、パケット分割部１３において、その後の演算が可能なレベルまで、データパケットの長さを小さなサイズのパケットに分割する（ｓｔｅｐ６）。
【００３４】
ここで、パケット分割の具体例として、図４を用いて説明する。図４は、本実施例におけるパケット分割の概念図である。
【００３５】
図４は、パケット生成部１２で生成したデータパケットの各パケットＰiを、パケット分割部１３において４つの小さいサイズに分割した例である。図４に示すように、例えば、パケットＰ0は４つに分けられ、Ａ１、Ａ２、Ａ３、Ａ４の小さいサイズのパケットに分割される。
【００３６】
ここで、送信したいパケットを部分パケットに分割して処理する理由について説明する。通常のパケットサイズは約１０００バイト（約８０００ビット）であり、これを上述のように数値化すると最大２8000となり、通常の計算機では扱えない非常に大きな値となる。そこで、通常の計算機で扱いやすい、例えば８ビット程度まで小さくした部分パケットに分割して処理するようにする。
【００３７】
次に、冗長パケット生成部１４の処理について説明する。
【００３８】
まず、パケット分割部１３で小さいサイズに分割されたパケットを数値化する（ｓｔｅｐ７）。
【００３９】
ここで、本実施例におけるパケットの数値化とは、上記小さいサイズに分割したパケット（Ａ１、Ａ２、Ａ３、Ａ４等）のｋビットのデータパケットを各ビットに重み付けすることによってＤi（ｉ＝０、１、・・・、ｋ−１）と数値化する。例えば、簡単のために４ビットからなるパケット（ｄ１、ｄ２、ｄ３、ｄ４）、（ｄｊ＝０又は１、ｊ＝１、２、３、４）の場合、（数１）に示すようなる。
【００４０】
【数１】
2012142654.tif 000003
【００４１】
つまり、本実施例における数値化とは、パケットデータを１ビット毎に処理するのではなく、複数のビットをまとめて処理できるようにするため、重み付けを行い１つのパケットデータを１つの数値として扱えるように数値化している。
【００４２】
次に、冗長パケット生成部１４により冗長パケットを生成する（ｓｔｅｐ８）。本実施例では、冗長パケットの生成にラグランジェの多項式補間式を用いて行う。
【００４３】
この場合、ｘ座標生成部１６において、あらかじめ作成しておいたｘi（ｉ＝０、１、・・・、ｋ−１）と上記数値化したパケットデータＤiとを対応付けて、ｋ個の２次元データ（ｘi、Ｄi）、（ｉ＝０、１、・・・、ｋ−１）を生成する。
【００４４】
次に、ｋ個の２次元平面上の点（ｘ0、Ｄ0）、（ｘ1、Ｄ1）、・・・、（ｘk-1、Ｄk-1）を通るｋ−１次多項式曲線上を通る、任意のｘに対するＤ（ｘ）は、（数２）のラグランジェの多項式補間式を使って計算することができる。
【００４５】
【数２】
2012142654.tif 000004
【００４６】
ここで、Ｌi（ｘ）は（数３）に示すものである。
【００４７】
【数３】
2012142654.tif 000005
【００４８】
つまり、冗長パケット生成部１４では、上述の多項式補間式を使って、あらかじめ用意しておいた冗長パケットに対応するｘ座標であるｘi（ｉ＝ｋ、ｋ＋１、・・・、ｋ＋ｍ−１）に対するＤ（ｘ）を計算して、それを冗長パケットとする。
【００４９】
次に、分割したデータパケットに対して、冗長パケットの生成が終了したら（ｓｔｅｐ９）、数値化されているデータパケット、および冗長パケットを元のビット単位（２進数）のデータに戻し（ｓｔｅｐ１０）、パケット再生成部１５により、本来送信したデータのパケットおよび送信データと同じパケットサイズの冗長パケットになるように、それぞれのパケットを連結して、パケット生成部１２で生成したパケットの大きさに戻す（ｓｔｅｐ１１）。そして、それらのパケットを送信する（ｓｔｅｐ１２）。
【００５０】
ここで、各ｘ座標は各パケットに１対１で対応する必要があるが、具体的には、各パケットのヘッダー領域にあるシーケンス番号と各ｘ座標とが１対１で対応するようにしておく。本実施例では、ｘi（ｉ＝０、１、・・・、ｋ＋ｍ−１）をｉが小さい順にシーケンス番号の小さい順に対応させている。
【００５１】
なお、冗長パケットに付与するｘ座標であるｘi（ｉ＝ｋ、ｋ＋１、・・・、ｋ＋ｍ−１）は、すべてのｘi（ｉ＝０、１、・・・、ｋ＋ｍ−１）の中で最大値、もしくは最小値にならないようにしてある。
【００５２】
つまり、データパケットに付与するｘ座標の最大値がｘmax、最小値がｘminとするとき、ｘi（ｉ＝ｋ、ｋ＋１、・・・、ｋ＋ｍ−１）は、（数４）に示すようになる。
【００５３】
【数４】
2012142654.tif 000006
【００５４】
上記のようにｘ座標を決める理由について、以下説明する。ｋ個の２次元平面上の点（ｘ0、Ｄ0）、（ｘ1、Ｄ1）、・・・、（ｘk-1、Ｄk-1）を通るｋ−１次多項式曲線には、極大点と極小点あわせてｋ−２個存在する。そして、それらの極大点と極小点の最大のｘ座標より大きいｘ座標の領域では、ｙ座標は単調増加又は単調減少となる。
【００５５】
一方、極大点と極小点の最小のｘ座標より小さいｘ座標の領域では、ｙ座標は単調増加又は単調減少となる。
【００５６】
このような単調増加又は単調減少の領域で、冗長パケットのｘ座標を選択すると、対応する冗長パケットの数値化した値（絶対値）が非常に大きくなって、装置によっては、数値化したデータを扱えなくなる可能性がある。
【００５７】
上記の例として、ｋ＝４、ｍ＝２の場合を図５を用いて説明する。なお、図５で横軸はｘ座標であり、縦軸はｙ座標であり、ｙ座標はｘ座標に対応するパケットの数値化された値である。
【００５８】
ここで、ｘ座標がｘ0より小さい場合には、ｙ座標の値は単調減少となり、ｘ座標がｘ3より大きくなると、ｙ座標の値は単調増加となる。従って、冗長パケットに対応するｘ座標を、本来送信したいパケットに対応するｘ座標の外側から選択する場合、ｙ座標の値が単調増加もしくは減少となる可能性があるため、ｘ座標に対応する冗長パケットの数値化した値が非常に大きくなって、装置によっては扱えなくなる可能性がある。
【００５９】
そこで、図５に示すように、本来送信したいパケットに対応するｘ座標ｘ0、ｘ1、ｘ2、ｘ3の間に冗長パケットに対応するｘ座標ｘ4、ｘ5を配置することによって、冗長パケットの数値が必要以上大きい値とならないようにしている。
【００６０】
なお、本実施例では、上記のようにしているが、使用する装置において大きな値でも計算可能であれば、送信する際のシーケンス番号の大きさの順番にｘ座標の大きさを対応させるようにしてもよい。
【００６１】
以上の具体的処理を図４を用いて説明する。図４の中の、４個のデータパケットＰ0、Ｐ1、Ｐ2、Ｐ3から小さく分割されたパケットＡ１、Ｂ１、Ｃ１、Ｄ１を（数１）の式を使って各々を数値化して、それらの結果を各々Ｄ0、Ｄ1、Ｄ2、Ｄ3とする。そして、それらに対して、任意に選択したｘ0、ｘ1、ｘ2、ｘ3を対応させる。そして、それら（ｘ0、Ｄ0）、（ｘ1、Ｄ1）、（ｘ2、Ｄ2）、（ｘ3、Ｄ3）を使って、（数２）の式を構成する。この場合、ｋ＝４である。
【００６２】
そして、任意に選択したｘ4、ｘ5を選択して、（数２）の式を使って、ｘ4、ｘ5に対応するＤ4、Ｄ5を計算する。そして（数１）の式の逆のプロセスで、Ｄ4、Ｄ5から小サイズのパケットＥ1、Ｆ1を生成する。以下同様にして、Ｅi、Ｆi（ｉ＝２、３、４）を生成する。そして、それらを各々連結して、パケットＰi（ｉ＝０〜５）を生成する。
【００６３】
ここで、Ｐ0はＡ１、Ａ２、Ａ３、Ａ４を連結して、元のデータパケットに戻し、同様にＰ１、Ｐ２、Ｐ３も元のデータパケットに戻す。
【００６４】
しかしながら、冗長パケットについては、分割したデータパケットから作成しているため、新たに分割する前の元のデータパケットと同じサイズになるように、Ｐ４は、Ｅ１、Ｅ２、Ｅ３、Ｅ４を連結し、Ｐ５は、Ｆ１、Ｆ２、Ｆ３、Ｆ４を連結して分割する前のデータパケットと同じサイズの冗長パケットを作成する。そして、本来送信したいｋ＝４個のパケットＰi（ｉ＝０〜３）と共にｍ＝２個の冗長パケットＰi（ｉ＝４〜５）を送信する。
【００６５】
なお、本実施例では、ｘ座標を生成し送信を確認後、符号化し冗長パケットを生成しているが、ｘ座標をデータパケットに振る直前に生成してもよい。なお、この場合、生成したｘ座標は、それぞれのデータパケットと同時に送ってもよいし、ｘ座標をまとめて送信してもよい。
【００６６】
また、上記実施例では、ｘ座標を受信装置に送信したことを確認後、送信データの符号化を行っているが、ｘ座標を生成（ｓｔｅｐ１）後、ｘ座標送信（ｓｔｅｐ２）と並行して、符号化（ｓｔｅｐ４）移行の処理を始めてもよい。
【００６７】
また、冗長パケット生成時に計算量が軽くなるように、パケットを分割して行っているが、もともとパケットのサイズが大きくないものや、十分な性能があるものを送信装置として利用するのであれば、そのまま分割せずに行ってもよい。
【００６８】
次に、受信側について図６、図７を用いて説明する。図６は、本実施例における受信装置のブロック図、図７は、本実施例における受信装置のフロー図である。
【００６９】
受信装置は、送信装置からの信号を受け取る入力部５０、入力部５０からの受信データの損失パケットを識別する損失パケット識別部５１、損失していないパケットを分割するパケット分割部５２、分割したパケットを元に損失したパケットを復元する損失パケット回復部５３、復元したパケットも含め分割されているパケットを結合する部分パケット連結部５４、上記パケットから再生データを得る復号部５６をにより構成される。
【００７０】
また、受信装置には送信装置から送信されたｘ座標を受け取り損失パケット回復部５３へその情報を送るｘ座標取得部５７を備える。
【００７１】
次に、図７を用いて上記のように構成された送信装置の動作について説明する。
【００７２】
図７に示すように受信装置は、送信装置から入力部５０にｘ座標が送られてくると受信を開始し（ｓｔｅｐ１０１）、ｘ座標取得部５７がｘ座標をすべて受信するまで待機し（ｓｔｅｐ１０２）、ｘ座標をすべて受信すると送信装置に対して受信成功通知を送信する（ｓｔｅｐ１０３）。
【００７３】
その後、送信装置からパケットを受信し（ｓｔｅｐ１０４）、受信したパケットの中に損失パケットがないか、例えば、受信パケット中のＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）等を使って、受信パケット中のデータに誤りがあるか否かを検査する（ｓｔｅｐ１０５）。そして、損失パケット識別部５１において、誤りがある場合にはそのパケットは破棄する。
【００７４】
次に、損失していないパケットについて送信時と同じようにパケット分割部５２によってパケット分割を行う（ｓｔｅｐ１０６）。つまり、例えば図４において、受信したパケットＰ0を誤りなく受信した場合に、Ｐ0からＡ１、Ａ２、Ａ３、Ａ４を生成する。以下同様に、誤りなく受信したパケットから小さいサイズのパケットを生成する。
【００７５】
なお、パケット分割は、送信側と同じように行っているが、送信側と異なる分割を行ってもよい。例えば、送信側では４分割したものを、受信側では５分割にしてもよい。
【００７６】
また、損失パケット識別部５１とパケット分割部５２との順番は逆でもよく、この機能を有する処理は、アプリケーション層ではなく、下位の物理層等で行ってもよい。
【００７７】
そして、その分割したパケットを損失パケット回復部５３において送信時と同様に数値化し（ｓｔｅｐ１０７）、損失パケット識別部５１において破棄した損失パケットを回復する（ｓｔｅｐ１０８）。
【００７８】
ここで、損失パケット回復部５３の処理について具体的に説明する。図４に示すように、パケットＰi（ｉ＝０〜５）が送信されて、伝送路上で、Ｐ2が伝送路上で誤り、破棄された場合について説明する。この場合、送信された６個のパケット中５個が正しく受信され、ｋ＝４であるから、５個の中から任意の４個を選択して、更に、ｘ座標取得部５７において取得した対応するｘ座標から、（数２）の多項式補間式を構成する。そして、この多項式補間式を使い、本来送信したいデータのパケットＰ2に対応するｘ2から、Ｃi（ｉ＝１〜４）を計算して、損失パケットを回復する。
【００７９】
上記分割したパケットについて損失したパケットの回復がすべて終了する（ｓｔｅｐ１０９）と、数値化したパケットを元のパケットデータに戻し（ｓｔｅｐ１１０）、部分パケット連結部５４において、小さいサイズのパケットを連結して、元のサイズのパケットに結合する（ｓｔｅｐ１１１）。その後、復号部５５において復号されて（ｓｔｅｐ１１２）、出力部５６から受信した再生データが出力される。
【００８０】
なお、損失パケット識別部５１において、誤りなく受信できたパケット数がｋ個未満の場合には、損失したパケットを回復することができないため、受信データは、損失パケット回復部５３を経ることなく、出力部５６には誤りなく受信できたパケットがそのまま出力される。
【００８１】
送信装置、受信装置の動作について図８を用いて説明する。図８は、本実施例における送受信装置のフロー図である。
【００８２】
本実施例においては、損失パケットを回復する際の前提として、送受信共に、ｘ座標ｘi（ｉ＝０、１、・・・、ｋ＋ｍ−１）の値を共有しておく必要がある。このために、本来送信したい情報を送信する前、図８に示すように、受信側にｘ座標情報を伝送する。そして、正常に受信できたという通知の信号を、送信側が受信側から受信できた後に、上述の、誤り訂正符号化された情報の伝送を行うようにすることで、上述のような誤り訂正機能を実現することが可能となる。なお、ｘ座標ｘiの共有のこれ以外の方法として、例えば、認証時等に共有してもよい。
【００８３】
本実施例は、上記処理により、シンボル長（＝パケット長Ｄi）に関わらず、任意の符号長（＝ｋ＋ｍ＋１）について扱える。この場合、冗長パケットの数ｍとして、より大きな値を選択することが可能となり、その分、送信パケット中の損失パケットの数がより大きくなっても、本来送信したいパケットを回復する能力が高まることを意味しており、ストリーミングのように、一方向通信で大量のデータを高品質で伝送するのに非常に適している。
【００８４】
なお、冗長パケットの生成方法として、多項式補間を用いる方法を述べたが、連立方程式を用いた方法でもよい。この方法について説明する。
【００８５】
送信側においては、ここで、（数５）記載のＤiに対応して任意のｘi（ｉ＝０、１、・・・、ｋ−１）を選択して
【００８６】
【数５】
2012142654.tif 000007
【００８７】
とおくと、送信したいｋ個のデータパケットと対応するｘiとから、連立方程式を解くことによって、ｋ個の係数ｃi（ｉ＝０、１、・・・、ｋ−１）を求めることができる。そして、この多項式を用いて、上述のｘi（ｉ＝０、１、・・・、ｋ−１）以外のｍ個の任意のｘi（ｉ＝ｋ、ｋ＋１、・・・、ｋ＋ｍ−１）に対応するＤi（ｉ＝ｋ、ｋ＋１、・・・、ｋ＋ｍ−１）を冗長パケットとして計算する。
【００８８】
例えば、受信側について、図４に示すように、パケットＤi（ｉ＝１〜５）が送信されて、伝送路上で、Ｄ3が伝送路上で誤り、破棄された場合、送信された６個のパケット中５個が正しく受信され、ｋ＝４であるから、６個の中から任意の４個を選択して、（数６）とすると（ｉは３以外の４個の値）
【００８９】
【数６】
2012142654.tif 000008
【００９０】
上記連立方程式を解くことによって、４個の係数ｃi（ｉ＝０、１、２、３）を求めることができる。そして、この多項式を用いて、Ｄ3（ｘ3）を計算することによって、破棄されたパケットＤ3を回復することが可能となる。
【００９１】
つまり、送信されたｋ＋ｍ個のデータパケットのうち、ｋ個以上誤りなく受信できた場合については、本来送信すべきパケットをすべて正しく受信可能となる。
【００９２】
なお、（数５）における係数ｃi（ｉ＝０、１、・・・、ｋ−１）と（数６）における係数ｃi（ｉ＝０、１、・・・、ｋ−１）は、同じ値となり、送信側で求めたｃiを受信側に送信し共有することもできるが、受信側でも求めることができるため、事前に共有しておく必要はない。
【００９３】
また、以上の計算は、すべて実計算で行うことを前提にして説明したが、以上の計算はガロア体上でも可能であることを説明する。
【００９４】
本来送信すべきパケットＤi（ｉ＝０、１、・・・、ｋ−１）より大きい素数をＰとするとき、上述の計算は、Ｐを法とするガロア体上で計算可能である。なぜなら、例えば、冗長パケットＤi（ｉ＝ｋ、ｋ＋１、・・・、ｋ＋ｍ−１）がすべてＰより小さい場合には、実計算と同じなる。一方、冗長パケットＤiの幾つかがＰより大きい場合でも、Ｐより大きいＤiについては、剰余成分がＤiに代わって冗長パケットとして送信されることになる。この場合、受信側において、ｋ個以上のパケットが正しく受信できていれば、多項式補間の計算により、冗長成分については、本来のパケットＤi（ｉ＝ｋ、ｋ＋１、・・・、ｋ＋ｍ−１）の値に代わって、剰余の値が計算される場合があるが、本来送信すべきパケットＤｉ（ｉ＝０、１、・・・、ｋ−１）については、Ｐより小さいため、正しく計算されることになる。
【００９５】
このように、本実施例における誤り訂正の計算は、実計算でも、ガロア体上でも可能であることが分かる。
【００９６】
そのため、本実施例において、ガロア体の計算をサポートしている、していないに関わらず、計算を行うことができる。
【００９７】
そのため、従来のリードソロモン符号を用いる場合には、高速化のためには必ずガロア体の計算をサポートしている必要があったが、本実施例においては、ガロア体の計算をサポートしている必要はないため、構造が簡単になり容易に高速化することができる。
【００９８】
また、本実施例では、送信装置、受信装置として説明したが、上記機能はソフトウェアのみで実現することが可能である。
【００９９】
ここで、ソフトウェアで実現する際のメリットについて説明する。
【０１００】
一般的に、市販されているプロセッサでは、高速処理をサポートするための拡張コマンドが通常用意されている。しかしながら、一般的に拡張コマンドとしてガロア体上の計算をサポートするプロセッサは少ない。
【０１０１】
そのため、リードソロモン符号をソフトウェア上で実装する場合には、ガロア体をサポートしているプロセッサが少ないため、高速化のための拡張コマンドが利用できるプロセッサは限定される。
【０１０２】
しかしながら、本実施例の場合には、そのような限定がないため、より多くのプロセッサで対応可能となる。つまり、ソフトウェアによる実装の場合には、一般に処理速度が課題となるが、本実施例による方式を用いれば、より多くのプロセッサがサポートする、高速処理のための拡張コマンドを使用可能となり、ソフトウェアによる実装の場合の処理速度の課題が大きく低減される。
【０１０３】
具体例として、例えば、ＰａｎａｓｏｎｉｃのプロセッサＭＮ１０３では、拡張コマンドとして、３クロックサイクルのテーブルと１クロックサイクルの実計算乗算器が用意されている。リードソロモン符号も本実施例も演算としては、乗算が最も支配的であるが、リードソロモン符号の場合には、乗算の高速化のためにはテーブルを使うことになるが、本本実施例では、実計算乗算器を使うことが可能になる。この場合、乗算の計算がリードソロモン符号の場合の３分の１ですむことになり、ソフトウェア実装による高速処理が可能になることが分る。
【０１０４】
また、ソフトウェア上に実装できることで、すでに出荷されている製品について、本実施例のソフトウェアを実装するだけで、高品質な誤り訂正をじつげんすることができる。
【０１０５】
また、本実施例では、アプリケーション層でエラー訂正を行っているが、他の層で行ってもよい。
【産業上の利用可能性】
【０１０６】
本実施例によれば、無線回線やＤＳＬ回線のように、雑音の多い伝送路で、高品質の通信を実現しようとする場合に適用できる。また、低コストで、且つ早期に、従来の通信回線での通信品質の改善を図る場合に適用できる。
【符号の説明】
【０１０７】
１０    入力部
１１    符号化部
１２    パケット生成部
１３    パケット分割部
１４    冗長パケット生成部
１５    パケット再生成部
１６    ｘ座標生成部
１７    出力部
５０    入力部
５１    損失パケット識別部
５２    パケット分割部
５３    損失パケット回復部
５４    部分パケット連結部
５５    復号部
５６    出力部
５７    ｘ座標取得部
【図４】
2012142654.tif 000009
【図１】
2012142654.tif 000010
【図２】
2012142654.tif 000011
【図３】
2012142654.tif 000012
【図５】
2012142654.tif 000013
【図６】
2012142654.tif 000014
【図７】
2012142654.tif 000015
【図８】
2012142654.tif 000016