(57)【要約】基地局から送信された情報パケットを受信する機能と、複数の受信端末で情報を共有するためのローカルネットワークに接続する通信機能と、パリティパケットを生成する機能と、生成したパリティパケットと生成元パケットすべての識別情報とをローカルネットワークにマルチキャストする機能と、他の端末がマルチキャストしたパリティパケットと生成元パケットすべての識別情報とをローカルネットワークを通じて受信する機能と、受信したパリティパケットと生成元パケットすべての識別情報とを記憶部に保存する機能と、パリティパケットと生成元パケットすべての識別情報とを使用して欠落しているパケットを回復させる機能とを備える。図３
2017002291.tif 000002
【特許請求の範囲】
【請求項１】
基地局から送信された情報パケットを受信する機能と、
複数の端末間で情報を共有するためのローカルネットワークに接続する通信機能と、
パリティパケットを生成する機能と、
生成した前記パリティパケットと生成元パケットすべての識別情報とを前記ローカルネットワークにマルチキャストする機能と
を備える通信装置。
【請求項２】
基地局から送信された情報パケットを受信する機能と、
他の端末がマルチキャストした前記パリティパケットと生成元パケットすべての識別情報とを前記ローカルネットワークを通じて受信する機能と、
受信した前記パリティパケットと生成元パケットすべての識別情報とを記憶部に保存する機能と、
前記パリティパケットと生成元パケットすべての識別情報とを使用して欠落しているパケットを回復させる機能と
を備える通信装置。
【請求項３】
基地局から送信された情報パケットを受信する機能と、
複数の端末間で情報を共有するためのローカルネットワークに接続する通信機能と、
パリティパケットを生成する機能と、
生成した前記パリティパケットと生成元パケットすべての識別情報とを前記ローカルネットワークにマルチキャストする機能と、
他の端末がマルチキャストした前記パリティパケットと生成元パケットすべての識別情報とを前記ローカルネットワークを通じて受信する機能と、
受信した前記パリティパケットと生成元パケットすべての識別情報とを記憶部に保存する機能と、
前記パリティパケットと生成元パケットすべての識別情報とを使用して欠落しているパケットを回復させる機能と
を備える通信装置。
【請求項４】
正しく受信、もしくは回復できた情報パケットの中から複数の情報パケットを選択し、選択された前記情報パケット対して誤り訂正符号化を行い、単数もしくは複数の前記パリティパケットを生成する請求項１に記載の通信装置。
【請求項５】
正しく受信、もしくは回復できた情報パケットの中から複数もしくは単数の情報パケットを選択し、選択された前記情報パケットのビット毎の排他的論理和により、前記パリティパケットを生成する請求項１に記載の通信装置。
【請求項６】
前記パリティパケットの生成に用いる単数もしくは複数の生成元パケットをランダムに選択する請求項５に記載の通信装置。
【請求項７】
複数または単数の情報パケットおよび既に生成されたパリティパケットを選択し、ビット毎の排他的論理和により前記パリティパケットを生成する請求項１に記載の通信装置。
【請求項８】
前記生成元パケットをランダムに選択する際に、すでに選択された回数に応じて、選択される確率を変える請求項７に記載の通信装置。
【請求項９】
送信済みパリティパケットの生成元情報のみをローカルネットワーク上でマルチキャスト伝送する請求項１に記載の通信装置。
【請求項１０】
生成元情報パケットの識別情報として、情報パケット内のシーケンス番号もしくは、タイムスタンプ値を用いる請求項１に記載の通信装置。
【請求項１１】
生成元情報パケットの識別情報を、ＭＰＥＧ２−ＴＳのＰＣＲ値から生成する請求項１に記載の通信装置。
【請求項１２】
生成元情報パケットの識別情報を、ＭＰＥＧ２−ＴＳパケットヘッダのコンティニュイティカウンタから生成する請求項１に記載の通信装置。
【請求項１３】
生成元情報パケットの識別情報を、ＭＰＥＧ２−ＴＳ内に多重されている複数のプログラムのＰＣＲ値と、複数のＰＩＤのコンティニュイティカウンタを組み合わせて生成する請求項１に記載の通信装置。
【請求項１４】
生成元パリティパケットの識別情報を、パリティパケット生成装置固有の情報と、その端末で既に生成されたパリティパケット数より生成する請求項７に記載の通信装置。
【請求項１５】
受信パリティパケットの生成元パケットと同一の識別情報を持つパケットを記憶部から検索し、生成元パケットの内、欠落パケットが一つだけであれば、受信パリティパケットと他の生成元パケットの排他的論理和により、消失パケットを回復する請求項１に記載の通信装置。
【請求項１６】
基地局からマルチキャストまたはブロードキャストされた情報パケットを受信する複数の端末と、前記複数の端末同士で情報を共有するためのネットワークとを有し、
前記複数の端末が複数回にわたりパリティパケットをお互いに送受信して共有することにより、各端末で正常に受信できなかった情報パケットを回復するようにした通信システム。
【請求項１７】
前記複数の端末の内、１つもしくは複数の端末はパリティパケットの生成、送信のみを行う第１の通信装置であり、それ以外の複数の端末は第２の通信装置であり、
前記第１の通信装置は、
基地局から送信された情報パケットを受信する機能と、
複数の端末間で情報を共有するためのローカルネットワークに接続する通信機能と、
前記パリティパケットを生成する機能と、
生成した前記パリティパケットと生成元パケットすべての識別情報とを前記ローカルネットワークにマルチキャストする機能とを備え、
前記第２の通信装置は、
前記基地局から送信された情報パケットを受信する機能と、
前記第１の通信装置がマルチキャストした前記パリティパケットと前記生成元パケットすべての識別情報とを前記ローカルネットワークを通じて受信する機能と、
受信した前記パリティパケットと前記生成元パケットすべての識別情報とを記憶部に保存する機能と、
前記パリティパケットと前記生成元パケットすべての識別情報とを使用して欠落しているパケットを回復させる機能とを備える通信装置である請求項１６に記載の通信システム。
【請求項１８】
前記複数の端末のそれぞれは、
基地局から送信された情報パケットを受信する機能と、
複数の受信端末で情報を共有するためのローカルネットワークに接続する通信機能と、
パリティパケットを生成する機能と、
生成した前記パリティパケットと前記生成元パケットすべての識別情報とを前記ローカルネットワークにマルチキャストする機能と、
他の端末がマルチキャストした前記パリティパケットと前記生成元パケットすべての識別情報とを前記ローカルネットワークを通じて受信する機能と、
受信した前記パリティパケットと前記生成元パケットすべての識別情報とを記憶部に保存する機能と、
前記パリティパケットと前記生成元パケットすべての識別情報とを使用して欠落しているパケットを回復させる機能と
を有する請求項１６に記載の通信システム。
【請求項１９】
複数の端末が基地局からマルチキャストまたはブロードキャストされた情報パケットを受信し、ネットワークを介して前記複数の端末同士で情報を共有し、
前記複数の端末が複数回にわたりパリティパケットをお互いに送受信して共有することにより、各端末で正常に受信できなかった情報パケットを回復するようにした通信方法。
【請求項２０】
基地局から送信された情報パケットを受信するステップと、
複数の端末間で情報を共有するためのローカルネットワークに接続する通信ステップと、
パリティパケットを生成するステップと、
生成した前記パリティパケットと生成元パケットすべての識別情報とを前記ローカルネットワークにマルチキャストするステップと、
他の端末がマルチキャストした前記パリティパケットと生成元パケットすべての識別情報とを前記ローカルネットワークを通じて受信するステップと、
受信した前記パリティパケットと生成元パケットすべての識別情報とを記憶部に保存するステップと、
前記パリティパケットと生成元パケットすべての識別情報とを使用して欠落しているパケットを回復させるステップと
を有する通信方法をコンピュータに対して実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は、放送や携帯無線通信に適用される通信装置、通信システム、通信方法およびプログラムに関する。
【背景技術】
【０００２】
通信の質を向上させるために、複数のアンテナで受信した同一の無線信号に関して、電波状況の良いアンテナの信号を優先的に用いる空間ダイバーシティ方式（アンテナ選択方式）が知られている。また、受信できなかったデータを、基地局に再送信させる方式も知られている。【０００３】
これらの方式では、基地局と受信機との間の回線が確保されていることが必要とされる。そのため、回線の確保が困難な場合には、これらの方式を使用することができない。このような問題に対処するために、複数の受信機がネットワークを構成し、複数の受信機間で放送データを共有し、ネットワークを介して他の受信機から受信できなかったデータを収集する方式が提案されている（特許文献１参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−１４１８５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載の方式は、下記の問題点がある。
第１に制御が複雑である。すなわち、パケットを再構成するために必要な管理情報と、記憶装置に蓄積されたパケットの所有情報とにより不足するパケットを把握し、無線受信機間で不足パケットを送受信する際のやりとりを制御することが必要となる。
第２に、データ共有のために使用するローカルネットワークの通信量が大きい。すなわち、どの端末が不足パケットを所有しているかといった情報を伝達する必要があり、その分ローカルネットワークでの通信が必要となってしまう。各端末の不足パケットをそれぞれ伝送する必要があり、ローカルネットワークの通信量を必要としてしまう。
第３に端末数に制限が生じる。すなわち、端末が増えると当然通信量が増えるため、ローカルネットワークの通信容量に応じて、端末数に制限が生じる。【０００６】
したがって、本開示の目的は、これらの問題点が解消できる通信装置、通信システム、通信方法およびプログラムを提供することにある。
【課題を解決するための手段】
【０００７】
上述の課題を解決するために、本開示は、基地局から送信された情報パケットを受信する機能と、
複数の端末間で情報を共有するためのローカルネットワークに接続する通信機能と、
パリティパケットを生成する機能と、
生成したパリティパケットと生成元パケットすべての識別情報とをローカルネットワークにマルチキャストする機能と
を備える通信装置である。
本開示は、基地局から送信された情報パケットを受信する機能と、
他の端末がマルチキャストしたパリティパケットと生成元パケットすべての識別情報とをローカルネットワークを通じて受信する機能と、
受信したパリティパケットと生成元パケットすべての識別情報とを記憶部に保存する機能と、
パリティパケットと生成元パケットすべての識別情報とを使用して欠落しているパケットを回復させる機能と
を備える通信装置である。
本開示は、基地局から送信された情報パケットを受信する機能と、
複数の端末間で情報を共有するためのローカルネットワークに接続する通信機能と、
パリティパケットを生成する機能と、
生成したパリティパケットと生成元パケットすべての識別情報とをローカルネットワークにマルチキャストする機能と、
他の端末がマルチキャストしたパリティパケットと生成元パケットすべての識別情報とをローカルネットワークを通じて受信する機能と、
受信したパリティパケットと生成元パケットすべての識別情報とを記憶部に保存する機能と、
パリティパケットと生成元パケットすべての識別情報とを使用して欠落しているパケットを回復させる機能と
を備える通信装置である。
本開示は、基地局からマルチキャストまたはブロードキャストされた情報パケットを受信する複数の端末と、複数の端末同士で情報を共有するためのネットワークとを有し、
複数の端末が複数回にわたりパリティパケットをお互いに送受信して共有することにより、各端末で正常に受信できなかった情報パケットを回復するようにした通信システムである。
本開示は、複数の端末が基地局からマルチキャストまたはブロードキャストされた情報パケットを受信し、ネットワークを介して複数の端末同士で情報を共有し、
複数の端末が複数回にわたりパリティパケットをお互いに送受信して共有することにより、各端末で正常に受信できなかった情報パケットを回復するようにした通信方法である。
本開示は、
基地局から送信された情報パケットを受信するステップと、
複数の端末間で情報を共有するためのローカルネットワークに接続する通信ステップと、
パリティパケットを生成するステップと、
生成したパリティパケットと生成元パケットすべての識別情報とをローカルネットワークにマルチキャストするステップと、
他の端末がマルチキャストしたパリティパケットと生成元パケットすべての識別情報とをローカルネットワークを通じて受信するステップと、
受信したパリティパケットと生成元パケットすべての識別情報とを記憶部に保存するステップと、
パリティパケットと生成元パケットすべての識別情報とを使用して欠落しているパケットを回復させるステップと
を有する通信方法をコンピュータに対して実行させるプログラムである。
【発明の効果】
【０００８】
少なくとも一つの実施形態によれば、各端末が他の端末の欠落情報を知る必要はなく、それらの制御情報を伝送する必要がない。さらに、受信できているデータからパリティパケットを生成し、各端末へマルチキャスト伝送する。各端末での誤りや欠落部分が確率的に異なるため、ひとつのパリティパケットによって複数の端末の誤り・欠落の回復を同時に行うことができる。したがって、ローカルネットワークの通信容量の消費が少ない。さらに、端末各々の消失データを互いに知る必要がなく、かつ、パリティパケットにより複数の端末において同時に回復機能を果たすことが可能である。また、マルチキャスト伝送を用いてパリティパケットを共有することにより、全端末が同一のパリティパケットを同時に受信し、同時に消失パケットの回復が可能であることから、ローカルネットワークの負荷が端末数に依存せず、従来技術のようにローカルネットワークの通信容量に応じて端末数が制限されることが無い。なお、ここに記載された効果は必ずしも限定されるものではなく、この発明中に記載されたいずれの効果であってもよい。また、以下の説明における例示された効果によりこの発明の内容が限定して解釈されるものではない。
【図面の簡単な説明】
【０００９】
【図１】本開示のシステムの説明に使用するブロック図である。
【図２】本開示の第１の実施の形態の全体構成を示すブロック図である。
【図３】全体構成と端末の構成を示すブロック図である。
【図４】本開示の動作を説明するための略線図である。
【図５】本開示の動作を説明するための略線図である。
【図６】本開示の情報パケットの選択率を更新する効果を説明するためのグラフである。
【図７】本開示の第２の実施の形態における端末の構成のブロック図である。
【図８】トランスポートストリームを説明するための略線図である。
【図９】識別情報の付加の方法の一例を説明するための略線図である。
【図１０】情報パケット記憶部の記憶領域を説明するための略線図である。
【図１１】パリティパケット記憶部の記憶領域を説明するための略線図である。
【図１２】チェックノード記憶部の記憶領域を説明するための略線図である。
【図１３】タナーグラフを説明するための略線図である。
【図１４】タナーグラフと対応する情報パケット記憶部を説明するための略線図である。
【図１５】タナーグラフと対応するチェックノード記憶部を説明するための略線図である。
【図１６】タナーグラフと対応するパリティパケット記憶部を説明するための略線図である。
【図１７】エンコード処理部の処理を説明するためのフローチャートである。
【図１８】パリティ生成に使用する情報パケットの選択範囲を説明するための略線図である。
【図１９】パリティパケット伝送フォーマットを説明するための略線図である。
【図２０】パリティパケット入力部の処理を説明するためのフローチャートである。
【図２１】パリティパケット接続処理を説明するためのフローチャートである。
【図２２】情報パケット接続処理を説明するためのフローチャートである。
【図２３】デコード処理部の処理を説明するためのフローチャートである。
【図２４】チェックノードキューを説明するための略線図である。
【図２５】チェックノード処理を説明するためのフローチャートである。
【図２６】エンコード処理のタイミングを説明するためのタイミングチャートである。
【図２７】コーディングベクタ情報を説明するための略線図である。
【図２８】コーディングベクタ情報受信処理を説明するためのフローチャートである。
【図２９】本開示を説明するためのタナーグラフである。
【図３０】本開示を説明するためのタナーグラフである。
【図３１】本開示を説明するためのタナーグラフである。
【図３２】本開示を説明するためのタナーグラフである。
【図３３】本開示を説明するためのタナーグラフである。
【図３４】本開示を説明するためのタナーグラフである。
【図３５】本開示を説明するためのタナーグラフである。
【発明を実施するための形態】
【００１０】
以下に説明する実施の形態は、本開示の好適な具体例であり、技術的に好ましい種々の限定が付されている。しかしながら、本開示の範囲は、以下の説明において、特に本開示を限定する旨の記載がない限り、これらの実施の形態に限定されないものとする。
なお、本開示の説明は、下記の順序にしたがってなされる。
＜１．本開示の概要＞
＜２．第１の実施の形態＞
＜３．第２の実施の形態＞
＜４．変形例＞
【００１１】
＜１．本開示の概要＞
図１を参照して本開示の概要について説明する。基地局（放送局または携帯基地局）１が情報データ例えば放送データをマルチキャストまたはブロードキャストする。複数例えば４個の無線通信の通信装置である端末２ａ，２ｂ，２ｃおよび２ｄ（これらの端末を特に区別する必要がない場合は単に端末２と称する）が放送データの情報パケットを受信する。上記、基地局からのマルチキャストまたはブロードキャストは、端末２全てに対して同一の放送データを基地局からユニキャストすることによっても実現される。端末２の例としては、多機能携帯電話（スマートフォン）や、セットトップボックス、テレビ受像機等である。
【００１２】
端末２は、正しく受信、もしくは回復できた情報パケットの中から複数もしくは単数の情報パケットを選択し、選択された情報パケットのビット毎の排他的論理和により、パリティパケットを生成する。生成されたパリティパケットと、生成元パケットの識別情報をローカルネットワーク３上でマルチキャストして、複数の端末２間で、パリティパケットを共有する。ローカルネットワーク３は、マルチキャスト伝送の可能なネットワークであり、例えばＩＰ(Internet Protocol)マルチキャスト伝送が可能な有線ＬＡＮ（Local Area Network）や無線ＬＡＮ(Local Area Network)である。
【００１３】
各端末では、刻々と情報パケットを受信しているが、フェージング等による受信状況の違いにより、各端末では確率的に異なる情報パケットで誤りまたは消失（以下単に消失と称する）が生じる。このような消失を回復するために、異なる端末２間で情報パケットから生成されたパリティを互いに共有する。一つのパリティパケットであっても、複数の端末２の異なる情報データに対して回復機能を果たす可能性がある。そのようなパリティパケットを複数共有することによって、高い確率で消失した情報パケットが回復可能となる。
【００１４】
パリティパケットのマルチキャストによるデータ共有は、各端末が各々のエラー状況（どの端末でどの情報パケットが誤っているのか）を知る必要がなく、かつ、複数の端末２において同時に回復機能を果たすことが可能である。
【００１５】
現状の放送に対して適用する場合、ＭＰＥＧ２(Moving Picture Experts Group Phase 2)−ＴＳ(Transport Stream)パケット（もしくはこれを複数結合したもの)に対してパリティ生成を行う必要がある。この場合、ＭＰＥＧ２−ＴＳ受信データのみから一意に識別情報を付与する必要がある（各端末で同一の番号付けが可能な方法が必要)。この番号付けの方法は、現在の放送へ適用する場合、ＭＰＥＧ２−ＴＳ内のＰＣＲ(Program Clock Reference)やコンティニュイティ・カウンタを使用して識別情報を作りだす方法や、ＴＳパケットが伝送された無線フレームの番号や、同時に伝送されているジッタ除去用のカウンタ値などを使用することが考えられる。
【００１６】
また、基地局からの情報パケットがＲＴＰ(Real-time Transport Protocol)により伝送されている場合、ＲＴＰパケットヘッダ内のシーケンス番号やタイムスタンプ値を識別情報に用いることができる。一般的にこのようなシーケンス番号やタイムスタンプ値は、連続して送信されているパケット間においては連続的な値を持つ（連なるパケット間で一定の差分を持つ）ので、端末２が基地局１から刻々と受信している情報パケットの送信順序や、消失パケットの存在を知ることが可能である。
例えば上記ＲＴＰのシーケンス番号を識別情報として用いる場合、正しく受信済みの情報パケットのＲＴＰシーケンス番号をその情報パケットの識別情報とする。もし受信済みの一連の情報パケットのＲＴＰシーケンス番号に欠落があれば、欠落しているＲＴＰシーケンス番号が消失した情報パケットのＲＴＰシーケンス番号であるから、消失している情報パケットの識別情報についても決めることができる。
上述のＭＰＥＧ２−ＴＳやＲＴＰの例に限らず、各情報パケットに対して、端末間で一意に決められる情報であれば、その情報を識別情報とすることができる。
【００１７】
＜２．第１の実施の形態＞
本開示の第１の実施の形態について以下説明する。図２は、第１の実施の形態の全体構成を示す。図１と同様に、基地局（放送局または携帯基地局)１が情報データ例えば放送データをメディア（無線通信メディア)４を通じてマルチキャストまたはブロードキャストする。複数例えば３個の無線通信の通信装置である端末２ａ，２ｂおよび２ｃ（これらの端末を特に区別する必要がない場合は単に端末２と称する）が放送データの情報パケットを受信する。
【００１８】
端末２は、ローカルネットワーク３を介して互いに通信するように設けられている。端末２は、正しく受信、もしくは回復できた情報パケットの中から複数もしくは単数の情報パケットを選択し、選択された情報パケットのビット毎の排他的論理和により、パリティパケットを生成する。パリティパケットを生成するのに使用した情報パケットを生成元情報パケットと称する。生成元情報パケットの識別情報の集合をコーディングベクタと称する。生成されたパリティパケットと、そのパリティパケットのコーディングベクタをローカルネットワーク３上でマルチキャストして、複数の端末２間で、そのパリティパケットおよびコーディングベクタを共有する。
【００１９】
無線通信装置である端末２は、下記の機能を有する。
（１）基地局１から送信された情報パケットを受信する機能
（２）情報パケットからパリティパケットおよびコーディングベクタを生成する機能
（３）生成したパリティパケットおよびコーディングベクタをローカルネットワークにマルチキャスト送信する機能
（４）他の端末がマルチキャスト送信したパリティパケットおよびコーディングベクタをローカルネットワークを通じて受信し、パリティパケットと、コーディングベクタを保存する機能
（５）保存したパリティパケットと、コーディングベクタを使用して、欠落している情報パケットを回復させる機能
【００２０】
図３は、第１の実施の形態の端末２の構成を示す。簡単のため、２つの端末２ａおよび２ｂのみが示されている。端末２ａおよび２ｂは、同一の構成とされているので、端末２ａについて説明し、端末２ｂの対応する構成要素に対しては、同一の参照符号を付して重複した説明を省略する。
【００２１】
端末２の無線部１１は、基地局１とメディア４を通じて無線通信を行う。基地局１からが送信され、端末２が送信データを受信する。例えば無線部１１は、アンテナ機能、ＲＦチューナ機能を有する。無線部１１の受信データを復調する復調部１２が設けられ、復調部１２は、例えばＭＰＥＧ２−ＴＳパケットを出力する。本実施の形態ではフェージング等により受信状態が悪くなった場合においても、基地局１が送信しているパケット数と等しい数のＴＳパケットがエラーパケット等として、一定の間隔で復調部１２から出力されるようになされている。
【００２２】
復調部１２からのＴＳパケットは、情報パケット記憶部１３に記憶される。なお、ＴＳパケットに対しては、パケットを識別するための識別情報が付加される。Ａ／Ｖデコード部１４に供給され、ビデオデータＶおよびオーディオデータＡが復調される。ビデオデータＶおよびオーディオデータＡが表示装置１５に供給され、ビデオおよびオーディオが表示装置１５によって再生される。
【００２３】
パリティパケットを記憶するパリティパケット記憶部１６が設けられている。情報パケット記憶部１３とパリティパケット記憶部１６がパリティ共有誤り制御部１７と接続されている。このパリティ共有誤り制御部１７が本開示の特徴とする機能を備えている。パリティ共有誤り制御部１７では受信した情報パケットに対する符号化と、他の端末から得られたパリティパケットを用いて消失情報パケットの回復処理を行う。以降の本実施例で記載するパリティ生成方法や復号方法以外にも、他の一般的な前方誤り訂正符号に基づいたパリティの生成方法、復号方法を適用することが可能である。図４および図５を参照してパリティ共有誤り制御部１７の動作について説明する。
【００２４】
図４は、基地局１からの情報パケットの送信と、端末２でのパリティパケットの生成について説明する図で、以下のような動作となる。
（１）基地局１からの情報パケットの送信と、端末でのパケットの生成
(i)基地局１から情報パケットi[0]，i[1]，i[2]，i[3]，i[4]，i[5]，i[6]，i[7]が送信される。情報パケットi[x]の識別情報をxとする。たとえばi[7]の識別情報は7である。
(ii)端末２ａでは、基地局１から送信されたパケットi[0],i[1], ・・・i[7]に対応した受信パケットR1[0]，R1[1]，・・・R1[7]が受信される。ただし、斜線を付した受信した情報パケットR1[2]は消失したパケットである。例えばパケット毎に消失を検出することが可能とされ、パケット毎に消失を示すフラグが形成される。受信した情報パケットは情報パケット記憶部１３に保存される。R1[x]の識別情報をxとする。たとえばR1[7]の識別情報は7となる。
(iii)端末２ｂでも、端末２ａと同様に、基地局１から送信されたパケットに対応した情報パケットR2[0]，R2[1]，・・・R2[7]が受信、保存される。ただし、斜線を付した情報パケットR2[5]は消失したパケットである。R2[x]の識別情報をxとする。たとえばR2[7]の識別情報は、７となる。
【００２５】
（２）パリティパケットの生成
(i)端末２ａでは、パリティ共有誤り制御部７にてパリティパケットを生成する。正しく受信、もしくは回復できた情報パケットの中から複数もしくは単数の情報パケットを選択し、選択された情報パケット（生成元情報パケットと称する）のビット毎の排他的論理和により、パリティパケットが生成される。受信した情報パケット（消失していない情報パケット）から、ランダムに、予め定められた個数の（図４の例では４個）の生成元情報パケットR1[0]，R1[3]，R1[5]，R1[7]を選択し、ビット毎の排他的論理和（図においては、ＥＸ−ＯＲと表記する）をとる。その結果をパリティパケットP1[0]とする。また、パリティパケットP1[0]生成に用いた全ての生成元情報パケットの識別情報の集合｛0，3，5，7｝をP1[0]のコーディングベクタとしてパリティパケットP1[0]に付随させる。
【００２６】
より一般的に端末２ａのN番目（最初のパリティパケットを０番目とする）に生成したパリティパケットをP1[N]と表記し、P1[N]のコーディングベクタをV1[N]と表記する。コーディングベクタV1[N]は単数もしくは複数の要素を持ち得るベクトル値となる。
V1[N]の各要素は生成元パリティパケットの識別情報であり、V1[N] = {v1[N,0], v1[N,1], ... v1[N,d1[N]-1] }と各要素を表記する。ここでd1[N]はN番目のパリティパケットP1[N]の生成に用いた生成元情報パケット数である。端末２ａにおいて消失していない情報パケット（基地局１から正常に受信、もしくは既に回復済みの情報パケット）の集合をS1とし、S1={R1[x] | R1[x]は消失していない }と表記できる。
【００２７】
まとめると、端末２ａのN番目のパリティパケットP1[N]に関して下記のように一般的に表記できる。
S1={R1[x] | R1[x]は消失していない }
V1[N] = {v1[N,0], v1[N,1], ... , v1[N,d1[N]-1] }
P1[N] = R1[v1[N,0]] + R1[v1[N,1]] + ... + R1[v1[N,d1[N]-1]]
ここでP1[N]の式内＋記号は、パケット内の各ビット毎の排他的論理和の演算を意味する。
図４の端末２ａの例は下記のように表記できる。
S1={R1[0],R1[1],R1[3],R1[4],R1[5],R1[6],R1[7]}
V1[0] = {v1[0,0], v1[0,1], v1[0,2], v1[0,3] } = {0, 3, 5, 7}
P1[0] = R1[0] + R1[3] + R1[5] + R1[7]
d1[0] = 4
【００２８】
(ii)端末２ｂでも同様にパリティパケットP2[0]を生成し、パリティパケットP2[0]生成に用いた生成元パケットの識別番号の集合｛0，2，4，7｝をP2[0]のコーディングベクタとしてP2[0]に付随させる。
より一般的に端末２ｂのN番目（最初のパリティパケットを０番目とする）に生成したパリティパケットをP2[N]と表記し、P2[N]のコーディングベクタをV2[N]と表記する。端末２ａの場合と同様、コーディングベクタV2[N]は単数もしくは複数の要素を持つベクトル値となる。V2[N]の各要素は生成元パリティパケットの識別情報であり、V2[N] = {v2[N,0], v2[N,1], ... v2[N,d2[N]-1] }と表記する。ここでd2[N]はN番目のパリティパケットの生成時に選択した生成元情報パケット数である。端末２ｂにおいて消失していない情報パケット（基地局１から正常に受信、もしくは既に回復済みの情報パケット）の集合をS2とし、S2={R2[x] | R2[x]は消失していない }と表記できる。
【００２９】
まとめると、端末２ｂのN番目のパリティパケットP2[N]に関して下記のように一般的に表記できる。
S2={R2[x] | R2[x]は消失していない }
V2[N] = {v2[N,0], v2[N,1], ... , v2[N,d2[N]-1]}
P2[N] = R2[v2[N,0]] + R2[v2[N,1]] + ... + R2[v2[N,d2[N]-1]]
ここでP2[N]の式内＋記号はパケット内の各ビット毎の排他的論理和の演算を意味する。
図４の端末２ｂの例は下記のように表記できる。
S2={R2[0],R2[1],R2[2],R2[3],R2[4],R2[6],R2[7]}
P2[0] = R2[0] + R2[2] + R2[4] + R2[7]
V2[0] = {v2[0,0], v2[0,1], v2[0,2], v2[0,3] } = {0, 2, 4, 7}
d2[0] = 4
【００３０】
パリティパケットおよびコーディングベクタの生成方法について、より一般的に述べる。
ある端末２が受信した識別情報xの情報パケットをR[x]と表記し、該端末２において消失していない情報パケットの集合をS = {R[x] | R[x]は消失していない}と表記する。該端末２にて N番目(最初に生成されるパリティパケットを０番目とする)に生成したパリティパケットをP[N]と表記し、P[N]に対応するコーディングベクタをV[N]と表記し、V[N]の要素数をd[N]と表記し、V[N]の各要素をV[N]={v[N,0],v[N,1], ... , V[N,d[N]-1]と表記した場合、以下のようにパリティパケットP[N]とコーディングベクタV[N]が生成される。
【００３１】
(i)d[N]の決定
d[N]は予め決められた正の整数であり、Sの要素数以下とする。
たとえば4や、8といった数である。仮にこれらの値がSの要素数を超える場合はSの要素数をd[N]とする。また、d[N]の値に応じて、生成されたパリティパケットによる回復確率が異なるため、基地局１から伝送された情報パケットを受信する際のパケットロス率等に応じて、d[N]値を動的に決めることも可能である。
【００３２】
(ii)V[N]の生成（生成元情報パケットの選択）
該端末２で消失していない情報パケットの集合Sから、前述d[N]個をランダムに重複無く選択する。選択されたd[N]個のパケットの識別情報をV[N]の各要素の値とし、それぞれv[N,0],v[N,1], ..., v[N,d[N]-1]とする。
(iii)P[N]の生成 （パリティパケットの生成）
V[N]の各要素の値を識別情報とするd[N]個の情報パケットについて、ビット毎の排他的論理和を生成し、その結果をP[N]とする。
P[N] = Σ{R[x] | xがV[N]に含まれる }
= R[v[N,0]] + R[v[N,1]] + ,,, + R[v[N,d[N]-1]]
上記式の加算記号＋は、パケットの各ビット毎の排他的論理和を演算する。Σは各要素（パケット）のビット毎の排他的論理和を演算する。
【００３３】
図５は、生成したパリティパケットのマルチキャスト伝送と、消失パケットの回復について説明する図で、以下のような動作となる。
（３）パリティパケットのマルチキャスト送信
(i)端末２ａは、パリティパケットP1[0]およびコーディングベクタV1[0]をローカルネットワーク３へマルチキャスト送信する。
(ii)端末２ｂも同様にパリティパケットP2[0]およびコーディングベクタV2[0]をローカルネットワーク３へマルチキャスト送信する。ローカルネットワーク３へマルチキャスト送信する際、パリティパケットとコーディングベクタを連結し、単一のパケットとしてローカルネットワーク３上で伝送する。
【００３４】
（４）パリティパケットの受信と保存
(i)端末２ｂは、ローカルネットワーク３上で送られたパリティパケットP1[0]と付随するコーディングベクタV1[0]を受信し、それらをパリティパケット記憶部１６に保存する。
(ii)端末２ａは、ローカルネットワーク３上で送られたパリティパケットP2[0]と付随するコーディングベクタV2[0]を受信し、それらをパリティパケット記憶部１６に保存する。
【００３５】
（５）情報パケットの回復処理
(i)端末２ａでは、パリティ共有誤り制御部１７において、パリティパケットP2[0]と付随するコーディングベクタ、V2[0]=｛0，2，4，7｝から、消失している情報パケットR1[2]を下記のように回復することができる。なお、＋の記号はパケットの各ビット毎に排他的論理和を取る演算を示す。
コーディングベクタV2[0]={0,2,4,7} から、
P2[0] = R2[0]+R2[2]+R2[4]+R2[7]が解る。端末２ａと端末２ｂは基地局から同一の情報パケットを受信しているので、それぞれが受信した同一の識別情報の情報パケットは同一の値を持つ。つまり同じ識別情報xに対してR1[x] = R2[x]となるので、R2をR1で置き換えると、
P2[0] = R1[0]+R1[2]+R1[4]+R1[7]となる。
【００３６】
R1[0]，R1[4]，R1[7], P2[0]は端末２ａでは消失していないデータなので、R1[2]について解けば、消失している情報パケットR1[2]を回復できる。
R1[2] = R1[0]+R1[4]+R1[7]+P2[0]
【００３７】
(ii)端末２ｂも同様に、パリティパケットP1[0]と付随するコーディングベクタV1[0]=｛0，3，5，7｝より、下記の計算によりR2[5]を回復できる。
R2[5] = R2[0]+R2[3]+R2[7]+P1[0]
【００３８】
情報パケットの回復処理についてより一般的に述べる。
情報パケットの回復処理は、端末２各々において個別に実行する処理であり、パリティパケットの受信と保存が行われる毎に実行される。仮にある端末２がN個のパリティパケットとコーディングベクタを受信した状態において、情報パケットの回復処理を下記に述べる。
(i)該端末２のパリティパケット記憶１６に保存されているN個のパリティパケットと対応するコーディングベクタ各々について、下記に示す「パリティチェック処理」を実行する。
(ii)(i)の処理を終了後、(i)を再度実行するかどうか反復判定を行う。
(ii-1)(i)の結果、一つ以上の情報パケットが回復された場合、再度(i)を実行する。
(ii-2)(i)の結果回復された情報パケットが無い場合は回復処理を終了する。
【００３９】
「パリティチェック処理]
パリティチェック処理を行うパリティパケットをP[x]表記とし、対応するコーディングベクタをV[x]と表記し、V[x]の要素数をd[x]と表記し、V[x]の要素をV[x] = { v[x,0], v[x,1], ... , v[x,d[x]-1]と表記し、識別情報yの情報パケットをR[y] と表記し、該端末２において消失していない情報パケット（基地局１から正常に受信、もしくは既に回復済みの情報パケット）の集合をS={R[x] | R[x]は消失していない }と表記する。P[x]の生成元情報パケット、つまりV[x]の各要素の値を識別情報とする情報パケットはd[x]個であり、それぞれR[v[x,0]], R[v[x,1]], ... , R[v[x,d[x]-1]]と表記できる。
【００４０】
これらのd[x]個の情報パケットの内、該端末２において消失パケットとなっている個数が一つだけであるかどうかを判定する。つまり上記、d[x]個の情報パケット、{ R[v[x,0]], R[v[x,1]], ... , R[v[x,d[x]-1]] }の内、集合Sに含まれていない個数が1つのみであるかどうかを判定する。
もし、これらd[x]個の情報パケットの内、一つだけ消失している場合はその情報パケットを回復させる。その一つだけ消失している情報パケットの識別情報をzとすると下記のようにR[z]を回復させる。
【００４１】
R[z]の回復
R[z] = P[x] + Σ{R[y]| yはV[x]の要素に含まれていて、かつ、yがzに等しくない }
ここで、＋はパケットのビット毎の排他的論理和を演算し、Σは要素とするパケットのビット毎の排他的論理和を演算する。
上記のR[z]の回復式は、V[x]に含まれる識別情報をもつ情報パケットの集合{ R[v[x,0]],R1[v[x,1]], ... , R1[v[x,d[x]-1]] }の内、識別情報がzではない情報パケット全てと、パリティパケットP[x]について、ビット毎の排他的論理和をとることにより消失している情報パケットR[x]を回復させることを示している。
また、集合Sの定義よりR[z]は回復処理後に集合Sに含まれることになる。
【００４２】
上述した（２）（３）（４）（５）の処理を繰り返して、複数のパリティパケットを共有することで、消失パケットを回復できる可能性が高まり、受信品質を改善できる。
【００４３】
上述説明は端末２ａ、端末２ｂの２台の端末における動作説明であるが、端末２が３台以上である場合においても、各端末２は同様の動作を行う。ローカルネットワーク３上に端末２が３台以上存在する場合、パリティパケットはマルチキャスト伝送により、端末２ａ、端末２ｂのみならず、ローカルネットワーク３に接続されている全ての端末２に対して同時に伝送され、各受信端末２において同時に受信され、回復処理が行われることになる。
【００４４】
上述した本開示の一実施の形態によれば、マルチキャスト伝送により、複数の端末が同時にパリティパケットを共有し、消失パケットの回復処理が可能なため、ローカルネットワークへの負荷が少なくて済む。効率の良い受信データの共有・消失パケットの回復が可能となる。
【００４５】
（２）で述べたように、パリティパケットの生成元の情報パケットはランダムに選択され、他の端末２においてどの情報パケットが消失しているかという情報は必要としない。従来技術のように端末２の個々の消失パケットを個別に伝送する必要が無いため、ローカルネットワーク３の容量に対して端末２の台数が制限されない。
【００４６】
また、繰り返す際に、処理（２）においてより効率的なパリティパケットを生成するため、生成元パケットをランダムに選択する際に、すでに選択された回数に応じて、選択される確率を更新する。
例えば、情報パケットｘが、生成元パケットとして選択された回数がｎの場合の相対的な選択確率をP(x，n)としたとき、次のように更新する。
P(x，n) = P(x，n-1)＊0.05(n>0の場合)
P(x，0) = 1.0(n = 0の場合)
【００４７】
第一回目のパリティパケット生成時は、どの情報パケットも同じ確率で選択されるが、一度情報パケットｘがパリティ生成に選択されると、次回パリティ生成時に情報パケットｘが選択される相対的な確率は1/20となる。
【００４８】
図６は、情報パケットの選択確率を更新する効果を示す。線２０ａは、選択確率が常に一定の場合であり、線２０ｂは、上述した式で、選択確率を更新した場合である。選択確率を更新した場合（線２０ｂ）は、少ないパリティパケット数でより多くのパケットを回復できている。
【００４９】
図６は、情報パケットの選択確率を更新する効果を示す。線２０ａは、選択確率が常に一定の場合であり、線２０ｂは、上述した式で、選択確率を更新した場合である。選択確率を更新した場合（線２０ｂ）は、少ないパリティパケット数でより多くのパケットを回復できている。
【００５０】
前記説明した端末２の機能の内、下記に示すように一部の機能を省略した端末２を用いて実施することも可能である。
(i)パリティ生成およびパリティ送信のみを行う端末２
(ii)パリティ受信および情報パケットの回復のみを行う端末２
上記(i)は段落〔００１９〕に記載した機能の内、（１）（２）（３）の機能のみを持つ端末である。
上記(ii)は段落〔００１９〕に記載した機能の内、（１）（４）（５）の機能のみを持つ端末である。
上記(i)の機能をもつ端末２の例として、八木アンテナ等の屋外アンテナを備えた据え置き型の放送受信装置が考えられる。このような放送受信装置は放送受信性能が高く、放送受信時に情報パケットが消失する可能性が低いため、消失パケットの回復を行う必要がない。したがって上記(i)のようにパリティ生成・送信のみを行う端末２として機能させることが考えられる。
また、上記(ii)の機能を持つ端末２の例として、放送受信機能をもつスマートフォン等のポータブル機器が考えられる。このような端末が放送受信条件の悪い屋内等で使用される場合、放送受信時に情報パケットを消失する可能性が高いため、上記(ii)のようにパリティの受信・回復機能のみを行う端末２として機能させることが考えられる。
【００５１】
パリティパケットの生成については、本実施例の方法以外にも、一般的な誤り訂正符号化を用いて生成することが可能である。例えばリードソロモン符号やＢＣＨ符号、ＬＤＰＣ符号等の誤り訂正符号を用いてパリティパケットを生成することができる。この場合、回復処理はパリティパケットの符号化に対応した誤り訂正復号によって行う。
【００５２】
＜３．第２の実施の形態＞
本開示の第２の実施の形態について説明する。説明で使用する用語について概念を説明する。
タナーグラフ：LDPC等の誤り訂正符号の構成を示す際に一般的に用いられるグラフである。バリアブルノードとチェックノードにより構成される。
バリアブルノード：本開示においては、情報パケットもしくはパリティパケットに対応する。
チェックノード：タナーグラフ上にて、バリアブルノード間のパリティチェック関係を示す。パリティチェック関係とは、チェックノードに接続されているバリアブルノード間の関係のことを意味し、それらバリアブルノードの排他的論理和がゼロとなる関係のことである。各チェックノードにおいてパリティチェック関係を評価することで消失パケットを回復させる。本開示では、チェックノードはパリティパケットに付随するコーディングベクタが受信される毎に追加されていく。
コーディングベクタ：パリティパケットに付随する情報である。本開示では、パリティパケット生成端末から他の端末に対して、パリティチェック関係を通知するために用いる。パリティパケットがどのパケットから生成されたか（＝パリティチェック関係）を保持しており、単数もしくは複数の生成元パケットの識別情報を要素とする。本開示において、各端末は受信したコーディングベクタに従ってチェックノードの追加、バリアブルノードの接続を行う。
【００５３】
第２の実施の形態と、第１の実施の形態との違いについて説明する。
(i)第１の実施の形態では、パリティパケットを生成する際に、基地局から受信した情報パケットのみを使用していた。第２の実施の形態では、基地局から受信した情報パケットのみならず、既にローカルネットワーク上で共有されたパリティパケットも利用する。
(ii)第１の実施の形態では、コーディングベクタ単体をローカルネットワーク上で伝送する事は無かった。しかし、第２の実施の形態では、コーディングベクタ単体をローカルネットワーク上で伝送し、端末間で共有する機能を持つ。
【００５４】
上述（i）(ii)の機能と効果について述べる。
上述(i)(ii)はパリティパケットによる回復性能の向上に寄与する。本開示に於いてパリティパケットはローカルネットワーク上でマルチキャスト伝送され、各端末で共有される。
しかしローカルネットワーク上でマルチキャスト伝送する際にパケットロス、つまりパリティパケットの消失が発生する可能性がある。この場合、(i)のようにパリティパケット自体が、他のパリティパケットと相関を持つ（＝パリティチェック関係にある）ことにより、パリティパケットがローカルネットワーク上で伝送される際に消失した場合でも、他の正しく受信した別のパリティパケットを用いて回復できる可能性がある。また、(ii)のようにコーディングベクタのみを伝送する事により、(i)の機能によって回復できたパリティパケット（ローカルネットワーク伝送で消失したが、他のパリティパケットによって回復されたパリティパケット）を用いて、情報パケットを回復させることが可能となる。これら(i)(ii)の機能についての詳細は、後述する段落〔０１３９〕〔０１４０〕で述べる。
【００５５】
図７は、第２の実施の形態における端末の構成を示す。放送受信部・復調部２１は、アンテナ機能、ＲＦチューナ機能、復調機能を備えている。放送受信部・復調部２１からＭＰＥＧ２−ＴＳパケットが出力される。本実施の形態では、フェージング等により受信状態が悪くなった場合においても、放送送信装置で送信しているパケット数と等しい数のＴＳパケットがエラーパケット等として一定の間隔で出力されることを仮定する。
【００５６】
放送受信部・復調部２１から出力されたＴＳパケットが情報パケット識別情報付与部２２に供給される。情報パケット識別情報付与部２２は、放送受信部・復調部２１から出力されたＭＰＥＧ２−ＴＳパケットに対し識別情報を付与する。
【００５７】
マルチキャスト伝送時に、パリパケットの生成元パケットすべての識別情報を付加する。識別情報の生成方法としては、下記に示すものが可能である。
【００５８】
（１）生成元情報パケットの識別情報を、ＭＰＥＧ２−ＴＳのＰＣＲ値から生成する。
（２）生成元情報パケットの識別情報を、ＭＰＥＧ２−ＴＳパケットヘッダのコンティニュイティカウンタから生成する。
（３）生成元情報パケットの識別情報を、ＭＰＥＧ２−ＴＳ内に多重されている複数のプログラムのＰＣＲ値と、複数のＰＩＤのコンティニュイティカウンタを組み合わせて生成する。
（４）生成元パリティパケットの識別情報を、パリティパケット生成端末固有の情報と、その端末で既に生成されたパリティパケット数より生成する。
このパリティパケット生成端末固有の情報として、ローカルネットワークのＩＰアドレスもしくは、ＭＡＣアドレスを用いる。
さらに、送信済みパリティパケットの生成元情報のみをローカルネットワーク上でマルチキャスト伝送する。
【００５９】
一般的にＭＰＥＧ２−ＴＳ内には複数のプログラム（ＰＩＤ）が多重されているが、識別情報の付与はパリティ共有による誤り制御が必要なＰＩＤに対して行う。
識別情報は、パリティパケットを共有する他の端末と共通の番号とする。
識別情報は、放送受信信号より、一意に決定できる値である。
一例として、識別情報は、同一のＭＰＥＧ２−ＴＳ内に多重されている複数のＰＩＤパケットのコンティニュイティカウンタ値、およびＰＣＲ値を用いて生成する。
【００６０】
デジタル放送では、ＭＰＥＧ２(ISO/IEC 13818-1)に規定されるＴＳに準拠した多重化を行い、ＭＰＥＧ２−ＴＳを構成している。
【００６１】
図８は、ＭＰＥＧ２−ＴＳの概略を示している。ＭＰＥＧ２−ＴＳは、固定長（１８８バイト）のパケットを使用する。各パケットの先頭に４バイトのヘッダ領域が規定され、残りの１８４バイトに可変長の拡張ヘッダであるアダプテーションフィールドと、内容（映像、音声、または付加データ）を伝送するペイロードとが配置される。
【００６２】
ヘッダの中に、１３ビットのＰＩＤ（パケットＩＤ）が含まれている。ＰＩＤは、パケットの種類を識別するアドレスである。ＰＩＤは、動画や音声のストリーム毎に値が設定されており、同じストリームであれば同じＰＩＤとなる。例えばＮＨＫ総合放送の動画ＰＩＤは２５６、音声ＰＩＤは２７２と決められている。
【００６３】
ヘッダの中の４ビットのコンティニュイティ・カウンタは、同一のＰＩＤのパケットに対して付される連続番号で、１６をモジュロとして１づつインクリメントする（０〜１５の値を有する）。アダプテーションフィールドは、バイト単位で可変の長さを有する。ヘッダの拡張機能として同期機能のためのＰＣＲ(Program Clock Reference)を伝送する機能がある。ＰＣＲは常に送られるわけではなく、通常１００ms周期で、アダプテーションフィールド内の値として伝送される。カウンタ値の周期は一日で一周するカウンタであり、値の解像度は９０ｋＨｚである。
【００６４】
一つのＭＰＥＧ２−ＴＳには、複数の動画や音声のストリームが異なるＰＩＤにて多重化されている。図９は、動画と共に音声(動画より情報レートが低い)が多重化されて伝送されている例である。図９の各四角のブロックが一つのＴＳパケットを示し、斜線を付したＴＳパケットが音声パケットである。動画パケットは、（ＰＩＤ：１０１）とされ、音声パケットは、（ＰＩＤ＝１０２）とされている。コンティニュイティ・カウンタの値は、ＰＩＤ毎に０〜１５の値で巡回している。ＰＣＲで示した値は、ＰＣＲベース値を示している。
【００６５】
生成元パケットの識別情報は、多重化されている複数のプッシュプルのＰＣＲ値と、複数のＰＩＤのコンティニュイティ・カウンタを組み合わせて生成する。例えば動画パケット（ＰＩＤ：１０１）について、３つの数からなる識別情報（Ａ，Ｂ，Ｃ）を生成し、各パケットの識別情報とする。
【００６６】
ＰＣＲ値、コンティニュイティ・カウンタ値を組みあわせて、３つの数からなる識別情報（Ａ，Ｂ，Ｃ）を生成し、各ＴＳパケットの識別情報とする。
Ａ＝（[最新のPCR値] / [PCR周期]） mod ｘ
Ｂ＝[PID 102の最新のコンティニュイティ・カウンタ値]
Ｃ＝[PID 101の該当パケットのコンティニュイティ・カウンタ値]
ｘは、識別情報の周期を決めるパラメータとなる。
識別情報の周期が情報パケットバッファサイズ(Nimax)より大きな周期となるようにｘを設定する。
【００６７】
PCR周期 9000、Xを50とすると、最初の動画パケットの最新のＰＣＲ値が(1234567)であるので、このパケットについては、下記のように識別情報が決定される。
Ａ: 37
Ｂ: 3
Ｃ: 15
識別情報 = (A,B,C) = (37,3,15)
次の動画パケットの識別情報は、同様にして、(A,B,C) = (37,3,0)となり、さらに次の動画パケットの識別情報は、(A,B,C) = (37,3,1)となる。以下、同様に、識別情報が付与される。以下、同様にして各動画パケットに対して識別情報が付与される。
【００６８】
なお、図９の例では、音声パケット（ＰＩＤ＝１０２）の伝送周期は、動画パケット（ＰＩＤ＝１０１）が１６個以内である。ＰＣＲの伝送周期が音声パケット（ＰＩＤ＝１０２）が１６個以内である。
【００６９】
図８は、情報パケット（ＭＰＥＧ２−ＴＳパケット）に対する識別情報の生成方法を説明する図である。図中、ＭＰＥＧ２−ＴＳ内に、動画(PID＝101)および、音声(PID＝102)が多重されている。動画(PID＝101)のパケットに対して識別情報生成方法を説明した図である。
【００７０】
このように、複数ＰＩＤのコンティニュイティカウンタおよび、ＰＣＲ値を組み合わせることで、周期の長い識別情報を得ることが可能である。
このように識別情報を生成することで、パリティパケットを共有する端末間で共通の識別情報を情報パケットに与えることができる。
【００７１】
この例では識別情報を２つのＰＩＤのコンティニュイティカウンタ値と1つのＰＣＲ値を組み合わせて生成しているが、より多くのＰＩＤのコンティニュイティカウンタ値や、ＰＣＲ値を組み合わせることも可能である。また、この例では、３つの数の組み合わせで表現しているが、一つの数として表現することも可能である。
【００７２】
たとえばＡおよびＢの値の範囲は０〜１５の整数であるから、下記のように一つの数としても表現できる。
識別情報 = A+B＊16^1+C＊16^2
この式からも判るように、識別情報の値の大小を比較することで情報パケットの順序を知ることが可能である。
【００７３】
上述した識別情報が付与された情報パケットが情報パケット入力部２３に出力される。情報パケット入力部２３は、識別情報が付与されたＴＳパケットを、情報パケット記憶部２４へ格納する。
【００７４】
情報パケット記憶部２４内から情報パケットが格納されていない空き領域を検索する。情報パケット記憶部２４の空き領域をInfoBuf[X]とすると、下記のように格納する。
InfoBuf[X].data:  TSパケットのデータ188バイトを格納する。
InfoBuf[X].info_id:  識別情報を格納する。
InfoBuf[X].loss:  消失もしくは誤りを示す情報であり、正常に受信できた情報パケットに対しては0を格納する。TSパケットヘッダのエラーフラグが立っている場合はloss = 1とする。
InfoBuf[X].sel_prob:  パリティパケット生成時に選択される確率[相対的な確率]を格納する領域である。新たな情報パケットを格納する場合は1.0とする。
【００７５】
図１０は、情報パケット記憶部２４の構成を示す。InfoBuf[0]〜InfoBuf[Nimax-1]は、情報パケット（ＭＰＥＧ２−ＴＳパケット）と情報パケット識別情報を格納する記憶領域である。最大、Nimaxパケットを記憶する。
【００７６】
情報パケット記憶部２４の各要素について説明する。
loss：エラーもしくは消失したパケットであることを示すフラグである。
info_id：情報パケット識別情報を格納する領域である。
sel_prob：パリティパケット生成時に選択される確率（相対的な確率）を格納する領域である。この値は情報パケット間で相対的な値である。初期値は０である。
data:ＭＰＥＧ２−ＴＳパケットデータ（188バイト）を格納する領域である。
【００７７】
相対的な選択率sel_probについて説明する。sel_prob値が相対的に高い情報パケットは、それだけ高い確率でパリティパケットの生成元パケットに選ばれ、逆にsel_prob値が小さい情報パケットはパリティパケットの生成元パケットに選ばれる確率が小さくなる。選択された回数に応じてこの値を小さくすることで、同じ情報パケットが重複して選択される可能性を低くし、効率の良いパリティパケットを生成することが可能である。sel_prob値はエンコード処理部３２により更新される。
【００７８】
図１１は、パリティパケット記憶部２６の構成を示す。以降、Npmaxはパリティパケット記憶部で保存可能なパリティパケット数とする。ParityBuf[0]〜ParityBuf[Npmax-1]は、パリティパケットを格納する記憶領域である。
【００７９】
パリティパケット記憶部２６の各要素について説明する。
loss：パリティパケットがエラーもしくは消失していることを示すフラグである。
term_id:パリティを共有する端末間でユニークな送信端末識別情報である。
parity_id:パリティパケット識別情報（パリティを生成した端末内でユニーク）
sel_prob:エンコード処理部で、パリティパケットの生成元として選択される確率を格納する。相対的な選択率は各パケット間で相対的な値である。
【００８０】
図１２は、チェックノード記憶部２７の構成を示す。チェックノードは、情報パケットとパリティパケットのパリティチェック関係を保存する領域である。
チェックノード記憶部の各要素について説明する。
info_degree:チェックノードに接続されている情報パケットの数を格納する。
pInfo[]:チェックノードに接続されている情報パケットのデータ格納領域（InfoBuf[0]〜InfoBuf[Nimax-1]のいずれか）の位置（記憶領域のアドレス）を示す。
parity_degree:チェックノードに接続されているパリティパケットの数を格納する。
pParity[]:チェックノードに接続されているパリティパケットの格納領域（ParityBuf[0]〜ParityBuf[Npmax-1]のいずれか）の位置（記憶領域のアドレス）を示す。
【００８１】
上述した情報パケット記憶部２４、パリティパケット記憶部２６、チェックノード記憶部２７の関係について説明する。図１３は、タナー(Tanner)グラフを示し、図１４、図１５および図１６は、図１３のタナーグラフの状態における、３つの記憶部の対応関係の具体例を説明した図である。
【００８２】
情報パケット記憶部２４と、パリティパケット記憶部２６は、タナーグラフで言うところのバリアブルノード（変数ノード、メッセージノード等の表現もある）に対応し、チェックノード記憶部２７は、チェックノードに対応する。この例では、図１４に示す７つの情報パケット｛A，B，C，D，E，F，G｝と、図１６に示す２つのパリティパケット｛(J，K)，(L，M)｝が、図１５に示すチェックノード｛H，I｝を介して接続されている。
【００８３】
図１３では、パリティパケット(J，K)は、４つの情報パケット｛A，C，D，F｝の排他的論理和により生成されたことを示している。つまり、4つの情報パケット｛A，C，D，F｝はパリティパケット(J，K)の生成元パケット（生成元情報パケット）である。
また、パリティパケット(L，M)は、５つの情報パケット｛B，C，D，E，G｝と１つのパリティパケット(J，K)の排他的論理和により生成されたことを示している。言い換えると、５つの情報パケット｛B，C，D，E，G｝はパリティパケット(L，M)の生成元情報パケットであり、1つのパリティパケット(J，K)が、パリティパケット(L，M)の生成元パリティパケットである。
【００８４】
チェックノードの機能について説明する。チェックノードは、情報パケットおよびパリティパケットへ接続されており、接続されているパケット間にパリティチェック関係（接続されているパケットすべてのビット毎の排他的論理和がゼロとなる関係）にあることを保持する。このパリティチェック関係を利用して、消失パケットの回復を行う。つまり、チェックノードに接続されている全パケットの内、一つだけ消失している場合は、その消失パケット以外のパケットのビット毎の排他的論理和をとることより、消失パケットを回復可能である。
たとえば図１３の情報パケットGが消失しており、その他のパケットは消失していない場合、情報パケットGは、チェックノードIのパリティチェック関係により、情報パケットB，C，D，Eおよびパリティパケット(J，K)(L，M)のビット毎の排他的論理和によって回復できる。
【００８５】
本開示ではチェックノードの接続情報はパリティパケットに付随するコーディングベクタとして伝送される。後述するパリティパケット受信処理によって、パリティパケットを受信する毎に新たなチェックノードが追加され、同時に受信したコーディングベクタに従って、チェックノードと各パケットの接続が追加される。
また、段落〔０１３１〕から〔０１４３〕で説明するように、コーディングベクタのみが伝送される場合も、コーディングベクタ受信時に、チェックノードと各パケットの接続が追加される。
【００８６】
図１７は、エンコード処理部３２の処理の流れを示すフローチャートである。
ステップＳＴ１：エンコード処理が開始される。
ステップＳＴ２：degree_i決定処理がなされる。degree_iは、パリティパケット生成に用いる生成元情報パケットの数である。ランダムに1〜12の値をdegree_iとして決定する。
もしくは、ある定められた確率分布にてdegree_iを決定する。
もしくは、予め固定された数、たとえばdegree_i = 8等、とすることもできる。
【００８７】
ステップＳＴ３：degree_p決定処理がなされる。degree_pはパリティパケット生成に用いる生成元パリティパケットの数である。
ランダムに0〜4の値をdegree_pとする。
もしくは、予め固定された数、たとえばdegree_p = 1等、とすることもできる。
【００８８】
ステップＳＴ４：情報パケット選択処理がなされる。図１８は、生成元情報パケットの選択範囲を示している。degree_i個の情報パケットを生成元情報パケットとして選択する。
情報パケット記憶部２４に格納されている情報パケットから生成元情報パケットを一つ選択する。
情報パケットのsel_prob値をすべて加算し、total_probとする。
情報パケットすべてについて、個々の情報パケットInfoBuf[x]が選択される確率を(InfoBuf[x].sel_prob/total_prob)とする。
上記確率にて、ランダムに情報パケットを一つ選択する。
選択した情報パケットが欠落パケット(loss = 1)である場合は、再度、上記確率にてランダムに選択し直す。
【００８９】
degree_iが２以上の場合で、すでに生成元パケットとして選択されている情報パケットを再度選択した場合は、再度、上記確率にてランダムに選択し直す。
degree_i個選択されるまで、上記を繰り返す。
degree_i個選択された後、選択された情報パケットの選択確率sel_probの値を更新する。
選択された情報パケットをInfoBuf[x]とした場合、下記の計算により選択確率を更新する。
InfoBuf[x].sel_prob = InfoBuf[x].sel_prob＊update_ratio
update_ratioは、0.1等の値とし、情報パケットInfoBuf[x]がパリティパケットの生成元として選択される度に、選択確率が小さくなる。
【００９０】
ステップＳＴ５：パリティパケット選択処理がなされる。degree_p個のパリティパケットを生成元パリティパケットとして選択する。
パリティパケット記憶部２６に格納されているすべてのパリティパケットのsel_prob値を加算し、total_probとする。
あるパリティパケットParityBuf[x]が選択される確率を(ParityBuf[x].sel_prob/total_prob)とする。
上記確率にて、ランダムに情報パケットを一つ選択する。
選択したパリティパケットが欠落パケット(loss = 1)である場合は、再度、上記確率にてランダムに選択し直す。
【００９１】
すでに生成元パケットとして選択されているパリティパケットを再度選択した場合は、再度、上記確率にてランダムに選択し直す。
degree_p個選択されるまで、上記を繰り返す。
degree_p個選択された後、選択された情報パケットの選択確率sel_probの値を更新する。
選択されたパリティパケットをParityBuf[x]とした場合、下記の計算により選択確率を更新する。
ParityBuf[x].sel_prob = ParityBuf[x].sel_prob＊update_ratio
update_ratioは、0.1等の値とし、パリティパケットParityBuf[x]が生成元として選択される度に、選択確率が小さくなる。
【００９２】
ステップＳＴ６：新規パリティパケット生成処理がなされる。
選択された情報パケットおよびパリティパケットに対して、ビット毎の排他的論理和をとることで、新規パリティパケットを生成し、新規パリティパケットをパリティパケット記憶部２６へ追加する。
また、追加した新規パリティパケットに対応するチェックノードを、チェックノード記憶部２７へ追加する。
新規パリティパケットを追加する格納領域をParityBuf[x]、新規チェックノードを追加する格納領域をCheckNode[y]とし、生成元情報パケットをInfoBuf[a]，InfoBuf[b]，InfoBuf[c]、生成元パリティパケットをParityBuf[d]とすると、ParityBuf[x]とCheckNode[y]は以下のようにデータが格納される。
【００９３】
ParityBuf[x].loss =  0
ParityBuf[x].term_id =  自端末の識別情報
ParityBuf[x].parity_id =  (自端末のパリティパケット生成数+1)
ParityBuf[x].sel_prob =  1.0
ParityBuf[x].data =  InfoBuf[a].data^InfoBuf[b].data^InfoBuf[c].data
ParityBuf[d].data
各生成元パケットをビット毎に排他的論理和をとり、パリティパケットのデータとする。
【００９４】
CheckNode[y].info_degree = 3
CheckNode[y].pInfo[0] = &InfoBuf[a]
CheckNode[y].pInfo[1] = &InfoBuf[b]
CheckNode[y].pInfo[2] = &InfoBuf[c]
CheckNode[y].parity_degree = 1
CheckNode[y].pParity[0] = &ParityBuf[d]
【００９５】
ステップＳＴ７：パリティパケット伝送処理がなされる。
新規生成されたパリティパケットへパリティパケットヘッダを付加し、パリティパケット伝送フォーマットとしてRTP/UDP/IPプロトコル処理部３０へ渡す処理である。
RTP(Real-time Transport Protocol)は、映像データ、音声データをインターネットを介してリアルタイムに伝送するプロトコルである。
UDP(User Datagram Protocol)は、信頼性を保証しないトランスポート層の通信プロトコルである。
IP(Internet Protocol)は、インターネット層のプロトコルである。
【００９６】
図１９にパリティパケット伝送フォーマットを示す。
パリティパケットヘッダ部は、新規生成されたパリティパケットの識別情報と、生成元パケット情報（コーディングベクタ情報）が格納される領域である。
【００９７】
以下のようにパリティパケットヘッダ部およびコーディングベクタ情報へデータを設定する。
term_id_new  :パリティ生成端末（自端末）の端末識別情報
parity_id_new  :  新規生成されたパリティパケットのparity_id
info_degree  :CheckNode[y].info_degree
info_id[0]  :CheckNode[y].pInfo[0]->info_id
info_id[1]  :CheckNode[y].pInfo[1]->info_id
.....(info_degree個つづく)
parity_degree  :CheckNode[y].parity_degree
term_id[0]  :CheckNode[y].pParity[0]->term_id
parity_id[0]  :CheckNode[y].Pparity[0]->parity_id
term_id[1]  :CheckNode[y].pParity[1]->term_id
parity_id[1]  :CheckNode[y].Pparity[1]->parity_id
.....(parity_degree個つづく)
【００９８】
RTP/UDP/IPプロトコル処理部３０の処理について説明する。
送信処理
エンコード処理部３２から出力されるパリティパケット伝送フォーマットをローカルネットワークのMTU(Maximum Transmission Unit：ネットワークで１回で送信できる最大のデータサイズ)等に応じて複数結合し、各標準プロトコルに従ってパケット化処理を行い、予め決められたマルチキャストアドレスを宛先IPアドレスに設定し、ローカルネットワークへマルチキャスト送信する。
【００９９】
制御部２８から出力されるコーディングベクタ情報を、ローカルネットワークのMTU等に応じて複数結合し、各標準プロトコルに従ってパケット化処理を行い、予め決められたマルチキャストアドレスを宛先IPアドレスに設定し、ローカルネットワークへマルチキャスト送信する。
【０１００】
受信処理
ローカルネットワークインターフェイス部２９にてパリティパケット伝送フォーマットをペイロードとするIP/UDP/RTPパケットが受信された場合、ペイロードであるパリティパケット伝送フォーマットをパリティパケット入力部３１へ渡す。もしIP/UDP/RTPパケットのペイロードとして複数のパリティパケット伝送フォーマットが含まれている場合は、個々のパリティパケットフォーマットへ分割してパリティパケット入力部３１へ渡す。
【０１０１】
ローカルネットワークインターフェイス部２９にてコーディングベクタ情報をペイロードとするIP/UDP/RTPパケットが受信された場合は、制御部２８へコーディングベクタ情報を渡す。もしIP/UDP/RTPパケットのペイロードとして複数のコーディングベクタ情報が含まれている場合は、個々のコーディングベクタ情報へ分割して制御部２８へ渡す。
【０１０２】
パリティパケット入力部３１は、入力されたパリティパケット伝送フォーマットに従い、パリティパケット記憶部２６と、チェックノード記憶部２７への追加処理を行う。
【０１０３】
図２０のフローチャートにパリティパケット入力部３１の処理の流れを示す。図２０の処理は、パリティパケット伝送フォーマットがパリティパケット入力部３１へ入力される度に実行される。
【０１０４】
以下、パリティパケット入力部３１の処理フローについて説明する。なお、用語について説明すると、パリティパケット入力部３１に入力されるパリティ伝送フォーマット内に含まれているパリティパケットを、「受信パリティパケット」と表記し、すでにパリティパケット記憶部２６に存在するパリティパケットを「既存パリティパケット」と表記する。
【０１０５】
ステップＳＴ１１：パケット入力部３１の処理が開始される。
ステップＳＴ１２：パリティパケット記憶部空き領域取得処理がなされる。
受信パリティパケットを格納する領域を、パリティパケット記憶部２６の空き領域から取得する。以下、取得した受信パリティパケットの領域をParityBuf[x]と表記する。
【０１０６】
ステップＳＴ１３：チェックノード記憶部空き領域取得処理がなされる。
追加するチェックノードを格納する領域を、チェックノード記憶部２７の空き領域から取得する。以下、取得した領域をCheckNode[y]と表記する。
ステップＳＴ１４：受信パリティパケット追加処理がなされる。
パリティパケット伝送フォーマットの情報に従って、ParityBuf[x]へ下記のようにデータを格納する。
ParityBuf[x].loss = 0
ParityBuf[x].term_id=パリティヘッダのterm_id_new
ParityBuf[x].parity_id = パリティヘッダのparity_id_new
ParityBuf[x].sel_prob = 1.0
ParityBuf[x].data = パリティパケットのdata部分(188バイト)
【０１０７】
ステップＳＴ１５：パリティパケット接続処理がなされる。
コーディングベクタ情報に従って、チェックノードCheckNode[y]と既存パリティパケットの接続処理を行う。
ステップＳＴ１６：情報パケット接続処理がなされる。
チェックノードの情報パケットへのポインタをセットし、チェックノードと情報パケットとの接続処理がなされる。
【０１０８】
図２１のフローチャートは、パリティパケット接続処理（ステップＳＴ１５）を示す。以下、フローチャートに沿って処理を説明する。
ステップＳＴ２１：接続処理が開始される。
ステップＳＴ２２：degree_p設定処理がなされる。
次のように、パリティパケットの生成元パケット数を追加チェックノードのdegree_pに格納する。
CheckNode[y].degree_p = コーディングベクタ情報のdegree_p
【０１０９】
ステップＳＴ２３：図２１において点線枠内で示すように、チェックノードとパリティパケット接続処理がなされる。
この処理はi = 0から、i = degree_p-1まで繰り返し処理する。以下、この処理について説明する。
ステップＳＴ２４：生成元パリティパケット検索処理がなされる。
コーディングベクタ情報の、term_id[i]，parity_id[i]と同一の端末識別情報、パリティパケット識別情報をもつパリティパケットを、パリティパケット記憶部２６内で検索する。
ステップＳＴ２５：生成元パリティパケットがパリティパケット記憶部２６に存在しているかどうかが判定される。
以下、もし生成元パリティパケットがパリティパケット記憶部２６に存在してれば、以下の説明ではそのパリティパケットを格納する領域をParityBuf[z]と表記する。
【０１１０】
もし、生成元パリティパケットがパリティパケット記憶部２６に存在していると、ステップＳＴ２５で判定されれば、チェックノード接続処理ＳＴ２６へ進む。もし、生成元パリティパケットが存在しないと、ステップＳＴ２５で判定されれば、パリティパケット記憶部空き領域取得処理ＳＴ２７へ進む。
【０１１１】
ステップＳＴ２７：パリティパケット記憶部２６から空き領域取得処理がなされる。以下、取得したパリティパケット領域をParityBuf[z]と表記する。
ステップＳＴ２８：パリティパケット追加処理がなされる。ParityBuf[z]へ下記のようにデータを格納する。
【０１１２】
ParityBuf[z].loss = 1
ParityBuf[z].term_id = コーディングベクタ情報のterm_id[i]
ParityBuf[z].parity_id = コーディングベクタ情報のparity_id[i]
ParityBuf[z].sel_prob = 1.0
ParityBuf[z].dataへはデータを格納する必要はない。
【０１１３】
ステップＳＴ２６：チェックノード接続処理がなされる。
次のようにチェックノードのパリティパケットへのポインタをセットし、チェックノードとパリティパケットを接続する。
CheckNode[y].pParity[i] = &ParityBuf[z]
ステップＳＴ２９：パリティパケット接続処理が終了する。
【０１１４】
図２２のフローチャートは、情報パケット接続処理（ステップＳＴ１６）を示す。コーディングベクタ情報に従って、チェックノードと情報パケットの接続加処理を行う。以下、フローチャートに沿って処理を説明する。
ステップＳＴ３１：接続処理が開始される。
ステップＳＴ３２：degree_p設定処理がなされる。
次のように、パリティパケットの生成元パケット数を追加チェックノードのdegree_iに格納する。
CheckNode[y].degree_i = コーディングベクタ情報のdegree_i
【０１１５】
ステップＳＴ３３：図２２において点線枠内で示すように、チェックノードと情報パケットの接続処理がなされる。
この処理はi = 0から、i = degree_i-1まで繰り返し処理する。以下、この処理について説明する。
ステップＳＴ３４：生成元パリティパケット検索処理がなされる。
コーディングベクタ情報の、info_id[i]と同一の識別情報をもつ情報パケットを、情報パケット記憶部２４内で検索する。
ステップＳＴ３５：生成元情報パケットが情報パケット記憶部２４に存在しているかどうかが判定される。
以下、もし生成元情報パケットが情報パケット記憶部２４に存在してれば、以下の説明ではその情報パケットをInfoBuf[z]と表記する。
【０１１６】
もし、生成元情報パケットが情報パケット記憶部２４に存在していると、ステップＳＴ３５で判定されれば、チェックノード接続処理ＳＴ３６へ進む。もし、生成元情報パケットが存在しないと、ステップＳＴ３５で判定されれば、情報パケット記憶部空き領域取得処理ＳＴ３７へ進む。
【０１１７】
ステップＳＴ３７：情報パケット記憶部２４から空き領域取得処理がなされる。以下、取得した情報パケット領域をInfoBuf[z]と表記する。
ステップＳＴ３８：情報パケット追加処理がなされる。InfoBuf[z]へ下記のようにデータを格納する。
【０１１８】
InfoBuf[z]へ下記のようにデータを格納する。
InfoBuf[z].loss = 1
InfoBuf[z].info_id=コーディングベクタ情報のinfo_id[i]
InfoBuf[z].sel_prob=1.0
InfoBuf[z].dataへはデータを格納する必要はない。
【０１１９】
ステップＳＴ３６：チェックノード接続処理がなされる。
次のようにチェックノードの情報パケットへのポインタをセットし、チェックノードと情報パケットを接続する。
CheckNode[y].pInfo[i]=&InfoBuf[z]
ステップＳＴ３９：パリティパケット接続処理が終了する。
【０１２０】
図２０のフローチャートに戻って説明する。
ステップＳＴ１７：チェックノードキュー追加処理がなされる。
デコード処理部２５のチェックノードキューへ、CheckNode[y]を追加する。
ステップＳＴ１８：パリティパケット入力部の処理が終了する。
【０１２１】
図２３のフローチャートを参照してデコード処理部２５の処理について説明する。
ステップＳＴ４１：デコード処理が開始される。
ステップＳＴ４２：チェックノードキューのアイテム数が０か否かが判定される。
チェックノードキューは、図２４に示すように、処理の必要なチェックノードへのポインタを要素とする、ＦＩＦＯ(First-In First-Out)型のバッファである。
【０１２２】
ステップＳＴ４２において、チェックノードキューに登録されているチェックノード数が０と判定されると、デコード処理を終了する（ステップＳＴ４３）。
ステップＳＴ４２において、チェックノードキューに処理待ちのチェックノードがある場合は、チェックノード取得処理（ステップＳＴ４４）へ進む。
ステップＳＴ４４：チェックノード取得処理は、チェックノードキューから処理待ちのチェックノードを取り出す。以下の説明では、ここで取り出したチェックノードをCheckNode[x]と表記する。
ステップＳＴ４５：取り出されたチェックノードに対する処理がなされる。
【０１２３】
図２５のフローチャートは、チェックノード処理を示す。チェックノード処理について説明する。
ステップＳＴ５１：チェックノード処理が開始される。
ステップＳＴ５２：消失パケット数カウントがなされる。ステップＳＴ５２において、CheckNode[x]に接続されている情報パケットとパリティパケットすべてについて、消失しているパケットかどうかを確認し、消失パケット数をカウントする。消失しているかどうかは消失フラグ(loss値)により確認する。
【０１２４】
ステップＳＴ５３：消失パケット数が１かどうかが判定される。
ステップＳＴ５４：消失パケット数が１の場合、パケット回復処理を行う。回復処理を行うパケットをInfoBuf[x]とすると下記のように回復処理を行う。チェックノード処理が終了する（回復パケットあり）。
InfoBuf[x].data =｛CheckNode[x]に接続されている他のパケットのdata部分の排他的論理和｝
InfoBuf[x].loss=0
ステップＳＴ５３において、消失パケット数が１でない場合、パケット回復処理を行わずにチェックノード処理が終了する（回復パケット無し）。
【０１２５】
図２３のフローチャートに戻って説明すると、上述したチェックノード処理（ステップＳＴ４５）が終了すると、処理がステップＳＴ４６に移る。
ステップＳＴ４６：回復パケットの有無が判定される。回復パケットがない場合は、チェックノード取得処理（ステップＳＴ４２）へ処理が戻る。
【０１２６】
ステップＳＴ４７：回復パケットがあると判定される場合は、チェックノードキュー追加処理を行う。
チェックノード追加処理では、回復パケットInfoBuf[x]に接続されているチェックノードをチェックノード記憶部２７内で検索し、InfoBuf[x]に接続されているチェックノードをチェックノードキューへ追加する。
チェックノード追加処理後、チェックノード取得処理（ステップＳＴ４２）へ処理が戻る。
【０１２７】
情報パケット出力部３３は、情報パケット記憶部２４に格納されている情報パケットの中から、最も順序の古い情報パケットを選択し、data部分を後段のＣＡＳ(Conditional Access System)デスクランブル部３４へ出力する。情報パケットの順序は識別情報から決定可能である。後段に出力した情報パケットの領域は空き領域とする。
【０１２８】
ＣＡＳデスクランブル部３４は、コンディショナルアクセスのデスクランブル処理を行う。ＣＡＳデスクランブル部３４の出力がＤｅｍｕｘ，Ａ／Ｖデコード部３５に供給される。Ｄｅｍｕｘ，Ａ／Ｖデコード部３５は、情報パケット出力部３３から出力されたＭＰＥＧ２−ＴＳをデマルチプレックス処理、デコード処理し、映像音声データを出力する。映像音声データは、表示部３６に供給される。表示部３６が映像データの表示、音声出力を行う。
本実施例では、ＣＡＳデスクランブル部３４で実施されるデスクランブル処理前の情報パケットを用いてパリティパケットの生成・共有を行う。スクランブルが施されている情報パケットを用いてパリティパケット生成・共有を行うため、著作権が保護された状態でローカルネットワークを介したデータ共有を実現することが可能である。
【０１２９】
制御部２８は、各機能の動作パラメータ・動作タイミングを制御し、各機能の状態をモニタする。各機能に対する制御・モニタについて以下に説明する。
エンコード処理部３２に対する制御・モニタは、処理の実行タイミングを指示することである。
【０１３０】
図２６は、エンコード処理部３２のエンコード処理タイミングの説明図である。
図２６に示すように、パリティパケット生成周期Tgenにてエンコード処理を行い、５つのパリティパケットを生成した時点で、RTP/UDP/IPプロトコル処理部３０が５つのパリティパケットを結合し、ローカルネットワークインターフェース部２９を通じてローカルネットワークにマルチキャスト伝送している。
【０１３１】
制御部２８は、パリティパケット入力部３１から得られる、情報パケットの入力タイミングを基準とし、パリティパケット生成周期にてエンコード処理部３２の処理実行を指示する。
【０１３２】
コーディングベクタ情報送信処理について説明する。
チェックノード記憶部２７にある自端末で生成されたパリティパケットに対応するチェックノードの情報からコーディングベクタ情報を生成し、RTP/UDP/IPプロトコル処理部３０へ出力する。この処理は、予め定めた周期で行う。
コーディングベクタ情報の生成に用いるチェックノードは、チェックノード記憶部２７よりランダムに選択する。
【０１３３】
図２７は、コーディングベクタ情報を示す。チェックノード記憶部２７から選択されたチェックノードをCheckNode[y]とすると、コーディングベクタの各要素を次のように決定する。
【０１３４】
info_degree    :CheckNode[y].info_degree
info_id[0]    :CheckNode[y].pInfo[0]->info_id
info_id[1]    :CheckNode[y].pInfo[1]->info_id
.....[info_degree個つづく]
parity_degree    :CheckNode[y].parity_degree
term_id[0]    :CheckNode[y].pParity[0]->term_id
parity_id[0]    :CheckNode[y].Pparity[0]->parity_id
term_id[1]    :CheckNode[y].pParity[1]->term_id
parity_id[1]    :CheckNode[y].Pparity[1]->parity_id
.....[parity_degree個つづく]
【０１３５】
コーディングベクタ情報を送信することにより、自端末から送信したにも関わらず、ローカルネットワーク上でのパケットロス等の理由で他の端末では受信できなかったパリティパケットについても、他の端末において、その構成情報（生成元パケット情報）を取得してチェックノードを生成できるようになる。
コーディングベクタ情報の伝送は、ローカルネットワーク上のパケットロスに対して回復機能を果たすことができる。
【０１３６】
コーディングベクタ情報受信処理について説明する。
RTP/UDP/IPプロトコル処理部３０から得られたコーディングベクタ情報に従って、チェックノード記憶部２７へ追加する。
【０１３７】
図２８のフローチャートは、コーディングベクタ受信時の処理を示す。以下、フローチャートの各処理について説明する。
ステップＳＴ６１：コーディングベクタの入力処理を開始する。
ステップＳＴ６２：チェックノード検索処理がなされる。
受信したコーディングベクタ情報と同一のチェックノード（チェックノードに接続されている全てのパケットの識別情報が、受信したコーディングベクタ情報と一致する物）をチェックノード記憶部２７内で検索する。
【０１３８】
ステップＳＴ６３：同一のチェックノードが存在しているか否かが判定される。同一のチェックノードが存在する場合は処理を終了する（ステップＳＴ６４）。
ステップＳＴ６５：ステップＳＴ６３において同一のチェックノードが存在しないと判定される場合は、チェックノード記憶部空き領域取得処理がなされる。
チェックノード記憶部空き領域取得処理（ステップＳＴ６５）以降の、パリティパケット接続処理（ステップＳＴ６６）、情報パケット接続処理（ステップＳＴ６７）、チェックノードキュー追加処理（ステップＳＴ６８）は、図２０、図２１および図２２のフローチャートを参照して説明したパリティパケット入力部３１の処理と同一である。
【０１３９】
図２９乃至図３５のタナーグラフを参照して本開示の効果を説明する。
一例として、図２９のタナーグラフで示すような符号を考える。本開示では、情報パケットとパリティパケットとの間にチェックノードを設けている。パリティパケットP[1]，P[2]，P[3]，P[4]および情報パケット I[1]，I[2]，I[3]，I[4]がチェックノード C[1]，C[2]，C[3]，C[4]を介して接続されている図である。パリティパケットは、P[1]，P[2]，P[3]，P[4]の順番に生成・伝送が行われる。また、エンコード処理部３２ではパリティパケットと付随するコーディングベクタが、パリティパケット伝送フォーマットとして結合された後、ローカルネットワークにて伝送される。
【０１４０】
パリティパケットP[x]の生成元情報パケットの識別番号の集合、をVi[x] = {vi[x,0], vi[x,1], ... , vi[x,di[x]-1] }と表記する。ここで di[x]はP[x]の生成元情報パケットの数である。パリティパケットP[x]の生成元パリティパケットの識別番号の集合、をVp[x] = {vp[x,0], vp[x,1], ... , vp[x,dp[1]-1] }と表記する。ここで dp[x]はP[x]の生成元パリティパケットの数である。
たとえば図２９のP[2]は情報パケットI[3],I[4]と、パリティパケットP[1]から生成されることから、コーディングベクタVi[2]およびVp[2]は次のように表記できる。
di[2] = 2
Vi[2] = { vi[2,0], vi[2,1] } = {3, 4}
dp[2] = 1
Vp[2] = { vp[2,0] } = {1}
【０１４１】
最終的なタナーグラフが図２９となることを前提とし、図３０から図３３は、ある端末が、他の端末からパリティパケットを順次受信している過程を示しており、情報パケットおよびパリティパケットに消失が無い場合の動作を説明する図である。図３０は、P[1]を受信した状態を示している。P[1]は情報パケット１，２から生成される。したがってP[1]のコーディングベクタVi[1]は要素を持ちVi[1] = {1,2}である。P[1]の生成元パケットは情報パケットのみである(他のパリティパケットは生成元として使われていない)からVp[1]は要素を持たない。P[1]を受信すると、P[1]に付随するコーディングベクタVp[1],Vi[1]に基いてC[1]が接続され、C[1]はP[1]およびI[1],I[2]に接続される。図３１は、パリティパケットP[2]を受信した状態を示す。P[2]はI[3],I[4]およびP[1]により生成されているので、コーディングベクタはVi[2]={3,4},Vp[2]={1}となる。したがって受信端末はVi[2],Vp[2]に従ってC[2]を接続し、I[3],I[4],P[1]およびP[2]に接続される。同様に、図３２は、パリティパケットP[3]を受信した状態を示し、図３３は、パリティパケットP[4]を受信した状態を示す。
このように各チェックノードは、パリティパケットを受信する毎に付随するコーディングベクタVi, Vpの情報に基いて生成元パケット間を接続していく。
【０１４２】
上述の動作を前提とし、情報パケットI[1]とパリティパケットP[1]が消失した場合の動作を例とし、パリティパケットの生成に、情報パケットだけでなく既に生成・共有済みの他のパリティパケットも使用する効果、および、コーディングベクタのみを伝送する効果を説明する。
情報パケットI[1]とパリティパケットP[1]とが消失した場合は、図３４に示す状態となる。パリティパケットP[1]とコーディングベクタVi[1],Vp[1]はエンコード処理部３２において結合された後、ローカルネットワークへ送信されるため、パリティパケットP[1]がローカルネットワーク上の伝送消失した場合、付随するコーディングベクタVi[1],Vp[1]も消失することになる。したがって、P[1]が消失した場合、チェックノードC[1]の接続状態（＝パリティパケットP[1]のコーディングベクタ）も不明となる。この状態からは、チェックノードC[2]の接続情報（パリティパケットP[2]のコーディングベクタVi[2],Vp[2]により接続された）により、I[3]、I[4]、P[2]の排他的論理和によってP[1]を回復することができる。これはP[2]の生成元パケットとしてP[1]が使用された効果（パリティパケッの生成に、情報パケットだけでなく既に生成・共有済みの他のパリティパケットも使用する効果）である。ただし、この状態では、C[1]の接続情報が無いため、I[1]を回復することができない。
【０１４３】
しかしながら、図３５に示すように、パリティパケットP[1]のコーディングベクタVi[1],Vp[1]が他の端末から再度ローカルネットワーク上でマルチキャスト伝送され、受信できた場合、チェックノードC[1]の接続状態が判り（破線で示した接続）情報パケットI[1]を回復することができる。つまり、P[1]がローカルネットワーク上の伝送にて消失した場合でも、P[1]を再度伝送することなく、そのコーディングベクタVi[1],Vp[1]さえ再度伝送すれば、情報パケットI[1]を回復できることが判る。
【０１４４】
以上の説明をまとめると、パリティパケットがローカルネットワーク上で消失する可能性がある場合は、パリティパケットの生成に情報パケットだけでなく既に生成・共有済みの他のパリティパケットも使用することにより消失したパリティパケットを回復可能となり、さらに、過去に生成したコーディングベクタのみを再度伝送することにより消失している情報パケットの回復機能を果たすことができる。また、コーディングベクタ情報は伝送するデータ自体（ペイロード）を含まず、情報量が小さいため、伝送時のローカルネットワークの負荷が小さく、効率的な消失データの回復が可能となる。
【０１４５】
上述した本開示の実施の形態は、下記の効果を奏するものである。
（１）空間ダイバーシティ効果が得られ、受信品質が高まる。
（２）通常のアンテナダイバーシティと比較し、自由に移動可能な端末間でダイバーシティ効果を得るため、フェージング相関が低くなり、高いダイバーシティ効果が期待できる。
（３）端末数に制限がなく、多くの端末の受信品質を同時に向上させることができる。
（４）パリティパケットを同時に複数の端末で共有することで、ローカルネットワークの負荷が小さくてすむ。
（５）ローカルネットワーク上のパケットロスに対する誤り制御としても働く。
（６）パリティパケット生成時に、生成元パケットを選択する確率を更新することで、効率的なパリティパケットを生成することができる。
【０１４６】
なお、本開示は、以下のような構成も取ることができる。
（１）
基地局から送信された情報パケットを受信する機能と、
複数の端末間で情報を共有するためのローカルネットワークに接続する通信機能と、
パリティパケットを生成する機能と、
生成した前記パリティパケットと生成元パケットすべての識別情報とを前記ローカルネットワークにマルチキャストする機能と
を備える通信装置。
（２）
基地局から送信された情報パケットを受信する機能と、
他の端末がマルチキャストした前記パリティパケットと生成元パケットすべての識別情報とを前記ローカルネットワークを通じて受信する機能と、
受信した前記パリティパケットと生成元パケットすべての識別情報とを記憶部に保存する機能と、
前記パリティパケットと生成元パケットすべての識別情報とを使用して欠落しているパケットを回復させる機能と
を備える通信装置。
（３）
基地局から送信された情報パケットを受信する機能と、
複数の端末間で情報を共有するためのローカルネットワークに接続する通信機能と、
パリティパケットを生成する機能と、
生成した前記パリティパケットと生成元パケットすべての識別情報とを前記ローカルネットワークにマルチキャストする機能と、
他の端末がマルチキャストした前記パリティパケットと生成元パケットすべての識別情報とを前記ローカルネットワークを通じて受信する機能と、
受信した前記パリティパケットと生成元パケットすべての識別情報とを記憶部に保存する機能と、
前記パリティパケットと生成元パケットすべての識別情報とを使用して欠落しているパケットを回復させる機能と
を備える通信装置。
（４）
正しく受信、もしくは回復できた情報パケットの中から複数の情報パケットを選択し、選択された前記情報パケット対して誤り訂正符号化を行い、単数もしくは複数の前記パリティパケットを生成する（１）、（２）および（３）の何れかに記載の通信装置。
（５）
正しく受信、もしくは回復できた情報パケットの中から複数もしくは単数の情報パケットを選択し、選択された前記情報パケットのビット毎の排他的論理和により、前記パリティパケットを生成する（１）、（２）および（３）の何れかに記載の通信装置。
（６）
前記パリティパケットの生成に用いる単数もしくは複数の生成元パケットをランダムに選択する（５）に記載の通信装置。
（７）
複数または単数の情報パケットおよび既に生成されたパリティパケットを選択し、ビット毎の排他的論理和により前記パリティパケットを生成する（１）、（２）および（３）の何れかに記載の通信装置。
（８）
前記生成元パケットをランダムに選択する際に、すでに選択された回数に応じて、選択される確率を変える（７）に記載の通信装置。
（９）
送信済みパリティパケットの生成元情報のみをローカルネットワーク上でマルチキャスト伝送する（１）または（２）に記載の通信装置。
（１０）
生成元情報パケットの識別情報として、情報パケット内のシーケンス番号もしくは、タイムスタンプ値を用いる（１）、（２）および（３）の何れかに記載の通信装置。
（１１）
生成元情報パケットの識別情報を、ＭＰＥＧ２−ＴＳのＰＣＲ値から生成する（１）、（２）および（３）の何れかに記載の通信装置。
（１２）
生成元情報パケットの識別情報を、ＭＰＥＧ２−ＴＳパケットヘッダのコンティニュイティカウンタから生成する（１）、（２）および（３）の何れかに記載の通信装置。
（１３）
生成元情報パケットの識別情報を、ＭＰＥＧ２−ＴＳ内に多重されている複数のプログラムのＰＣＲ値と、複数のＰＩＤのコンティニュイティカウンタを組み合わせて生成する（１）、（２）および（３）の何れかに記載の通信装置。
（１４）
生成元パリティパケットの識別情報を、パリティパケット生成装置固有の情報と、その端末で既に生成されたパリティパケット数より生成する（６）に記載の通信装置。
（１５）
受信パリティパケットの生成元パケットと同一の識別情報を持つパケットを記憶部から検索し、生成元パケットの内、欠落パケットが一つだけであれば、受信パリティパケットと他の生成元パケットの排他的論理和により、消失パケットを回復する（１）または（３）に記載の通信装置。
（１６）
基地局からマルチキャストまたはブロードキャストされた情報パケットを受信する複数の端末と、前記複数の端末同士で情報を共有するためのネットワークとを有し、
前記複数の端末が複数回にわたりパリティパケットをお互いに送受信して共有することにより、各端末で正常に受信できなかった情報パケットを回復するようにした通信システム。
（１７）
前記複数の端末の内、１つもしくは複数の端末はパリティパケットの生成、送信のみを行う第１の通信装置であり、それ以外の複数の端末は第２の通信装置であり、
前記第１の通信装置は、
基地局から送信された情報パケットを受信する機能と、
複数の端末間で情報を共有するためのローカルネットワークに接続する通信機能と、
前記パリティパケットを生成する機能と、
生成した前記パリティパケットと生成元パケットすべての識別情報とを前記ローカルネットワークにマルチキャストする機能とを備え、
前記第２の通信装置は、
前記基地局から送信された情報パケットを受信する機能と、
前記第１の通信装置がマルチキャストした前記パリティパケットと前記生成元パケットすべての識別情報とを前記ローカルネットワークを通じて受信する機能と、
受信した前記パリティパケットと前記生成元パケットすべての識別情報とを記憶部に保存する機能と、
前記パリティパケットと前記生成元パケットすべての識別情報とを使用して欠落しているパケットを回復させる機能とを備える通信装置である（１６）に記載の通信システム。
（１８）
前記複数の端末のそれぞれは、
基地局から送信された情報パケットを受信する機能と、
複数の受信端末で情報を共有するためのローカルネットワークに接続する通信機能と、
パリティパケットを生成する機能と、
生成した前記パリティパケットと前記生成元パケットすべての識別情報とを前記ローカルネットワークにマルチキャストする機能と、
他の端末がマルチキャストした前記パリティパケットと前記生成元パケットすべての識別情報とを前記ローカルネットワークを通じて受信する機能と、
受信した前記パリティパケットと前記生成元パケットすべての識別情報とを記憶部に保存する機能と、
前記パリティパケットと前記生成元パケットすべての識別情報とを使用して欠落しているパケットを回復させる機能と
を有する（１６）に記載の通信システム。
（１９）
複数の端末が基地局からマルチキャストまたはブロードキャストされた情報パケットを受信し、ネットワークを介して前記複数の端末同士で情報を共有し、
前記複数の端末が複数回にわたりパリティパケットをお互いに送受信して共有することにより、各端末で正常に受信できなかった情報パケットを回復するようにした通信方法。
（２０）
基地局から送信された情報パケットを受信するステップと、
複数の端末間で情報を共有するためのローカルネットワークに接続する通信ステップと、
パリティパケットを生成するステップと、
生成した前記パリティパケットと生成元パケットすべての識別情報とを前記ローカルネットワークにマルチキャストするステップと、
他の端末がマルチキャストした前記パリティパケットと生成元パケットすべての識別情報とを前記ローカルネットワークを通じて受信するステップと、
受信した前記パリティパケットと生成元パケットすべての識別情報とを記憶部に保存するステップと、
前記パリティパケットと生成元パケットすべての識別情報とを使用して欠落しているパケットを回復させるステップと
を有する通信方法をコンピュータに対して実行させるプログラム。
【０１４７】
＜４．変形例＞
以上、本開示の実施の形態について具体的に説明したが、上述の各実施の形態に限定されるものではなく、本開示の技術的思想に基づく各種の変形が可能である。例えは本開示は、複数のＴＳパケットを集めたものを一つのパケットとして扱うようにしても良い。さらに、ＴＳパケット以外のパケットを処理の単位としても良い。
【０１４８】
また、上述の実施の形態の構成、方法、工程、形状、材料および数値などは、本開示の主旨を逸脱しない限り、互いに組み合わせることが可能である。
【符号の説明】
【０１４９】
１・・・基地局
２，２ａ〜２ｄ・・・端末
３・・・ローカルネットワーク
１３・・・情報パケット記憶部
１４・・・Ａ／Ｖデコード部
１６・・・パリティパケット記憶部
１７・・・パリティ共有誤り制御部
２２・・・情報パケット識別情報付与部
２４・・・情報パケット記憶部
２５・・・デコード処理部
２６・・・パリティパケット記憶部
２７・・・チェックノード記憶部
２８・・・制御部
３１・・・パリティパケット入力部
３２・・・エンコード処理部
３３・・・情報パケット出力部
【図１】
2017002291.tif 000003
【図２】
2017002291.tif 000004
【図３】
2017002291.tif 000005
【図４】
2017002291.tif 000006
【図５】
2017002291.tif 000007
【図６】
2017002291.tif 000008
【図７】
2017002291.tif 000009
【図８】
2017002291.tif 000010
【図９】
2017002291.tif 000011
【図１０】
2017002291.tif 000012
【図１１】
2017002291.tif 000013
【図１２】
2017002291.tif 000014
【図１３】
2017002291.tif 000015
【図１４】
2017002291.tif 000016
【図１５】
2017002291.tif 000017
【図１６】
2017002291.tif 000018
【図１７】
2017002291.tif 000019
【図１８】
2017002291.tif 000020
【図１９】
2017002291.tif 000021
【図２０】
2017002291.tif 000022
【図２１】
2017002291.tif 000023
【図２２】
2017002291.tif 000024
【図２３】
2017002291.tif 000025
【図２４】
2017002291.tif 000026
【図２５】
2017002291.tif 000027
【図２６】
2017002291.tif 000028
【図２７】
2017002291.tif 000029
【図２８】
2017002291.tif 000030
【図２９】
2017002291.tif 000031
【図３０】
2017002291.tif 000032
【図３１】
2017002291.tif 000033
【図３２】
2017002291.tif 000034
【図３３】
2017002291.tif 000035
【図３４】
2017002291.tif 000036
【図３５】
2017002291.tif 000037
【国際調査報告】
2017002291.tif 000038
2017002291.tif 000039
2017002291.tif 000040
2017002291.tif 000041