(57)【要約】  通信チャネルを介して転送元から転送先まで転送するデータを符号化する方法が提供される。入力シンボルの順序集合に作用して、入力シンボルから複数の冗長シンボルを生成する方法を含む。入力シンボルおよび冗長シンボルを含むシンボルの合成セットから複数の出力シンボルを生成する方法を含む。ここで、可能な出力シンボルの数はシンボルの合成セットのシンボル数に比較し非常に大きい。ここで、少なくとも一つの出力シンボルはシンボルの合成セットの複数のシンボルから、シンボルおよび入力シンボルの順序集合が出力シンボルのいかなる所定数からも所望の精度まで再生できるようなものの合成セットのシンボルの全て少ないものから生成される。  第１の入力シンボルを使用して算出される第１のスタティックシンボル群が、該第１の入力シンボルとは互いに異なる第２の入力シンボルを使用して算出される第２のスタティックシンボル群と弱い共通の帰属関係を有するように、確定的過程において転送される順序付けられた入力シンボル群から複数の冗長シンボルを生成する。
2007536834.tif 000002
【特許請求の範囲】
【請求項１】
通信チャネルを介して転送元から転送先まで転送するデータを符号化する方法であって、
第１の入力シンボルを使用して算出される第１のスタティックシンボル群が、該第１の入力シンボルとは互いに異なる第２の入力シンボルを使用して算出される第２のスタティックシンボル群と弱い共通の帰属関係を有するように、確定的過程において転送される順序付けられた入力シンボル群から複数の冗長シンボルを生成するステップと、
前記入力シンボルおよび冗長シンボルを含む複合シンボル群から、可能な出力シンボルの数は該複合シンボル群のシンボルの数に比較して非常に大きく、少なくとも１つの出力シンボルは前記複合シンボル群の２以上のシンボルから生成され、任意の所定数（Ｎ）の出力シンボルから前記順序付けられた入力シンボル群が所望の精度まで回復可能となる、複数の出力シンボルを生成するステップと、
を含む方法。
【請求項２】
さらに、通信チャネルを介して前記複数の出力シンボルを送信するステップを含む請求項１に記載の方法。
【請求項３】
さらに、前記複数の出力シンボルを記憶媒体に蓄積するステップを含む請求項１に記載の方法。
【請求項４】
前記複数の冗長シンボルは、ＬＤＰＣ符号により生成される請求項１に記載の方法。
【請求項５】
前記所望の精度は、前記入力シンボルの完全回復である請求項１に記載の方法。
【請求項６】
前記所望の精度は、高確率での前記入力シンボルの完全回復である請求項１に記載の方法。
【請求項７】
前記所望の精度は、前記順序付けられた入力シンボル群の入力シンボルの数より少ないＧ個の入力シンボルの回復である請求項１に記載の方法。
【請求項８】
多くとも、前記順序付けられた入力シンボル群の入力シンボルの数より少ないＧ個の入力シンボルが任意の個数の出力シンボルからも再生可能である請求項１に記載の方法。
【請求項９】
前記複数の冗長シンボルを生成するステップにおいて、各々の冗長シンボルについて、
分布にしたがってｔ個の互いに異なる入力シンボルを決定し、
前記ｔ個の互いに異なる入力シンボルのＸＯＲ演算として各々の冗長シンボルを計算する
請求項１に記載の方法。
【請求項１０】
さらに、通信チャネルを介して前記複数の出力シンボルを送信するステップを含み、前記複数の出力シンボルを生成するステップは該出力シンボルを送信するステップと実質的に並行して実行される請求項１に記載の方法。
【請求項１１】
前記複数の冗長シンボルは、スタティックシンボル、ハミングシンボル、および、パディングシンボルを含み、該シンボルの合計個数は素数となるよう選択される請求項１に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信システムにおける符号化、復号化に関するものであり、より詳細には通信データの誤りおよびギャップを考慮した符号化、復号化を行う通信システムに関するものである。実施例において、データは、ブロードキャストまたはマルチキャスト無線ネットワークを介して受信機に転送される。
【背景技術】
【０００２】
送り手と受け手との間で通信チャネルを介して行うファイルおよびストリームの転送は多くの文献の主題として取り上げられてきた。好ましくは、受け手は、送り手からチャネルを介して送信される正確なデータのコピーをあるレベルの確実性をもって受信することを望む。ほとんどの物理的に実現可能なシステムがそうであるように、チャネルは完全な忠実度を有していないため、転送により消失するか歪められるデータを取り扱う方法に関心が生じる。受け手は、いつ破損データが誤ってデータ受信されたかの判断を常に行えるとは限らないので、通常、破損データ（誤り）に比較し欠落データ（消去）を取扱うのは容易である。多くの誤り訂正符号は、消去および／または誤りを修正するために開発された。一般的に、データが送信されているチャネルおよび送信されているデータの性質の不忠実度に関する何らかの情報に基づいて使用する特定の符号（コード）が選択される。たとえば、チャネルが長期間の不忠実度を有することが既知の場合、そのアプリケーションのためにはバースト誤り符号が最適であり得る。短くまれな誤りだけが予想される場合、簡単なパリティ符号が最善であり得る。
【０００３】
送信機および受信機が通信のために必要とされる演算能力および電力の全てを有し、送受信装置間のチャネルが相対的にエラーフリーの通信を可能とするのに十分クリーンであるときに、データ転送は直接なされる。そして、チャネルが悪環境であるか、または、送信機および／または受信機の能力が制限されている場合に、データ転送の問題はより難しくなる。
【０００４】
１つのソリューションは、受信機が転送における消去および誤りから回復可能とするために、データを送信機で符号化する前方エラー訂正（ＦＥＣ）技術を活用する方法である。受信機が送信機に誤りについての通信が可能な受信機から送信機への逆方向チャネルが利用可能な場合、その伝送プロセスを調整可能である。しかし、しばしば逆方向チャネルは利用可能ではない。たとえば、送信機が多数の受信機に対して送信している場合、送信機はそれらの全ての受信機からの逆方向チャネルを処理することが可能でないかもしれない。その結果、通信プロトコルはしばしば逆方向チャネルなしで設計されることを必要とし、そして、送信機はこれらのチャネル状況の全容無しに広く様々なチャネル状況を取扱わなければならないかもしれない。
【０００５】
受信機がポータブルまたは移動可能である低出力の小型デバイスであり高帯域でデータを受信することを必要とする場合、送信機と受信機間のデータ転送の問題はより難しくなる。たとえば、ファイルまたはストリームをブロードキャストまたはマルチキャストにより、固定された送信機から多数もしくは不確定数のポータブルまたは移動可能な受信機に配信するよう設定される無線ネットワークであり、受信機が演算能力、記憶容量、利用できる電力、アンテナサイズ、デバイスサイズおよびその他の設計制約条件において拘束される場合である。
【０００６】
このようなシステムでは、逆方向チャネルが少ないか皆無であり、メモリー制限、コンピューティングサイクル制限、移動可能性およびタイミングを含む考慮が必要である。各々の受信機の電源の予測不可能なオン／オフ、範囲の出入り、リンクエラー、セル切替、セル内輻輳によるファイルまたはストリームパケットに対する強制的一時的な優先度引き下げなどにより損失が発生するため、望ましくは、潜在的に大きい数の受信機に配信するために必要なデータの転送時間の最小化するよう設計しなければならない。
【０００７】
データ転送のために使用するパケットプロトコルの場合、パケット網を通じて送信されるファイル、ストリームまたは他のデータブロックは等しいサイズ入力シンボルに仕切られ、入力シンボルは連続的なパケットとして配置される。入力シンボルが実際にビットストリームに分解されるか否かに関わらず、入力シンボルの”サイズ”はビット単位で測定することができる。そして、入力シンボルが２Ｍ個のシンボルのアルファベットから選択される場合、入力シンボルはＭビットのサイズを有する。この種のパケットベースの通信システムにおいて、パケットに基づいた符号体系が適切である。指定された受け手がネットワークによる消去が発生したにもかかわらずオリジナルファイルの正確なコピーを回復可能な場合、ファイル転送は信頼性が高いと呼ばれる。指定された受け手がネットワークによる消去が発生したにもかかわらずタイムリーな方法でストリーム各部の正確なコピーを回復可能な場合、ストリーム転送は信頼性が高いと呼ばれる。また、ファイルまたはストリームの一部が回復可能でない、または、ストリーミングにおいてストリームの一部がただちに回復可能ではない場合などには、ファイル転送およびストリーム転送はいくらか信頼性が高くありえる。パケット損失は、散発的な輻輳の発生によりルータのバッファリングメカニズムが処理限界に達し入力パケットが強制的にドロップされることにより生じる。そのため、転送中の消去発生に対する保護について多くの研究がなされてきた。
【０００８】
ファイルまたはストリームの入力シンボルから任意数の出力シンボルを生成する連鎖反応符号を使用することが知られている。受信機が、既に知っているデータを複製する追加データを受信する情報複製の方法に対して、この方法には情報付加的な出力シンボルの生成を含む多くの用途がある。連鎖反応符号を生成、利用、動作している新規の技術がいくつか公開されており、たとえば、Ｌｕｂｙに発行される米国特許第６，３０７，４８７号”Information Additive Code Generator and Decoder for Communication Systems”（”ルビーＩ”）、Ｌｕｂｙらに発行される米国特許第６，３２０，５２０号”Information Additive Group Code Generator and Decoder for Communication Systems”（以下、”ルビーＩＩ”）、そして、2003年3月27日にショクロラヒらに発行された米国特許公開２００３／００５８９５８号”Multi-Stage Code Generator and Decoder for Communication Systems”（以下、”ショクロラヒ”）に示されている。許可される範囲において、全ての目的のためこれらの全ての開示を本願明細書に引用する。
【０００９】
連鎖反応符号器により作成される出力シンボルの特性の１つとして、受信機は十分な出力シンボルを受信するとすぐにオリジナルファイルまたはオリジナルストリームのブロックを回復することが可能であるということがある。具体的には、高確率を有するオリジナルのＫ個の入力シンボルを回復するために、受信機はおよそＫ＋Ａ個の出力シンボルを必要とする。ここで、比Ａ／Ｋは”相対的受信オーバーヘッド”と呼ばれる。相対的受信オーバーヘッドは、入力シンボル数Ｋ、および、復号器の信頼性に依存する。たとえば、ある特定実施例において、Ｋ＝６０，０００であり、少なくとも１−１０−８の確率で入力ファイルまたはストリームのブロックを復号器が復号化可能な相対的受信オーバーヘッドが５％の場合、Ｋ＝１０，０００では、相対的受信オーバーヘッドが１５％の場合同様の確率で復号化可能となる。ある実施例においては、連鎖反応コードの相対的受信オーバーヘッドは（１３＊ｓｑｒｔ（Ｋ）＋２００）／Ｋとして計算することが出来、ここで、ｓｑｒｔ（Ｋ）は入力シンボル数Ｋの二乗根である。この実施例において、連鎖反応コードの相対的受信オーバーヘッドは、Ｋが小さい値であるほど大きくなる傾向がある。
【００１０】
ルビーＩ、ルビーＩＩおよびショクロラヒは、本発明による特定の実施例において使用可能なシステム及び方法の教示を提供する。しかしながら、それらのシステム及び方法は、本発明および他の多くのバリエーション、変更態様を必要とせず、代替物が使用可能であることが理解できるであろう。
【００１１】
また、マルチステージ連鎖反応（”ＭＳＣＲ”）符号を使用することも公知であり、例えばショクラヒに記載されデジタルファウンテン社により開発され”Ｒａｐｔｏｒ”として商品名の符号がある。マルチステージ連鎖反応符号は、たとえば、ソースファイルまたはソースストリームから入力シンボルを受信し、そこから中間シンボルを生成し、連鎖反応符号を用いた中間シンボルを符号化する符号器により用いられる。より詳しくは、送信される入力シンボルの順序集合から複数の冗長シンボルが生成される。そして、入力シンボルおよび冗長シンボルを含むシンボルの複合セットから複数の出力シンボルが生成される。ここで、可能な出力シンボルの数はシンボルの複合セットのシンボルの数に比較し非常に大きい。また、少なくとも一つの出力シンボルは、シンボルの複合セットの１つのシンボルより多く全てシンボル数より少ないシンボルから生成され、入力シンボルの順序集合が所定数Ｎの何れの出力シンボルからも所望の精度まで再生できるようなシンボルである。
【００１２】
用途によっては、他のバリエーションの符号がより適切であり、他のもの選択されるかもしれない。
【発明の開示】
【発明が解決しようとする課題】
【００１３】
転送元から転送先まで通信チャネルを介して転送されるデータを符号化する方法を提供する。
【課題を解決するための手段】
【００１４】
本発明のある実施例によれば、転送元から転送先まで通信チャネルを介して転送されるデータを符号化する方法が提供される。その方法は、入力シンボルの順序集合を操作し、入力シンボルから複数の冗長シンボルを生成することを含む。また、その方法は、入力シンボルおよび冗長シンボルを含むシンボルの複合セットから複数の出力シンボルを生成することを含み、可能な出力シンボルの数はシンボルの複合セットのシンボルの数に比較し非常に大きく、少なくとも一つの出力シンボルはシンボルの複合セットの１つのシンボルより多く全てシンボル数より少ないシンボルから生成され、入力シンボルの順序集合が任意の所定数の出力シンボルからも所望の精度まで再生できるようなシンボルである。複数の冗長シンボルは、第１入力シンボルを使用して算出されるスタティックシンボルの第１セットは、第１入力シンボルと異なる第２入力シンボルを使用して算出されるスタティックシンボルの第２セットと弱い関連性を有するように、確定的過程において送信される入力シンボルの順序集合から生成される。
【００１５】
本発明のさらに別の実施例によれば、通信チャネルを介して転送先から転送されるデータを受信するシステムは類似した技術を使用し提供される。そのシステムは、通信チャネルを通じて送信される出力シンボルを受信するための通信チャネルに接続された受信モジュールを含み、各々の出力シンボルは入力シンボルおよび冗長シンボルの複合セットの少なくとも１つのシンボルから生成され、少なくとも１つの出力シンボルは複合セットの１より多く全てより少ないシンボルから生成され、可能な出力シンボルの数は複合セットのシンボルの数に比較し非常に大きく、入力シンボルは順序集合からなる入力シンボルであり、冗長シンボルは入力シンボルから生成される。ここで、複数の冗長シンボルは、第１入力シンボルを使用して算出されるスタティックシンボルの第１セットは、第１入力シンボルと異なる第２入力シンボルを使用して算出されるスタティックシンボルの第２セットと弱い関連性を有するように、確定的過程において送信される入力シンボルの順序集合から生成される。
【００１６】
本発明のさらに別の実施例によれば、搬送波により表現されるコンピュータデータ信号が提供される。
【発明の効果】
【００１７】
多数の利点が、本発明により達成される。たとえば、ある実施例においては、チャネルを介して転送するデータの符号化に必要な計算能力が低減可能である。さらに他の実施例において、このデータの復号化に必要な計算能力が低減可能である。実施例により、これらの利点の１つ以上を達成できる。これらおよびその他の利点の更なる詳細が、本願明細書全体および特に下記記載により提供される。
【００１８】
本願明細書において開示される本発明の性質および効果の更なる理解は、明細書および添付の図面の残りの部分を参照することで認識される。
【発明を実施するための最良の形態】
【００１９】
（関連出願の相互参照）
本出願は、２００４年５月７日に出願された米国特許出願番号第６０／５６９，１２７号の”FILE DOWNLOAD AND STREAMING SYSTEM”に基づく優先権を主張する。それは、全ての目的のためにその開示全体を本願明細書に引用しこの文書に全部記載されるものとして組み込まれる。
【００２０】
詳細な説明の後に以下の３つの付録を示す。付録Ａは、システマチックインデックスＪ（Ｋ）の値の例を含む。付録Ｂ．１は、テーブルＶ０の値の例を含む。そして、付録Ｂ．２は、テーブルＶ１の値の例を含む。
【００２１】
（特定実施例の詳細な説明）
ここに記載される特定実施例において、”マルチステージ符号化”として表記される符号体系が記載されており、その実施例はショクロラヒにより提供される。
【００２２】
ここに記載されるマルチステージ符号化は複数の段階によりデータを符号化する。常にではないが、一般的には、第１段階では予め指定される量の冗長性をデータに付加する。第２段階ではオリジナルデータおよび符号化の第１段階により計算される冗長シンボルから連鎖反応コード等を使用し出力シンボルを生成する。本発明の一特定実施例において、受信されたデータは、最初に連鎖反応復号プロセスを使用して復号化される。その処理により完全にオリジナルデータを回復することが出来ない場合、第２の復号ステップが適用される。
【００２３】
マルチステージ符号化の実施例において、冗長シンボルは、符号化の第一段階において、入力ファイルまたはストリームのブロックから生成される。これらの実施例では、符号化の第二段階で、出力シンボルは、入力ファイルまたはストリームのブロックおよび冗長シンボルの組合せから生成される。これらの実施例において、出力シンボルは、必要に応じて生成されることができる。第二段階が連鎖反応符号化を含む実施例において、各々の出力シンボルは他の出力シンボルが生成される方法に関係なく生成されることができる。一旦生成されると、これらの出力シンボルはパケット内に配置され転送先に転送される。ここで、各々のパケットは１個以上の出力シンボルを含んでいる。非パケット化転送技術も利用可能であり同様に使うことができる。
【００２４】
ここで使用される用語”ファイル”は、１個以上のソースを格納し１以上の転送先にユニットとして配信される任意のデータを示している。したがって、文書、画像、およびファイルサーバまたはコンピュータ記憶装置からのファイルは、すべて、転送される”ファイル”の例である。ファイルは、周知のサイズ（例えばハードディスクに保存される１メガバイトの画像）でもよいし、未知のサイズ（例えばストリーミングソースの出力から取得されるファイル）でもよい。いずれの場合においても、ファイルは一連の入力シンボルであり、各々の入力シンボルはファイル内の位置および値を有する。
【００２５】
ここで使用される用語”ストリーム”は、１個以上のソースを格納もしくは生成された順番に各時点で特定のレートで配信される任意のデータを示している。ストリームは、固定レートまたは可変レートでありえる。したがって、ＭＰＥＧ映像ストリーム、ＡＭＲ音声ストリーム、遠隔装置の制御に使用されるデータストリームは全て転送される”ストリーム”の例である。各時点でのストリームのレートは、既知（例えば４メガビット／秒）でもよいし、未知（例えば各時点のレートが前もって分からない可変レートストリーム）いずれの場合においても、ストリームは一連の入力シンボルであり、各々の入力シンボルはストリーム内の位置および値を有する。
【００２６】
転送は、ファイルまたはストリームを配信するために１以上の送信機から１以上の受信機までチャネルを介してデータを送信する処理である。また、送信機を符号器と称することもある。１台の送信機が完全なチャネルにより任意数の受信機に接続している場合、受信データは入力ファイルまたはストリームの正確なコピーであり、全てのデータが正しく受信される。ここでは、現実のチャネルの多くの場合と同様、チャネルが完全でないと仮定する。多くのチャネルの欠点の中で、重要な２つの欠点は、データ消去およびデータ消去の特殊例とみなすことが可能なデータ不完全性である。データ消去は、チャネルが消失またはデータがドロップした場合に発生する。データ不完全性は、いくつかのデータが素通りするまで受信機がデータを受信し始めない場合、受信機が転送が終了する前にデータを受信するのを止めた場合、受信機が一部の送信データを受信することを選択する場合、および／または、受信機が断続的に止まり、再びデータを受信し始めた場合に発生する。データ不完全性の例としては、移動中の衛星送信機が入力ファイルまたはストリームを示すデータを送信している場合、受信機が範囲内に入る前に転送を始めるかもしれない。一旦受信機が範囲内に入ると衛星が動いて範囲外に出るまでデータを受信することが出来、一旦受信機が範囲に入るとデータを受信可能となり、それまで、受け側がどのポイント、他のものにより送信されている同じ入力ファイルかストリームについてデータを受信し始めるためにその衛星アンテナ（それは、どの時間の間にデータを受信していないか）をリダイレクトすることができるかそれが有する衛星は範囲へ移動した。この説明を読むことから明らかでなければならなくしながら、データ不完全性はデータ消去の特例である。これは、次のことの故である。あたかも受け側が全ての時範囲において、あるかのように、受け側はデータ不完全性（そして、受け側には、同じ問題がある）を処理できる、しかし、チャネルは受け側がデータを受信し始めた位置まで全てのデータを消失した。また、周知のように、通信システム設計で、検出可能な誤りは、単に検出可能な誤りを有する全てのデータブロックまたはシンボルをドロップすることによって、消去に等しいとみなされることができる。
【００２７】
若干の通信システムにおいて、受け側は、多数の送信機によってまたは並列に接続を使用している１台の送信機により生成されるデータを受信する。たとえば、ダウンロードの速度を上げるために、受け側は、同時に同じファイルに関して送信データに複数の送信機につながるかもしれない。別の例としてマルチキャスト転送で、多数のマルチキャストデータストリームは、受け側が総計の伝送速度をそれらを送信機に接続しているチャネルの帯域幅と適合させるためにこれらのストリームの一つ以上につながることができるために送信されるかもしれない。全てのこの種の場合において、懸念は、全てのその送信データを確保することが受け側に独立用途の中であるということである。すなわち、多重ソースデータは、そうである冗長ストリームの伝送速度が異なるストリームのために非常に異なるときでも、そして、損失の任意のパターンがあるときに、一つの。
【００２８】
一般に、通信チャネルは、送信機およびデータ転送のための受け側を接続するそれである。通信チャネルはリアルタイムチャネルでありえた。ここで、チャネルがデータを得ながら、チャネルは送信機から受け側までデータを移動する、または、通信チャネルは、送信機から受け側までいくつかまたはデータの全てをその通過に格納する格納チャネルであるかもしれない。後者の実施例は、ディスク記憶装置または他の記憶装置である。その実施例において、送信機、データを生成するプログラムまたはデバイスを、案出できる。そして、記憶装置にデータを送信する。受け側は、記憶装置からデータを読み込むプログラムまたはデバイスである。送信機が記憶装置（記憶装置自体）上へデータを得るために使用するメカニズムそして、受け側が集合的に記憶装置からデータを得るために使用するメカニズムは、チャネルを形成する。それらのメカニズムまたは記憶装置がデータを消失できるという可能性がある場合、それは通信チャネルのデータ消去とみなされるだろう。
【００２９】
送信機および受け側がシンボルが消されることができる通信チャネルによって、隔てられるときに、入力ファイルまたはストリームの正確なコピーを送信しなくて、その代わりに、入力ファイルから生成されるデータまたはそれが消去の回復によって、アシストするストリーム（それは、入力ファイルまたはストリームの全部または一部を含むことができた）を伝送しないことが、好ましい。エンコーダとは、そのようなタスクを処理する回路、デバイス、モジュール、または符号セグメントである。１つの符号器の動作を見る方法は符号器が入力シンボルから出力シンボルを生成するということである。ここで、一連の入力シンボル値は入力ファイルまたはストリームのブロックを表す。ストリームおよび値の入力ファイルまたはブロックで、各々の入力シンボルは、このように位置を有する。復号器は、受け側により受信される出力シンボルから入力シンボルを回復する回路、デバイス、モジュールまたはコードセグメントである。マルチステージ符号化において、符号器および復号器は、各々異なる作業を実行しているサブモジュールに、更に分けられる。
【００３０】
マルチステージコード体系の実施例において、符号器および復号器はサブモジュールに更に分けられることが可能である。そして、各々が異なる作業を実行する。例えば、実施例によっては、符号器は、本明細書において、スタティック符号器およびダイナミック符号器と称されることを含む。ここで使用しているように、「スタティック符号器」は入力シンボルのセットから多くの冗長シンボルを生成する符号器である。そこにおいて、冗長シンボルの数は符号化の前に決定される。スタティック符号化しているコードの実施例はリード−ソロモン符号、トルネード符号、ハミング符号、低密度パリティチェック（ＬＤＰＣ：Ｌｏｗ  Ｄｅｎｓｉｔｙ  Ｐａｒｉｔｙ  Ｃｈｅｃｋ）符号、その他を含む。そして、用語スタティック復号器がスタティック符号器によって、符号化されたデータを復号化できる復号器に関連するために本願明細書において、使われる。
【００３１】
ここで使用しているように、”ダイナミック符号器”は、入力シンボルのセットから出力シンボルを生成する、可能な出力シンボルの数が入力シンボルの数大きい大きさの程度である。そして、生成される出力シンボルの数が固定する必要はない符号器である。ダイナミック符号器の１つの実施例は、連鎖反応符号器（例えばＬｕｂｙ  ＩおよびＬｕｂｙ  ＩＩに記載されている符号器）である。用語”ダイナミック復号器”が、ダイナミック符号器によって、符号化されたデータを復号化できる復号器に関連するために、本願明細書において、使われる。
【００３２】
マルチステージ符号化の実施例は、いかなる特定の種類もの入力シンボルに、限られている必要はない。一般的に、入力シンボルのための値は若干の自然数Ｍ．のための２Ｍのシンボルのアルファベットから選ばれるにおいて、この種の場合、入力シンボルは入力ファイルまたはストリームからデータの一連のＭビットにより表されることができる。たとえば、Ｍの値は、出力シンボルのアプリケーション、通信チャネルおよび／またはサイズを使う能力に基づいて、しばしば決定される。加えて、出力シンボルのサイズは、入力シンボルのアプリケーション、チャネルおよび／またはサイズに基づいてしばしば決定される。場合によっては、出力シンボル値および入力シンボル値が同一サイズ（すなわち、ビットの同数により表現されるか同じアルファベットから選択された）である場合、符号化処理は単純化されるかもしれない。この場合それから、出力シンボル値サイズが制限されるときに、入力シンボル値サイズは制限される。たとえば、それは、制限されたサイズのパケットの出力シンボルをすることを要求されることができる。出力シンボルに伴うキーについての若干のデータが受信機でキーを回復するために送信されることになっている場合、出力シンボルは、１つのパケットにおいて、キーについて出力シンボル値およびデータに対応するのに十分好ましくは小さいだろう。
【００３３】
一例として、入力ファイルが倍数である、メガバイトファイル、入力ファイルは、各々の入力シンボルを符号化している数千、何百または数バイトだけを有する数千、数万または何十万もの入力シンボルに分解されるかもしれない。別の例としてパケットベースのインターネットチャネルのために、１０２４バイトのサイズのペイロードを有するパケットは、適当かもしれない（１バイトは、８ビットである）。この例では、各々のパケットが１出力シンボルおよび８バイトの補助情報を含む場合、８１２８ｂｉｔｓ（（１０２４−８）＊８）の出力シンボルサイズは適当だろう。このように、入力シンボルサイズは、Ｍ＝（１０２４−８）＊８つまり８１２８ビットに選ばれることができた。別の例として、若干の衛星システムはＭＰＥＧパケット規格を使用する。ここで、各々のパケットのペイロードは１８８バイトを含む。その実施例において、各々のパケットが１出力を含む場合、シンボルおよび４バイトの補助情報（１４７２ｂｉｔｓ（（１８８−４）＊８）の出力シンボルサイズ）は適当だろう。このように、入力シンボルサイズは、Ｍ＝（１８８−４）＊８または１４７２ビットに選ばれることができた。汎用の通信システムを使用しているマルチステージ符号化において、アプリケーション特有のパラメータ（例えば入力シンボルサイズ（すなわちＭ個の入力シンボルによって、符号化されるビットの数）は、アプリケーションによって、セットされる変数であるかもしれない。
【００３４】
別の例として、可変サイズ転送元パケットを使用させられるストリームのために、各々の転送元パケットが最高でも総計のサイズを転送元パケットわずかに大きくする入力シンボルの整数でおおわれていることができるために、シンボルサイズはむしろ小さいために選ばれるかもしれない。
【００３５】
各々の出力シンボルは、値を有する。好ましい一実施例（下で考慮する）において、各々の出力シンボルもそれとともにその”キー”と呼ばれている識別子を結びつける。望ましくは、各々の出力シンボルのキーは、受け側が１出力シンボルと他の出力シンボルを区別できるために、受け側で容易に測定されることができる。望ましくは、出力シンボルのキーは、他の全ての出力シンボルのキーとは別である。前の技術で述べられるキーイングのさまざまな形式が、ある。たとえば、Ｌｕｂｙ  Ｉは、本本発明の実施例において、使用されることができるキーイングのさまざまな形式を描く。
【００３６】
データ消去または受け側が必ずしも転送が開始するときに受信を開始しなくて、終えないところの予想および端がある所で、マルチステージ符号化は特に役立つ。後の状態は本明細書において、”データ不完全性”と呼ぶ。消去イベントとみなす事項において、Ｌｕｂｙ  Ｉ．に記載されている連鎖反応符号化の利点で多くのマルチステージ符号、マルチステージ出力シンボルは情報付加的であるので、任意の適当な数のパケットは所望の精度に入力ファイルまたはストリームを回復するために用いることがありえる。マルチステージ符号化が使われるときに、これらの状況は通信プロセスに悪影響を与えない。−その理由は、次のことにある。マルチステージ符号化により生成される出力シンボルは情報付加的である。たとえば、１００のパケットが突然のノイズを引き起こしているデータ消去のために消失する場合、パケットがありえる余分の百は消されたパケットの損失を交換するために爆発の後、上向いた。それが送信し始めるときに受信機が送信機に同調を行わなかったので何千ものパケットが消失する場合、受信機は、そうすることができたちょうど受信転送の他のいかなる期間からも何千ものそれらのパケット、または他のものから送信機。マルチステージ符号化については、受信機は特定のいずれもパケットの中でセットしたピックアップを強いられないので、それは１台の送信機から若干のパケットを受信することができて、送信機を他のものに切り替えることができて、若干のパケットを消失することができて、始めまたは既知の転送の端を見のがすことができて、まだストリームの入力ファイルまたはブロックを回復できる。受信機送信機間で協調のない転送を接続して、残す能力は、通信プロセスを単純化するのに役に立つ。
【００３７】
いくつかの実施形態では、ファイルまたはストリームを使用しているマルチステージ符号化を送信することは入力シンボルをストリームの入力ファイルまたはブロックから生成するか、形成するかまたは抽出することを含むことができる。そして、冗長シンボルを計算する。そして、一つ以上の出力シンボル（各々の出力シンボルがそれぞれに他の全ての出力シンボルのそのキーに基づいて生成されるところ）に入力および冗長シンボルを符号化して、チャネルの上の一つ以上の受け側に出力シンボルを送信する。加えて、実施例によっては、入力ファイルのコピーまたはストリームを使用しているマルチステージ符号化のブロックを受信する（そして、回復すること）ことは、より多くのデータストリームのうちの１つから出力シンボルの若干のセットまたはサブセットを受信して、受信された出力シンボルの値およびキーから入力シンボルを復号化することを含むことができる。
【００３８】
本願明細書において、記載されていながら、消去が符号化する適切なＦＥＣは、上記のあげられた問題点を克服するために用いることができて、用途をマルチメディアの同報およびマルチキャスティングシステムおよびサービスを含む多くのフィールドで見つける。この後に「マルチステージ連鎖反応コード」と称するＦＥＣ消去コードは、この種のシステムおよびサービスの電流および将来の必要条件の多数を満たす特性を有する。
【００３９】
いかなるパケット損失状況のためにも、そして、いかなる関連したサイズものソースファイルまたはいかなる関連したレートものストリームの交付のために、マルチステージ連鎖反応コードの若干の基本特性は、以下の通りである。
（ａ）個々の受信機デバイス”ＲＤ”の受信オーバーヘッドは、最小化される、
（ｂ）ソースファイルをいかなる数のＲＤに配信するために必要なトータル転送時間を、最小化できる
（ｃ）転送スケジュールの適切な選択については、いかなる数のＲＤに対する配信されたストリームの品質は、入力シンボルの数と関連して送られる出力シンボルの数のために最大にされることができる。
ＲＤは、携帯デバイスであるかもしれないか、車両に埋め込まれているかもしれないか、持ち歩けるかもしれない（すなわち、使用中のときに、移動可能であるが、一般的に動いていない）かまたは、場所に固定するかもしれない。
【００４０】
復号化のために必要とされる作業メモリの量は低くて、上記の特性をまだ提供できる。そして、必要とされる計算の量は符号化する。そして、復号化する最小限である。この文書において、我々は、提供するシンプルな、そして、容易なマルチステージ連鎖反応コードの若干のバリエーションの説明をインプリメントする。
【００４１】
マルチステージ連鎖反応コードは、ファウンテンコードである。すなわち、必要に応じてパケットを符号化することがありえるさらに同じだけはオンザフライを生成した。そして、各々がストリームのソースファイルまたはブロックを回復することに等しく役立つユニークな符号化しているシンボルを含んだ。多くの効果が、ＦＥＣコードの他方式に対してファウンテンコードを使用することにある。１つの効果は、パケット損失状況およびＲＤ有効性に関係なく、ファウンテンコードが各々のＲＤがストリームのソースファイルまたはブロックを回復するために受信することを必要とするパケットを符号化することの数を最小化するということである。これは、厳しいパケット損失状況の下でさえ真で、移動機ＲＤが、たとえば、断続的につけられるだけである時であるまたは長いファイルダウンロードセッションにわたって利用できる。
【００４２】
有利さが能力である他のものは、転送が進行中である間、どれくらいの符号化しているパケットにオンザフライを生成するべきかについて決定になされて、必要に応じて多くの符号化しているパケットとして正確に生成する。これは、たとえば応答がそれらがストリームのソースファイルかブロックを回復するのに十分な符号化しているパケットを受信したか否か、指示しているＲＤからある場合、役立つことがありえる。期待されてパケット損失状況が厳しくないときに、転送は、早く終了されることができる。パケット損失状況がより厳しい期待されるまたはＲＤは、期待されてしばしば利用できない、転送は、継ぎ目なく延長されることができる。
【００４３】
他の効果は、逆多重化の能力である。逆多重化は、ＲＤがストリームのソースファイルまたはブロックを回復するために独立送信機で生成されるパケットを符号化して受信されて組み合わさることが可能である時である。逆多重化の１つの実用は、異なる送信機からパケットを符号化することを受信することに関して、下に記載されている。
【００４４】
将来のパケット損失、ＲＤ有効性およびアプリケーション状況は、予測するのが難しい、予測不可能な状況の下で適切に作用するために可能に、柔軟なとしてあるＦＥＣソリューションを選択することは重要である。マルチステージ連鎖反応コードは、ＦＥＣコードの他方式によって、マッチしない柔軟度を提供する。
【００４５】
本発明の態様は、次に図に関して記載されている。
【００４６】
＜システムの概要＞
図１は、マルチステージ符号化を使用する通信システム１００のブロック図である。通信システム１００において、入力ファイル１０１または入力ストリーム１０５が、入力シンボル生成器１１０に対し提供される。入力シンボル生成器１１０は入力ファイルまたはストリームから１個以上の一連の入力シンボル（ＩＳ（０），ＩＳ（１），ＩＳ（２），．．．）を生成し、各々の入力シンボルは値および位置（図１の括弧内の整数として示す）を有する。上述したように、各々の入力シンボルが入力ファイルまたはストリームのＭビットを符号化するため、入力シンボルの可能な値（すなわちアルファベット）は一般的に２Ｍ個のシンボルからなるアルファベットである。Ｍの値は通常使用する通信システム１００により決定される、しかし、Ｍが使用する用途が多様でありえるため汎用システムでは入力シンボル生成器１１０のためのシンボルサイズ入力を含むかもしれない。入力シンボル生成器１１０の出力は、符号器１１５に提供される。
【００４７】
スタティックキー生成器１３０は、スタティックキーＳ０，Ｓ１．．．のストリームを生成する。通常、生成されるスタティックキーの数は制限されており特定実施例の符号器１１５に依存する。スタティックキーの生成は、以降で更に詳細に説明する。ダイナミックキー生成器１２０は、符号器１１５により生成される各々の出力シンボルに対するダイナミックキーを生成する。同じ入力ファイルまたはストリームのブロックのダイナミックキーの大部分がユニークとなるように、各々のダイナミックキーは生成される。たとえば、利用可能なキー生成器の実施例がルビーＩに記載されている。ダイナミックキー生成器１２０およびスタティックキー生成器１３０の出力は、符号器１１５に提供される。
【００４８】
ダイナミックキー生成器１２０によって提供された各々のキーＩから、符号器１１５は値Ｂ（Ｉ）の出力シンボルを生成する。そして、入力シンボルは入力シンボル生成器により提供される。符号器１１５の動作については以下で更に詳細に説明する。各々の出力シンボルの値は対応するキー、１個以上の入力シンボルの何らかの関数、そして、おそらく入力シンボルから計算される冗長シンボルに基づいて生成される。本明細書において、ある特定の出力シンボルのもとである入力シンボルおよび冗長シンボルの集合を、出力シンボルの”関連シンボル”または単にその”付随物（associates）”と呼ぶ。関数（”値関数”）および付随物の選択については、以降で更に詳細に記載されている処理に従って行われる。常にではないが、一般的にはＭは入力シンボルおよび出力シンボルに対して同一である、すなわち、それら双方は同じビット数に符号化する。
【００４９】
いくつかの実施形態では、符号器１１５は付随物を選択するために入力シンボルの数Ｋを使用する。入力がストリーミングファイルである場合のようにＫが前もってわかっていない場合には、Ｋは単に推定値であってもよい。また、符号器１１５により生成される入力シンボルおよび任意の中間シンボルの配置割り当てに対し、値Ｋが符号器１１５により使用されるかもしれない。
【００５０】
符号器１１５は送信モジュール１４０に出力シンボルを提供する。また、送信モジュール１４０にはダイナミックキー生成器１２０から各々の出力シンボルのキーが提供される。送信モジュール１４０は出力シンボルを送信する。そして、送信モジュール１４０は使用するキーイング方法に従い送信された出力シンボルのキーに関する何らかのデータをチャネル１４５を介して受信モジュール１５０に送信するかもしれない。チャネル１４５は消去チャネルであるとみなされるが、それは通信システム１００が適切に動作するための必要条件ではない。送信モジュール１４０はチャネル１４５を介して出力シンボルおよび対応するキーに関する必要データを送信するのに適合しており、受信モジュール１５０はチャネル１４５を介してシンボルと対応するキーに関する何らかのデータを受信するのに適合していれば、モジュール１４０、１４５および１５０は、適切なハードウェア構成機器、ソフトウェア構成要素、物理メディアまたはそれのいかなる組合せによっても実現可能である。Ｋの値は、付随物を決定するために用られる場合、チャネル１４５を介して送信されるか、または、定刻より早い持間に符号器１１５および復号器１５５に対して予めセットしておいてもよい。
【００５１】
前述したように、チャネル１４５はリアルタイムチャネル（例えば、インターネット、テレビ送信機からテレビ受信機への放送リンク経路、あるポイントから他のポイントへの電話接続）で有り得る他、チャネル１４５は格納チャネル（例えば、ＣＤ−ＲＯＭ、ディスク装置、ウェブサイト等）でも有り得る。さらに、チャネル１４５はリアルタイムチャネルおよび格納チャネルの組合せでも有り得る。例えば、ある人がパソコンから電話回線を介してインターネットサービスプロバイダー（ＩＳＰ）まで入力ファイルを送信する際に形成されるチャネルのように、入力ファイルはウェブサーバに格納され、インターネットを介して受け側に送信される。
【００５２】
チャネル１４５が消去チャネルであると仮定されるので、システム１００において、受信モジュール１５０から出力される出力シンボルと送信モジュール１４０に入力される出力シンボルとは１対１の対応があると仮定することは出来ない。実際、チャネル１４５がパケット網を含む場合、２個以上のパケットの相対的順序がチャネル１４５を通過中に保存されると仮定することさえ出来ないかもしれない。従って、出力シンボルのキーは上述の１以上のキーイング方法を利用して決定され、必ずしも受信モジュール１５０から出力シンボルが出力される順序で決定されるというわけではない。
【００５３】
受信モジュール１５０は復号器１５５に出力シンボルを提供し、受信モジュール１５０が受信するこれらの出力シンボルのキーに関するデータはダイナミックキー再生器１６０に提供される。ダイナミックキー再生器１６０は、受信された出力シンボルのためのダイナミックキーを再生し、復号器１５５にダイナミックキーを提供する。スタティックキー生成器１６３は、スタティックキーＳ０，Ｓ１．．．を再生し、復号器１５５に提供する。スタティックキー生成器は、符号化および復号化プロセスにおいて双方で使用する乱数発生器１３５にアクセスする。同一の挙動となるようにするため、この種のデバイスにより乱数が生成される場合同一の物理装置へのアクセスであってもよいし、同一の乱数生成アルゴリズムへのアクセスであってもよい。復号器１５５は、ダイナミックキー再生器１６０およびスタティックキー生成器１６３により提供される出力シンボルに対応するキーを使用し、入力シンボル（ＩＳ（０），ＩＳ（１），ＩＳ（２），．．．）を回復する。復号器１５５は、入力ファイル１０１または入力ストリーム１０５のコピー１７０を生成する入力ファイル再構築器１６５に回復した入力シンボルを提供する。
【００５４】
＜符号器＞
図２は、図１に示される符号器１１５の一特定実施例のブロック図である。符号器１１５は、スタティック符号器２１０、ダイナミック符号器２２０、および、冗長計算機２３０を備えている。スタティック符号器２１０は、以下の入力を受信する。
【００５５】
ａ）入力シンボル生成器１１０により提供され入力シンボルバッファ２０５に格納されたオリジナルの入力シンボルＩＳ（０），ＩＳ（１），ＩＳ（２），．．．，ＩＳ（Ｋ−１）
ｂ）オリジナルの入力シンボルの数Ｋ
ｃ）スタティックキー生成器１３０により提供されるスタティックキーＳ０，Ｓ１，．．．
ｄ）冗長シンボルの数Ｒ
スタティック符号器２０５は、これらの入力を受信するとすぐに、後述するようにＲ個の冗長シンボルＲＥ（０），ＲＥ（１），．．．，ＲＥ（Ｒ−１）を計算する。常にではないが一般的に冗長シンボルは入力シンボルと同じサイズである。一特定実施例において、スタティック符号器２１０により生成される冗長シンボルは、入力シンボルバッファ２０５に格納される。入力シンボルバッファ２０５は論理的なものでもよい。すなわち、ファイルまたはストリームのブロックは１つの場所に物理的に格納してもよいし、入力シンボルのシンボルバッファ２０５内の位置は、ただ単にオリジナルのファイルまたはストリームのブロック内のシンボルの位置の名称変更でもよい。
【００５６】
ダイナミック符号器は、入力シンボルおよび冗長シンボルを受信し下記に詳述されているように出力シンボルを生成する。冗長シンボルが入力シンボルバッファ２０５に格納される一実施例においては、ダイナミック符号器２２０は入力シンボルバッファ２０５から入力シンボルおよび冗長シンボルを受信する。
【００５７】
冗長計算機２３０は、入力シンボルの数Ｋから冗長シンボルの数Ｒを計算する。この計算は下記に詳述されている。
【００５８】
＜スタティック符号器の概要＞
スタティック符号器２１０の一般動作は図３および図４に示される。図３は、スタティック符号化の方法一実施例の簡略フローチャートを例示している。ステップ３０５において、変数ｊ（どれだけ冗長シンボルが生成されたかについての情報を保持する）はゼロにセットされる。そして、ステップ３１０では、第１の冗長シンボルＲＥ（０）は少なくともいくつかの入力シンボルＩＳ（０），．．．，ＩＳ（Ｋ−１）の関数Ｆ０として計算される。それから、ステップ３１５で、変数ｊはインクリメントされる。次に、ステップ３２０で、冗長シンボルの全てが生成されたか（すなわち、ｊがＲ−１より大きいか？）どうかが検査される。もしＹｅｓの場合はフローは終了する。そうでなければ、フローは、ステップ３２５へ進む。ステップ３２５において、ＲＥ（ｊ）は入力シンボルＩＳ（０），．．．，ＩＳ（Ｋ−１）および以前に生成された冗長シンボルＲＥ（０），．．．，ＲＥ（ｊ−１）の関数Ｆｊとして計算される。ここで、Ｆｊは入力シンボルの何れかまたは冗長シンボルの何れかに依存する関数である必要はない。ステップ３１５、３２０および３２５はＲ個の冗長シンボルが計算されるまで繰り返される。
【００５９】
再度図１および図２を参照すると、実施例によっては、スタティック符号器２１０はスタティックキー生成器１３０から１個以上のスタティックキーＳ０，Ｓ１．．．を受信する。これらの実施例では、スタティック符号器２１０は、いくつかまたは全部の関数Ｆ０，Ｆ１，．．．Ｆｊ−１を決定するためにスタティックキーを使用する。たとえば、スタティックキーＳ０は関数Ｆ０を決定するために利用可能であり、スタティックキーＳ１は関数Ｆ１を決定するために利用可能である。もしくは、１個以上のスタティックキーＳ０，Ｓ１，．．．を関数Ｆ０を決定するために利用可能であり、１個以上のスタティックキーＳ０，Ｓ１，．．．を関数Ｆ１を決定するために利用可能である。他の実施態様では、スタティックキーは必要でなく、スタティックキー生成器１３０は必要でない。
【００６０】
次に図２および図３を参照すると、実施例によっては、スタティック符号器２１０により生成される冗長シンボルは、入力シンボルバッファ２０５に格納されてもよい。図４は、スタティック符号器２１０の一実施例の動作の簡略図である。特に、スタティック符号器２１０は、入力シンボルバッファ２０５から受信した入力シンボルＩＳ（０），．．．，ＩＳ（Ｋ−１），ＲＥ（０），．．．，ＲＥ（ｊ−１）の関数Ｆｊとして、冗長シンボルＲＥ（ｊ）を生成する。そして、入力シンボルバッファ２０５の中に戻し格納する。関数Ｆ０，Ｆ１，．．．，ＦＲ−１の正確な形式は、特定の用途に依存する。常ではないが一般的には、関数Ｆ０，Ｆ１，．．．，ＦＲ−１は、関連するいくつかあるいは全ての引数の排他的論理和を含んでいる。上述の通り、これらの関数は実際に図１のスタティックキー生成器１３０により生成されるスタティックキーを使用するかもしれないし使用しないかもしれない。たとえば、後述する一特定実施例では、最初のいくつかの関数はハミング符号を実装し、スタティックキーＳ０，Ｓ１，．．．を全く使用しない。また、残りの関数は低密度パリティチェック符号を実装し、スタティックキーを明示的に利用する。
【００６１】
＜マルチステージ符号器の概要＞
再度図２を参照すると、ダイナミック符号器２２０は、入力シンボルＩＳ（０），．．．，ＩＳ（Ｋ−１）および冗長シンボルＲＥ（０），．．．，ＲＥ（Ｒ−１）および各々の出力シンボルのキーＩを受信する。この集合はオリジナルの入力シンボルおよび冗長シンボルを含んでおり、今後”ダイナミック入力シンボル”の集合と呼ぶ。図５はダイナミック符号器の一実施例の簡略ブロック図であり、ウェイトセレクタ５１０、アソシエータ５１５、値関数セレクタ５２０および計算機５２５を含む。図５に示すように、Ｋ＋Ｒ個のダイナミック入力シンボルはダイナミックシンボルバッファ５０５に格納される。実質的に、ダイナミック符号器５００は図６に例示される動作を実行する。すなわち、選択された入力シンボルの何らかの値関数として出力シンボル値Ｂ（Ｉ）を生成する。
【００６２】
図７は、本発明によるスタティック符号器の一特定実施例の簡略ブロック図である。スタティック符号器６００は、パラメータ計算機６０５、ハミング符号器６１０および低密度パリティチェック（ＬＤＰＣ）符号器６２０を備えている。ハミング符号器６１０は、入力シンボルバッファ６２５からの入力シンボルＩＳ（０），．．．，ＩＳ（Ｋ−１）、入力シンボルの数Ｋ、および、パラメータＤを受信するように接続される。そして、ハミング符号器６１０は、ハミング符号に従ってＤ＋１個の冗長シンボルＨＡ（０），ＨＡ（１），．．．，ＨＡ（Ｄ）を生成する。
【００６３】
図８は、図７に示されるスタティック符号器を使用する本発明の一実施例の動作を例示する。
【００６４】
図９は、パラメータ計算機（例えば図７のパラメータ計算機６０５）の一実施例の簡略フローチャートであり、上述のパラメータＤおよびＥを計算する。最初に、ステップ７０５で、パラメータＤは１に初期化される。そして、ステップ７１０で、２Ｄ−Ｄ−１がＫ未満かどうかが判定される。ＮＯの場合フローはステップ７３０へ進む。ＹＥＳの場合フローはステップ７２０へ進み、パラメータＤはインクリメントされる。それから、フローはステップ７１０へ進む。Ｄが決定されると、ステップ７３０で、Ｒ−Ｄ−１としてパラメータＥが算出される。
【００６５】
図１０は本発明の一実施例に従うこのような符号器の簡略フローチャートであり以下に説明する。最初に、ステップ８０５で、変数ｉはゼロに初期化される。変数ｉは、すでに生成される冗長シンボルの数の情報を得続ける。ステップ８１０において、数ｔは、Ｋ／２以上の最も少ない奇数の整数として算出される。ステップ８１５において、値Ｐ１，Ｐ２，．．．，Ｐｔは、Ｋ、ｔおよびスタティックキーＳに基づいて生成される。値Ｐ１，Ｐ２，．．．，Ｐｔは、冗長シンボルを生成するために用いる入力シンボルの位置を指示する。ある特定の実施例では、図５のアソシエータ５１５のようなアソシエータは、ＰＩ，Ｐ２，．．．，Ｐｔを生成するために用いる。特に、Ｗ（Ｉ）個の入力として値ｔは提供され、Ｋ＋Ｒ個の入力として値Ｋは提供される。そして、スタティックキーＳｉはキーＩの入力として提供される。ｔの多くの異なる値が類似した符号化効果を得る点に留意する必要がある。このように、この特定の選択は１つの例にすぎない。ステップ８２０において、ＲＥ（ｉ）の値は、値ＩＳ（ＰＩ），ＩＳ（Ｐ２），．．．，ＩＳ（Ｐｔ）のＸＯＲとして計算される。ステップ８２５において、変数ｉは次の冗長シンボルの計算を準備するために１だけインクリメントされる。そして、ステップ８３０で、全ての冗長シンボルが計算されたかどうかは判定される。そうでない場合には、フローはステップ８１５に戻る。
【００６６】
図１１は、本発明による復号器の簡略ブロック図を例示している図である。復号器９００は、たとえば、図１の復号器１５５を実装するために用いられる。
【００６７】
復号器９００は、ダイナミック復号器９０５とスタティック復号器９１０を備えている。ダイナミック復号器９０５により回復される入力シンボルおよび冗長シンボルは、回復バッファ９１５に格納される。ダイナミック復号化終了後、スタティック復号器９１０は、ダイナミック復号器９０５により回復されない入力シンボルがあれば回復を試みる。特に、スタティック復号器９１０は回復バッファ９１５からの入力シンボルと冗長シンボルを受信する。
【００６８】
図１２は、本発明による復号化のための方法の簡略フローチャートを例示している図である。ステップ１００５において、Ｑ個の出力シンボルは、復号器により受信される。Ｑの値は、入力シンボルの数および使用するある特定のダイナミック符号器に依存する。Ｑの値は、また、復号器が入力シンボルを回復できる所望の精度に依存する。たとえば、復号器が高確率を有する入力シンボルの全てを回復できることが要求される場合、Ｑは入力シンボルの数より大きな数として選択される。特に、用途によっては、入力シンボルの数が大きいときに、Ｑは３％未満程度オリジナル入力シンボルの数より大きい。ほかの応用において、入力シンボルの数が少ないときに、Ｑは少なくとも１０％程度入力シンボルの数より大きい。具体的には、Ｑは入力シンボルの数Ｋに数Ａを加えた値として選ばれることができる。ここで、Ａは復号器が高確率を有する入力シンボルの全てを再生させることができることを確保するために選ばれる。数Ａの決定は、下で更に詳細に記載されている。復号器は入力シンボル（時々または常に）の全てを復号化することができないことを許容する場合、ＱはＫ＋Ａ未満でありえるかＫに等しくありえるかさらにＫ未満でありえる。明確に、全体のコード体系の１つの目的はしばしば可能な限り数Ｑを減少させることである、その一方で、所望の精度に関して復号プロセスの成功に関する良好な見込みに基づく保証を維持する。
【００６９】
ステップ１０１０において、ダイナミック復号器９０５は受信したＱ個出力シンボルから入力シンボルおよび冗長シンボルを再生する。ステップ１００５および１０１０が実質的に並行して実行されることができることは、よく理解されている。たとえば、ダイナミック復号器９０５は、復号器がＱ個の出力シンボルを受信する前に入力シンボルおよび冗長シンボルを再生させ始めることができる。  ダイナミック復号器９０５がＱ個の出力シンボルを処理したあと、入力シンボルが所望の精度に回復されたかどうかは判定される。所望の精度は、たとえば、全ての入力シンボルまたは全てより少ないいくつか、パーセンテージ、その他である。ＹＥＳの場合、フローは終わる。ＮＯの場合は、フローはステップ１０２０へ進む。ステップ１０２０において、スタティック復号器９１０は、ダイナミック復号器９０５が回復することができなかった入力シンボルの回復を試みる。スタティック符号器９１０がダイナミック復号器９０５により回復された入力シンボルおよび冗長シンボルを処理した後フローが終了する。
【００７０】
図１３は、本発明による復号化のための方法の他の実施例を示している簡略フローチャートである。この実施例は、図１１に関して記載されたものと類似していて、共通のステップ１００５、１０１０、１０１５および１０２５を含む。しかし、ステップ１０２５の後、フローはステップ１０３０へ進む。そこにおいて、入力シンボルが所望の精度に回復されたかどうかは判定される。ＹＥＳの場合、フローは終了する。ＮＯの場合、フローはステップ１０３５へ進む。ステップ１０３５において、一つ以上の付加的な出力シンボルが受信される。それから、フローはステップ１０１０へ進行する。その結果、ダイナミック復号器９０５および／またはスタティック復号器９１０は残留する非回復の入力シンボルを回復することを試みることができる。
【００７１】
図１４は、本発明による復号化のための方法のさらにもう一つの実施例を示している簡略フローチャートである。ステップ１０５５において、出力シンボルは復号器により受信される。そして、ステップ１０６０で、ダイナミック復号器９０５は受信された出力シンボルから入力シンボルおよび冗長シンボルを再生させる。それから、ステップ１０６５で、ダイナミック復号化が終了すべきかどうかが判定される。この判定は、処理した出力シンボルの数、回復した入力シンボルの数、付加的な入力シンボルが回復されている現在の速度、出力シンボルの処理に費やした時間は、その他の一つ以上に基づいて行われる。
【００７２】
ステップ１０６５において、ダイナミック復号化を終了しないと決定される場合、フローはステップ１０５５へ進行する。しかし、ステップ１０６５において、ダイナミック復号化を終了すると決定される場合、フローはステップ１０７０へ進む。ステップ１０７０において、入力シンボルが所望の精度に回復されたかどうかが判定される。ＹＥＳである場合、フローは終了する。ＮＯの場合は、フローはステップ１０７５へ進む。ステップ１０７５において、スタティック復号器９１０は、ダイナミック復号器９０５が回復することができなかった入力シンボルの回復を試みる。スタティック符号器９１０が、ダイナミック符号器９０５によって回復された入力シンボルおよび冗長シンボルを処理した後、フローは終了する。
【００７３】
図１５は、本発明によるダイナミック復号器の一実施例を示す。ダイナミック復号器１１００は、図５に示されるダイナミック符号器５００と類似した構成要素を含む。復号器１１００は、Ｌｕｂｙ  ＩおよびＬｕｂｙ  ＩＩに記載されている連鎖反応復号器の実施例と類似している。ダイナミック復号器１１００は、ウェイトセレクタ５１０と、アソシエータ５１５と、値関数セレクタ５２０と、出力シンボルバッファ１１０５と、短縮器１１１５と、回復器１１２０と、回復バッファ１１２５とを備える。
【００７４】
図１６は、スタティック復号器の一実施例の簡略ブロック図を示している。データが図７に関して記載されているスタティック符号器などによって、符号化されるときに、この実施例を用いることができる。スタティック復号器１２００は、ＬＤＰＣ復号器１２０５とハミング復号器１２１０を備えている。ＬＤＰＣ復号器１２０５は回復バッファ１２１５から入力シンボルおよび冗長シンボルを受信する。そして、ダイナミック復号器の復号ステップの後、回復バッファ１２１５の未回復のシンボルの回復を試みる。いくつかの実施形態では、回復バッファ１２１５は、回復バッファ１１２５（図１５）である。
【００７５】
ＬＤＰＣ復号器およびハミング復号器の多くのバリエーションは、当業者にとって周知で、本発明による各種実施形態において、使用されることができる。１つの特定実施例において、ハミング復号器は、ガウス消去アルゴリズムを使用して行う。ガウス消去アルゴリズムの多くのバリエーションは、当業者にとって周知で、本発明による各種実施形態において、使用されることができる。
【００７６】
＜バリエーション＞
上述のマルチステージ連鎖反応コードはシステマティックコードではない。すなわち、ソースブロックのオリジナルソースシンボルの全てが必ずしも送信される符号化シンボルであるというわけではない。しかしながら、システマチックＦＥＣコードは、ファイルダウンロードシステムまたはサービスに役立ち、ストリーミングシステムまたはサービスにとって非常に重要である。下記の実施に示すように、変更を加えられたコードは、システマチックで、まだファウンテンコードおよび他の記載されている特性を維持するよう実行されることができる。
【００７７】
それがマルチステージ符号を使用した補足的なサービスのバラエティが設計者に容易である一つの理由は、それが送信機の中の関連性の無いソースファイルまたはストリームを復元するために多数の送信機から符号化シンボルを受信して組み合わせることができるということである。唯一の必要条件は、送信機がそれらがコードのパケットを符号化する際に送信する符号化シンボルを生成するためのキーと異なるセットを使用するということである。これを達成する方法は、この種の各々の送信機によって、異なる範囲のキー空間を使用するか、または、各々の送信機でランダムにキーを生成することを含む。
【００７８】
例えば、この能力の用途の中で、ファイルダウンロードサービスに対する補足的なサービスがマルチステージ連鎖反応符号を許容するならば、ファイルダウンロードセッションからソースファイルを復元するのに十分な符号化しているパケットを受信せず、送信機から付加的な符号化コードが送信されるよう要求する（例えば、ＨＴＴＰセッションを経て）。送信機はソースファイルから符号化シンボルを生成し送信し（例えばＨＴＴＰを使用して）、ソースファイルを回復するため全てのこれらの符号化シンボルはファイルダウンロードセッションから受信されるそれと混合されうる。このアプローチを使用することによって、異なる送信機同士が送信機間の調整を必要とせずインクリメント式ソースファイル配信サービスを提供でき、その各々個々の受信機は各々のソースファイルを回復するための符号化パケットを最低限の数だけ受信すればよい。
【００７９】
＜マルチステージコードのさまざまなステージの実現例＞
＜ＦＥＣ方式定義＞
これらの技術を使用しているパケットは、ヘッダ情報（例えばソースブロック番号（ＳＢＮ）（パケットの範囲内の符号化シンボルが関係するソースブロックのための１６ビット整数識別子）および符号化シンボルＩＤ（ＥＳＩ）（パケットの範囲内の符号化シンボルのための１６ビット整数識別子）を含んでいる４オクテットのＦＥＣペイロードＩＤ）により表されるかもしれない。ソースブロック番号および符号化シンボルＩＤの１つの適切な解釈は、下記のセクションＢにおいて定義される。ＦＥＣオブジェクト転送情報は、ＦＥＣ符号化ＩＤ、転送長（Ｆ）およびパラメータＴ（下において、定められるＺ、ＮおよびＡ）を含みうる。パラメータＴおよびＺは１６ビット符号なし整数である、ＮおよびＡは８ビット符号なし整数である。
【００８０】
ＭＢＭＳ前方誤り訂正のＦＥＣ符号化方式は、下記のセクションにおいて定義される。それは２つの異なるＦＥＣペイロードＩＤフォーマット（１つはＦＥＣ転送元パケットのため、もう１つはＦＥＣ修復パケットのため）を定義する。しかし、非システマチック符号のバリエーションもまた可能である。
【００８１】
転送元ＦＥＣペイロードＩＤは、ソースブロック番号（ＳＢＮ）（パケットの範囲内の符号化シンボルが関係するソースブロックのための１６ビット整数識別子）および符号化シンボルＩＤ（ＥＳＩ）（パケットの範囲内の符号化シンボルのための１６ビット整数識別子）を含むかもしれない。その一方で、修復ＦＥＣペイロードＩＤは、ソースブロック番号（ＳＢＮ）（パケットの範囲内の修復シンボルが関係するソースブロックのための１６ビット整数識別子）、符号化シンボルＩＤ（ＥＳＩ）（パケットの範囲内の修復シンボルのための１６ビット整数識別子）およびソースブロック長（ＳＢＬ）（１６ビット：ソースブロック内のソースシンボルの数を表す）を含みうる。ソースブロック番号、符号化シンボルＩＤおよびソースブロック長の解釈は、以下定義される。
【００８２】
ＦＥＣオブジェクト転送情報は、ＦＥＣ符号化ＩＤ、最大ソースブロック長（シンボル単位）およびシンボルサイズ（バイト単位）を含みうる。シンボルサイズおよび最大ソースブロック長は、シンボルサイズ（Ｔ）（１６ビット：符号化シンボルのサイズを表す（バイト単位）および）最大ソースブロック長（１６ビット：ソースブロックの最大長を表す（シンボル単位））の４オクテット部を含み得る。
【００８３】
下記のセクションは、システマチックＭＳＣＲ前方誤り訂正符号およびＭＢＭＳおよび他の用途へのその適用を指定する。ＭＳＣＲはファウンテンコードである。すなわち、符号器はブロックのソースシンボルからオンザフライで必要なだけ多く数ののソースシンボルを生成することが出来る。復号器は、ソースシンボルの数よりわずかに多いいかなる符号化シンボルのセットからもソースブロックを回復可能である。この文書に記載されている符号はシステマティック符号であり、修復シンボルと同じ数だけオリジナルソースシンボルは受信機に送信機から変形されずに送信される。
【００８４】
＜Ｂ．１  定義、記号および略号＞
＜Ｂ．１．１  定義＞
本明細書において以下の用語および定義を適用する。
【００８５】
ソースブロック：ＭＳＣＲ符号化の目的で一緒に考慮されるＫ個のソースシンボルのブロック。
【００８６】
ソースシンボル：符号化プロセスの間使用されるデータの最小単位。ソースブロック内の全てのソースシンボルは同一のサイズである。
【００８７】
符号化シンボル：データパケットに含まれるシンボル。符号化シンボルは、ソースシンボルおよび修復シンボルを含む。ソースブロックから生成される修復シンボルは、ソースブロックのソースシンボルと同様に同一のサイズである。
【００８８】
システマティックコード：ソースブロックのため送信される符号化シンボルの一部としてソースシンボルが含まれるコード。
【００８９】
修復シンボル：ソースブロックのため送信されるソースシンボルでない符号化シンボル。修復シンボルはソースシンボルに基づいて生成される。
【００９０】
中間シンボル：逆の符号化プロセスを使用してソースシンボルから生成されるシンボル。修復シンボルは中間シンボルから直接生成される。符号化シンボルは中間シンボルを含まない。すなわち、中間シンボルはデータパケットに含まれない。
【００９１】
シンボル：データの単位。バイトで表現されるサイズはシンボルサイズとして既知である。
【００９２】
符号化シンボルグループ：一緒に送られる符号化シンボルグループ。すなわち、同一パケット内においてソースシンボルに対する関係が単一の符号化シンボルＩＤに由来するもの。
【００９３】
符号化シンボルＩＤ：符号化シンボルグループのシンボルとソースシンボルの関係を定義する情報。
【００９４】
符号化パケット：符号化シンボルを含むデータパケット
サブブロック：ソースブロックはサブブロックに分解され、それぞれは作業メモリ内において復号化されるために十分に小さい。Ｋ個のソースシンボルを含むソースブロックに対して、各々のサブブロックはＫ個のサブシンボルを含み、ソースブロックの各シンボルは各サブブロックの１個のサブシンボルから構成される。
【００９５】
サブシンボル：シンボルの一部。各ソースシンボルは、ソースブロック内のサブブロックである多くのサブシンボルから構成される。
【００９６】
ソースパケット：ソースシンボルを含むデータパケット。
【００９７】
修復パケット：修復シンボルを含むデータパケット。
【００９８】
＜Ｂ．１．２  記号＞
ｉ、ｊ、ｘ、ｈ、ａ、ｂ、ｄ、ｖ、ｍ：自然数を表す
ｃｅｉｌ（ｘ）：ｘ以上である最小の自然数を表す
ｃｈｏｏｓｅ（ｉ，ｊ）：繰り返しのないｉ個のオブジェクトの中からｊ個のオブジェクトを選択する方法の数を表す
ｆｌｏｏｒ（ｘ）：ｘ以下である最大の自然数を表す
ｉ％ｊ：ｉモジュロｊを表す
Ｘ＾Ｙ：等しい長さのビット列ＸおよびＹに対し、ＸとＹとのビット毎の排他論理和を表す
Ａ：シンボル配列パラメータを表し、シンボルおよびサブシンボルのサイズはＡの倍数に制限される
ＡＴ：Ａの転置行列を表す
Ａ−１：Ａの逆行列を表す
Ｋ：１個のソースブロック内にあるシンボルの数を表す
ＫＭＡＸ：１つのソースブロック内にあるソースシンボルの最大数を表し、８１９２に設定される
Ｌ：１つのソースブロックに対する予め符号化されるシンボルの数を表す
Ｓ：１つのソースブロックに対するＬＤＰＣシンボルの数を表す
Ｈ：１つのソースブロックに対するハーフシンボルの数を表す
Ｃ：中間シンボル（Ｃ［０］，Ｃ［１］，Ｃ［２］，．．．，Ｃ［Ｌ−１］）の配列を表す
Ｃ’：ソースシンボル（Ｃ’［０］，Ｃ’［１］，Ｃ’［２］，．．．，Ｃ’［Ｋ−１］）の配列を表す
Ｘ：負でない整数値を表す
Ｖ０、Ｖ１：４バイト整数の２つの配列、Ｖ０［０］，Ｖ０［１］，．．．，Ｖ０［２５５］およびＶ１［０］，Ｖ１［１］，．．．，Ｖ１［２５５］を表す
Ｒａｎｄ［Ｘ、ｉ、ｍ］：擬似乱数発生器である
Ｄｅｇ［ｖ］：度数発生器である
ＬＴＥｎｃ［Ｋ、Ｃ、（ｄ、ａ、ｂ）］：ＬＴ符号化シンボル生成器である
Ｔｒｉｐ［Ｋ、Ｘ］：トリプル生成関数である
Ｇ：符号化シンボル群内のシンボルの数である
Ｎ：ソースブロック内のサブブロックの数である
Ｔ：シンボルサイズ（バイト）であり、ソースブロックがサブブロックに区切られているとき、Ｔ＝Ｔ’・Ｎである
Ｔ’：サブシンボルサイズ（バイト）であり、ソースブロックがサブブロックに区切られていないときＴ’は関連しない
Ｆ：ファイルダウンロードのときのファイルサイズ（バイト）である
Ｉ：サブブロックサイズ（バイト）である
Ｐ：ファイルダウンロードの場合、各パケットのペイロードサイズ（バイト）であり、ファイルダウンロード転送パラメータの推奨導出に使用される。ストリーミングの場合、各修復パケットのペイロードサイズ（バイト）であり、ストリーミング転送パラメータの推奨導出に使用される
Ｑ：Ｑ＝６５５２１、すなわち、Ｑは２１６未満の最大の素数である
Ｚ：ファイルダウンロードのときのソースブロックの数である
Ｊ（Ｋ）：Ｋに関連するシステマチックインデックスである
Ｇ：任意の生成行列を表す
ＩＳ：ＳｘＳの恒等行列を表す
０ＳｘＨ：ＳｘＨの零行列を表す
＜Ｂ．１．３  略号＞
本明細書において以下の略号を用いる。
【００９９】
ＥＳＩ（Encoding Symbol ID）：符号化シンボルＩＤ
ＬＤＰＣ（Low Density Parity Check）：低密度パリティチェック
ＬＴ（Luby Transform）：ルビー変換
ＳＢＮ（Source Block Number）：ソースブロック番号
ＳＢＬ（Source Block Length）：ソースブロック長（シンボル単位）
＜Ｂ．２  概要＞
これら各々のアプリケーションに特定されるＭＳＣＲ前方誤り訂正符号は、ＭＢＭＳファイル配信およびＭＢＭＳストリーミングアプリケーションの双方に適用可能である。ＭＳＣＲ符号の態様は、本明細書のセクションＢ．３およびＢ．４で述べる。
【０１００】
システマチックＭＳＣＲ符号の構成要素は、セクションＢ．５に記載されている基本的な符号器である。第１に、中間シンボルについての知識がソースシンボルを復元するのに十分であるように、どのようにオリジナルソースシンボルから一組の中間シンボルの値を導き出すかが記述される。第２に、符号器は、各々多数の中間シンボルの排他的論理和である修復シンボルを作成する。符号化シンボルは、ソースおよび修復シンボルの組合せである。中間シンボル従ってまたソースシンボルはいかなる十分に大きい符号化シンボル群からも回復可能な方法で修復シンボルは生成される。
【０１０１】
この文書は、システマチックＭＳＣＲコード符号器を定義する。多くの考えられる復号化アルゴリズムが利用可能である。効率的な復号化アルゴリズムは、セクションＢ．６において提供される。
【０１０２】
中間のおよび修復シンボルの組立の一部分は、セクションＢ．５に記載されている擬似乱数発生器に基づく。この生成器は、送信機および受信機の双方で利用できる５１２の乱数の固定セットに基づく。数の実施例のセットは、付録Ｂ．１において提供される。
【０１０３】
最後に、ソースシンボルからの中間シンボルの組立は、”システマチックインデックス”により支配される。システマチックインデックスの値の実施例セットは、４個のソースシンボルからＫＭＡＸ＝８１９２個のソースシンボルまでのソースブロックサイズのためものが付録Ａに示される。
【０１０４】
＜Ｂ．３  ファイルダウンロード＞
＜Ｂ．３．１  ソースブロック構築＞
＜Ｂ．３．１．１  全般＞
ＭＳＣＲ符号器をソースファイルに適用するために、ファイルはＺ（≧１）個のブロック（ソースブロックとして知られる）としてに分解されうる。ＭＳＣＲ符号器は、それぞれに各々のソースブロックに適用される。各々のソースブロックは一意な整数ソースブロック番号（ＳＢＮ）であり、第１のソースブロックのＳＢＮは０、第２は１などである。各々のソースブロックは各々のサイズがＴバイトのソースシンボルの数（Ｋ）に分割される。各々のソースシンボルは一意の整数符号化シンボル識別子（ＥＳＩ）であり、ソースブロックの第１のソースシンボルのＥＳＩは０、第２は１などである。
【０１０５】
Ｋ個のソースシンボルを有する各々のソースブロックはＮ（≧１）個のサブブロックに分けられる。それは作業メモリにおいて復号化されるのに十分小さい。各々のサブブロックは、サイズＴ’のＫ個のサブシンボルに区分される。
【０１０６】
ファイルの各々のソースブロックの値に対してＫの値が必ずしも同一であるというわけではない点、および、ソースブロックの各々のサブブロックに対してＴ’が必ずしもの同一であるというわけではない点に注意する。しかしながら、ファイルの全てのソースブロックに対してシンボルサイズＴは同一であり、ソースブロックのあらゆるサブブロックに対してシンボル数Ｋは同一である。ファイルの、ソースブロックおよびサブブロックへの正確な分割は、後述のＢ．３．１．２に記載されている。
【０１０７】
図１７は二次元行列に配置されたソースブロックの例を示す。ここで、各々のエントリはＴ’バイトのサブシンボルであり、各々の列はサブブロックであり、各々の行はソースシンボルである。この例では、Ｔ’の値は、あらゆるサブブロックに対して同一である。各々のサブシンボルのエントリに示される数は、ソースブロック中でのオリジナルの順番を示している。たとえば、Ｋの番号をつけられたサブシンボルは、ソースブロックのＴ’・ＫからＴ’・（Ｋ＋１）−１個までのバイトを含む。そして、ソースシンボルｉは、各々のサブブロックからの第ｉのサブシンボルの連結であり、ｉ、Ｋ＋ｉ、２・Ｋ＋ｉ、．．．、（Ｎ−１）・Ｋ＋ｉの番号をつけられたソースブロックのサブシンボルに対応する。
【０１０８】
＜Ｂ．３．１．２  ソースブロックとサブブロック分割＞
ソースブロックおよびサブブロックの構築は、Ｆ、Ａ、Ｔ、Ｚ、Ｎの５個のパラメータおよび関数Ｐａｒｔｉｔｉｏｎ［］に基づいて決定される。５個のパラメータは次のように定義される。
【０１０９】
Ｆ：ファイルサイズ（バイト）である
Ａ：シンボル配列パラメータ（バイト）である
Ｔ：シンボルサイズ（バイト）であり、必ずＡの倍数となる
Ｚ：ソースブロックの数である
Ｎ：各ソースブロック内のサブブロックの数である
これらのパラメータは、ｃｅｉｌ（ｃｅｉｌ（Ｆ／Ｔ）／Ｚ）＝＜ＫＭＡＸとなるようにセットされる。これらのパラメータ導出の推奨値がセクションＢ．３．４において提供される。
【０１１０】
関数Ｐａｒｔｉｔｉｏｎ［］は一対の整数（Ｉ、Ｊ）を入力として４整数（ＩＬ、ＩＳ、ＪＬ、ＪＳ）を導出する。具体的には、Ｐａｒｔｉｔｉｏｎ［Ｉ、Ｊ］の値は、４整数のシーケンス（ＩＬ、ＩＳ、ＪＬ、ＪＳ）であり、ＩＬ、＝ｃｅｉｌ（Ｉ／Ｊ）、ＩＳ＝Ｆｌｏｏｒ（Ｉ／Ｊ）、ＪＬ＝Ｉ−ＩＳ・Ｊ、ＪＳ＝Ｊ−ＪＬである。Ｐａｒｔｉｔｉｏｎ［］は、サイズＩのブロックをほぼ等しいＪのブロックに分割するパラメータを導出する。具体的には、長さＩＬのＪＬ個のブロックと長さＩＳのＪＳ個のブロックである。
【０１１１】
ソースファイルは、以下の通りにソースブロックおよびサブブロックに仕切られる。
【０１１２】
Ｋｔ＝ｃｅｉｌ（Ｆ／Ｔ）のとき
（ＫＬ、ＫＳ、ＺＬ、ＺＳ）＝Ｐａｒｔｉｔｉｏｎ［Ｋｔ，Ｚ］
（ＴＬ、ＴＳ、ＮＬ、ＮＳ）＝Ｐａｒｔｉｔｉｏｎ［Ｔ／Ａ，Ｎ］
それから、ファイルは、Ｚ＝ＺＬ＋ＺＳ個の隣接するソースブロックに仕切られ、最初のＺＬ個のソースブロックは各々ＫＬ・Ｔバイトであり、残りのＺＳ個のソースブロックは各々ＫＳ・Ｔバイトである。
【０１１３】
Ｋｔ・Ｔ＞Ｆのとき、符号化に用いられ、最後のシンボルは最後のＫｔ・Ｔ−Ｆの部分をパディングされる。
【０１１４】
次に、各々のソースブロックはＮ＝ＮＬ＋ＮＳ個の隣接するサブブロックに仕切られ、最初のＮＬ個のサブブロックは各々ＴＬ・ＡのサイズのＫ個の隣接するサブシンボルを含み、残りのＮＳ個のサブブロックは各々ＴＳ・ＡのサイズのＫ個の隣接するサブシンボルを含む。シンボル配列パラメータＡは、サブシンボルが常にＡバイトの倍数であることを確保する。
【０１１５】
最後に、ソースブロックの第ｍ番目のシンボルは、各々Ｎ個のサブブロックから第ｍ番目のサブシンボルの連結を含む。
【０１１６】
＜Ｂ．３．２  符号化パケット構築＞
＜Ｂ．３．２．１  全般＞
各々の符号化パケットは、以下の情報を含む。
【０１１７】
ソースブロック番号（ＳＢＮ）
符号化シンボルＩＤ（ＥＳＩ）
符号化シンボル
各々のソースブロックは、他と独立してそれぞれに符号化される。ソースブロックはゼロから連続的に番号をつけられる。
【０１１８】
０からＫ−１の符号化シンボルＩＤ値は、ソースシンボルを識別する。Ｋからの符号化シンボルは前方へ修復シンボルを識別する。
【０１１９】
＜Ｂ．３．２．２  符号化パケット構築＞
各々の符号化パケットは、好ましくは、完全なソースシンボル（ソースパケット）あるいは完全な修復シンボル（修復パケット）のいずれかを含む。パケットは、同じソースブロックから任意数のシンボルを含むことができる。オブジェクトを符号化しているＦＥＣにパケットの最後のシンボルがパディングバイトを含む場合、これらのバイトはパケットに含まなくてもよい。さもないと、全シンボルだけは含まれる。
【０１２０】
各々のソースパケットにより転送される符号化シンボルＩＤ、Ｘは、そのパケットにおいて保持される最初のソースシンボルの符号化シンボルＩＤである。パケットの次のソースシンボルは順序付けられた符号化シンボルＩＤ、Ｘ＋１からＸ＋Ｇ−１を有し、ここで、Ｇはパケット内のシンボルの数である。
【０１２１】
同様に、修復パケットに格納された符号化シンボルＩＤ、Ｘは、修復パケットの最初の修復シンボルの符号化シンボルＩＤであり、パケットの次の修復シンボルは順序付けられた符号化シンボルＩＤ、Ｘ＋１からＸ＋Ｇ−１を有し、ここで、Ｇはパケット内のシンボルの数である。
【０１２２】
ここで、受信機が修復パケットの合計数を知ることは必要でない点に注意する。修復シンボルのＧ個の修復シンボルトリプル（ｄ［０］，ａ［０］，ｂ［０］），．．．，（ｄ［Ｇ−１］，ａ［Ｇ−１］，ｂ［Ｇ−１］）は、ＥＳＩ  Ｘを有する修復パケット内に配置され、以降のＢ．５．３．４において定義されるトリプル生成器を使用して計算される。
【０１２３】
各々のｉ＝０，．．．，Ｇ−１に対して、
（ｄ［ｉ］，ａ［ｉ］，ｂ［ｉ］）＝Ｔｒｉｐ［Ｋ，Ｘ＋ｉ］
ＥＳＩ  Ｘを有する修復パケットに配置されるＧ個の修復シンボルは、セクションＢ．５．３にて説明したように、中間シンボルＣおよびＬＴ符号器ＬＴｅｎｃ［Ｋ，Ｃ，（ｄ［ｉ］，ａ［ｉ］，ｂ［ｉ］）］を用い修復シンボルトリプルに基づいて計算される。
【０１２４】
＜Ｂ．３．３  転送＞
このセクションは、ファイル送出のためのＭＳＣＲ前方誤り訂正を利用しているＭＳＣＲ符号器／復号器およびいかなる転送プロトコルの間でも情報交換を記載する。
【０１２５】
ファイル送出のためのＭＳＣＲ符号器および復号器は、転送プロトコルから以下の情報を必要とする。バイト単位のファイルサイズ、Ｆ、シンボル配列パラメータ、Ａ、シンボルサイズ（Ｔ）（バイト単位でＡの倍数である）、ソースブロックの数、Ｚ、各々のソースブロックのサブブロックの数、Ｎ。ファイル配信のためのＭＳＣＲ符号器は、加えて、符号化されるファイルがＦバイトであることを必要とする。
【０１２６】
ＭＳＣＲ符号器は、各々のパケットのために、ＳＢＮ、ＥＳＩおよび符号化シンボルを含む符号化パケット情報を転送プロトコルに出力する。転送プロトコルは透過的にＭＳＣＲ復号器にこの情報を伝える。
【０１２７】
＜Ｂ．３．４  推奨パラメータ（情報提供）＞
＜Ｂ．３．４．１  パラメータ決定アルゴリズム＞
このセクションは４つの転送パラメータＡ，Ｔ，ＺおよびＮの導出の推奨値を提供する。
【０１２８】
この推奨値は以下の入力パラメータに基づいている。
【０１２９】
Ｆ：ファイルサイズ（バイト）
Ｗ：サブブロックサイズ目標（バイト）
Ｐ：最大のパケットペイロードサイズ（バイト）、Ａの倍数であると仮定される
Ａ：シンボル配列ファクタ（バイト）
ＫＭＡＸ：ソースブロック当たりのソースシンボルの最大数
ＫＭＩＮ：ソースブロック当たりのシンボルの最小目標数
ＧＭＡＸ：パケット当たりのシンボルの最大目標数
上記の入力に基づいて、転送パラメータＴ、ＺおよびＮは、以下の通りに算出される。
【０１３０】
Ｇ＝ｍｉｎ｛ｃｅｉｌ（Ｐ・ＫＭＩＮ／Ｆ），Ｐ／Ａ，ＧＭＡＸ｝−パケット当たりの平均シンボル数
Ｔ＝ｆｌｏｏｒ（Ｐ／（Ａ・Ｇ））・Ａ
Ｋｔ＝ｃｅｉｌ（Ｆ／Ｔ）−ファイル内の総シンボル数
Ｚ＝ｃｅｉｌ（Ｋｔ／ＫＭＡＸ）
Ｎ＝ｍｉｎ｛ｃｅｉｌ（ｃｅｉｌ（Ｋｔ／Ｚ）・Ｔ／Ｗ），Ｔ／Ａ｝
ＧおよびＮの値は上述のように導出され下限として考慮される。例えば、２の累乗に近似した数などに、これらの値を増やすことは、有利となり得る。特に、上記のアルゴリズムはシンボルサイズＴが最大パケットサイズＰを区分することを保証しない。そして、正確にＰのサイズのパケットが使用可能とはならない。その代わりに、Ｇは、Ｐ／Ａを区分する値として選択される場合、シンボルサイズＴはＰの因子である。そして、サイズＰのパケットが使うことができる。
【０１３１】
入力パラメータ、Ｗ、Ａ、ＫＭＩＮおよびＧＭＡＸの推奨された設定は、以下の通りである。
【０１３２】
Ｗ＝２５６ＫＢ  Ａ＝４  ＫＭＩＮ＝１０２４  ＧＭＡＸ＝１０
＜Ｂ．３．４．２  例＞
上記のアルゴリズムは図１８に示すように結果として転送パラメータに導く。そして、Ｗ、Ａ、ＫＭＩＮおよびＧＭＡＸおよびＰ＝５１２のための推奨値となる。
【０１３３】
＜Ｂ．４  ストリーミング＞
＜Ｂ．４．１  ソースブロック構築＞
この文書において定義したように、ソースブロックは転送プロトコルによって組み立てられる。そして、システマチックＭＳＣＲ前方誤り訂正符号を利用する。ソースブロックの組立および修復シンボルの組立に使われるシンボルサイズＴは転送プロトコルにより提供される。いかなるソースブロックについてもソースシンボルの数が最高でもＫＭＡＸであるために、パラメータＴがセットされるかもしれない。
【０１３４】
推奨されたパラメータは、セクションＢ．４．４に示される。
【０１３５】
＜Ｂ．４．２  符号化パケット構築＞
Ｂ．４．３にて説明するように各々の修復パケットは、ＳＢＮ、ＥＳＩ、ＳＢＬおよび修復シンボルを含む。修復パケットの中で含まれる修復シンボルの数は、パケット長から計算される。修復パケットに入れられるＥＳＩ値および修復シンボルを生成するために用いる修復シンボルのトリプルは、セクションＢ．３．２．２にて説明したように、計算される。
【０１３６】
＜Ｂ．４．３  転送＞
このセクションは、ＭＳＣＲ符号器／復号器間の情報交換を記載し、いかなる転送プロトコルもストリーミングのためのＭＳＣＲ前方誤り訂正を利用する。トリーミングのためのＭＳＣＲ符号器は、各々のソースブロックのための転送プロトコルから、以下の情報を使用するかもしれない。シンボルサイズＴ（バイト）、ソースブロックのシンボル数Ｋ、ソースブロック番号（ＳＢＮ）、符号化されるソースシンボル（Ｋ・Ｔバイト）。ＭＳＣＲ符号器は、各々の修復パケットのために、ＳＢＮ、ＥＳＩ、ＳＢＬおよび修復シンボルを含んでいるパケット情報を符号化することに関する転送プロトコルを出力する。転送プロトコルは透過的にＭＳＣＲ復号器にこの情報を伝えるかもしれない。
【０１３７】
＜Ｂ．４．４  推奨パラメータ＞
＜Ｂ．４．４．１  パラメータ決定アルゴリズム＞
このセクションは、を転送パラメータＴの導出の推奨値を提供する。この推奨値は、以下の入力パラメータに基づく。
【０１３８】
Ｂ：最大ソースブロックサイズ（バイト）
Ｐ：最大のパケットペイロードサイズ（バイト）、Ａの倍数であると仮定される
Ａ：シンボル配列ファクタ（バイト）
ＫＭＡＸ：ソースブロック当たりのソースシンボルの最大数
ＫＭＩＮ：ソースブロック当たりのシンボルの最小目標数
ＧＭＡＸ：修復パケット当たりのシンボルの最大目標数
これらの入力上の必要条件は、ｃｅｉｌ（Ｂ／Ｐ）＝＜ＫＭＡＸである。上記の入力に基づいて、転送パラメータＴは、以下の通りに算出される。
【０１３９】
Ｇ＝ｍｉｎ｛ｃｅｉｌ（Ｐ・ＫＭＩＮ／Ｂ），Ｐ／Ａ、ＧＭＡＸ｝−パケット当たりのシンボル平均数
Ｔ＝ｆｌｏｏｒ（Ｐ／（Ａ・Ｇ））・Ａ
上で導出されるＴの値は、使用するＴの実効値のガイドと思われなければならない。そのＴをＰに区分することは有利でもある。または、フルサイズ修復シンボルが消失する転送元パケット（ソースブロックのソースシンボルの最大数ＫＭＡＸを超えない限り）終了後部分的なソースシンボルを回復するために用いるときに、より小さいＴの値が消耗を最小化することはセットに有利でもよい。Ｐ、全ての転送元パケットが同一サイズである場合、それがそのようにＴをそれに選ぶために有利で修復パケットＰの中で、さらに、例えば、Ｔで優れたものは、転送元パケット径分布に依存できる実際のペイロードサイズは、Ｔの倍数であって、各々の転送元パケットがソースブロックにおいて、占めるバイト数（数バイトできる限りより大きく、または）に等しい。
【０１４０】
入力パラメータ、Ａ、ＫＭＩＮおよびＧＭＡＸの推奨された設定は、以下の通りである。
【０１４１】
Ａ＝４  ＫＭＩＮ＝１０２４  ＧＭＡＸ＝１０
＜Ｂ．４．４．２  例＞
上記のアルゴリズムは図１９に示すように結果として転送パラメータに導く。そして、Ａ、ＫおよびＧＭＡＸおよびＰ＝５１２のための推奨値となる。
【０１４２】
＜Ｂ．５  システマチックＭＳＣＲ符号化器＞
＜Ｂ．５．１  符号化の概要＞
システマチックＭＳＣＲ符号器は、Ｋ個のソースシンボルを含むソースブロックから修復シンボルを生成するために用いる。シンボルは、符号化および復号プロセスの基本的なデータ単位である。各々のソースブロック（サブブロック）のために、全てのシンボル（サブシンボル）は、同一サイズである。符号化および復号化のためのシンボル（サブシンボル）に実行される動作は、排他的論理和演算である。
【０１４３】
Ｃ’［０］，．．．，Ｃ’［Ｋ−１］はＫ個のソースシンボルを示す
Ｃ［０］，．．．，Ｃ［Ｌ−１］はＬ個の中間シンボルを示す
符号化の第一段階は、Ｋ個のソースシンボルから中間シンボルの数（Ｌ＞Ｋ）を生成することである。このステップにおいて、Ｋ転送元トリプル（ｄ［０］，ａ［０］，ｂ［０］），．．．，（ｄ［Ｋ−１］，ａ［Ｋ−１］，ｂ［Ｋ−１］）はセクションＢ．５．４．４にて説明したように、Ｔｒｉｐ［］を使用して生成したＫ個のソーストリプルは、Ｋソースシンボルを伴い、逆の符号化プロセスを使用しているソースシンボルからＬ個の中間シンボルＣ［０］，．．．，Ｃ［Ｌ−１］を決定するために用いる。この処理は、ＭＳＣＲ復号プロセスにより認識されることができる。
【０１４４】
特定の”所与の符号化関係”は、Ｌ個の中間シンボルの中で保持しなければならない。セクションＢ．５．２は、これらの関係および中間シンボルがソースシンボルから生成される方法を記載する。
【０１４５】
一旦中間シンボルが生成されると、修復シンボルは作成される。そして、単一のデータパケットにグループ、一つ以上の修復シンボルは配置される。各々の修復シンボルグループは、符号化シンボルＩＤ（ＥＳＩ）および符号化シンボルの数（Ｇ）と関係している。ＥＳＩは、生成するために用いるトリプルの３整数（ｄ、ａ、ｂ）（各々の修復シンボル間のセクションＢ．５．４．４．にて説明したように、Ｔｒｉｐ［］を使用する）。これは、セクションＢ．３およびセクションＢ．５．４に記載されている生成器を使用し、Ｂ．４にて説明したように実行される。各々の（ｄ，ａ，ｂ）−トリプルはセクションＢ．５．４．３．に記載されているＬＴＥｎｃ［Ｋ，Ｃ［０］，．．．，Ｃ［Ｌ−１］，（ｄ，ａ，ｂ）］生成器を使用している中間シンボルから、対応する修復シンボルを生成するために用いる。
【０１４６】
＜Ｂ．５．２  符号化の第１段階：中間シンボル生成＞
＜Ｂ．５．２．１  全般＞
第１の符号化しているステップは、ソースシンボルＣ’［０］，．．．，Ｃ’［Ｋ−１］からＬ個の中間シンボルＣ［０］，．．．，Ｃ［Ｌ−１］を生成する予め行われる符号化ステップである。中間シンボルは、制約条件の２つのセットによって、独自に定義される。
【０１４７】
１．中間シンボルは、ソースシンボルのトリプルの一組によって、ソースシンボルに関連がある。セクションＢ．５．４．４にて説明したように、ソースシンボルトリプルの生成には、セクション５．２．２で定義されるを使用しているＴｒｉｐ［］を使用する。
【０１４８】
２．一組の予め行われる符号化関係は、それ自身を中間シンボルの中で保持する。これらは、セクションＢ．５．２．３において定義される。
【０１４９】
Ｌ個の中間シンボルの生成は、セクション５．２．４において定義される。
【０１５０】
＜Ｂ．５．２．２  ソースシンボルのトリプル＞
Ｋ個のソースシンボルのそれぞれは、０＜ｉ＜Ｋのトリプル（ｄ［ｉ］，ａ［ｉ］，ｂ［ｉ］）に関係している。ソースシンボルトリプルは、セクションＢ．５．４．４で定義されるトリプル生成器を使用して決定される。
【０１５１】
０＜ｉ＜Ｋを満たすそれぞれのｉについて、
（ｄ［ｉ］，ａ［ｉ］，ｂ［ｉ］）＝Ｔｒｉｐ［Ｋ，ｉ］
＜Ｂ．５．２．３  符号化前の関連付け＞
Ｌ個の中間シンボルの間の予めの符号化関係は、第１のＫ個の中間シンボルに関して最後のＬ−Ｋ個の中間シンボルを表すことにより定義される。
【０１５２】
最後のＬ−Ｋ個の中間シンボルＣ［Ｋ］，．．．，Ｃ［Ｌ−１］はＳ  ＬＤＰＣシンボルを含む、そして、ＳおよびＨの値がそうであるＨハーフシンボルは後述するようにＫから決定される。そのため、Ｌ＝Ｋ＋Ｓ＋Ｈである。
【０１５３】
Ｘ：Ｘ・（Ｘ−１）＝２・Ｋとなる最小の自然数である
Ｓ：Ｓ＞＝ｃｅｉｌ（０．０１・Ｋ）＋Ｘとなる最小の素数整数
Ｈ：（Ｈ、ｃｅｉｌ（Ｈ／２））＞＝Ｋ＋Ｓとなる最小の整数である
Ｈ’：ｃｅｉｌ（Ｈ／２）Ｌ＝Ｋ＋Ｓ＋Ｈ
Ｃ［０］、．．．、Ｃ［Ｋ−１］  最初のＫ個の中間シンボルを示す
Ｃ［Ｋ］、．．．、Ｃ［Ｋ＋Ｓ−１］  Ｓ  ＬＤＰＣシンボルを示す（ゼロに初期化される）
Ｃ［Ｋ＋Ｓ］、．．．、Ｃ［Ｌ−１］  Ｈ  ハーフシンボルを示す（ゼロに初期化される）
Ｓ  ＬＤＰＣシンボルは、以下の処理の最後でＣ［Ｋ］，．．．，Ｃ［Ｋ＋Ｓ−１］の値であるように定義される。
【０１５４】
ｉ＝０、．．．、Ｋ−１  について以下を実行
ａ＝１＋（ｆｌｏｏｒ（ｉ／Ｓ）％（Ｓ−１））
ｂ＝ｉ％Ｓ
Ｃ［Ｋ＋ｂ］＝Ｃ［Ｋ＋ｂ］＾Ｃ［ｉ］
ｂ＝（ｂ＋ａ）％Ｓ
Ｃ［Ｋ＋ｂ］＝Ｃ［Ｋ＋ｂ］＾Ｃ［ｉ］
ｂ＝（ｂ＋ａ）％Ｓ
Ｃ［Ｋ＋ｂ］＝Ｃ［Ｋ＋ｂ］＾Ｃ［ｉ］
Ｈ  ハ−フシンボルは以下のように定義される。
【０１５５】
ｇ［ｉ］＝ｉ＾（ｆｌｏｏｒ（ｉ／２））  全ての自然数ｉについて
注：ｇ［ｉ］はグレイシーケンスであり、各々の要素は前のものと単一のビット位置において異なる。
【０１５６】
ｇ［ｊ，ｋ］は、ｊｔｈ要素を示す、ｊ＝０，１，２，．．．要二進表示で素が正確にｋ個のゼロでないビットを備えているｇ［ｉ］の部分系列を示す。
【０１５７】
それから、ハーフシンボルは、以下の処理の後、Ｃ［Ｋ＋Ｓ］，．．．，Ｃ［Ｌ−１］の値として定義される。
【０１５８】
ｈ＝０，．．．，Ｈ−１  について以下を実行
ｊ＝０，．．．，Ｋ＋Ｓ−１  について以下を実行
もしｇ［ｊ，Ｈ’］のビットｈが１の場合、Ｃ［ｈ＋Ｋ＋Ｓ］＝Ｃ［ｈ＋Ｋ＋Ｓ］＾Ｃ［ｊ］
＜Ｂ．５．２．４  中間シンボル＞
＜Ｂ．５．２．４．１  定義＞
所与のＫ個のソースシンボルＣ’［０］，Ｃ’［１］，．．．，Ｃ’［Ｋ−１］についてＬ個の中間シンボルＣ［０］，Ｃ［１］，．．．，Ｃ［Ｌ−１］は以下を満たすように独自に定義されるシンボル値である。
【０１５９】
１．Ｋ個のソースシンボルＣ’［０］，Ｃ’［１］，．．．，Ｃ’［Ｋ−１］は、Ｋ個の制約条件がある
Ｃ’［ｉ］≡ＬＴＥｎｃ［Ｋ，（Ｃ［０］，．．．，Ｃ［Ｌ−１］），（ｄ［ｉ］，ａ［ｉ］，ｂ［ｉ］）］  ０＜ｉ＜Ｋである全てのｉについて
２．Ｂ．５．２．３で予め定義された符号化関係を満足するＬ個の中間シンボルＣ［０］，Ｃ［１］，．．．，Ｃ［Ｌ−１］
＜Ｂ．５．２．４．２  中間シンボルの計算＞
このサブセクションは、Ｂ．５．２．４．１の制約条件を満たしているＬ中間シンボルＣ［０］，Ｃ［１］，．．．，Ｃ［Ｌ−１］の算出方法を記載する。  Ｋ個の入力シンボルからＮ個の出力シンボルを生成するコードのための生成行列ＧはＧＦ（２）の上のＮｘＫマトリックスである。各々の列は出力シンボルのうちの１つに対応する。そして、入力シンボルのうちの１つおよびｉｔｈとなる出力シンボルのところに対する各々の行は行が列のゼロでないエントリを含むそれらの入力シンボルの合計に等しい。
【０１６０】
そして、Ｌ個の中間シンボルは、以下の通りに算出されることができる。
【０１６１】
Ｃ：Ｌ個の中間シンボル（Ｃ［０］，Ｃ［１］，．．．，Ｃ［Ｌ−１］）の列ベクトルを示す
Ｄ：Ｓ＋Ｈのゼロシンボルを含む列ベクトルで、Ｋ個のソースシンボルＣ’［０］，Ｃ’［１］，．．．，Ｃ’［Ｋ−１］が続く
よって、上記の制約条件はＧＦ（２）の上のＬｘＬマトリックスと定義され、Ａは
Ａ・Ｃ＝Ｄ  である。
【０１６２】
マトリックスＡは、以下の通りに組み立てられることが可能である。
【０１６３】
ＧＬＤＰＣは、ＤＰＣシンボルのＳｘＫの生成行列である、そのため、
ＧＬＤＰＣ・（Ｃ［０］，．．．，Ｃ［Ｋ−１］）Ｔ＝（Ｃ［Ｋ］，．．．，Ｃ［Ｋ＋Ｓ−１］）Ｔ
ＧＨａｌｆは、ハーフシンボルのＨ×（Ｋ＋Ｓ）の生成行列である、そのため、
ＧＨａｌｆ・（Ｃ［０］，．．．，Ｃ［Ｓ＋Ｋ−１］）Ｔ＝（Ｃ［Ｋ＋Ｓ］，．．．，Ｃ［Ｋ＋Ｓ＋Ｈ−１］）Ｔ
ＩＳ：ＳｘＳの恒等行列を表す
ＩＨ：ＨｘＨの恒等行列を表す
０ＳｘＨ：ＳｘＨの零行列を表す
ＧＬＴ：ＬＴ符号器により生成される符号化シンボルのＫ×Ｌの生成行列である
そのため、
ＧＬＴ・（Ｃ［０］，．．．，Ｃ［Ｌ−１］）Ｔ＝（Ｃ’［０］，Ｃ’［１］，．．．，Ｃ’［Ｋ−１］）Ｔ
すなわち、ＧＬＴｉ，ｊ＝１  もしＣ［ｉ］は排他的論理和の生成したシンボルを含むだけなら
ＬＴＥｎｃ［Ｋ，（Ｃ［０］，．．．，Ｃ［Ｌ−１］），（ｄ［ｉ］，ａ［ｉ］，ｂ［ｉ］）］
そして、
Ａの最初のＳ列は、ＧＬＤＰＣ｜ＩＳ｜ＺＳ×Ｈに等しい。
【０１６４】
Ａの次のＨ列は、ＧＨａｌｆ｜ＩＨに等しい。
【０１６５】
Ａの残りのＫ列は、ＧＬＴに等しい。
【０１６６】
マトリックスＡは、図２０に示される。中間シンボルはそれから算出されることができる。
【０１６７】
Ｃ＝Ａ−１・Ｄ
いかなるＫにおいても行列Ａは最大ランクを有し、逆変換可能であるようにソーストリプルは生成される。この算出は、Ｌ個の中間シンボルＣ［０］，Ｃ［１］，．．．，Ｃ［Ｌ−１］を作成するためにＭＳＣＲ復号プロセスをＫ個のソースシンボルＣ’［０］，Ｃ’［１］，．．．，Ｃ’［Ｋ−１］に適用することにより認識されることができる。
【０１６８】
ソースシンボルから効率的に中間シンボルを生成するために、それのような効率的な復号器実施態様がセクションＢ．６に記載されて用いられるというそれは、推奨される。ソースシンボルトリプルは、そのアルゴリズムを使用しているソースシンボルの効率的な復号化を容易にするように設計されている。
【０１６９】
＜Ｂ．５．３  符号化の第２段階：ＬＴ符号化＞
第二の符号化ステップにおいて、ＥＳＩ  Ｘを有する修復シンボルは、生成器を適用することによって、セクションＢ．３．２．２およびＢ．４．２に従ってトリプル（ｄ，ａ，ｂ）＝Ｔｒｉｐ［Ｋ，Ｘ］を使用しているＬ個の中間シンボルＣ［０］，Ｃ［１］，．．．，Ｃ［Ｌ−１］にセクションＢ．５．４において定義されるＬＴＥｎｃ［Ｋ，（Ｃ［０］，Ｃ［１］，．．．，Ｃ［Ｌ−１］），（ｄ，ａ，ｂ）］を生成する。
【０１７０】
＜Ｂ．５．４  生成器＞
＜Ｂ．５．４．１  乱数生成器＞
乱数発生器Ｒａｎｄ［Ｘ，ｍ］は以下の通りに定められる。ここで、Ｘは非負整数である、ｉは非負整数である。そして、ｍは自然数である。そして、生成される値は０とｍ−１との間の整数である。Ｖ０およびＶ１を各々２５６のエントリの配列であるようにさせる。ここで、各々のエントリは４バイトの符号なし整数である。これらの配列は、セクションＢ．７において提供される。そして、
Ｒａｎｄ［Ｘ，ｉ，ｍ］＝（Ｖ０［（Ｘ＋ｉ）％２５６］＾Ｖ１［（ｆｌｏｏｒ（Ｘ／２５６）＋ｉ）％２５６］）％ｍ
＜Ｂ．５．４．２  度数生成器＞
度数生成器［ｖ］は以下の通りに定められる。ｖは少なくとも０で２２０＝１０４８５７６より小さい整数である。
【０１７１】
図２１において、  ｆ［ｊ−１］≦ｖ＜ｆ［ｊ］となるインデックスｊを探す
Ｄｅｇ［ｖ］＝ｄ［ｊ］
＜Ｂ．５．４．３  ＬＴ符号化シンボル生成器＞
符号化シンボル生成器ＬＴＥｎｃ［Ｋ，（Ｃ［０］，Ｃ［１］，．．．，Ｃ［Ｌ−１］），（ｄ，ａ，ｂ）］は、以下の入力をする。
【０１７２】
Ｋは、ソースブロック（サブブロック）のためのソースシンボル（またはサブシンボル）の数である。ＬはセクションＢ．５．２にて説明したように、Ｋに由来するようにさせる。そして、Ｌ’Ｌ以上の最小の素数とする。
【０１７３】
（Ｃ［０］，Ｃ［１］，．．．，Ｃ［Ｌ−１］）はセクションＢ．５．２にて説明したように、生成されるＬ個の中間シンボル（サブシンボル）である。
【０１７４】
（ｄ、ａ、ｂ）はセクションＢ．５．３．４で定義されたトリプル生成器使用して決定されるソーストリプルである。ここで、ｄは符号化シンボル度数を示す整数であり、ａは１からＬ’−１に含まれる整数であり、ｂは０からＬ’−１に含まれる整数である。
【０１７５】
以下のアルゴリズムにより、符号化シンボル生成器は１つの符号化シンボルを出力として生成する。
【０１７６】
ｂ≧Ｌにあいだ、ｂ＝（ｂ＋ａ）％Ｌ’を実行する
ＬＴＥｎｃ［Ｋ，（Ｃ［０］，Ｃ［１］，．．．，Ｃ［Ｌ−１］），（ｄ，ａ，ｂ）］＝Ｃ［ｂ］
ｊ＝１，．．．，ｍｉｎ（ｄ−１，Ｌ−１）  について以下を実行する。
【０１７７】
ｂ＝（ｂ＋ａ）％Ｌ’
ＬＴＥｎｃ［Ｋ，（Ｃ［０］，Ｃ［１］，．．．，Ｃ［Ｌ−１］），（ｄ，ａ，ｂ）］＝ＬＴＥｎｃ［Ｋ，（Ｃ［０］，Ｃ［１］，．．．，Ｃ［Ｌ−１］），（ｄ，ａ，ｂ）］＾Ｃ［ｂ］
＜Ｂ．５．４．４  トリプル生成器＞
トリプル生成器Ｔｒｉｐ［Ｋ，Ｘ］には次のものが入力される。
【０１７８】
Ｋ：ソースシンボル数
Ｘ：符号化シンボルＩＤ
ＬはＢ．５．２で説明したようにＫに基づいて決定される
Ｌ’はＬ以上の最小の素数である
Ｑ＝６５５２１、２１６未満の最大の素数
Ｊ（Ｋ）は、付録Ａにおいて定義される、Ｋと関係するシステマチックデックスである。
【０１７９】
トリプル生成器の出力はトリプル（ｄ、ａ、ｂ）であり、以下の通りに決定される。
【０１８０】
１．  Ａ＝（５３５９１＋Ｊ（Ｋ）・９９７）％Ｑ
２．  Ｂ＝１０２６７・（Ｊ（Ｋ）＋１）％Ｑ
３．  Ｙ＝（Ｂ＋Ｘ・Ａ）％Ｑ
４．  ｖ＝Ｒａｎｄ［Ｙ，０，２２０］
５．  ｄ＝Ｄｅｇ［ｖ］
６．  ａ＝１＋Ｒａｎｄ［ｙ，１，Ｌ’−１］
７．  ｂ＝Ｒａｎｄ［Ｙ，２，Ｌ’］
＜Ｂ．６  ＦＥＣ復号化の実現例＞
＜Ｂ．６．１  全般＞
このセクションは、この仕様に記載されているＭＳＣＲコードのための効率的な復号化アルゴリズムを記載する。各々がシンボルを符号化することを受信した注は、中間シンボルの間に均衡化の値と思われることができる。これらの連立方程式および中間シンボルの間の周知の予め符号化関係から、連立方程式を解くためのいかなるアルゴリズムも、中間シンボルおよびそれ故、ソースシンボルをうまく復号化できる。しかしながら、選択されるアルゴリズムは、復号化の計算効率に、大きな影響を及ぼす。
【０１８１】
＜Ｂ．６．２  ソースブロックの復号化＞
＜Ｂ．６．２．１  全般＞
復号器がそれが復号化するためにそうであるソースブロックの構造を知っていると仮定される。そして、シンボルサイズＴでありＫ個のシンボルをソースブロックに含む。
【０１８２】
セクションＢ．５に記載されているアルゴリズムから、ＭＳＣＲ復号器は合計数Ｌ＝Ｋ＋Ｓ＋Ｈを算出できる予め符号化シンボルの中で、そして、それらが復号化されるソースブロックからどのように生成されたかについて決定する。この説明において、復号化されるソースブロックのための受信された符号化しているシンボルが復号器に通過すると仮定される。さらに、この種の各々の符号化しているシンボルのために、数および排他論理和が符号化しているシンボルに等しい中間シンボルのセットが復号器に通過すると仮定される。ソースシンボルの場合、セクションＢ．５．２．２に記載されているソースシンボルトリプルは、各々のソースシンボルを与えるために概説する中間シンボルの数およびセットを指示する。
【０１８３】
Ｎ≧Ｋをソースブロックのための受信された符号化しているシンボルの数であるようにさせる。そして、Ｍ＝Ｓ＋Ｈ＋Ｎ。ＬビットマトリックスＡによる以下のＭは、復号化されるソースブロックのための復号器に通過する情報に由来できる。ＣはＬ個の中間シンボルの列ベクトルであって、Ｄは受信機（ＭシンボルでぶりのＳ＋ＨがＬＤＰＣおよびＨａｌｆシンボル（これらは、それ自身ＬＤＰＣおよびＨａｌｆシンボルおよびＬＤＰＣおよびＨａｌｆシンボルのためでない検査符号である）に対応する０値を有するシンボルである）にとって公知の値を有するＭシンボルの列ベクトルであるようにさせるようにさせる。そして、Ｍシンボルの残りのＮは、ソースブロックのための受信された符号化しているシンボルである。それから、ＡはＡ・Ｃ＝Ｄを満たすビットマトリックスである。ここで、ＧＦ［２］の上のマトリックス乗算を示す。一旦Ｃが複号化されるとインデックスｊに対応する中間シンボルが符号化のインデックスｉに対応するＬＤＰＣ、Ｈａｌｆまたは符号化しているシンボルにＸＯＲ演算される場合Ａ［ｉ，ｊ］＝１である。または、インデックスｉがＬＤＰＣまたはＨａｌｆシンボルおよびインデックスに対応する場合、ｊは同じＬＤＰＣまたはＨａｌｆシンボルに対応する。他の全てのｉおよびｊについて、Ａ［ｉ，ｊ］＝０である。
【０１８４】
ソースブロックが周知のＡからＣを復号化して、等しい復号化およびそれがそうであるＤはそのＣをクリアする復号化できるのときかつそのときに限ってＧＦ［２］はＬである。シンボルがシンボルが各々の行方不明のソースシンボルを得るためにＸＯＲ演算される中間シンボルの数およびセットを決定するためにトリプルにするソースを使用して得られることが可能である転送元をはずす。
【０１８５】
復号化Ｃの第一段階は、復号化予定を形成することになっている。このステップにおいて、Ｌ恒等行列によるＬに、Ａは、ガウス消去（列動作および列および行の並べ替えを使用する）を用いて、そして、Ｍ−Ｌ列を放棄した後に変換される。復号化予定はガウス消去処理の間、列動作および列および行の並べ替えのシーケンスを含んで、Ａに、そして、ＤからのＣの復号化が復号化予定の化成と並行して場所に持っていくことができるＤ．以外に依存するだけである、または、復号化が復号化予定に基づいてその後起こることができる。
【０１８６】
復号化予定およびＣの復号化の間の相関関係は、以下の通りである。まず最初にｃ［０］＝０，ｃ［１］＝  １．．．，ｃ［Ｌ−１］＝Ｌ−１およびｄ［０］＝０，ｄ［１］＝１．．．，ｄ［Ｍ−１］＝Ｍ−１である。
【０１８７】
復号化予定において、そしてＤ［ｄ［ｉ］］がＸＯＲ演算される復号プロセスシンボルにおいて、−Ａの各々の時間列ｉは、列ｉにＸＯＲ演算されるシンボルＤ［ｄ［ｉ’］］。
【０１８８】
復号化予定において、そしてｄ［ｉ］の値が値と交換される復号プロセスで−各々の時間列ｉは、列ｉと交換されるｄ［ｉ’］。
【０１８９】
復号化予定において、そしてｃ［ｊ］の値がｃ［ｊ’］の値と交換した復号プロセスで−各々の時間行ｊは、行ｊと交換される。
【０１９０】
この通信から、ソースブロックの復号化のシンボルの排他的論理和の合計数がガウス消去の段数動作（交換でない）であることは、明らかである。Ａがガウス消去の後のＬの恒等行列による。そして、最後のＭ−Ｌを廃棄した後のＬであるので、ＬシンボルＤ［ｄ［０］］，Ｄ［ｄ［１］］，．．．，Ｄ［ｄ［Ｌ−１］］がＬシンボルＣ［ｃ［０］］，Ｃ［ｃ［１］］，．．．，Ｃ［ｃ［Ｌ−１］］の値であることは復号化に成功したことは明白である。
【０１９１】
復号化が成功しているのであるにせよ、ガウス消去が復号化予定には関係がない形式に実行される命令。しかしながら、復号化の速度は、重く、ガウス消去が実行されるオーダーに依存する。（さらにまた、Ａのまばらな表現を維持することは重要である。但し、これはここで記載されていない）。このセクションの剰余は、比較的効率的であるガウス消去が実行されることができた命令を記載する。
【０１９２】
＜Ｂ．６．２．２  第１段階＞
マトリックスＡが下位行列に仕切られて、概念的にあるガウス消去の第一段階。部分行列サイズは、０まで初期化される非負整数ｉおよびｕによって、パラメータで表される。Ａのサブマトリックスは、以下の通りである
（１）  Ｉが第１のｉ列および第１のｉ行の交差によって、定めた部分行列。これは、位相における各々のステップ終了後の恒等行列である。
（２）  第１のｉ列および第１のｉ行以外はおよび最後のｕ行の交差により定義される部分行列。この部分行列の全てのエントリは、ゼロである。
（３）  第１のｉ行および第１のｉ列以外はの交差により定義される部分行列。この部分行列の全てのエントリは、ゼロである。
（４）  全ての列および最後のｕ行の交差により定義される部分行列Ｕ。
（５）  部分行列Ｖは、第１のｉ行以外はおよび最後のｕ行および第１のｉ列以外はの交差によって、形をなした。
【０１９３】
図２２は第一段階の初めのＡ．対各々のステップの＝  Ａ．の下位行列を例示する、列のＡは選択される。Ｖの構造により定義される以下のグラフが、Ａのどの列が選択されるか決定する際に使われる。Ｖを横切る行は、グラフのノードである。そして、正確にＶの２つのものを有する列は、２つのものの位置の２つの行（ノード）を接続するグラフの端である。グラフのノード／刃の各対間の経路があるように、このグラフのＡ構成要素はノード（行）および端（列）の最大セットである。構成要素のサイズは、構成要素のノード数（行）である。
【０１９４】
Ｌステップが、最高でも第一段階にある。ｉ＋ｕ＝Ｌとき、位相は、うまく終える、すなわちＶおよびＶより上の全ゼロ部分行列が消える。そして、Ａは、含むＩ、下記の全０部分行列Ｉ、そして、Ｕ．失敗していくつかでＶの前のステップがそこで消える場合、失敗を復号化する際の位相両端部は、そのステップで選択をするＶのゼロでない列でない。各々のステップにおいて、Ａの列は、以下の通りに選択される。Ｖの全てのエントリがゼロである場合、列は選択されない、そして、復号化は失敗する。Ａの少なくとも一つの列が正確にＶのｒものを有するように、ｒを最小限の整数であるようにさせる。ｒ＃２がそれから正確に最小限のオリジナル程度を有するＶのｒものを有する列を全てのこの種の列から選択する場合。ｒ＝２がそれから正確にＸにより定義されるグラフの最大サイズ構成要素の一部であるＶの２つのものを有する列を選択する場合、列がこのステップで選択されたあと、選ばれた列がＶと交差する第一系列であるために、Ｖを横切るＡの第一系列は選ばれた列と交換される。選ばれた列のｒのうちの１つがＶの第一塔に現れるために、そして、残りのｒ−１がＶの最後の行に現れるために、Ｖを横切るものの中のＡの行は追加注文される。
【０１９５】
それから、選ばれた列は、Ｖの第一のものを有する選ばれた列の下で、Ａの全ての他の列にＸＯＲ演算される。
【０１９６】
最後に、ｉは１時までに増加する。そして、ｕはｒ−１まで増加する。そして、それはステップを完了する。
【０１９７】
＜Ｂ．６．２．３  第２段階＞
部分行列Ｕは、更に仕切られる最初のｉ列、Ｕｕｐｐｅｒ、そして、残りのＭ−ｉ列、Ｕｌｏｗｅｒ。ガウス消去は、その順位がｕ（復号化失敗）より少ないと決定するかｕがこぐ第一が恒等行列（第二段階の成功）であるマトリックスにそれを変換するために、Ｕｌｏｗｅｒ上の第二段階において、実行される。ｕ恒等行列Ｉｕによって、このｕを呼ぶ。Ｕｌｏｗｅｒ−Ｉｕと交差するＡのＭ−Ｌ列は、放棄される。この位相の後、Ａは、Ｌ列およびＬ行を有する。
【０１９８】
＜Ｂ．６．２．４  第３段階＞
第二段階の後、Ｌ恒等行列によって、ＬにＡを変換し終わるために外へゼロに合うことを必要とするＡの唯一の部分は、Ｕｕｐｐｅｒである。部分行列Ｕｕｐｐｅｒの段数ｉは、通常、Ｕｕｐｐｅｒの行ｕの数非常に大きい。効率的にＵｕｐｐｅｒ（以下の前計算マトリックスＵ）からのゼロまで』、第三段階およびそれからＵのＩｕに基づいて計算される』が、Ｕｕｐｐｅｒからゼロまで第四段階において、使われる。Ｉｕの列が仕切られるｕは、各々（ｕ／８）グループの８本の列を張る。それから、８本の列の各群のために、８本の列の全てのゼロ以外の組合せは、計算される。そして、２８に結果としてなる−１＝２５５列（これは、２８−８−１＝２４７により行われることができるグループにつき列の中で排他論理和は、ハミング重みの組合せからＩｕに現れるものがある必要を行わないことを−計算する）。このように、結果として生じる前計算マトリックスＵは、．２５５がこぐｃｅｉｌ（ｕ／８）およびｕ行を有する。そのＵを強調する形式的にマトリックスＡの一部でない、しかし、Ｕｕｐｐｅｒ−Ｂ．からのゼロに対する第四段階の使われる。
＜Ｂ．６．２．５  第４段階＞
列にＡの各々の第１のｉ列間の、Ｕｕｐｐｅｒの８つの行エントリのセットが全てゼロ（そして前計算マトリックスＵの列）でない場合この列のＵｕｐｐｅｒ部分行列の８つの行の各群間の、８つの行のパターンがそうであるマッチは、列にＸＯＲ演算した。このようにねらいを定める排他的論理和を犠牲にした列のそれらの８つの行が、Ｕの中で外に。
【０１９９】
この位相ＡがＬ恒等行列および完全な復号化によるＬであったあと、予定はうまく形成された。それから、シンボルを符号化して公知の対応する復号化を含んでいる排他的論理和は、復号化予定に基づいて中間シンボルを回復するために完成していることがありえる。
【０２００】
全てのソースシンボルと関連するトリプルは、Ｂ．５．２．２に従って計算される。受信されたソースシンボルのためのトリプルが、復号化において、使われる。行方不明のソースシンボルのためのトリプルは、どの中間シンボルが行方不明のソースシンボルを回復するためにＸＯＲ演算されることを必要とするかについて決定するために用いる。
【０２０１】
＜マルチステージ符号の特性＞
上述の多くの例において、入出力シンボルはビットの同数のための９８を符号化する。そして、各々の出力シンボルは１つのパケット（完全に受信されるか完全に消失する輸送の装置であるパケット）において、配置される。いくつかの実施形態では、各々のパケットがいくつかの出力シンボルを含むために、通信システムは変更を加えられる。多くの要因に基づいて、出力シンボル値のサイズは、それから、ストリームのファイルまたはブロックを入力シンボルに最初に分割する際の入力シンボル値のサイズで測定されるサイズに対するセットである。復号プロセスは基本的に不変のままである。但し、次の場合は除く−各々のパケットが受信されながら、出力シンボルは束に到着する。
【０２０２】
入力シンボルおよび出力シンボルサイズの設定は、通常、ストリームのファイルまたはブロックのサイズおよび出力シンボルが送信されることになっている通信システムにより口述される。たとえば、通信システムが少しのデータを定義済みサイズのパケットまたは他の方法のグループビットに分類する場合、シンボルサイズの計画はパケットまたはグループ化サイズから開始される。そこから、デザイナーはどれくらいの出力シンボルが１つのパケットかグループにおいて、担持されるかについて決定する。そして、それは出力シンボルサイズを決定する。説明を簡単にするため、デザイナーは入力シンボルサイズを出力シンボルサイズに等しくたぶん設定する、しかし、入力データが異なる入力シンボルサイズをより便利にする場合、それが使うことができる。
【０２０３】
上記の符号化プロセスは、ストリームのオリジナルファイルまたはブロックに基づいて出力シンボルを含んでいるパケットのストリームを作成する。ストリームの各々の出力シンボルは他の全ての出力シンボルの中でそれぞれに生成される。そして、作成されることができる出力シンボルの数上の下であるか上の跳躍がない。キーは、各々の出力シンボルを伴う。そのキーおよびストリーム（出力シンボルの値を決定する）の入力ファイルまたはブロックの若干の内容。連続的に生成された出力シンボルは連続的なキーを有する必要はない、そして、それがランダムに好ましい使用目的によってはキーのシーケンスを生成するか、または疑似ランダム的にシーケンスを生成する。
【０２０４】
マルチステージ復号化は入力シンボル値、それからファイルまたはブロックが、非常に高い確率によって、平均上のＫ＋Ａ出力シンボルからの改装本でありえながら、ストリームのオリジナルファイルかブロックがＫ等しい大きさの入力シンボルおよび各々の出力シンボル値に分割されることができるかどうかは同じ長さである特性を有する。ここで、ＡはＫと比較して小さい。たとえば、上に導入される重み分布のために、Ｋが１９，６８１大きい場合、Ａの値がａ＊Ｋを上回るという確率は多くても１０−１２である。そして、それはＫのいかなる値のためもの多くても１０−１０である。特定の出力シンボルがランダムであるか疑似乱数のオーダーにおいて、生成されるので、移動中の特定の出力シンボルの損失がランダムとみなされて、そして、若干の小さい相違は、入力ファイルを回復するために必要な出力シンボルまたはブロックの実数値の中に存在する。場合によっては。ここで受信機が出力パケットの一つ以上の転送元からより多くのパケットを集めることができる場合、パケットが十分に全ての入力ファイルまたはブロック、入力ファイルまたはブロックを復号化しないためにそうであるＫ＋Ａの特定のコレクションはまだ回収可能である。
【０２０５】
出力シンボルの数が１の解答により制限されるだけであるので、Ｋ＋Ａより適切に、出力シンボルを、生成できる。たとえば、Ｉが３２ビット数である場合、４０億の異なる出力シンボルを、生成できるのに、ストリームのファイルまたはブロックはＫ＝５０，０００入力シンボルを含むことができた。ある用途では、少数のそれらの４０億の出力シンボルだけは生成されることができて、送信されることができる。そして、それはストリームの入力ファイルまたはブロックが可能な出力シンボルの非常に小さい割合いを有する改装本でありえるという近い確信および入力ファイルまたはブロックがＫ出力シンボル（入力シンボルサイズが出力シンボルサイズと同様であると仮定する）よりわずかに改装本でありえるかなりの確率である。
【０２０６】
ある用途では、それは、受け入れられてもよいために入力シンボルの全てを復号化するか、または、比較的低い確率によって、以外、入力シンボルの全てを復号化することが可能なことが可能である。この種のアプリケーションにおいて、受信機は、Ｋ＋Ａ出力シンボルを受信した後に入力シンボルの全てを復号化することを試みるのを止めることができる。または、受信機は、Ｋ＋Ａ出力シンボル未満の受信の後で出力シンボルを受信するのを止めることができる。ある用途では、受信機は、Ｋ以下出力シンボルを受信しさえすることができるだけである。このように、本本発明の若干の実施例で、所望の精度が全ての入力シンボルの完全回復である必要があるというわけではないと理解されることになっている。
【０２０７】
更に、不完全な回復が受け入れられる若干のアプリケーションで、データが入力シンボルの全てが回復されることができるというわけでないようであるものまたはこの種のその完全回復を符号化されることができること、入力シンボルは、そうする必要とする多くのより多くの出力シンボルの中で受信入力シンボルの数である。この種の符号化は、通常、より計算でない能力を必要として、このように、符号化の計算能力を減少させる受け入れられる方法であってもよい。  上記の図のさまざまな機能ブロックがハードウェアおよび／またはソフトウェアの組合せにより行うことができることが、よく理解されていることになっている。そして、いくつかまたはいくつかのブロックの相関性の全てがそうすることができる特殊作成のそれは、ある合成。同様に、また、本願明細書において、記載されているさまざまな方法がハードウェアおよび／またはソフトウェアの組合せにより行うことができると理解されることになっている。
【０２０８】
前記説明は、例示的であり限定的でない。本発明の多くのバリエーションは、この開示の再調査に応じて、従来技術において、技術のそれらにとって明らかになる。本発明の範囲は、従って、前記説明に関して決定されてはならない。その代わりに等価物のそれらの完全な範囲とともに、添付の請求の範囲に関して決定されなければならない。
【０２０９】
＜付録Ａ．  システマチックインデックスＪ（Ｋ）の値＞
Ｋの値それぞれについて、ソースシンボルトリプル群（ｄ［０］，ａ［０］，ｂ［０］），．．．，（ｄ［Ｌ−１］，ａ［Ｌ−１］，ｂ［Ｌ−１］）がＬ個の中間シンボルが固有となるよう指定可能な特性を有するように、システマチックインデックスＪ（Ｋ）は設計されている。すなわち、セクションＢ．５．２．４．２のマトリックスＡは最大の階数（ランク）であり逆変換可能な特性を有するように設計されている。以下は、４から８１９２が含まれるＫの値に対応するシステマチックインデックスのリストである。値の順序は、読書の順序と同じである。すなわち、第１行の最初の数値から第１行の最後の数値、そして、第２行の最初の数値に続き、以下同様である。
2007536834.tif 000003
2007536834.tif 000004
2007536834.tif 000005
2007536834.tif 000006
2007536834.tif 000007
2007536834.tif 000008
2007536834.tif 000009
2007536834.tif 000010
2007536834.tif 000011
＜付録Ｂ．１  テーブルＶ０の値＞
これらの値は、上述の明細書のセクションＢ．５．４．１で述べられたテーブルＶ０の値の例示的なセットを示している。各々の成分は１０進数表記の３２ビット整数である。値の順序は、第１カラムの最上段から第１カラムの最下段、そして、第２カラムの最上段に続き、以下同様である。
2007536834.tif 000012
＜付録Ｂ．２  テーブルＶ１の値＞
これらの値は、上述の明細書のセクションＢ．５．４．１で述べられたテーブルＶ１の値の例示的なセットを示している。各々の成分は１０進数表記の３２ビット整数である。値の順序は、第１カラムの最上段から第１カラムの最下段、そして、第２カラムの最上段に続き、以下同様である。
2007536834.tif 000013
【図面の簡単な説明】
【０２１０】
【図１】本発明の一実施例に従う通信システムのブロック図である。
【図２】本発明の一実施例に従う符号器のブロック図である。
【図３】本発明の一実施例に従う冗長シンボルを生成する方法の簡略ブロック図である。
【図４】本発明の一実施例に従うスタティック符号器の基本操作の簡略ブロック図である。
【図５】本発明の一実施例に従うダイナミック符号器の簡略ブロック図である。
【図６】本発明の一実施例に従うダイナミック符号器の基本操作の簡略ブロック図である。
【図７】本発明の一実施例に従うスタティック符号器の簡略ブロック図である。
【図８】本発明の一実施例に従うスタティック符号器の基本操作の簡略ブロック図である。
【図９】一特定実施例に従うスタティック符号器の符号化パラメータを算出する方法の簡略図である。
【図１０】本発明の他の実施例に従うスタティック符号器の簡略フローチャートである。
【図１１】本発明の一実施例に従う復号器の簡略ブロック図である。
【図１２】本発明の一実施例に従う復号器の動作の簡略フローチャートである。
【図１３】本発明の他の実施例に従う復号器の動作の簡略フローチャートである。
【図１４】本発明のさらにもう一つの実施例に従う復号器の動作の簡略フローチャートである。
【図１５】本発明の一実施例に従うダイナミック復号器の簡略ブロック図である。
【図１６】本発明の一実施例に従うスタティック復号器の簡略ブロック図である。
【図１７】サブシンボル写像からのソースシンボルを示す図である。
【図１８】さまざまなファイルサイズのファイルのダウンロードパラメータの可能な設定を示す図である。
【図１９】さまざまなソースブロックサイズのストリーミングパラメータの可能な設定を示す図である。
【図２０】ソースおよび中間シンボルとの関係を示すマトリックスの形式を示す図である。
【図２１】度数生成器の度数分布を示す図である。
【図２２】復号化に使用可能なマトリックスＡの形式を示す図である。
【図１】
2007536834.tif 000014
【図２】
2007536834.tif 000015
【図３】
2007536834.tif 000016
【図４】
2007536834.tif 000017
【図５】
2007536834.tif 000018
【図６】
2007536834.tif 000019
【図７】
2007536834.tif 000020
【図８】
2007536834.tif 000021
【図９】
2007536834.tif 000022
【図１０】
2007536834.tif 000023
【図１１】
2007536834.tif 000024
【図１２】
2007536834.tif 000025
【図１３】
2007536834.tif 000026
【図１４】
2007536834.tif 000027
【図１５】
2007536834.tif 000028
【図１６】
2007536834.tif 000029
【図１７】
2007536834.tif 000030
【図１８】
2007536834.tif 000031
【図１９】
2007536834.tif 000032
【図２０】
2007536834.tif 000033
【図２１】
2007536834.tif 000034
【図２２】
2007536834.tif 000035
【手続補正書】
【提出日】平成18年12月6日(2006.12.6)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００７
【補正方法】変更
【補正の内容】
【０００７】
データ転送のために使用するパケットプロトコルの場合、パケット網を通じて送信されるファイル、ストリームまたは他のデータブロックは等しいサイズ入力シンボルに仕切られ、入力シンボルは連続的なパケットとして配置される。入力シンボルが実際にビットストリームに分解されるか否かに関わらず、入力シンボルの”サイズ”はビット単位で測定することができる。そして、入力シンボルが２Ｍ個のシンボルのアルファベットから選択される場合、入力シンボルはＭビットのサイズを有する。この種のパケットベースの通信システムにおいて、パケットに基づいた符号体系が適切である。指定された受け手がネットワークによる消去が発生したにもかかわらずオリジナルファイルの正確なコピーを回復可能な場合、ファイル転送は信頼性が高いと呼ばれる。指定された受け手がネットワークによる消去が発生したにもかかわらずタイムリーな方法でストリーム各部の正確なコピーを回復可能な場合、ストリーム転送は信頼性が高いと呼ばれる。また、ファイルまたはストリームの一部が回復可能でない、または、ストリーミングにおいてストリームの一部がただちに回復可能ではない場合などには、ファイル転送およびストリーム転送は信頼性の無いものになり得る。パケット損失は、散発的な輻輳の発生によりルータのバッファリングメカニズムが処理限界に達し入力パケットが強制的にドロップされることにより生じる。そのため、転送中の消去発生に対する保護について多くの研究がなされてきた。
【手続補正２】
【補正対象書類名】明細書
【補正対象項目名】００３７
【補正方法】変更
【補正の内容】
【００３７】
いくつかの実施形態において、マルチステージ符号化を使用してファイルまたはストリームを送信する、とは、入力シンボルを入力ファイルまたはストリームのブロックからの生成、形成または抽出、冗長シンボルの計算、入力および冗長シンボルから１つ以上の出力シンボルへの符号化（各々の出力シンボルは、各々に対応するキーに基づいて、他の全ての出力シンボルと独立に生成される）、チャネルを介した１つ以上の受け側への出力シンボルの送信を含み得る。さらに、いくつかの実施形態において、マルチステージ符号化を使用して入力ファイルまたはストリームのブロックのコピーを受信する（そして再構築する）、とは、１つ以上のデータストリームからの出力シンボルのいくつかのセットあるいはサブセットの受信、および、受信した出力シンボルの値およびキーからの入力シンボルの復号化を含み得る。
【手続補正３】
【補正対象書類名】図面
【補正対象項目名】図１
【補正方法】変更
【補正の内容】
【図１】
2007536834.tif 000036
【国際調査報告】
2007536834.tif 000037
2007536834.tif 000038