JP2004165922A - 情報処理装置および方法、並びにプログラム - Google Patents
情報処理装置および方法、並びにプログラム Download PDFInfo
- Publication number
- JP2004165922A JP2004165922A JP2002328556A JP2002328556A JP2004165922A JP 2004165922 A JP2004165922 A JP 2004165922A JP 2002328556 A JP2002328556 A JP 2002328556A JP 2002328556 A JP2002328556 A JP 2002328556A JP 2004165922 A JP2004165922 A JP 2004165922A
- Authority
- JP
- Japan
- Prior art keywords
- packet
- data
- received
- redundant
- data packet
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Withdrawn
Links
Images
Abstract
【課題】より好適にパケットデータを取得し、データの再生を行う。
【解決手段】ステップS23において、ロスしたパケットが存在すると判定した場合、クライアントのデータ再生部は、取得したパケットおよび情報をパケット復元部に供給する。パケット復元部は、ステップS24において、リードソロモン符号冗長パケットによるデータパケットの復元が可能であるか否かを判定する。復元可能である場合、パケット復元部は、ステップS25において、ロスしたデータパケットの、リードソロモン符号冗長パケットを用いた復元処理を実行する。復元不可能である場合、パケット復元部は、ステップS29において、ロスしたデータパケットの、EOR冗長パケットを用いた復元処理を実行する。本発明は、ストリーミングデータ配信システムに適用できる。
【選択図】 図7
【解決手段】ステップS23において、ロスしたパケットが存在すると判定した場合、クライアントのデータ再生部は、取得したパケットおよび情報をパケット復元部に供給する。パケット復元部は、ステップS24において、リードソロモン符号冗長パケットによるデータパケットの復元が可能であるか否かを判定する。復元可能である場合、パケット復元部は、ステップS25において、ロスしたデータパケットの、リードソロモン符号冗長パケットを用いた復元処理を実行する。復元不可能である場合、パケット復元部は、ステップS29において、ロスしたデータパケットの、EOR冗長パケットを用いた復元処理を実行する。本発明は、ストリーミングデータ配信システムに適用できる。
【選択図】 図7
Description
【0001】
【発明の属する技術分野】
本発明は情報処理装置および方法、並びにプログラムに関し、特に、より好適にパケットデータを取得し、データの再生を行うことができるようにした、情報処理装置および方法、並びにプログラムに関する。
【0002】
【従来の技術】
近年、ブロードバンド通信網の発達などにより、インターネットに代表されるネットワークを介して、ユニキャストやマルチキャストでの、音声や映像等のデータのストリーミング配信やリアルタイムな放送などが数多く行われるようになってきた。
【0003】
従来、このようなネットワークを介した通信において、UDP/IP(User Datagram Protocol/Internet Protocol)を用いたユニキャストやマルチキャスト等の配信に、ブロック内のデータ誤りを検出し訂正するブロック符号の1つであるリードソロモン符号等を用いたFEC(Forward Error Correction)を併用した配信方式が提案されている(例えば、非特許文献1乃至3参照)。
【0004】
リードソロモン符号によるパケットロスに対するエラー訂正処理において、送信側では、所定の大きさのブロック単位ごとに、送信データの誤り訂正コードが生成され、その誤り訂正コードより冗長パケットが生成され、その生成された冗長パケットが、パケット化された送信データとともに配信される。
【0005】
そして、受信側では、パケット化された送信データとともに冗長パケットも受信し、送信データのパケットのロスが生じた場合、そのパケットを、受信した冗長パケットを用いて復元する。ロスしたパケットの復元が不可能である場合は、送信側に対して、ロスしたパケットの再送が要求される。
【0006】
また、FECの符号化方式の例として、リードソロモン符号方式の代わりに、EOR(exclusive OR)演算を用いて冗長パケットを生成する方式もある(例えば、特許文献1参照)。
【0007】
EOR演算を用いた、パケットロスに対するエラー訂正処理において、送信側では、所定の大きさのブロック単位ごとに、EOR演算を用いて、送信データの誤り訂正コードが生成され、その誤り訂正コードより冗長パケットが生成され、その生成された冗長パケットが、パケット化された送信データとともに配信される。
【0008】
そして、受信側では、パケット化された送信データとともに冗長パケットも受信し、送信データのパケットのロスが生じた場合、そのパケットを、受信した冗長パケットを用いて復元する。ロスしたパケットの復元が不可能である場合は、送信側に対して、ロスしたパケットの再送が要求される。
【0009】
【非特許文献1】
米山 清二郎、外2名、“Reliable Multicast − Using FEC on IP version6”、[online]、平成11年12月15日、インターネットコンファレンス、[平成14年10月8日検索]、インターネット,<URL:http://www.internetconference.org/ic99/program.html>
【0010】
【非特許文献2】
窪 貴志、“信頼性マルチキャストを用いた実時間メディア伝送に関する考察”、[online]、平成13年2月18日、奈良先端科学技術大学院大学修士論文・課題研究発表会、[平成14年10月8日検索]、インターネット,<URL: http://isw3.aist−nara.ac.jp/IS/MasterThesis/2001/0051031.html>
【0011】
【非特許文献3】
米山 清二郎、“FEC on IPv6 for Reliable Multicast”、[online]、平成12年11月1日、インターネットコンファレンス、[平成14年10月8日検索]、インターネット,<URL: http://www.csl.sony.co.jp/ic2000/papers/S03_01.pdf>
【0012】
【特許文献1】
特開2001−189665号公報(第25−26ページ、図3)
【0013】
【発明が解決しようとする課題】
しかしながら、以上のような方法において、ロスしたパケットを復元できない場合、再送処理を行わなければならないので、送信データを再生するまでに要する処理時間が長くなってしまうという課題があった。
【0014】
特に、ストリーミング配信やリアルタイムのデータ配信において、受信側の装置は、順次送信されるデータを受信し、再生しなければならず、復元処理を短時間で行わなければならない。従って、上述したような処理時間の増大は、再生能力に大きく影響する。
【0015】
本発明はこのような状況に鑑みてなされたものであり、より好適にパケットデータを取得し、データの再生を行うことができるようにしたものである。
【0016】
【課題を解決するための手段】
本発明の情報処理装置は、他の情報処理装置により送信された、配信用データのデータパケット、複数のデータパケットに含まれる各データに基づいて生成されたリードソロモン符号を含む第1の冗長パケット、並びに、複数のデータパケットに含まれる各データの排他的論理和演算結果を含む第2の冗長パケットを受信する受信手段と、受信手段により受信できなかったデータパケットを、受信手段により受信された第1の冗長パケットを用いて復元可能であるか否かを判定する可能性判定手段と、可能性判定手段による判定結果に基づいて、復元可能である場合、受信手段により受信されたデータパケットおよび第1の冗長パケットを用いて、受信手段により受信できなかったデータパケットを復元する第1の復元手段と、可能性判定手段による判定結果に基づいて、復元不可能である場合、受信手段により受信されたデータパケットおよび第2の冗長パケットを用いて、受信手段により受信できなかったデータパケットを復元する第2の復元手段とを備えることを特徴とする。
【0017】
前記第1の冗長パケットは、所定の大きさに分割された配信用データであるブロック毎に、同一のブロックに対応する全てのデータパケットを用いて生成され、第2の冗長パケットは、同一のブロックに対応する、任意に選択された複数のデータパケットを用いて、ブロック毎に生成されるようにすることができる。
【0018】
前記データパケット、第1の冗長パケット、および第2の冗長パケットは、ブロック単位で他の情報処理装置より送信されるようにすることができる。
【0019】
前記受信手段は、同一のブロックのデータパケット、第1の冗長パケット、および第2の冗長パケットの受信処理が完了したか否かを監視する監視手段をさらに備えるようにすることができる。
【0020】
前記受信手段により受信できなかったデータパケットが存在するか否かを判定する存在判定手段をさらに備えるようにすることができる。
【0021】
前記第2の冗長パケットの生成に関する情報を他の情報処理装置と共有するようにすることができる。
【0022】
前記可能性判定手段は、受信手段により受信できなかったデータパケットの数と、受信手段により受信された第1の冗長パケットの数とを比較して、受信手段により受信できなかったデータパケットを復元可能であるか否かを判定するようにすることができる。
【0023】
前記第1の復元手段は、第1の冗長パケットに含まれるリードソロモン符号を復号することによって、受信手段により受信できなかったデータパケットを復元するようにすることができる。
【0024】
前記第2の復元手段は、値が0でない係数を選択するための処理方法であるピボット選択を用いたガウス消去法を用いて、受信手段により受信されたデータパケットおよび第2の冗長パケットに基づいて生成された連立一次方程式を解くことによって、受信手段により受信できなかったデータパケットを復元するようにすることができる。
【0025】
前記復元手段は、行列の所定の列について値が0でない係数を含む方程式のうち、隣り合う方程式同士で各項毎に排他的論理和を演算する応用ガウス消去法を用いて、受信手段により受信されたデータパケットおよび第2の冗長パケットに基づいて生成された連立一次方程式を解くことによって、受信手段により受信できなかったデータパケットを復元するようにすることができる。
【0026】
本発明の情報処理方法は、他の情報処理装置により送信された、配信用データのデータパケット、複数のデータパケットに含まれる各データに基づいて生成されたリードソロモン符号を含む第1の冗長パケット、並びに、複数のデータパケットに含まれる各データの排他的論理和演算結果を含む第2の冗長パケットの受信を制御する受信制御ステップと、受信制御ステップの処理により受信できなかったデータパケットを、受信制御ステップの処理により受信された第1の冗長パケットを用いて復元可能であるか否かを判定する可能性判定ステップと、可能性判定ステップの処理による判定結果に基づいて、復元可能である場合、受信制御ステップの処理により受信されたデータパケットおよび第1の冗長パケットを用いて、受信制御ステップの処理により受信できなかったデータパケットを復元する第1の復元ステップと、可能性判定ステップの処理による判定結果に基づいて、復元不可能である場合、受信制御ステップの処理により受信されたデータパケットおよび第2の冗長パケットを用いて、受信制御ステップの処理により受信できなかったデータパケットを復元する第2の復元ステップとを含むことを特徴とする。
【0027】
本発明のプログラムは、他の情報処理装置により送信された、配信用データのデータパケット、複数のデータパケットに含まれる各データに基づいて生成されたリードソロモン符号を含む第1の冗長パケット、並びに、複数のデータパケットに含まれる各データの排他的論理和演算結果を含む第2の冗長パケットの受信を制御する受信制御ステップと、受信制御ステップの処理により受信できなかったデータパケットを、受信制御ステップの処理により受信された第1の冗長パケットを用いて復元可能であるか否かを判定する可能性判定ステップと、可能性判定ステップの処理による判定結果に基づいて、復元可能である場合、受信制御ステップの処理により受信されたデータパケットおよび第1の冗長パケットを用いて、受信制御ステップの処理により受信できなかったデータパケットを復元する第1の復元ステップと、可能性判定ステップの処理による判定結果に基づいて、復元不可能である場合、受信制御ステップの処理により受信されたデータパケットおよび第2の冗長パケットを用いて、受信制御ステップの処理により受信できなかったデータパケットを復元する第2の復元ステップとをコンピュータに実現させることを特徴とする。
【0028】
本発明の情報処理装置および方法、並びにプログラムにおいては、他の情報処理装置により送信された、配信用データのデータパケット、複数のデータパケットに含まれる各データに基づいて生成されたリードソロモン符号を含む第1の冗長パケット、並びに、複数のデータパケットに含まれる各データの排他的論理和演算結果を含む第2の冗長パケットが受信され、受信できなかったデータパケットを、受信された第1の冗長パケットを用いて復元可能であるか否かが判定され、その判定結果に基づいて、復元可能である場合、受信されたデータパケットおよび第1の冗長パケットを用いて、受信できなかったデータパケットが復元され、復元不可能である場合、受信されたデータパケットおよび第2の冗長パケットを用いて、受信できなかったデータパケットが復元される。
【0029】
【発明の実施の形態】
図1は、本発明を適用したデータ配信システムの基本的な構成例を表す図である。
【0030】
図1において、サーバ1は、ストリーミング配信用の、画像や音声等のストリーミングデータを蓄積しており、インターネット等に代表されるネットワーク2を介して、配信を要求したクライアント3−1または3−2に対して、ストリーミング配信サービスを提供する。サーバ1は、クライアント3−1または3−2より供給された配信要求に基づいて、ユニキャストまたはマルチキャストでデータを配信する。
【0031】
また、サーバ1は、カメラやマイク等の図示せぬ外部入力装置を介して入力された画像や音声等のデータを送信用のデータに変換し、配信を要求したクライアント3−1または3−2に、ネットワーク2を介してリアルタイムに配信(以下、LIVE配信と称する)する。
【0032】
クライアント3−1および3−2は、ユーザに操作され、ネットワーク2を介してサーバ1にアクセスし、ユーザに指示されたデータの配信を要求する。そして、その要求に基づいて、サーバ1が要求されたデータのストリーミング配信またはLIVE配信を行うと、クライアント3−1および3−2は、そのデータを受信し、処理を行い、受信したデータに対応する画像をディスプレイに表示したり、受信したデータに対応する音声をスピーカより出力したりする。
【0033】
なお、クライアント3−1,3−2を個々に区別する必要がない場合、単にクライアント3と称する。
【0034】
サーバ1は、後述するように、上述したストリーミング配信やLIVE配信において、UDP(User Datagram Protocol)/IP(Internet Protocol)プロトコルに、リードソロモン符号によって形成された冗長パケット、およびEORによって形成された冗長パケットによるFECを併用して、データを配信する。すなわち、サーバ1は、データをパケット化するとともに、パケット化されたデータ(以下、データパケットと称する)より誤り訂正用の冗長パケットを生成し、それらのデータパケットおよび冗長パケットをクライアント3に配信する。
【0035】
データパケットおよび冗長パケットを受信したクライアント3は、リードソロモン符号による誤り訂正処理を行い、受信したパケットからロスしたデータパケットを復元する。リードソロモン符号による誤り訂正処理が不可能な場合、クライアント3は、EOR演算による誤り訂正処理を行い、受信したパケットからロスしたデータパケットを復元する。クライアント3は、受信されたデータパケットと、復元されたデータパケットを用いて、データを再生する。
【0036】
なお、リードソロモン符号による誤り訂正処理も、EOR演算による誤り訂正処理も不可能な場合、クライアント3は、その部分の再生処理を省略し、次のブロックに処理を進める。
【0037】
図2は、図1に示すサーバ1の構成例を示すブロック図である。
【0038】
図2において、CPU(Central Processing Unit)11は、ROM(Read Only Memory)12に記憶されているプログラム、または記憶部33からRAM(Random Access Memory)13にロードされたプログラムに従って各種の処理を実行する。RAM13にはまた、CPU11が各種の処理を実行する上において必要なデータなども適宜記憶される。
【0039】
パケット生成部14は、CPU11に制御され、記憶部33または通信部34より供給された配信用のデータ(以下、配信データと称する)をパケット化してデータパケットを生成し、そのデータパケットを通信部34に供給する。また、パケット生成部14は、CPU11に制御され、後述するように、生成したデータパケットから、リードソロモン符号を用いて生成した誤り訂正用の冗長パケット(以下、リードソロモン符号冗長パケットと称する)、および、EOR演算を用いて生成した誤り訂正用の冗長パケット(以下、EOR冗長パケットと称する)を生成する。
【0040】
CPU11、ROM12、RAM13、およびパケット生成部14は、バス20を介して相互に接続されている。このバス20にはまた、入出力インタフェース30も接続されている。
【0041】
入出力インタフェース30には、キーボードやマウスなどよりなる入力部31、CRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)などよりなるディスプレイ、およびスピーカなどよりなる出力部32、ハードディスクなどにより構成される記憶部33、並びに、LANカード、モデム、およびターミナルアダプタなどにより構成される通信部34が接続されている。
【0042】
記憶部33には、入力部31または通信部34を介して取得された配信データ、並びに、各種の処理を実行するためのデータやプログラム等が記憶されており、各部にそれらのデータやプログラムを供給する。
【0043】
通信部34は、ネットワーク2を介しての通信処理を行う。例えば、通信部34は、CPU11に制御され、パケット生成部14より供給されたストリーミング配信用データパケットを、UDPやRTP(Real−time Transport Protocol)/RTSP(Real Time Streaming Protocol)等の所定のプロトコルを用いて配信する。また、通信部34は、CPU11に制御され、接続された外部入力装置より供給されるデータを取得し、RAM13、パケット生成部14、または記憶部33に供給する。
【0044】
入出力インタフェース30にはまた、必要に応じてドライブ40が接続され、磁気ディスク41、光ディスク42、光磁気ディスク43、或いは半導体メモリ44などが適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部33にインストールされる。
【0045】
以上において、バス20に接続されるパケット生成部14がデータパケットおよび冗長パケットの生成処理を行うように説明したが、これに限らず、パケット生成部14において行われるパケット生成処理の全部または一部が、通信部64またはCPU11において実行されるようにしてもよい。
【0046】
図3は、図1に示すクライアント3の構成例を示すブロック図である。
【0047】
図3において、CPU61は、ROM62に記憶されているプログラム、または記憶部83からRAM63にロードされたプログラムに従って各種の処理を実行する。RAM63にはまた、CPU61が各種の処理を実行する上において必要なデータなども適宜記憶される。
【0048】
データ再生部64は、CPU61に制御され、通信部84において受信したデータパケット、およびパケット復元部65において復元されたデータパケットより配信データを再構成し、MPEG(Moving Picture Experts Group)方式やATRAC3(Adaptive TRansform Acoustic Coding 3)(登録商標)方式等でデータがエンコードされている場合、対応する方式でデコードするなどしてデータを再生し、その再生されたデータ(以下、再生データと称する)をCPU61、RAM62、出力部82、または記憶部83に供給する。
【0049】
パケット復元部65は、CPU61に制御され、後述するように、通信部84において受信したリードソロモン符号冗長パケット、または通信部84において受信したEOR冗長パケットを用いて、ロスしたデータパケットの復元処理を行う。そして、パケット復元部65は、復元したデータパケットをCPU61、RAM63、または、データ再生部64に供給する。
【0050】
CPU61、ROM62、RAM63、データ再生部64、およびパケット復元部65は、バス70を介して相互に接続されている。このバス70にはまた、入出力インタフェース80も接続されている。
【0051】
入出力インタフェース80には、キーボードやマウスなどよりなる入力部81、CRTやLCDなどよりなるディスプレイ、およびスピーカなどよりなる出力部82、ハードディスクなどにより構成される記憶部83、並びに、モデム、LANカード、およびターミナルアダプタなどにより構成される通信部84が接続されている。
【0052】
入力部81は、キーボードやマウスなどにより構成され、ユーザからの要求を受け付け、その情報をCPU61やRAM62に供給する。出力部82は、データ再生部64などより供給されたデータに対応する画像をディスプレイに表示したり、供給されたデータに対応する音声をスピーカより出力したりする。
【0053】
記憶部83には、入力部31または通信部34を介して供給された各種の処理を実行するためのデータやプログラム等が記憶されており、各部にそれらのデータやプログラムを供給する。
【0054】
通信部84は、ネットワーク2を介しての通信処理を行う。例えば、通信部84は、ネットワーク2を介して、サーバ1よりストリーミング配信されたデータパケットや冗長パケットを、UDPやRTP/RTSP等の所定のプロトコルを用いて受信し、受信したパケットをCPU61、RAM63、データ再生部64、またはパケット復元部65等に供給する。また、通信部84は、配信要求などの、CPU61などより供給された各種の情報を、ネットワーク2を介してサーバ1に供給する。
【0055】
入出力インタフェース80にはまた、必要に応じてドライブ90が接続され、磁気ディスク91、光ディスク92、光磁気ディスク93、或いは半導体メモリ94などが適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部83にインストールされる。
【0056】
以上において、バス70に接続されたデータ再生部64において、配信データの再構成やデコード等の再生処理が行われるように説明したが、これに限らず、上述したデータ再生部64が行う処理の全部または一部が、通信部84またはCPU61において実行されるようにしてもよい。
【0057】
同様に、バス70に接続されたパケット復元部65において行われる、ロスしたパケットの復元処理の全部または一部が、通信部84またはCPU61において実行されるようにしてもよい。
【0058】
次に、サーバ1による配信データのストリーミング配信処理について説明する。クライアント3より配信要求を、ネットワーク2を介して取得したサーバ1のCPU11は、要求された配信データを記憶部33より取得し、パケット生成部14に供給し、データ送信処理を開始する。図4のフローチャートを参照して、サーバ1によるデータ送信処理を説明する。
【0059】
配信データを供給されたパケット生成部14は、取得した配信データを、所定の大きさのブロック単位で処理する。パケット生成部14は、ステップS1において、1ブロック分の配信データを分割してパケット化し、データパケットを生成する。
【0060】
図5は、パケット生成部14において生成される1ブロック分のデータパケットおよび冗長パケットの構成例を示す模式図である。図5においてEOR演算は、「+」を用いて表す。また、四則演算は、ガロア体上で行われる。
【0061】
図5において、データパケット101は、パケット101−1乃至101−Nにより構成される。各パケットには、1ブロック分の配信データが所定の大きさで分割されたデータD1乃至DNが1つずつ含まれている。
【0062】
すなわち、パケット生成部14は、式(1)のような演算を行い、N個のデータD1乃至DNから、N個の送信データS1乃至SNを生成する。
【0063】
【数1】
【0064】
式(1)において、四則演算はガロア体上において行われ、各成分の加算は、対応するビットごとのEOR演算を用いて行う。
【0065】
式(1)において、右辺第1項は、N行N列の単位行列であり、送信データS1乃至SNは、それぞれ、データD1乃至DNより構成される。
【0066】
図4に戻り、データパケットを生成したパケット生成部14は、処理をステップS2に進め、生成したデータパケットを用いて、リードソロモン符号による冗長パケットを生成する。
【0067】
図5において、リードソロモン符号冗長パケット102は、パケット102−1乃至102−Mにより構成される。パケット生成部14は、データD1乃至DNに所定の係数を乗算し、それらの値のEOR演算を行う。パケット生成部14は、この処理をM回繰り返して誤り訂正用の冗長データを生成し、さらにパケット化して誤り訂正用のリードソロモン符号冗長パケット102であるパケット102−1乃至102−Mを生成する。すなわち、パケット生成部14は、以下に示される式(2)のような演算を行い、N個のデータD1乃至DNから、M個の送信データSN+1乃至SN+Mを生成する。
【0068】
【数2】
【0069】
式(2)において、右辺第1項はM行N列の行列であり、リードソロモン符号冗長パケット102に対応する送信データSN+1乃至SN+Mを生成するための係数である。この行列において、第X行第Y列の成分AXYの値は、式(3)のように設定される。
【0070】
【数3】
【0071】
なお、式(2)および式(3)において、四則演算はガロア体上において行われ、各成分の加算は、対応するビットごとのEOR演算を用いて行われる。
【0072】
また、式(2)の右辺第1項の行列は、演算に用いられるまでに生成されていれば、どのようなタイミングで生成されてもよく、データ送信処理を行う前より予め準備されていてもよいし、演算の際に算出されるようにしてもよい。
【0073】
図4に戻り、リードソロモン符号冗長パケット102を生成したパケット生成部14は、ステップS3において、生成したデータパケットを用いて、EORによる冗長パケットを生成する。
【0074】
図5において、EOR冗長パケット103は、パケット103−1乃至103−Lにより構成される。パケット生成部14は、データD1乃至DNより任意のデータを抽出し、それらの値のEOR演算を行う。パケット生成部14は、この処理をL回繰り返して誤り訂正用の冗長データを生成し、さらにパケット化して誤り訂正用のEOR冗長パケット103であるパケット103−1乃至103−Lを生成する。すなわち、パケット生成部14は、以下に示される式(4)のような演算を行い、N個のデータD1乃至DNから、L個の送信データSN+M+1乃至SN+M+Lを生成する。
【0075】
【数4】
【0076】
式(4)において、右辺第1項はL行N列の行列であり、EOR冗長パケット103に対応する送信データSN+M+1乃至SN+M+Lを生成するための係数である。
【0077】
なお、式(4)において、四則演算はガロア体上において行われ、各成分の加算は、対応するビットごとのEOR演算を用いて行われる。
【0078】
式(4)の右辺第1項の行列は、例えば、ランダム関数等を用いて、「0」または「1」のいずれかの値がランダムに設定される。なお、EOR演算されるデータの個数はいくつであってもでもよいが、各冗長パケット間でその個数を統一したり、所定の個数以上に限定したりする等、個数の範囲に制限を設けるようにしてもよい。
【0079】
また、式(4)の右辺第1項の行列は、演算に用いられるまでに生成されていれば、どのようなタイミングで生成されてもよく、データ送信処理を行う前より予め準備されていてもよいし、演算の際に算出されるようにしてもよい。さらに、この行列は、ブロック毎に異なる成分で構成される行列を使用するようにしてもよいし、全てのブロックにおいて共通の行列を使用するようにしてもよい。
【0080】
さらに、演算に使用された式(4)の右辺第1項の行列は、後述するように、データを受信するクライアント3によるパケット復元処理においても使用される。すなわち、データの授受を行うサーバ1およびクライアント3において、同じブロックに対しては、共通の行列を用いて処理できるように、式(4)の右辺第1項の行列に関する情報を共有する必要がある。この情報の共有は、どのような方法で行うようにしてもよく、例えば、クライアント3がサーバ1にデータの配信を要求する際に行うようにしてもよいし、サーバ1で使用された式(4)の右辺第1項の行列に関する情報をデータパケット101、リードソロモン符号冗長パケット102、またはEOR冗長パケット103に付加することによって行うようにしてもよい。
【0081】
この、式(4)の右辺第1項の行列に関する情報は、その行列の各成分の内容を直接表す情報であってもよいし、間接的に行列の各成分の内容を表す情報であってももちろんよい。例えば、その行列の各成分がランダム関数によって決定されている場合、そのランダム関数の「種」を表す情報を式(4)の右辺第1項の行列に関する情報とすることも可能である。
【0082】
なお、EOR演算するデータの選択方法(すなわち、式(4)の右辺第1項の行列の第N+1行乃至第N+M行の各成分の値の決定方法)は、上述したランダムに選択する以外の方法であってもよく、例えば、複数の所定の組み合わせを用いる等、どのような方法であってもよい。さらに、パケット生成部14が生成した誤り訂正用のパケットの性能評価を行い、それらの中から性能の良いパケットの組み合わせを選択し、EOR冗長パケット103として採用するようにしてもよい。
【0083】
また、生成される冗長パケット102のパケット数(M個)は、実用的な範囲であればいくつであってもよいが、1ブロックのデータに対して冗長パケット数を増加させると、データパケットの復元能力が上がるとともに、配信されるデータ量や処理に必要な負荷が増加するという特徴があり、システムやネットワーク等の環境や配信データの内容等に合わせて、最適な冗長パケット数を選択するのが望ましい。
【0084】
以上のようにして、式(4)の演算により誤り訂正用のデータを生成したパケット生成部14は、生成された各データをパケット化し、EOR冗長パケット105を生成する。
【0085】
図4に戻り、ステップS3の処理を完了したパケット生成部14は、CPU11に制御され、生成されたデータパケット101、リードソロモン符号冗長パケット102、およびEOR冗長パケット103を通信部34に供給する。
【0086】
ステップS4において、通信部34は、取得したデータパケット101、リードソロモン符号冗長パケット102、およびEOR冗長パケット103を、所定のプロトコルに従い、ネットワーク2を介して配信先のクライアント3に送信する。
【0087】
そして、ステップS5においてCPU11は、データ送信処理を終了するか否かを判定する。配信を要求された配信データに未送信の部分が存在し、終了しないと判定した場合、CPU11は、ステップS1に処理を戻し、次のブロックに対して、上述した処理を繰り返す。また、例えば、配信を要求された配信データの送信が完了したり、配信停止の指示を取得したりして、データ送信処理を終了すると判定した場合、CPU11は、データ送信処理を終了する。
【0088】
以上のように、配信データは、サーバ1により、所定のブロックごとにデータ送信処理を施され、パケット化されてクライアント3に配信される。
【0089】
図6は、サーバ1よりクライアント3に送信されるパケットの様子の例を示す模式図である。図6Aに示されるように、サーバ1は、ブロック毎に生成されたデータパケットおよび冗長パケットを、ブロック毎に送信する。
【0090】
すなわち、サーバ1は、第(T−1)ブロックの最後のEOR冗長パケット113−Lに続いて、第Tブロックのデータパケット121−1乃至121−N、リードソロモン符号冗長パケット122−1乃至122−M、およびEOR冗長パケット123−1乃至123−Lを送信する。
【0091】
そして、サーバ1は、第Tブロックの最後のEOR冗長パケット123−Lを送信すると、次のブロックである第(T+1)ブロックのデータパケット131−1を送信する。
【0092】
パケットの送信先であるクライアント3は、通信部84において各パケットを受信するが、ネットワーク2等のパケット転送経路上において、図6Bに示される、クライアント3に受信されたパケットをブロック毎に整列させた例のように、一部のパケットをロスしている場合がある。図6Bにおいて、クライアント3は、第Tブロックのデータパケット121−1乃至121−4、リードソロモン符号冗長パケット122−1、並びにEOR冗長パケット123−1をロスしている。
【0093】
クライアント3は、後述するようにデータ受信処理を行い、受信したリードソロモン符号冗長パケット122−2乃至122−Mを用いて、ロスしたデータパケット112−1乃至112−4の復元処理を行う。復元不可能である場合はサーバ1にロスしたパケットの再送を要求する。
【0094】
図6Bの第Tブロックに対する処理を例にして、クライアント3によるデータ受信処理を、図7のフローチャートを参照して説明する。
【0095】
配信データの送信先であるクライアント3の通信部84は、ステップS21において、パケットの受信制御処理を行い、ネットワーク2を介してサーバ1より供給された第Tブロックのデータパケット121−5乃至121−N、リードソロモン符号冗長パケット122−2乃至122−M、並びにEOR冗長パケット123−2乃至123−Lを順次取得し、バス70を介してデータ再生部64に供給する。
【0096】
なお、受信されたパケットは、通信部84に内蔵されるRAMに一時保持され、後述するステップS22の処理において、対象ブロックのパケット受信が完了したと判定された場合に、ブロック毎にデータ再生部64に供給されるようにしてもよい。また、受信されたパケットがCPU61に内蔵されるRAM、RAM63、または記憶部83に保持されるようにしてももちろんよい。さらに、受信されたパケットは、データ再生部64に供給される際に、パケット復元部65にも供給されるようにしてもよい。
【0097】
ステップS22において、CPU61は、通信部84を制御して、受信対象ブロックのパケット受信が完了したか否かを判定する。受信対象ブロックについて未受信のパケットが存在し、受信対象ブロックのパケット受信が完了していないと判定した場合、CPU61は、処理をステップS21に戻し、パケットの受信制御処理を繰り返す。
【0098】
ステップS22において、受信対象ブロックのパケットを全て受信し、受信が完了したと判定した場合、CPU61は、ステップS23に処理を進める。
【0099】
なお、パケットが受信される順番はパケットの到着順であり、送信された順序でパケットが受信されるとは限らない。従って、CPU61は、予め定められた所定の時間内において上述したようにステップS22の判定処理を行う。ステップS21およびS22の処理を繰り返し、所定の時間が経過した場合、CPU61は、ステップS22において、受信対象ブロックのパケット受信が完了したと判定し、処理をステップS23に進める。
【0100】
例えば、図6Bに示されるように、第Tブロックのデータパケット112−1乃至112−4をロスしており、所定の時間が経過しても、受信対象ブロックについて未受信のパケットが存在する場合、CPU61は、それらのパケットをロスしたと判定し、対象ブロックのパケット受信が完了したと判定し、ステップS23に処理を進める。
【0101】
ステップS23において、CPU61に制御されたデータ再生部64は、供給されたデータパケット101が1ブロック分揃っているかを確認し、ロスしたデータパケットが存在するか否かを判定する。ロスしたデータパケット101が存在すると判定した場合、データ再生部64は、取得したデータパケット101、リードソロモン符号冗長パケット102、EOR冗長パケット103、並びに、式(3)の右辺第1項に関する情報をパケット復元部65に供給し、処理をステップS24に進める。
【0102】
ステップS24において、データ再生部64より各種のデータを取得したパケット復元部65は、リードソロモン符号冗長パケット102によるデータパケット101の復元が可能であるか否かを判定する。
【0103】
リードソロモン符号の場合、後述するパケット復元処理において生成される連立一次方程式の各方程式は、その独立性より保証される。すなわち、データパケットのロス数が受信できたリードソロモン符号冗長パケット数以内であれば、ロスしたパケットは復元可能である。従って、パケット復元部65は、ロスしたデータパケットの数と、受信したリードソロモン符号の数とを比較して、データパケット101の復元が可能であるか否かを判定し、復元可能であると判定した場合、処理をステップS25に進める。
【0104】
ステップS25において、パケット復元部65は、リードソロモン符号冗長パケットを用いて、以下に示す式(5)のような連立一次方程式の解を求めることにより、ロスしたデータパケットを復元する。なお、パケット復元部65は、受信したリードソロモン符号冗長パケットの数が、ロスしたデータパケットの数より多い場合、任意のリードソロモン符号冗長パケットを、データパケットのロス数だけ抽出し、復元処理に用いる。
【0105】
【数5】
【0106】
式(5)は、図6Bに示される例において、受信したリードソロモン符号冗長パケット122−2乃至122−Mのうち、最初の4個のリードソロモン符号冗長パケット122−2乃至122−5を用いて、ロスしたデータパケット121−1乃至121−4を復元するための、変数Z1乃至Z4に関する連立一次方程式である。式(5)において、四則演算はガロア体上において行われ、各成分の加算は、対応するビットごとのEOR演算を用いて行われる。
【0107】
式(5)の右辺第1項の行列の成分Z1乃至Z4は、ロスしたデータパケットに対応する変数であり、パケット復元部65は、式(5)において、Z1乃至Z4の解を算出することにより、ロスしたデータパケットを復元する。
【0108】
式(5)の左辺第1項の行列は、サーバ1と共有している式(2)の右辺第1項に関する情報に基づいて生成された4行4列の正方行列である。
【0109】
パケット復元部65は、サーバ1と共有する式(2)の右辺第1項に関する情報に基づいて、式(2)の右辺第1項の行列の成分の中から、ロスしたデータパケットと、選択されたリードソロモン符号冗長パケットの両方に対応する成分を抽出し、式(5)の左辺第1項の行列を生成する。従って、例えばクライアント3がH個のデータパケットをロスしたとすると、式(5)の左辺第1項の行列は、H行H列の正方行列となる。
【0110】
式(5)の左辺第2項の行列の成分V1乃至V4は、受信したデータパケット、および復元処理に使用されるリードソロモン冗長パケットを用いて、パケット復元部65により算出される変数である。パケット復元部65は、復元処理に使用されるリードソロモン冗長パケット数分(データパケットのロス数分)、変数Vを生成する。すなわち、H個のデータパケットがロスされたとすると、パケット復元部65は、変数V1乃至VHを算出する。変数Vは、以下の式(6)のような連立一次方程式により算出される。
【0111】
【数6】
【0112】
式(6)は、図6Bに示される例において、受信したリードソロモン符号冗長パケット122−2乃至122−Mのうち、最初の4個のリードソロモン符号冗長パケット122−2乃至122−5を用いて、ロスしたデータパケット121−1乃至121−4を復元するための、変数V1乃至V4に関する連立一次方程式である。式(6)において、四則演算はガロア体上において行われ、各成分の加算は、対応するビットごとのEOR演算を用いて行われる。
【0113】
式(6)の左辺第1項の行列は、サーバ1と共有している式(2)の右辺第1項に関する情報に基づいて生成された4行N−4列の行列である。
【0114】
パケット復元部65は、サーバ1と共有する式(2)の右辺第1項に関する情報に基づいて、式(2)の右辺第1項の行列の成分の中から、受信したデータパケットと、受信したリードソロモン符号冗長パケットの中から選択されたリードソロモン符号冗長パケットの両方に対応する成分を抽出し、式(6)の左辺第1項の行列を生成する。従って、例えばクライアント3がH個のデータパケットをロスしたとすると、式(6)の左辺第1項の行列は、H行N−H列の行列となる。
【0115】
以上のように、パケット復元部65は、式(6)より変数Vを算出し、その変数Vを用いて、式(5)を生成し、方程式の解を算出することで、ロスしたデータパケットを復元する。
【0116】
図4に戻り、ロスしたデータパケットを復元したパケット復元部65は、復元したデータパケットをデータ再生部64に供給する。
【0117】
CPU61に制御されたデータ再生部64は、ステップS26において、取得したデータパケット群より1ブロック分の配信データを再生し、出力部82等に供給する。配信データを供給された出力部82は、取得した配信データに対応する画像や音声等を所定の出力方法で出力する。
【0118】
CPU61は、ステップS27において、データ受信処理を終了するか否かを判定し、配信されるデータの受信が完了しておらず、終了しないと判定した場合、処理をステップS21に戻し、次のブロックに対して、それ以降の処理を繰り返す。
【0119】
ステップS27において、配信データの受信が完了したり、ユーザより処理中止の指示を受け付けたりしてデータ受信処理を終了すると判定した場合、CPU61は、ステップS28に処理を進めて終了処理を行った後、データ受信処理を終了する。
【0120】
ステップS23において、対象ブロックのデータパケットを全て受信しており、ロスしたデータパケットが存在しないと判定した場合、データ再生部64は、処理をステップS26に進め、配信データの再生処理を実行する。
【0121】
パケット復元部65は、ステップS24において、例えば、ロスしたパケットが多すぎる場合等、ロスしたパケットがリードソロモン符号を用いた方法で、復元可能でないと判定した場合、処理をステップS29に進め、EORによるデータパケット復元処理を実行する。EORによるデータパケット復元処理の詳細は、図8および9のフローチャートを参照して後述する。
【0122】
EORによるデータパケット復元処理が完了すると、パケット復元部65は、復元したデータパケットをデータ再生部64に供給し、処理をステップS26に進める。
【0123】
以上のようにして、クライアント3は、サーバ1より供給されるパケットを受信し、サーバ1によるストリーミング配信やライブ放送などを出力することができる。
【0124】
次に、図7のステップS29において実行される、EORによるデータパケット復元処理について説明する。
【0125】
クライアント3がH個のデータパケット101、およびL個のEOR冗長パケット103をロスしたものとし、ロスしたデータパケットに含まれるデータをZ1乃至ZHとすると、パケット復元部65によるデータパケットの復元は、以下に示す式(7)の連立一次方程式において、Z1乃至ZHの解を求めることによって行われる。
【0126】
【数7】
【0127】
なお、式(7)において、四則演算はガロア体上において行われ、各成分の加算は、対応するビットごとのEOR演算を用いて行われる。
【0128】
式(7)の左辺第1項は、サーバ1と共有している式(4)の右辺第1項に関する情報に基づいて生成されたL−K行H列の行列であり、左辺第2項の行列の成分Z1乃至ZHの係数を表す行列である。
【0129】
パケット復元部65は、サーバ1と共有する式(4)の右辺第1項に関する情報に基づいて、式(4)の右辺第1項の行列の成分の中から、ロスしたデータパケット、および受信された冗長パケットの両方に対応する成分を抽出し、式(7)の左辺第1項の行列を生成する。
【0130】
例えば、図6Bに示されるような例の場合、パケット復元部65は、サーバ1において演算に用いられた式(4)の右辺第1項の行列の、第2行乃至第L行の、第1列乃至第4列を成分とする行列を生成する。
【0131】
式(7)の右辺第1項の行列の成分W1乃至WL−Kは、受信したデータパケット101およびEOR冗長パケット103に含まれるデータより算出された変数である。この各成分W1乃至WL−Kは、以下に示す式(8)により算出される。
【0132】
【数8】
【0133】
なお、式(8)において、四則演算はガロア体上において行われ、各成分の加算は、対応するビットごとのEOR演算を用いて行われる。
【0134】
式(8)において、定数Nはサーバ1より送信されたデータパケット数であり、定数Hはクライアント3がロスしたデータパケット数であり、定数Lはサーバ1より送信された冗長パケット数であり、定数Kはクライアント3がロスした冗長パケット数である。また、式(8)において、P1乃至PN−Hはクライアント3が受信した各データパケットに含まれているデータを表し、R1乃至RLーkはクライアント3が受信した各冗長パケットに含まれているデータを表す。
【0135】
式(3)の右辺第1項は、サーバ1と共有している式(4)の右辺第1項に関する情報に基づいて生成されたL−K行N−H列の行列であり、右辺第2項の行列の成分P1乃至PN−Hの係数を表す行列である。
【0136】
パケット復元部65は、サーバ1と共有する式(4)の右辺第1項に関する情報に基づいて、式(4)の右辺第1項の行列の成分の中から、受信されたデータパケット、および受信された冗長パケットの両方に対応する成分を抽出し、式(8)の右第1項の行列を生成する。
【0137】
例えば、図6Bに示されるような例の場合、パケット復元部65は、サーバ1において演算に用いられた式(4)の右辺第1項の行列の、第2行乃至第L行の、第5列乃至第N列を成分とする行列を生成する。
【0138】
パケット復元部65は、以上のような式(8)を演算することにより、左辺第1項の行列の各成分W1乃至WL−Kを算出し、それらの値を式(7)に代入して、Z1乃至ZHの解を求める。その際、パケット復元部65は、値が「0」でない係数を選択するための処理方法であるピボット選択を用いたガウス消去法を用いて解を算出する。ピボット選択を用いたガウス消去法は、前進消去および後退代入などのプロセスにより、方程式に含まれる変数を減らすことにより、解を算出する方法である。
【0139】
次に、図8のフローチャートを参照して、クライアント3によるデータパケット復元処理を説明する。
【0140】
最初に、パケット復元部65は、ステップS41において、式(8)の演算を行い、W1乃至WL−Kを算出して、式(7)のような、ロスしたデータパケットを復元するための連立一次方程式をたてる。
【0141】
そして、パケット復元部65は、ステップS42において、変数Yの値を「0」に設定して初期化し、ステップS43において、式(7)の左辺第1項の行列の第Y列の各成分について、値が「1」の成分を検出する。
【0142】
その検出結果に基づいて、パケット復元部65は、ステップS44において、値が「1」の成分が存在するか否かを判定し、存在すると判定した場合、パケット復元部65は,処理をステップS45に進める。
【0143】
ステップS45において、パケット復元部65は、値が「1」の成分が複数存在するか否かを判定し、複数存在すると判定した場合、処理をステップS46に進める。
【0144】
値が「1」の成分が複数存在する場合、パケット復元部65は、ステップS46において、2番目以降に検出された成分を含む方程式と、最初に検出された成分を含む方程式との間で、各項についてEOR演算を行い、その演算結果を、演算に用いた2番目以降に検出された成分を含む行に置き換える。すなわち、パケット復元部65は、前進消去のプロセスを行い、対象のY列について、最初に検出された成分を含む行以外の行の成分の値を全て「0」にする。
【0145】
そして、パケット復元部65は、ステップS47において、最初に検出された成分を含む方程式を求解用に抽出し、保持する。すなわち、この後ステップS46の処理が繰り返される際のEOR演算は、抽出した方程式を対象とせずに、抽出されずに残された方程式の中で行われる。
【0146】
ステップS47の処理を終えたパケット復元部65は、ステップS48に処理を進め、変数Yの値に「1」を加算し、ステップS49において、その変数Yの値が列数H以下であるか否かを判定する。変数Yの値が、列数H以下であり、成分AXYが存在すると判定した場合、パケット復元部65は、処理をステップS43に戻し、新たな列に対してそれ以降の処理を繰り返す。
【0147】
ステップS49において、変数Yの値がHより大きい場合、すなわち、成分AXYが存在しないと判定した場合、パケット復元部65は、処理をステップS50に進め、変数Yの値を「H」に設定する。
【0148】
そして、ステップS51において、パケット復元部65は、ステップS47の処理により求解用に保持されている方程式を用いて、PYの解を算出し、ステップS52において、変数Yの値より「1」を減算し、ステップS53において、変数Yの値が「0」か否かを判定する。「0」でないと判定した場合、パケット復元部65は、処理をステップS51に戻し、それ以降の処理を繰り返す。
【0149】
そして、ステップS53において、変数Yの値が「0」であると判定した場合、パケット復元部65は、Z1乃至ZHの解を算出したので、データパケット復元処理を終了し、図7のステップS26に処理を進める。
【0150】
また、ステップS44において、式(7)の左辺第1項の行列の第Y列について、値が「1」の成分が存在しないと判定した場合、パケット復元部65は、データパケット復元処理を終了し、図7のステップS26に処理を進める。
【0151】
さらに、ステップS45において、式(7)の左辺第1項の行列の第Y列について、値が「1」の成分が複数存在しないと判定した場合、パケット復元部65は、ステップS46の処理を省略し、ステップS47に処理を進める。
【0152】
以上のようにして、パケット復元部65は、ガウス消去法を利用してロスしたデータパケットに含まれているデータを復元する。
【0153】
以上においては、パケット復元部65が、値が「0」でない係数を選択するための処理方法であるピボット選択を用いたガウス消去法を利用して、式(7)に示される連立一次方程式の解を求めるように説明したが、これに限らず、パケット復元部65が、ガウス消去法を応用した応用ガウス消去法を用いて、式(7)に示される連立一次方程式の解を求めるようにしてもよい。応用ガウス消去法は、式(7)に示される全ての連立一次方程式から変数を1つずつ減らしていき、残った最後の変数の解を用いて全ての解を算出する方法である。
【0154】
図9のフローチャートを参照して、クライアント3によるデータパケット復元処理の応用ガウス消去法を利用した他の例について説明する。
【0155】
最初に、パケット復元部65は、ステップS71において、式(8)の演算を行い、W1乃至WL−Kを算出して、式(7)のような、ロスしたデータパケットを復元するための連立一次方程式をたてる。
【0156】
そして、パケット復元部65は、ステップS72において、変数Yの値を「0」に設定して初期化し、ステップS73において、式(7)の左辺第1項の行列の第Y列の各成分について、値が「1」の成分を検出する。
【0157】
その検出結果に基づいて、パケット復元部65は、ステップS74において、値が「1」の成分が存在するか否かを判定し、存在すると判定した場合、パケット復元部65は,処理をステップS75に進める。
【0158】
ステップS75において、パケット復元部65は、最初に検出された成分を含む方程式を求解用に保持する。そして、ステップS76において、パケット復元部65は、値が「1」の成分が複数存在するか否かを判定し、複数存在すると判定した場合、処理をステップS77に進める。
【0159】
値が「1」の成分が複数存在する場合、パケット復元部65は、ステップS77において、検出された順番が連続する2つの成分をそれぞれ含む2つの方程式間で、各項についてEOR演算処理を行い、その演算結果を、演算に用いた方程式のうち、検出された順番が後の方程式に置き換える。なお、最初に検出された方程式は、最後に検出された方程式とのEOR演算処理結果に置き換えられる。
【0160】
そして、パケット復元部65は、ステップS78において、変数Yの値に「1」を加算するし、ステップS79において、その変数Yの値が列数H以下であるか否かを判定する。変数Yの値が、列数H以下であり、成分AXYが存在すると判定した場合、パケット復元部65は、処理をステップS73に戻し、新たな列に対してそれ以降の処理を繰り返す。
【0161】
ステップS79において、変数Yの値がHより大きい場合、すなわち、成分AXYが存在しないと判定した場合、パケット復元部65は、処理をステップS80に進め、変数Yの値を「H」に設定する。
【0162】
そして、ステップS81において、パケット復元部65は、ステップS75の処理により求解用に保持されている方程式を用いて、ZYの解を算出し、ステップS82において、変数Yの値より「1」を減算し、ステップS83において、変数Yの値が「0」か否かを判定する。「0」でないと判定した場合、パケット復元部65は、処理をステップS81に戻し、それ以降の処理を繰り返す。
【0163】
そして、ステップS83において、変数Yの値が「0」であると判定した場合、パケット復元部65は、Z1乃至ZHの解を算出したので、データパケット復元処理を終了し、図7のステップS26に処理を進める。
【0164】
また、ステップS74において、式(7)の左辺第1項の行列の第Y列について、値が「1」の成分が存在しないと判定した場合、パケット復元部65は、データパケット復元処理を終了し、図7のステップS26に処理を進める。
【0165】
さらに、ステップS76において、式(2)の左辺第1項の行列の第Y列について、値が「1」の成分が複数存在しないと判定した場合、パケット復元部65は、ステップS77の処理を省略し、ステップS78に処理を進める。
【0166】
以上のようにして、パケット復元部65は、応用ガウス消去法を利用してロスしたデータパケットに含まれているデータを復元する。
【0167】
以上のように、配信データを受信するクライアント3において、ロスしたデータパケットを、リードソロモン符号を用いた方法とEOR演算を用いた方法の2つの方法で復元できるようにしたので、データパケット復元能力を向上させることができる。さらに、データパケット復元能力が向上することで、ロスしたデータパケットの再送処理を省略しても実用上問題が無い程度にまで、データパケットのロスによるエラー発生率を十分に低下させることができる。これにより、データパケットの再送処理によるデータ再生処理の処理時間増大を防止することができる。このような効果は、処理時間に制限のあるストリーミング配信やライブ放送等において特に有効である。
【0168】
なお、図1においては、1つのネットワーク2にサーバ1並びにクライアント3−1および3−2が接続されているシステムについて説明したが、システムの構成は、これ以外にも、例えば、複数のサーバがネットワーク2に接続されるようにしてもよいし、さらに多くのクライアント3が接続されるようにしてもよい。また、サーバ1が複数のネットワーク、さらには中継局等の他の装置を介してクライアント3に接続されるようにしてもよい。その場合、本発明を適用した配信処理は、例えば、サーバ1と中継局との間、または、中継局とクライアント3との間における配信処理であってもよい。
【0169】
また、図1において、サーバ1およびクライアント3は、有線を介してネットワーク2に接続されており、有線通信を行うように説明したが、これに限らず、サーバ1およびクライアント3が無線通信機能を有し、無線通信によりネットワーク2とそれぞれ接続し、ネットワーク2を介して通信を行うようにしてもよい。その際、利用される通信規格は、通信キャリアを介した電話回線経由の通信以外にも、IEEE(Institute of Electrical and Electronic Engineers)802.11x、ブルートゥース、赤外線を用いたIrDA(InfraRed Data Association)等の近距離無線通信であってもよい。
【0170】
さらに、図2において示されるサーバ1の内部の構成例における各ブロックは、その機能の一部または全部が、他のブロックと一体化されて構成されていてもよいし、1つのブロックとして示した機能が複数のブロックとして構成されていてもよい。図3において示されるクライアント3についても同様である。
【0171】
なお、サーバ1およびクライアント3は、上述したパーソナルコンピュータ以外にも、例えば、携帯電話機、デジタルビデオカメラ、あるいはテレビジョン受像機などの電子機器に広く適用することができる。
【0172】
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
【0173】
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを記録する記録媒体は、図2または図3に示されるように、磁気ディスク41または91(フレキシブルディスクを含む)、光ディスク42または92(CD−ROM(Compact Disc−Read Only Memory)、DVD(Digital Versatile Disc)を含む)、光磁気ディスク43または93(MD(Mini−Disc)(登録商標)を含む)、もしくは半導体メモリ44または94などよりなるパッケージメディア、または、プログラムが一時的もしくは永続的に記録されるROM12または62などにより構成される。記録媒体へのプログラムの記録は、必要に応じてルータ、モデムなどのインターフェースを介して、公衆回線網、ローカルエリアネットワーク、またはインターネットなどのネットワーク、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
【0174】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【0175】
【発明の効果】
以上のように、本発明によれば、他の装置より供給されたパケットデータを取得することができる。特に、より好適にパケットデータを取得し、データの再生を行うことができる。
【図面の簡単な説明】
【図1】本発明を適用したデータ伝送システムの基本的な構成例を示す図である。
【図2】図1のサーバの内部の構成例を示すブロック図である。
【図3】図1のクライアントの内部の構成例を示すブロック図である。
【図4】図1のサーバによるデータ伝送処理を説明するフローチャートである。
【図5】図1のサーバが生成するパケットの例を示す模式図である。
【図6】図1のデータ伝送システムにおいて、サーバより送信され、クライアントによって受信されるパケットの様子を示す模式図である。
【図7】図1のクライアントによるデータ受信処理を説明するフローチャートである。
【図8】図7のステップS29において実行されるデータパケット復元処理の例について説明するフローチャートである。
【図9】図7のステップS29において実行されるデータパケット復元処理の他の例について説明するフローチャートである。
【符号の説明】
1 サーバ, 2 ネットワーク, 3−1および3−2 クライアント, 14 パケット生成部, 64 データ再生部, 65 パケット復元部, 101 データパケット, 102 リードソロモン符号冗長パケット, 103
EOR冗長パケット
【発明の属する技術分野】
本発明は情報処理装置および方法、並びにプログラムに関し、特に、より好適にパケットデータを取得し、データの再生を行うことができるようにした、情報処理装置および方法、並びにプログラムに関する。
【0002】
【従来の技術】
近年、ブロードバンド通信網の発達などにより、インターネットに代表されるネットワークを介して、ユニキャストやマルチキャストでの、音声や映像等のデータのストリーミング配信やリアルタイムな放送などが数多く行われるようになってきた。
【0003】
従来、このようなネットワークを介した通信において、UDP/IP(User Datagram Protocol/Internet Protocol)を用いたユニキャストやマルチキャスト等の配信に、ブロック内のデータ誤りを検出し訂正するブロック符号の1つであるリードソロモン符号等を用いたFEC(Forward Error Correction)を併用した配信方式が提案されている(例えば、非特許文献1乃至3参照)。
【0004】
リードソロモン符号によるパケットロスに対するエラー訂正処理において、送信側では、所定の大きさのブロック単位ごとに、送信データの誤り訂正コードが生成され、その誤り訂正コードより冗長パケットが生成され、その生成された冗長パケットが、パケット化された送信データとともに配信される。
【0005】
そして、受信側では、パケット化された送信データとともに冗長パケットも受信し、送信データのパケットのロスが生じた場合、そのパケットを、受信した冗長パケットを用いて復元する。ロスしたパケットの復元が不可能である場合は、送信側に対して、ロスしたパケットの再送が要求される。
【0006】
また、FECの符号化方式の例として、リードソロモン符号方式の代わりに、EOR(exclusive OR)演算を用いて冗長パケットを生成する方式もある(例えば、特許文献1参照)。
【0007】
EOR演算を用いた、パケットロスに対するエラー訂正処理において、送信側では、所定の大きさのブロック単位ごとに、EOR演算を用いて、送信データの誤り訂正コードが生成され、その誤り訂正コードより冗長パケットが生成され、その生成された冗長パケットが、パケット化された送信データとともに配信される。
【0008】
そして、受信側では、パケット化された送信データとともに冗長パケットも受信し、送信データのパケットのロスが生じた場合、そのパケットを、受信した冗長パケットを用いて復元する。ロスしたパケットの復元が不可能である場合は、送信側に対して、ロスしたパケットの再送が要求される。
【0009】
【非特許文献1】
米山 清二郎、外2名、“Reliable Multicast − Using FEC on IP version6”、[online]、平成11年12月15日、インターネットコンファレンス、[平成14年10月8日検索]、インターネット,<URL:http://www.internetconference.org/ic99/program.html>
【0010】
【非特許文献2】
窪 貴志、“信頼性マルチキャストを用いた実時間メディア伝送に関する考察”、[online]、平成13年2月18日、奈良先端科学技術大学院大学修士論文・課題研究発表会、[平成14年10月8日検索]、インターネット,<URL: http://isw3.aist−nara.ac.jp/IS/MasterThesis/2001/0051031.html>
【0011】
【非特許文献3】
米山 清二郎、“FEC on IPv6 for Reliable Multicast”、[online]、平成12年11月1日、インターネットコンファレンス、[平成14年10月8日検索]、インターネット,<URL: http://www.csl.sony.co.jp/ic2000/papers/S03_01.pdf>
【0012】
【特許文献1】
特開2001−189665号公報(第25−26ページ、図3)
【0013】
【発明が解決しようとする課題】
しかしながら、以上のような方法において、ロスしたパケットを復元できない場合、再送処理を行わなければならないので、送信データを再生するまでに要する処理時間が長くなってしまうという課題があった。
【0014】
特に、ストリーミング配信やリアルタイムのデータ配信において、受信側の装置は、順次送信されるデータを受信し、再生しなければならず、復元処理を短時間で行わなければならない。従って、上述したような処理時間の増大は、再生能力に大きく影響する。
【0015】
本発明はこのような状況に鑑みてなされたものであり、より好適にパケットデータを取得し、データの再生を行うことができるようにしたものである。
【0016】
【課題を解決するための手段】
本発明の情報処理装置は、他の情報処理装置により送信された、配信用データのデータパケット、複数のデータパケットに含まれる各データに基づいて生成されたリードソロモン符号を含む第1の冗長パケット、並びに、複数のデータパケットに含まれる各データの排他的論理和演算結果を含む第2の冗長パケットを受信する受信手段と、受信手段により受信できなかったデータパケットを、受信手段により受信された第1の冗長パケットを用いて復元可能であるか否かを判定する可能性判定手段と、可能性判定手段による判定結果に基づいて、復元可能である場合、受信手段により受信されたデータパケットおよび第1の冗長パケットを用いて、受信手段により受信できなかったデータパケットを復元する第1の復元手段と、可能性判定手段による判定結果に基づいて、復元不可能である場合、受信手段により受信されたデータパケットおよび第2の冗長パケットを用いて、受信手段により受信できなかったデータパケットを復元する第2の復元手段とを備えることを特徴とする。
【0017】
前記第1の冗長パケットは、所定の大きさに分割された配信用データであるブロック毎に、同一のブロックに対応する全てのデータパケットを用いて生成され、第2の冗長パケットは、同一のブロックに対応する、任意に選択された複数のデータパケットを用いて、ブロック毎に生成されるようにすることができる。
【0018】
前記データパケット、第1の冗長パケット、および第2の冗長パケットは、ブロック単位で他の情報処理装置より送信されるようにすることができる。
【0019】
前記受信手段は、同一のブロックのデータパケット、第1の冗長パケット、および第2の冗長パケットの受信処理が完了したか否かを監視する監視手段をさらに備えるようにすることができる。
【0020】
前記受信手段により受信できなかったデータパケットが存在するか否かを判定する存在判定手段をさらに備えるようにすることができる。
【0021】
前記第2の冗長パケットの生成に関する情報を他の情報処理装置と共有するようにすることができる。
【0022】
前記可能性判定手段は、受信手段により受信できなかったデータパケットの数と、受信手段により受信された第1の冗長パケットの数とを比較して、受信手段により受信できなかったデータパケットを復元可能であるか否かを判定するようにすることができる。
【0023】
前記第1の復元手段は、第1の冗長パケットに含まれるリードソロモン符号を復号することによって、受信手段により受信できなかったデータパケットを復元するようにすることができる。
【0024】
前記第2の復元手段は、値が0でない係数を選択するための処理方法であるピボット選択を用いたガウス消去法を用いて、受信手段により受信されたデータパケットおよび第2の冗長パケットに基づいて生成された連立一次方程式を解くことによって、受信手段により受信できなかったデータパケットを復元するようにすることができる。
【0025】
前記復元手段は、行列の所定の列について値が0でない係数を含む方程式のうち、隣り合う方程式同士で各項毎に排他的論理和を演算する応用ガウス消去法を用いて、受信手段により受信されたデータパケットおよび第2の冗長パケットに基づいて生成された連立一次方程式を解くことによって、受信手段により受信できなかったデータパケットを復元するようにすることができる。
【0026】
本発明の情報処理方法は、他の情報処理装置により送信された、配信用データのデータパケット、複数のデータパケットに含まれる各データに基づいて生成されたリードソロモン符号を含む第1の冗長パケット、並びに、複数のデータパケットに含まれる各データの排他的論理和演算結果を含む第2の冗長パケットの受信を制御する受信制御ステップと、受信制御ステップの処理により受信できなかったデータパケットを、受信制御ステップの処理により受信された第1の冗長パケットを用いて復元可能であるか否かを判定する可能性判定ステップと、可能性判定ステップの処理による判定結果に基づいて、復元可能である場合、受信制御ステップの処理により受信されたデータパケットおよび第1の冗長パケットを用いて、受信制御ステップの処理により受信できなかったデータパケットを復元する第1の復元ステップと、可能性判定ステップの処理による判定結果に基づいて、復元不可能である場合、受信制御ステップの処理により受信されたデータパケットおよび第2の冗長パケットを用いて、受信制御ステップの処理により受信できなかったデータパケットを復元する第2の復元ステップとを含むことを特徴とする。
【0027】
本発明のプログラムは、他の情報処理装置により送信された、配信用データのデータパケット、複数のデータパケットに含まれる各データに基づいて生成されたリードソロモン符号を含む第1の冗長パケット、並びに、複数のデータパケットに含まれる各データの排他的論理和演算結果を含む第2の冗長パケットの受信を制御する受信制御ステップと、受信制御ステップの処理により受信できなかったデータパケットを、受信制御ステップの処理により受信された第1の冗長パケットを用いて復元可能であるか否かを判定する可能性判定ステップと、可能性判定ステップの処理による判定結果に基づいて、復元可能である場合、受信制御ステップの処理により受信されたデータパケットおよび第1の冗長パケットを用いて、受信制御ステップの処理により受信できなかったデータパケットを復元する第1の復元ステップと、可能性判定ステップの処理による判定結果に基づいて、復元不可能である場合、受信制御ステップの処理により受信されたデータパケットおよび第2の冗長パケットを用いて、受信制御ステップの処理により受信できなかったデータパケットを復元する第2の復元ステップとをコンピュータに実現させることを特徴とする。
【0028】
本発明の情報処理装置および方法、並びにプログラムにおいては、他の情報処理装置により送信された、配信用データのデータパケット、複数のデータパケットに含まれる各データに基づいて生成されたリードソロモン符号を含む第1の冗長パケット、並びに、複数のデータパケットに含まれる各データの排他的論理和演算結果を含む第2の冗長パケットが受信され、受信できなかったデータパケットを、受信された第1の冗長パケットを用いて復元可能であるか否かが判定され、その判定結果に基づいて、復元可能である場合、受信されたデータパケットおよび第1の冗長パケットを用いて、受信できなかったデータパケットが復元され、復元不可能である場合、受信されたデータパケットおよび第2の冗長パケットを用いて、受信できなかったデータパケットが復元される。
【0029】
【発明の実施の形態】
図1は、本発明を適用したデータ配信システムの基本的な構成例を表す図である。
【0030】
図1において、サーバ1は、ストリーミング配信用の、画像や音声等のストリーミングデータを蓄積しており、インターネット等に代表されるネットワーク2を介して、配信を要求したクライアント3−1または3−2に対して、ストリーミング配信サービスを提供する。サーバ1は、クライアント3−1または3−2より供給された配信要求に基づいて、ユニキャストまたはマルチキャストでデータを配信する。
【0031】
また、サーバ1は、カメラやマイク等の図示せぬ外部入力装置を介して入力された画像や音声等のデータを送信用のデータに変換し、配信を要求したクライアント3−1または3−2に、ネットワーク2を介してリアルタイムに配信(以下、LIVE配信と称する)する。
【0032】
クライアント3−1および3−2は、ユーザに操作され、ネットワーク2を介してサーバ1にアクセスし、ユーザに指示されたデータの配信を要求する。そして、その要求に基づいて、サーバ1が要求されたデータのストリーミング配信またはLIVE配信を行うと、クライアント3−1および3−2は、そのデータを受信し、処理を行い、受信したデータに対応する画像をディスプレイに表示したり、受信したデータに対応する音声をスピーカより出力したりする。
【0033】
なお、クライアント3−1,3−2を個々に区別する必要がない場合、単にクライアント3と称する。
【0034】
サーバ1は、後述するように、上述したストリーミング配信やLIVE配信において、UDP(User Datagram Protocol)/IP(Internet Protocol)プロトコルに、リードソロモン符号によって形成された冗長パケット、およびEORによって形成された冗長パケットによるFECを併用して、データを配信する。すなわち、サーバ1は、データをパケット化するとともに、パケット化されたデータ(以下、データパケットと称する)より誤り訂正用の冗長パケットを生成し、それらのデータパケットおよび冗長パケットをクライアント3に配信する。
【0035】
データパケットおよび冗長パケットを受信したクライアント3は、リードソロモン符号による誤り訂正処理を行い、受信したパケットからロスしたデータパケットを復元する。リードソロモン符号による誤り訂正処理が不可能な場合、クライアント3は、EOR演算による誤り訂正処理を行い、受信したパケットからロスしたデータパケットを復元する。クライアント3は、受信されたデータパケットと、復元されたデータパケットを用いて、データを再生する。
【0036】
なお、リードソロモン符号による誤り訂正処理も、EOR演算による誤り訂正処理も不可能な場合、クライアント3は、その部分の再生処理を省略し、次のブロックに処理を進める。
【0037】
図2は、図1に示すサーバ1の構成例を示すブロック図である。
【0038】
図2において、CPU(Central Processing Unit)11は、ROM(Read Only Memory)12に記憶されているプログラム、または記憶部33からRAM(Random Access Memory)13にロードされたプログラムに従って各種の処理を実行する。RAM13にはまた、CPU11が各種の処理を実行する上において必要なデータなども適宜記憶される。
【0039】
パケット生成部14は、CPU11に制御され、記憶部33または通信部34より供給された配信用のデータ(以下、配信データと称する)をパケット化してデータパケットを生成し、そのデータパケットを通信部34に供給する。また、パケット生成部14は、CPU11に制御され、後述するように、生成したデータパケットから、リードソロモン符号を用いて生成した誤り訂正用の冗長パケット(以下、リードソロモン符号冗長パケットと称する)、および、EOR演算を用いて生成した誤り訂正用の冗長パケット(以下、EOR冗長パケットと称する)を生成する。
【0040】
CPU11、ROM12、RAM13、およびパケット生成部14は、バス20を介して相互に接続されている。このバス20にはまた、入出力インタフェース30も接続されている。
【0041】
入出力インタフェース30には、キーボードやマウスなどよりなる入力部31、CRT(Cathode Ray Tube)やLCD(Liquid Crystal Display)などよりなるディスプレイ、およびスピーカなどよりなる出力部32、ハードディスクなどにより構成される記憶部33、並びに、LANカード、モデム、およびターミナルアダプタなどにより構成される通信部34が接続されている。
【0042】
記憶部33には、入力部31または通信部34を介して取得された配信データ、並びに、各種の処理を実行するためのデータやプログラム等が記憶されており、各部にそれらのデータやプログラムを供給する。
【0043】
通信部34は、ネットワーク2を介しての通信処理を行う。例えば、通信部34は、CPU11に制御され、パケット生成部14より供給されたストリーミング配信用データパケットを、UDPやRTP(Real−time Transport Protocol)/RTSP(Real Time Streaming Protocol)等の所定のプロトコルを用いて配信する。また、通信部34は、CPU11に制御され、接続された外部入力装置より供給されるデータを取得し、RAM13、パケット生成部14、または記憶部33に供給する。
【0044】
入出力インタフェース30にはまた、必要に応じてドライブ40が接続され、磁気ディスク41、光ディスク42、光磁気ディスク43、或いは半導体メモリ44などが適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部33にインストールされる。
【0045】
以上において、バス20に接続されるパケット生成部14がデータパケットおよび冗長パケットの生成処理を行うように説明したが、これに限らず、パケット生成部14において行われるパケット生成処理の全部または一部が、通信部64またはCPU11において実行されるようにしてもよい。
【0046】
図3は、図1に示すクライアント3の構成例を示すブロック図である。
【0047】
図3において、CPU61は、ROM62に記憶されているプログラム、または記憶部83からRAM63にロードされたプログラムに従って各種の処理を実行する。RAM63にはまた、CPU61が各種の処理を実行する上において必要なデータなども適宜記憶される。
【0048】
データ再生部64は、CPU61に制御され、通信部84において受信したデータパケット、およびパケット復元部65において復元されたデータパケットより配信データを再構成し、MPEG(Moving Picture Experts Group)方式やATRAC3(Adaptive TRansform Acoustic Coding 3)(登録商標)方式等でデータがエンコードされている場合、対応する方式でデコードするなどしてデータを再生し、その再生されたデータ(以下、再生データと称する)をCPU61、RAM62、出力部82、または記憶部83に供給する。
【0049】
パケット復元部65は、CPU61に制御され、後述するように、通信部84において受信したリードソロモン符号冗長パケット、または通信部84において受信したEOR冗長パケットを用いて、ロスしたデータパケットの復元処理を行う。そして、パケット復元部65は、復元したデータパケットをCPU61、RAM63、または、データ再生部64に供給する。
【0050】
CPU61、ROM62、RAM63、データ再生部64、およびパケット復元部65は、バス70を介して相互に接続されている。このバス70にはまた、入出力インタフェース80も接続されている。
【0051】
入出力インタフェース80には、キーボードやマウスなどよりなる入力部81、CRTやLCDなどよりなるディスプレイ、およびスピーカなどよりなる出力部82、ハードディスクなどにより構成される記憶部83、並びに、モデム、LANカード、およびターミナルアダプタなどにより構成される通信部84が接続されている。
【0052】
入力部81は、キーボードやマウスなどにより構成され、ユーザからの要求を受け付け、その情報をCPU61やRAM62に供給する。出力部82は、データ再生部64などより供給されたデータに対応する画像をディスプレイに表示したり、供給されたデータに対応する音声をスピーカより出力したりする。
【0053】
記憶部83には、入力部31または通信部34を介して供給された各種の処理を実行するためのデータやプログラム等が記憶されており、各部にそれらのデータやプログラムを供給する。
【0054】
通信部84は、ネットワーク2を介しての通信処理を行う。例えば、通信部84は、ネットワーク2を介して、サーバ1よりストリーミング配信されたデータパケットや冗長パケットを、UDPやRTP/RTSP等の所定のプロトコルを用いて受信し、受信したパケットをCPU61、RAM63、データ再生部64、またはパケット復元部65等に供給する。また、通信部84は、配信要求などの、CPU61などより供給された各種の情報を、ネットワーク2を介してサーバ1に供給する。
【0055】
入出力インタフェース80にはまた、必要に応じてドライブ90が接続され、磁気ディスク91、光ディスク92、光磁気ディスク93、或いは半導体メモリ94などが適宜装着され、それらから読み出されたコンピュータプログラムが、必要に応じて記憶部83にインストールされる。
【0056】
以上において、バス70に接続されたデータ再生部64において、配信データの再構成やデコード等の再生処理が行われるように説明したが、これに限らず、上述したデータ再生部64が行う処理の全部または一部が、通信部84またはCPU61において実行されるようにしてもよい。
【0057】
同様に、バス70に接続されたパケット復元部65において行われる、ロスしたパケットの復元処理の全部または一部が、通信部84またはCPU61において実行されるようにしてもよい。
【0058】
次に、サーバ1による配信データのストリーミング配信処理について説明する。クライアント3より配信要求を、ネットワーク2を介して取得したサーバ1のCPU11は、要求された配信データを記憶部33より取得し、パケット生成部14に供給し、データ送信処理を開始する。図4のフローチャートを参照して、サーバ1によるデータ送信処理を説明する。
【0059】
配信データを供給されたパケット生成部14は、取得した配信データを、所定の大きさのブロック単位で処理する。パケット生成部14は、ステップS1において、1ブロック分の配信データを分割してパケット化し、データパケットを生成する。
【0060】
図5は、パケット生成部14において生成される1ブロック分のデータパケットおよび冗長パケットの構成例を示す模式図である。図5においてEOR演算は、「+」を用いて表す。また、四則演算は、ガロア体上で行われる。
【0061】
図5において、データパケット101は、パケット101−1乃至101−Nにより構成される。各パケットには、1ブロック分の配信データが所定の大きさで分割されたデータD1乃至DNが1つずつ含まれている。
【0062】
すなわち、パケット生成部14は、式(1)のような演算を行い、N個のデータD1乃至DNから、N個の送信データS1乃至SNを生成する。
【0063】
【数1】
【0064】
式(1)において、四則演算はガロア体上において行われ、各成分の加算は、対応するビットごとのEOR演算を用いて行う。
【0065】
式(1)において、右辺第1項は、N行N列の単位行列であり、送信データS1乃至SNは、それぞれ、データD1乃至DNより構成される。
【0066】
図4に戻り、データパケットを生成したパケット生成部14は、処理をステップS2に進め、生成したデータパケットを用いて、リードソロモン符号による冗長パケットを生成する。
【0067】
図5において、リードソロモン符号冗長パケット102は、パケット102−1乃至102−Mにより構成される。パケット生成部14は、データD1乃至DNに所定の係数を乗算し、それらの値のEOR演算を行う。パケット生成部14は、この処理をM回繰り返して誤り訂正用の冗長データを生成し、さらにパケット化して誤り訂正用のリードソロモン符号冗長パケット102であるパケット102−1乃至102−Mを生成する。すなわち、パケット生成部14は、以下に示される式(2)のような演算を行い、N個のデータD1乃至DNから、M個の送信データSN+1乃至SN+Mを生成する。
【0068】
【数2】
【0069】
式(2)において、右辺第1項はM行N列の行列であり、リードソロモン符号冗長パケット102に対応する送信データSN+1乃至SN+Mを生成するための係数である。この行列において、第X行第Y列の成分AXYの値は、式(3)のように設定される。
【0070】
【数3】
【0071】
なお、式(2)および式(3)において、四則演算はガロア体上において行われ、各成分の加算は、対応するビットごとのEOR演算を用いて行われる。
【0072】
また、式(2)の右辺第1項の行列は、演算に用いられるまでに生成されていれば、どのようなタイミングで生成されてもよく、データ送信処理を行う前より予め準備されていてもよいし、演算の際に算出されるようにしてもよい。
【0073】
図4に戻り、リードソロモン符号冗長パケット102を生成したパケット生成部14は、ステップS3において、生成したデータパケットを用いて、EORによる冗長パケットを生成する。
【0074】
図5において、EOR冗長パケット103は、パケット103−1乃至103−Lにより構成される。パケット生成部14は、データD1乃至DNより任意のデータを抽出し、それらの値のEOR演算を行う。パケット生成部14は、この処理をL回繰り返して誤り訂正用の冗長データを生成し、さらにパケット化して誤り訂正用のEOR冗長パケット103であるパケット103−1乃至103−Lを生成する。すなわち、パケット生成部14は、以下に示される式(4)のような演算を行い、N個のデータD1乃至DNから、L個の送信データSN+M+1乃至SN+M+Lを生成する。
【0075】
【数4】
【0076】
式(4)において、右辺第1項はL行N列の行列であり、EOR冗長パケット103に対応する送信データSN+M+1乃至SN+M+Lを生成するための係数である。
【0077】
なお、式(4)において、四則演算はガロア体上において行われ、各成分の加算は、対応するビットごとのEOR演算を用いて行われる。
【0078】
式(4)の右辺第1項の行列は、例えば、ランダム関数等を用いて、「0」または「1」のいずれかの値がランダムに設定される。なお、EOR演算されるデータの個数はいくつであってもでもよいが、各冗長パケット間でその個数を統一したり、所定の個数以上に限定したりする等、個数の範囲に制限を設けるようにしてもよい。
【0079】
また、式(4)の右辺第1項の行列は、演算に用いられるまでに生成されていれば、どのようなタイミングで生成されてもよく、データ送信処理を行う前より予め準備されていてもよいし、演算の際に算出されるようにしてもよい。さらに、この行列は、ブロック毎に異なる成分で構成される行列を使用するようにしてもよいし、全てのブロックにおいて共通の行列を使用するようにしてもよい。
【0080】
さらに、演算に使用された式(4)の右辺第1項の行列は、後述するように、データを受信するクライアント3によるパケット復元処理においても使用される。すなわち、データの授受を行うサーバ1およびクライアント3において、同じブロックに対しては、共通の行列を用いて処理できるように、式(4)の右辺第1項の行列に関する情報を共有する必要がある。この情報の共有は、どのような方法で行うようにしてもよく、例えば、クライアント3がサーバ1にデータの配信を要求する際に行うようにしてもよいし、サーバ1で使用された式(4)の右辺第1項の行列に関する情報をデータパケット101、リードソロモン符号冗長パケット102、またはEOR冗長パケット103に付加することによって行うようにしてもよい。
【0081】
この、式(4)の右辺第1項の行列に関する情報は、その行列の各成分の内容を直接表す情報であってもよいし、間接的に行列の各成分の内容を表す情報であってももちろんよい。例えば、その行列の各成分がランダム関数によって決定されている場合、そのランダム関数の「種」を表す情報を式(4)の右辺第1項の行列に関する情報とすることも可能である。
【0082】
なお、EOR演算するデータの選択方法(すなわち、式(4)の右辺第1項の行列の第N+1行乃至第N+M行の各成分の値の決定方法)は、上述したランダムに選択する以外の方法であってもよく、例えば、複数の所定の組み合わせを用いる等、どのような方法であってもよい。さらに、パケット生成部14が生成した誤り訂正用のパケットの性能評価を行い、それらの中から性能の良いパケットの組み合わせを選択し、EOR冗長パケット103として採用するようにしてもよい。
【0083】
また、生成される冗長パケット102のパケット数(M個)は、実用的な範囲であればいくつであってもよいが、1ブロックのデータに対して冗長パケット数を増加させると、データパケットの復元能力が上がるとともに、配信されるデータ量や処理に必要な負荷が増加するという特徴があり、システムやネットワーク等の環境や配信データの内容等に合わせて、最適な冗長パケット数を選択するのが望ましい。
【0084】
以上のようにして、式(4)の演算により誤り訂正用のデータを生成したパケット生成部14は、生成された各データをパケット化し、EOR冗長パケット105を生成する。
【0085】
図4に戻り、ステップS3の処理を完了したパケット生成部14は、CPU11に制御され、生成されたデータパケット101、リードソロモン符号冗長パケット102、およびEOR冗長パケット103を通信部34に供給する。
【0086】
ステップS4において、通信部34は、取得したデータパケット101、リードソロモン符号冗長パケット102、およびEOR冗長パケット103を、所定のプロトコルに従い、ネットワーク2を介して配信先のクライアント3に送信する。
【0087】
そして、ステップS5においてCPU11は、データ送信処理を終了するか否かを判定する。配信を要求された配信データに未送信の部分が存在し、終了しないと判定した場合、CPU11は、ステップS1に処理を戻し、次のブロックに対して、上述した処理を繰り返す。また、例えば、配信を要求された配信データの送信が完了したり、配信停止の指示を取得したりして、データ送信処理を終了すると判定した場合、CPU11は、データ送信処理を終了する。
【0088】
以上のように、配信データは、サーバ1により、所定のブロックごとにデータ送信処理を施され、パケット化されてクライアント3に配信される。
【0089】
図6は、サーバ1よりクライアント3に送信されるパケットの様子の例を示す模式図である。図6Aに示されるように、サーバ1は、ブロック毎に生成されたデータパケットおよび冗長パケットを、ブロック毎に送信する。
【0090】
すなわち、サーバ1は、第(T−1)ブロックの最後のEOR冗長パケット113−Lに続いて、第Tブロックのデータパケット121−1乃至121−N、リードソロモン符号冗長パケット122−1乃至122−M、およびEOR冗長パケット123−1乃至123−Lを送信する。
【0091】
そして、サーバ1は、第Tブロックの最後のEOR冗長パケット123−Lを送信すると、次のブロックである第(T+1)ブロックのデータパケット131−1を送信する。
【0092】
パケットの送信先であるクライアント3は、通信部84において各パケットを受信するが、ネットワーク2等のパケット転送経路上において、図6Bに示される、クライアント3に受信されたパケットをブロック毎に整列させた例のように、一部のパケットをロスしている場合がある。図6Bにおいて、クライアント3は、第Tブロックのデータパケット121−1乃至121−4、リードソロモン符号冗長パケット122−1、並びにEOR冗長パケット123−1をロスしている。
【0093】
クライアント3は、後述するようにデータ受信処理を行い、受信したリードソロモン符号冗長パケット122−2乃至122−Mを用いて、ロスしたデータパケット112−1乃至112−4の復元処理を行う。復元不可能である場合はサーバ1にロスしたパケットの再送を要求する。
【0094】
図6Bの第Tブロックに対する処理を例にして、クライアント3によるデータ受信処理を、図7のフローチャートを参照して説明する。
【0095】
配信データの送信先であるクライアント3の通信部84は、ステップS21において、パケットの受信制御処理を行い、ネットワーク2を介してサーバ1より供給された第Tブロックのデータパケット121−5乃至121−N、リードソロモン符号冗長パケット122−2乃至122−M、並びにEOR冗長パケット123−2乃至123−Lを順次取得し、バス70を介してデータ再生部64に供給する。
【0096】
なお、受信されたパケットは、通信部84に内蔵されるRAMに一時保持され、後述するステップS22の処理において、対象ブロックのパケット受信が完了したと判定された場合に、ブロック毎にデータ再生部64に供給されるようにしてもよい。また、受信されたパケットがCPU61に内蔵されるRAM、RAM63、または記憶部83に保持されるようにしてももちろんよい。さらに、受信されたパケットは、データ再生部64に供給される際に、パケット復元部65にも供給されるようにしてもよい。
【0097】
ステップS22において、CPU61は、通信部84を制御して、受信対象ブロックのパケット受信が完了したか否かを判定する。受信対象ブロックについて未受信のパケットが存在し、受信対象ブロックのパケット受信が完了していないと判定した場合、CPU61は、処理をステップS21に戻し、パケットの受信制御処理を繰り返す。
【0098】
ステップS22において、受信対象ブロックのパケットを全て受信し、受信が完了したと判定した場合、CPU61は、ステップS23に処理を進める。
【0099】
なお、パケットが受信される順番はパケットの到着順であり、送信された順序でパケットが受信されるとは限らない。従って、CPU61は、予め定められた所定の時間内において上述したようにステップS22の判定処理を行う。ステップS21およびS22の処理を繰り返し、所定の時間が経過した場合、CPU61は、ステップS22において、受信対象ブロックのパケット受信が完了したと判定し、処理をステップS23に進める。
【0100】
例えば、図6Bに示されるように、第Tブロックのデータパケット112−1乃至112−4をロスしており、所定の時間が経過しても、受信対象ブロックについて未受信のパケットが存在する場合、CPU61は、それらのパケットをロスしたと判定し、対象ブロックのパケット受信が完了したと判定し、ステップS23に処理を進める。
【0101】
ステップS23において、CPU61に制御されたデータ再生部64は、供給されたデータパケット101が1ブロック分揃っているかを確認し、ロスしたデータパケットが存在するか否かを判定する。ロスしたデータパケット101が存在すると判定した場合、データ再生部64は、取得したデータパケット101、リードソロモン符号冗長パケット102、EOR冗長パケット103、並びに、式(3)の右辺第1項に関する情報をパケット復元部65に供給し、処理をステップS24に進める。
【0102】
ステップS24において、データ再生部64より各種のデータを取得したパケット復元部65は、リードソロモン符号冗長パケット102によるデータパケット101の復元が可能であるか否かを判定する。
【0103】
リードソロモン符号の場合、後述するパケット復元処理において生成される連立一次方程式の各方程式は、その独立性より保証される。すなわち、データパケットのロス数が受信できたリードソロモン符号冗長パケット数以内であれば、ロスしたパケットは復元可能である。従って、パケット復元部65は、ロスしたデータパケットの数と、受信したリードソロモン符号の数とを比較して、データパケット101の復元が可能であるか否かを判定し、復元可能であると判定した場合、処理をステップS25に進める。
【0104】
ステップS25において、パケット復元部65は、リードソロモン符号冗長パケットを用いて、以下に示す式(5)のような連立一次方程式の解を求めることにより、ロスしたデータパケットを復元する。なお、パケット復元部65は、受信したリードソロモン符号冗長パケットの数が、ロスしたデータパケットの数より多い場合、任意のリードソロモン符号冗長パケットを、データパケットのロス数だけ抽出し、復元処理に用いる。
【0105】
【数5】
【0106】
式(5)は、図6Bに示される例において、受信したリードソロモン符号冗長パケット122−2乃至122−Mのうち、最初の4個のリードソロモン符号冗長パケット122−2乃至122−5を用いて、ロスしたデータパケット121−1乃至121−4を復元するための、変数Z1乃至Z4に関する連立一次方程式である。式(5)において、四則演算はガロア体上において行われ、各成分の加算は、対応するビットごとのEOR演算を用いて行われる。
【0107】
式(5)の右辺第1項の行列の成分Z1乃至Z4は、ロスしたデータパケットに対応する変数であり、パケット復元部65は、式(5)において、Z1乃至Z4の解を算出することにより、ロスしたデータパケットを復元する。
【0108】
式(5)の左辺第1項の行列は、サーバ1と共有している式(2)の右辺第1項に関する情報に基づいて生成された4行4列の正方行列である。
【0109】
パケット復元部65は、サーバ1と共有する式(2)の右辺第1項に関する情報に基づいて、式(2)の右辺第1項の行列の成分の中から、ロスしたデータパケットと、選択されたリードソロモン符号冗長パケットの両方に対応する成分を抽出し、式(5)の左辺第1項の行列を生成する。従って、例えばクライアント3がH個のデータパケットをロスしたとすると、式(5)の左辺第1項の行列は、H行H列の正方行列となる。
【0110】
式(5)の左辺第2項の行列の成分V1乃至V4は、受信したデータパケット、および復元処理に使用されるリードソロモン冗長パケットを用いて、パケット復元部65により算出される変数である。パケット復元部65は、復元処理に使用されるリードソロモン冗長パケット数分(データパケットのロス数分)、変数Vを生成する。すなわち、H個のデータパケットがロスされたとすると、パケット復元部65は、変数V1乃至VHを算出する。変数Vは、以下の式(6)のような連立一次方程式により算出される。
【0111】
【数6】
【0112】
式(6)は、図6Bに示される例において、受信したリードソロモン符号冗長パケット122−2乃至122−Mのうち、最初の4個のリードソロモン符号冗長パケット122−2乃至122−5を用いて、ロスしたデータパケット121−1乃至121−4を復元するための、変数V1乃至V4に関する連立一次方程式である。式(6)において、四則演算はガロア体上において行われ、各成分の加算は、対応するビットごとのEOR演算を用いて行われる。
【0113】
式(6)の左辺第1項の行列は、サーバ1と共有している式(2)の右辺第1項に関する情報に基づいて生成された4行N−4列の行列である。
【0114】
パケット復元部65は、サーバ1と共有する式(2)の右辺第1項に関する情報に基づいて、式(2)の右辺第1項の行列の成分の中から、受信したデータパケットと、受信したリードソロモン符号冗長パケットの中から選択されたリードソロモン符号冗長パケットの両方に対応する成分を抽出し、式(6)の左辺第1項の行列を生成する。従って、例えばクライアント3がH個のデータパケットをロスしたとすると、式(6)の左辺第1項の行列は、H行N−H列の行列となる。
【0115】
以上のように、パケット復元部65は、式(6)より変数Vを算出し、その変数Vを用いて、式(5)を生成し、方程式の解を算出することで、ロスしたデータパケットを復元する。
【0116】
図4に戻り、ロスしたデータパケットを復元したパケット復元部65は、復元したデータパケットをデータ再生部64に供給する。
【0117】
CPU61に制御されたデータ再生部64は、ステップS26において、取得したデータパケット群より1ブロック分の配信データを再生し、出力部82等に供給する。配信データを供給された出力部82は、取得した配信データに対応する画像や音声等を所定の出力方法で出力する。
【0118】
CPU61は、ステップS27において、データ受信処理を終了するか否かを判定し、配信されるデータの受信が完了しておらず、終了しないと判定した場合、処理をステップS21に戻し、次のブロックに対して、それ以降の処理を繰り返す。
【0119】
ステップS27において、配信データの受信が完了したり、ユーザより処理中止の指示を受け付けたりしてデータ受信処理を終了すると判定した場合、CPU61は、ステップS28に処理を進めて終了処理を行った後、データ受信処理を終了する。
【0120】
ステップS23において、対象ブロックのデータパケットを全て受信しており、ロスしたデータパケットが存在しないと判定した場合、データ再生部64は、処理をステップS26に進め、配信データの再生処理を実行する。
【0121】
パケット復元部65は、ステップS24において、例えば、ロスしたパケットが多すぎる場合等、ロスしたパケットがリードソロモン符号を用いた方法で、復元可能でないと判定した場合、処理をステップS29に進め、EORによるデータパケット復元処理を実行する。EORによるデータパケット復元処理の詳細は、図8および9のフローチャートを参照して後述する。
【0122】
EORによるデータパケット復元処理が完了すると、パケット復元部65は、復元したデータパケットをデータ再生部64に供給し、処理をステップS26に進める。
【0123】
以上のようにして、クライアント3は、サーバ1より供給されるパケットを受信し、サーバ1によるストリーミング配信やライブ放送などを出力することができる。
【0124】
次に、図7のステップS29において実行される、EORによるデータパケット復元処理について説明する。
【0125】
クライアント3がH個のデータパケット101、およびL個のEOR冗長パケット103をロスしたものとし、ロスしたデータパケットに含まれるデータをZ1乃至ZHとすると、パケット復元部65によるデータパケットの復元は、以下に示す式(7)の連立一次方程式において、Z1乃至ZHの解を求めることによって行われる。
【0126】
【数7】
【0127】
なお、式(7)において、四則演算はガロア体上において行われ、各成分の加算は、対応するビットごとのEOR演算を用いて行われる。
【0128】
式(7)の左辺第1項は、サーバ1と共有している式(4)の右辺第1項に関する情報に基づいて生成されたL−K行H列の行列であり、左辺第2項の行列の成分Z1乃至ZHの係数を表す行列である。
【0129】
パケット復元部65は、サーバ1と共有する式(4)の右辺第1項に関する情報に基づいて、式(4)の右辺第1項の行列の成分の中から、ロスしたデータパケット、および受信された冗長パケットの両方に対応する成分を抽出し、式(7)の左辺第1項の行列を生成する。
【0130】
例えば、図6Bに示されるような例の場合、パケット復元部65は、サーバ1において演算に用いられた式(4)の右辺第1項の行列の、第2行乃至第L行の、第1列乃至第4列を成分とする行列を生成する。
【0131】
式(7)の右辺第1項の行列の成分W1乃至WL−Kは、受信したデータパケット101およびEOR冗長パケット103に含まれるデータより算出された変数である。この各成分W1乃至WL−Kは、以下に示す式(8)により算出される。
【0132】
【数8】
【0133】
なお、式(8)において、四則演算はガロア体上において行われ、各成分の加算は、対応するビットごとのEOR演算を用いて行われる。
【0134】
式(8)において、定数Nはサーバ1より送信されたデータパケット数であり、定数Hはクライアント3がロスしたデータパケット数であり、定数Lはサーバ1より送信された冗長パケット数であり、定数Kはクライアント3がロスした冗長パケット数である。また、式(8)において、P1乃至PN−Hはクライアント3が受信した各データパケットに含まれているデータを表し、R1乃至RLーkはクライアント3が受信した各冗長パケットに含まれているデータを表す。
【0135】
式(3)の右辺第1項は、サーバ1と共有している式(4)の右辺第1項に関する情報に基づいて生成されたL−K行N−H列の行列であり、右辺第2項の行列の成分P1乃至PN−Hの係数を表す行列である。
【0136】
パケット復元部65は、サーバ1と共有する式(4)の右辺第1項に関する情報に基づいて、式(4)の右辺第1項の行列の成分の中から、受信されたデータパケット、および受信された冗長パケットの両方に対応する成分を抽出し、式(8)の右第1項の行列を生成する。
【0137】
例えば、図6Bに示されるような例の場合、パケット復元部65は、サーバ1において演算に用いられた式(4)の右辺第1項の行列の、第2行乃至第L行の、第5列乃至第N列を成分とする行列を生成する。
【0138】
パケット復元部65は、以上のような式(8)を演算することにより、左辺第1項の行列の各成分W1乃至WL−Kを算出し、それらの値を式(7)に代入して、Z1乃至ZHの解を求める。その際、パケット復元部65は、値が「0」でない係数を選択するための処理方法であるピボット選択を用いたガウス消去法を用いて解を算出する。ピボット選択を用いたガウス消去法は、前進消去および後退代入などのプロセスにより、方程式に含まれる変数を減らすことにより、解を算出する方法である。
【0139】
次に、図8のフローチャートを参照して、クライアント3によるデータパケット復元処理を説明する。
【0140】
最初に、パケット復元部65は、ステップS41において、式(8)の演算を行い、W1乃至WL−Kを算出して、式(7)のような、ロスしたデータパケットを復元するための連立一次方程式をたてる。
【0141】
そして、パケット復元部65は、ステップS42において、変数Yの値を「0」に設定して初期化し、ステップS43において、式(7)の左辺第1項の行列の第Y列の各成分について、値が「1」の成分を検出する。
【0142】
その検出結果に基づいて、パケット復元部65は、ステップS44において、値が「1」の成分が存在するか否かを判定し、存在すると判定した場合、パケット復元部65は,処理をステップS45に進める。
【0143】
ステップS45において、パケット復元部65は、値が「1」の成分が複数存在するか否かを判定し、複数存在すると判定した場合、処理をステップS46に進める。
【0144】
値が「1」の成分が複数存在する場合、パケット復元部65は、ステップS46において、2番目以降に検出された成分を含む方程式と、最初に検出された成分を含む方程式との間で、各項についてEOR演算を行い、その演算結果を、演算に用いた2番目以降に検出された成分を含む行に置き換える。すなわち、パケット復元部65は、前進消去のプロセスを行い、対象のY列について、最初に検出された成分を含む行以外の行の成分の値を全て「0」にする。
【0145】
そして、パケット復元部65は、ステップS47において、最初に検出された成分を含む方程式を求解用に抽出し、保持する。すなわち、この後ステップS46の処理が繰り返される際のEOR演算は、抽出した方程式を対象とせずに、抽出されずに残された方程式の中で行われる。
【0146】
ステップS47の処理を終えたパケット復元部65は、ステップS48に処理を進め、変数Yの値に「1」を加算し、ステップS49において、その変数Yの値が列数H以下であるか否かを判定する。変数Yの値が、列数H以下であり、成分AXYが存在すると判定した場合、パケット復元部65は、処理をステップS43に戻し、新たな列に対してそれ以降の処理を繰り返す。
【0147】
ステップS49において、変数Yの値がHより大きい場合、すなわち、成分AXYが存在しないと判定した場合、パケット復元部65は、処理をステップS50に進め、変数Yの値を「H」に設定する。
【0148】
そして、ステップS51において、パケット復元部65は、ステップS47の処理により求解用に保持されている方程式を用いて、PYの解を算出し、ステップS52において、変数Yの値より「1」を減算し、ステップS53において、変数Yの値が「0」か否かを判定する。「0」でないと判定した場合、パケット復元部65は、処理をステップS51に戻し、それ以降の処理を繰り返す。
【0149】
そして、ステップS53において、変数Yの値が「0」であると判定した場合、パケット復元部65は、Z1乃至ZHの解を算出したので、データパケット復元処理を終了し、図7のステップS26に処理を進める。
【0150】
また、ステップS44において、式(7)の左辺第1項の行列の第Y列について、値が「1」の成分が存在しないと判定した場合、パケット復元部65は、データパケット復元処理を終了し、図7のステップS26に処理を進める。
【0151】
さらに、ステップS45において、式(7)の左辺第1項の行列の第Y列について、値が「1」の成分が複数存在しないと判定した場合、パケット復元部65は、ステップS46の処理を省略し、ステップS47に処理を進める。
【0152】
以上のようにして、パケット復元部65は、ガウス消去法を利用してロスしたデータパケットに含まれているデータを復元する。
【0153】
以上においては、パケット復元部65が、値が「0」でない係数を選択するための処理方法であるピボット選択を用いたガウス消去法を利用して、式(7)に示される連立一次方程式の解を求めるように説明したが、これに限らず、パケット復元部65が、ガウス消去法を応用した応用ガウス消去法を用いて、式(7)に示される連立一次方程式の解を求めるようにしてもよい。応用ガウス消去法は、式(7)に示される全ての連立一次方程式から変数を1つずつ減らしていき、残った最後の変数の解を用いて全ての解を算出する方法である。
【0154】
図9のフローチャートを参照して、クライアント3によるデータパケット復元処理の応用ガウス消去法を利用した他の例について説明する。
【0155】
最初に、パケット復元部65は、ステップS71において、式(8)の演算を行い、W1乃至WL−Kを算出して、式(7)のような、ロスしたデータパケットを復元するための連立一次方程式をたてる。
【0156】
そして、パケット復元部65は、ステップS72において、変数Yの値を「0」に設定して初期化し、ステップS73において、式(7)の左辺第1項の行列の第Y列の各成分について、値が「1」の成分を検出する。
【0157】
その検出結果に基づいて、パケット復元部65は、ステップS74において、値が「1」の成分が存在するか否かを判定し、存在すると判定した場合、パケット復元部65は,処理をステップS75に進める。
【0158】
ステップS75において、パケット復元部65は、最初に検出された成分を含む方程式を求解用に保持する。そして、ステップS76において、パケット復元部65は、値が「1」の成分が複数存在するか否かを判定し、複数存在すると判定した場合、処理をステップS77に進める。
【0159】
値が「1」の成分が複数存在する場合、パケット復元部65は、ステップS77において、検出された順番が連続する2つの成分をそれぞれ含む2つの方程式間で、各項についてEOR演算処理を行い、その演算結果を、演算に用いた方程式のうち、検出された順番が後の方程式に置き換える。なお、最初に検出された方程式は、最後に検出された方程式とのEOR演算処理結果に置き換えられる。
【0160】
そして、パケット復元部65は、ステップS78において、変数Yの値に「1」を加算するし、ステップS79において、その変数Yの値が列数H以下であるか否かを判定する。変数Yの値が、列数H以下であり、成分AXYが存在すると判定した場合、パケット復元部65は、処理をステップS73に戻し、新たな列に対してそれ以降の処理を繰り返す。
【0161】
ステップS79において、変数Yの値がHより大きい場合、すなわち、成分AXYが存在しないと判定した場合、パケット復元部65は、処理をステップS80に進め、変数Yの値を「H」に設定する。
【0162】
そして、ステップS81において、パケット復元部65は、ステップS75の処理により求解用に保持されている方程式を用いて、ZYの解を算出し、ステップS82において、変数Yの値より「1」を減算し、ステップS83において、変数Yの値が「0」か否かを判定する。「0」でないと判定した場合、パケット復元部65は、処理をステップS81に戻し、それ以降の処理を繰り返す。
【0163】
そして、ステップS83において、変数Yの値が「0」であると判定した場合、パケット復元部65は、Z1乃至ZHの解を算出したので、データパケット復元処理を終了し、図7のステップS26に処理を進める。
【0164】
また、ステップS74において、式(7)の左辺第1項の行列の第Y列について、値が「1」の成分が存在しないと判定した場合、パケット復元部65は、データパケット復元処理を終了し、図7のステップS26に処理を進める。
【0165】
さらに、ステップS76において、式(2)の左辺第1項の行列の第Y列について、値が「1」の成分が複数存在しないと判定した場合、パケット復元部65は、ステップS77の処理を省略し、ステップS78に処理を進める。
【0166】
以上のようにして、パケット復元部65は、応用ガウス消去法を利用してロスしたデータパケットに含まれているデータを復元する。
【0167】
以上のように、配信データを受信するクライアント3において、ロスしたデータパケットを、リードソロモン符号を用いた方法とEOR演算を用いた方法の2つの方法で復元できるようにしたので、データパケット復元能力を向上させることができる。さらに、データパケット復元能力が向上することで、ロスしたデータパケットの再送処理を省略しても実用上問題が無い程度にまで、データパケットのロスによるエラー発生率を十分に低下させることができる。これにより、データパケットの再送処理によるデータ再生処理の処理時間増大を防止することができる。このような効果は、処理時間に制限のあるストリーミング配信やライブ放送等において特に有効である。
【0168】
なお、図1においては、1つのネットワーク2にサーバ1並びにクライアント3−1および3−2が接続されているシステムについて説明したが、システムの構成は、これ以外にも、例えば、複数のサーバがネットワーク2に接続されるようにしてもよいし、さらに多くのクライアント3が接続されるようにしてもよい。また、サーバ1が複数のネットワーク、さらには中継局等の他の装置を介してクライアント3に接続されるようにしてもよい。その場合、本発明を適用した配信処理は、例えば、サーバ1と中継局との間、または、中継局とクライアント3との間における配信処理であってもよい。
【0169】
また、図1において、サーバ1およびクライアント3は、有線を介してネットワーク2に接続されており、有線通信を行うように説明したが、これに限らず、サーバ1およびクライアント3が無線通信機能を有し、無線通信によりネットワーク2とそれぞれ接続し、ネットワーク2を介して通信を行うようにしてもよい。その際、利用される通信規格は、通信キャリアを介した電話回線経由の通信以外にも、IEEE(Institute of Electrical and Electronic Engineers)802.11x、ブルートゥース、赤外線を用いたIrDA(InfraRed Data Association)等の近距離無線通信であってもよい。
【0170】
さらに、図2において示されるサーバ1の内部の構成例における各ブロックは、その機能の一部または全部が、他のブロックと一体化されて構成されていてもよいし、1つのブロックとして示した機能が複数のブロックとして構成されていてもよい。図3において示されるクライアント3についても同様である。
【0171】
なお、サーバ1およびクライアント3は、上述したパーソナルコンピュータ以外にも、例えば、携帯電話機、デジタルビデオカメラ、あるいはテレビジョン受像機などの電子機器に広く適用することができる。
【0172】
上述した一連の処理は、ハードウェアにより実行させることもできるが、ソフトウェアにより実行させることもできる。一連の処理をソフトウェアにより実行させる場合には、そのソフトウェアを構成するプログラムが、専用のハードウェアに組み込まれているコンピュータ、または、各種のプログラムをインストールすることで、各種の機能を実行することが可能な、例えば汎用のパーソナルコンピュータなどに、記録媒体からインストールされる。
【0173】
コンピュータにインストールされ、コンピュータによって実行可能な状態とされるプログラムを記録する記録媒体は、図2または図3に示されるように、磁気ディスク41または91(フレキシブルディスクを含む)、光ディスク42または92(CD−ROM(Compact Disc−Read Only Memory)、DVD(Digital Versatile Disc)を含む)、光磁気ディスク43または93(MD(Mini−Disc)(登録商標)を含む)、もしくは半導体メモリ44または94などよりなるパッケージメディア、または、プログラムが一時的もしくは永続的に記録されるROM12または62などにより構成される。記録媒体へのプログラムの記録は、必要に応じてルータ、モデムなどのインターフェースを介して、公衆回線網、ローカルエリアネットワーク、またはインターネットなどのネットワーク、デジタル衛星放送といった、有線または無線の通信媒体を利用して行われる。
【0174】
なお、本明細書において、記録媒体に記録されるプログラムを記述するステップは、記載された順序に沿って時系列的に行われる処理はもちろん、必ずしも時系列的に処理されなくとも、並列的あるいは個別に実行される処理をも含むものである。
【0175】
【発明の効果】
以上のように、本発明によれば、他の装置より供給されたパケットデータを取得することができる。特に、より好適にパケットデータを取得し、データの再生を行うことができる。
【図面の簡単な説明】
【図1】本発明を適用したデータ伝送システムの基本的な構成例を示す図である。
【図2】図1のサーバの内部の構成例を示すブロック図である。
【図3】図1のクライアントの内部の構成例を示すブロック図である。
【図4】図1のサーバによるデータ伝送処理を説明するフローチャートである。
【図5】図1のサーバが生成するパケットの例を示す模式図である。
【図6】図1のデータ伝送システムにおいて、サーバより送信され、クライアントによって受信されるパケットの様子を示す模式図である。
【図7】図1のクライアントによるデータ受信処理を説明するフローチャートである。
【図8】図7のステップS29において実行されるデータパケット復元処理の例について説明するフローチャートである。
【図9】図7のステップS29において実行されるデータパケット復元処理の他の例について説明するフローチャートである。
【符号の説明】
1 サーバ, 2 ネットワーク, 3−1および3−2 クライアント, 14 パケット生成部, 64 データ再生部, 65 パケット復元部, 101 データパケット, 102 リードソロモン符号冗長パケット, 103
EOR冗長パケット
Claims (12)
- 他の情報処理装置から配信用データを受信する情報処理装置において、
前記他の情報処理装置により送信された、前記配信用データのデータパケット、複数の前記データパケットに含まれる各データに基づいて生成されたリードソロモン符号を含む第1の冗長パケット、並びに、複数の前記データパケットに含まれる各データの排他的論理和演算結果を含む第2の冗長パケットを受信する受信手段と、
前記受信手段により受信できなかった前記データパケットを、前記受信手段により受信された前記第1の冗長パケットを用いて復元可能であるか否かを判定する可能性判定手段と、
前記可能性判定手段による判定結果に基づいて、復元可能である場合、前記受信手段により受信された前記データパケットおよび前記第1の冗長パケットを用いて、前記受信手段により受信できなかった前記データパケットを復元する第1の復元手段と、
前記可能性判定手段による判定結果に基づいて、復元不可能である場合、前記受信手段により受信された前記データパケットおよび前記第2の冗長パケットを用いて、前記受信手段により受信できなかった前記データパケットを復元する第2の復元手段と
を備えることを特徴とする情報処理装置。 - 前記第1の冗長パケットは、所定の大きさに分割された前記配信用データであるブロック毎に、同一の前記ブロックに対応する全ての前記データパケットを用いて生成され、
前記第2の冗長パケットは、同一の前記ブロックに対応する、任意に選択された複数の前記データパケットを用いて、前記ブロック毎に生成される
ことを特徴とする請求項1に記載の情報処理装置。 - 前記データパケット、前記第1の冗長パケット、および前記第2の冗長パケットは、前記ブロック単位で前記他の情報処理装置より送信される
ことを特徴とする請求項2に記載の情報処理装置。 - 前記受信手段は、同一の前記ブロックの前記データパケット、前記第1の冗長パケット、および前記第2の冗長パケットの受信処理が完了したか否かを監視する監視手段をさらに備える
ことを特徴とする請求項3に記載の情報処理装置。 - 前記受信手段により受信できなかった前記データパケットが存在するか否かを判定する存在判定手段をさらに備える
ことを特徴とする請求項1に記載の情報処理装置。 - 前記第2の冗長パケットの生成に関する情報を前記他の情報処理装置と共有する
ことを特徴とする請求項1に記載の情報処理装置。 - 前記可能性判定手段は、前記受信手段により受信できなかった前記データパケットの数と、前記受信手段により受信された前記第1の冗長パケットの数とを比較して、前記受信手段により受信できなかった前記データパケットを復元可能であるか否かを判定する
ことを特徴とする請求項1に記載の情報処理装置。 - 前記第1の復元手段は、前記第1の冗長パケットに含まれる前記リードソロモン符号を復号することによって、前記受信手段により受信できなかった前記データパケットを復元する
ことを特徴とする請求項1に記載の情報処理装置。 - 前記第2の復元手段は、値が0でない係数を選択するための処理方法であるピボット選択を用いたガウス消去法を用いて、前記受信手段により受信された前記データパケットおよび前記第2の冗長パケットに基づいて生成された連立一次方程式を解くことによって、前記受信手段により受信できなかった前記データパケットを復元する
ことを特徴とする請求項1に記載の情報処理装置。 - 前記復元手段は、前記行列の所定の列について値が0でない係数を含む方程式のうち、隣り合う方程式同士で各項毎に排他的論理和を演算する応用ガウス消去法を用いて、前記受信手段により受信された前記データパケットおよび前記第2の冗長パケットに基づいて生成された連立一次方程式を解くことによって、前記受信手段により受信できなかった前記データパケットを復元する
ことを特徴とする請求項1に記載の情報処理装置。 - 他の情報処理装置から配信用データを受信する情報処理装置の情報処理方法であって、
前記他の情報処理装置により送信された、前記配信用データのデータパケット、複数の前記データパケットに含まれる各データに基づいて生成されたリードソロモン符号を含む第1の冗長パケット、並びに、複数の前記データパケットに含まれる各データの排他的論理和演算結果を含む第2の冗長パケットの受信を制御する受信制御ステップと、
前記受信制御ステップの処理により受信できなかった前記データパケットを、前記受信制御ステップの処理により受信された前記第1の冗長パケットを用いて復元可能であるか否かを判定する可能性判定ステップと、
前記可能性判定ステップの処理による判定結果に基づいて、復元可能である場合、前記受信制御ステップの処理により受信された前記データパケットおよび前記第1の冗長パケットを用いて、前記受信制御ステップの処理により受信できなかった前記データパケットを復元する第1の復元ステップと、
前記可能性判定ステップの処理による判定結果に基づいて、復元不可能である場合、前記受信制御ステップの処理により受信された前記データパケットおよび前記第2の冗長パケットを用いて、前記受信制御ステップの処理により受信できなかった前記データパケットを復元する第2の復元ステップと
を含むことを特徴とする情報処理方法。 - 他の情報処理装置から配信用データを受信する処理をコンピュータに行わせるプログラムにおいて、
前記他の情報処理装置により送信された、前記配信用データのデータパケット、複数の前記データパケットに含まれる各データに基づいて生成されたリードソロモン符号を含む第1の冗長パケット、並びに、複数の前記データパケットに含まれる各データの排他的論理和演算結果を含む第2の冗長パケットの受信を制御する受信制御ステップと、
前記受信制御ステップの処理により受信できなかった前記データパケットを、前記受信制御ステップの処理により受信された前記第1の冗長パケットを用いて復元可能であるか否かを判定する可能性判定ステップと、
前記可能性判定ステップの処理による判定結果に基づいて、復元可能である場合、前記受信制御ステップの処理により受信された前記データパケットおよび前記第1の冗長パケットを用いて、前記受信制御ステップの処理により受信できなかった前記データパケットを復元する第1の復元ステップと、
前記可能性判定ステップの処理による判定結果に基づいて、復元不可能である場合、前記受信制御ステップの処理により受信された前記データパケットおよび前記第2の冗長パケットを用いて、前記受信制御ステップの処理により受信できなかった前記データパケットを復元する第2の復元ステップと
を含むことを特徴とするプログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002328556A JP2004165922A (ja) | 2002-11-12 | 2002-11-12 | 情報処理装置および方法、並びにプログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2002328556A JP2004165922A (ja) | 2002-11-12 | 2002-11-12 | 情報処理装置および方法、並びにプログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004165922A true JP2004165922A (ja) | 2004-06-10 |
Family
ID=32806834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002328556A Withdrawn JP2004165922A (ja) | 2002-11-12 | 2002-11-12 | 情報処理装置および方法、並びにプログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2004165922A (ja) |
Cited By (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2008546361A (ja) * | 2005-06-10 | 2008-12-18 | デジタル ファウンテン, インコーポレイテッド | 前方エラー訂正(fec)符号およびストリーミング |
JP2011078113A (ja) * | 2004-07-27 | 2011-04-14 | Nokia Siemens Networks Gmbh & Co Kg | メディアコンテンツをストリーミングする方法および復号化方法並びに符号化装置および復号化装置並びにストリーミングシステム |
USRE43741E1 (en) | 2002-10-05 | 2012-10-16 | Qualcomm Incorporated | Systematic encoding and decoding of chain reaction codes |
US8806050B2 (en) | 2010-08-10 | 2014-08-12 | Qualcomm Incorporated | Manifest file updates for network streaming of coded multimedia data |
US8887020B2 (en) | 2003-10-06 | 2014-11-11 | Digital Fountain, Inc. | Error-correcting multi-stage code generator and decoder for communication systems having single transmitters or multiple transmitters |
US8958375B2 (en) | 2011-02-11 | 2015-02-17 | Qualcomm Incorporated | Framing for an improved radio link protocol including FEC |
US9136983B2 (en) | 2006-02-13 | 2015-09-15 | Digital Fountain, Inc. | Streaming and buffering using variable FEC overhead and protection periods |
US9136878B2 (en) | 2004-05-07 | 2015-09-15 | Digital Fountain, Inc. | File download and streaming system |
US9178535B2 (en) | 2006-06-09 | 2015-11-03 | Digital Fountain, Inc. | Dynamic stream interleaving and sub-stream based delivery |
US9191151B2 (en) | 2006-06-09 | 2015-11-17 | Qualcomm Incorporated | Enhanced block-request streaming using cooperative parallel HTTP and forward error correction |
US9237101B2 (en) | 2007-09-12 | 2016-01-12 | Digital Fountain, Inc. | Generating and communicating source identification information to enable reliable communications |
US9236976B2 (en) | 2001-12-21 | 2016-01-12 | Digital Fountain, Inc. | Multi stage code generator and decoder for communication systems |
US9240810B2 (en) | 2002-06-11 | 2016-01-19 | Digital Fountain, Inc. | Systems and processes for decoding chain reaction codes through inactivation |
US9246633B2 (en) | 1998-09-23 | 2016-01-26 | Digital Fountain, Inc. | Information additive code generator and decoder for communication systems |
US9253233B2 (en) | 2011-08-31 | 2016-02-02 | Qualcomm Incorporated | Switch signaling methods providing improved switching between representations for adaptive HTTP streaming |
US9264069B2 (en) | 2006-05-10 | 2016-02-16 | Digital Fountain, Inc. | Code generator and decoder for communications systems operating using hybrid codes to allow for multiple efficient uses of the communications systems |
US9270414B2 (en) | 2006-02-21 | 2016-02-23 | Digital Fountain, Inc. | Multiple-field based code generator and decoder for communications systems |
US9270299B2 (en) | 2011-02-11 | 2016-02-23 | Qualcomm Incorporated | Encoding and decoding using elastic codes with flexible source block mapping |
US9281847B2 (en) | 2009-02-27 | 2016-03-08 | Qualcomm Incorporated | Mobile reception of digital video broadcasting—terrestrial services |
US9288010B2 (en) | 2009-08-19 | 2016-03-15 | Qualcomm Incorporated | Universal file delivery methods for providing unequal error protection and bundled file delivery services |
US9294226B2 (en) | 2012-03-26 | 2016-03-22 | Qualcomm Incorporated | Universal object delivery and template-based file delivery |
US9380096B2 (en) | 2006-06-09 | 2016-06-28 | Qualcomm Incorporated | Enhanced block-request streaming system for handling low-latency streaming |
US9386064B2 (en) | 2006-06-09 | 2016-07-05 | Qualcomm Incorporated | Enhanced block-request streaming using URL templates and construction rules |
US9419749B2 (en) | 2009-08-19 | 2016-08-16 | Qualcomm Incorporated | Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes |
US9432433B2 (en) | 2006-06-09 | 2016-08-30 | Qualcomm Incorporated | Enhanced block-request streaming system using signaling or block creation |
US9602802B2 (en) | 2010-07-21 | 2017-03-21 | Qualcomm Incorporated | Providing frame packing type information for video coding |
US9843844B2 (en) | 2011-10-05 | 2017-12-12 | Qualcomm Incorporated | Network streaming of media data |
US9917874B2 (en) | 2009-09-22 | 2018-03-13 | Qualcomm Incorporated | Enhanced block-request streaming using block partitioning or request controls for improved client-side handling |
JP2018198358A (ja) * | 2017-05-23 | 2018-12-13 | 株式会社ダイテック | 誤り訂正プログラム、及び、誤り訂正装置 |
JP2022019960A (ja) * | 2017-10-31 | 2022-01-27 | パナソニックIpマネジメント株式会社 | 受信装置、送信装置、受信方法及び送信方法 |
-
2002
- 2002-11-12 JP JP2002328556A patent/JP2004165922A/ja not_active Withdrawn
Cited By (42)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9246633B2 (en) | 1998-09-23 | 2016-01-26 | Digital Fountain, Inc. | Information additive code generator and decoder for communication systems |
US9236976B2 (en) | 2001-12-21 | 2016-01-12 | Digital Fountain, Inc. | Multi stage code generator and decoder for communication systems |
US9240810B2 (en) | 2002-06-11 | 2016-01-19 | Digital Fountain, Inc. | Systems and processes for decoding chain reaction codes through inactivation |
USRE43741E1 (en) | 2002-10-05 | 2012-10-16 | Qualcomm Incorporated | Systematic encoding and decoding of chain reaction codes |
US9236885B2 (en) | 2002-10-05 | 2016-01-12 | Digital Fountain, Inc. | Systematic encoding and decoding of chain reaction codes |
US8887020B2 (en) | 2003-10-06 | 2014-11-11 | Digital Fountain, Inc. | Error-correcting multi-stage code generator and decoder for communication systems having single transmitters or multiple transmitters |
US9136878B2 (en) | 2004-05-07 | 2015-09-15 | Digital Fountain, Inc. | File download and streaming system |
US9236887B2 (en) | 2004-05-07 | 2016-01-12 | Digital Fountain, Inc. | File download and streaming system |
JP2011078113A (ja) * | 2004-07-27 | 2011-04-14 | Nokia Siemens Networks Gmbh & Co Kg | メディアコンテンツをストリーミングする方法および復号化方法並びに符号化装置および復号化装置並びにストリーミングシステム |
JP2008546361A (ja) * | 2005-06-10 | 2008-12-18 | デジタル ファウンテン, インコーポレイテッド | 前方エラー訂正(fec)符号およびストリーミング |
US9136983B2 (en) | 2006-02-13 | 2015-09-15 | Digital Fountain, Inc. | Streaming and buffering using variable FEC overhead and protection periods |
US9270414B2 (en) | 2006-02-21 | 2016-02-23 | Digital Fountain, Inc. | Multiple-field based code generator and decoder for communications systems |
US9264069B2 (en) | 2006-05-10 | 2016-02-16 | Digital Fountain, Inc. | Code generator and decoder for communications systems operating using hybrid codes to allow for multiple efficient uses of the communications systems |
US11477253B2 (en) | 2006-06-09 | 2022-10-18 | Qualcomm Incorporated | Enhanced block-request streaming system using signaling or block creation |
US9386064B2 (en) | 2006-06-09 | 2016-07-05 | Qualcomm Incorporated | Enhanced block-request streaming using URL templates and construction rules |
US9432433B2 (en) | 2006-06-09 | 2016-08-30 | Qualcomm Incorporated | Enhanced block-request streaming system using signaling or block creation |
US9380096B2 (en) | 2006-06-09 | 2016-06-28 | Qualcomm Incorporated | Enhanced block-request streaming system for handling low-latency streaming |
US9209934B2 (en) | 2006-06-09 | 2015-12-08 | Qualcomm Incorporated | Enhanced block-request streaming using cooperative parallel HTTP and forward error correction |
US9191151B2 (en) | 2006-06-09 | 2015-11-17 | Qualcomm Incorporated | Enhanced block-request streaming using cooperative parallel HTTP and forward error correction |
US9178535B2 (en) | 2006-06-09 | 2015-11-03 | Digital Fountain, Inc. | Dynamic stream interleaving and sub-stream based delivery |
US9237101B2 (en) | 2007-09-12 | 2016-01-12 | Digital Fountain, Inc. | Generating and communicating source identification information to enable reliable communications |
US9281847B2 (en) | 2009-02-27 | 2016-03-08 | Qualcomm Incorporated | Mobile reception of digital video broadcasting—terrestrial services |
US9288010B2 (en) | 2009-08-19 | 2016-03-15 | Qualcomm Incorporated | Universal file delivery methods for providing unequal error protection and bundled file delivery services |
US9876607B2 (en) | 2009-08-19 | 2018-01-23 | Qualcomm Incorporated | Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes |
US9419749B2 (en) | 2009-08-19 | 2016-08-16 | Qualcomm Incorporated | Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes |
US9660763B2 (en) | 2009-08-19 | 2017-05-23 | Qualcomm Incorporated | Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes |
US10855736B2 (en) | 2009-09-22 | 2020-12-01 | Qualcomm Incorporated | Enhanced block-request streaming using block partitioning or request controls for improved client-side handling |
US9917874B2 (en) | 2009-09-22 | 2018-03-13 | Qualcomm Incorporated | Enhanced block-request streaming using block partitioning or request controls for improved client-side handling |
US11743317B2 (en) | 2009-09-22 | 2023-08-29 | Qualcomm Incorporated | Enhanced block-request streaming using block partitioning or request controls for improved client-side handling |
US11770432B2 (en) | 2009-09-22 | 2023-09-26 | Qualcomm Incorporated | Enhanced block-request streaming system for handling low-latency streaming |
US9602802B2 (en) | 2010-07-21 | 2017-03-21 | Qualcomm Incorporated | Providing frame packing type information for video coding |
US9456015B2 (en) | 2010-08-10 | 2016-09-27 | Qualcomm Incorporated | Representation groups for network streaming of coded multimedia data |
US9319448B2 (en) | 2010-08-10 | 2016-04-19 | Qualcomm Incorporated | Trick modes for network streaming of coded multimedia data |
US8806050B2 (en) | 2010-08-10 | 2014-08-12 | Qualcomm Incorporated | Manifest file updates for network streaming of coded multimedia data |
US9270299B2 (en) | 2011-02-11 | 2016-02-23 | Qualcomm Incorporated | Encoding and decoding using elastic codes with flexible source block mapping |
US8958375B2 (en) | 2011-02-11 | 2015-02-17 | Qualcomm Incorporated | Framing for an improved radio link protocol including FEC |
US9253233B2 (en) | 2011-08-31 | 2016-02-02 | Qualcomm Incorporated | Switch signaling methods providing improved switching between representations for adaptive HTTP streaming |
US9843844B2 (en) | 2011-10-05 | 2017-12-12 | Qualcomm Incorporated | Network streaming of media data |
US9294226B2 (en) | 2012-03-26 | 2016-03-22 | Qualcomm Incorporated | Universal object delivery and template-based file delivery |
JP2018198358A (ja) * | 2017-05-23 | 2018-12-13 | 株式会社ダイテック | 誤り訂正プログラム、及び、誤り訂正装置 |
JP2022019960A (ja) * | 2017-10-31 | 2022-01-27 | パナソニックIpマネジメント株式会社 | 受信装置、送信装置、受信方法及び送信方法 |
JP7228797B2 (ja) | 2017-10-31 | 2023-02-27 | パナソニックIpマネジメント株式会社 | 受信装置及び受信方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004165922A (ja) | 情報処理装置および方法、並びにプログラム | |
JP5141197B2 (ja) | 符号化装置 | |
US7792982B2 (en) | System and method for distributing streaming content through cooperative networking | |
US7539925B2 (en) | Transmission apparatus and method, reception apparatus and method, storage medium, and program | |
JP4676833B2 (ja) | 拡張可能なメディアの分散ストリーミングのシステムおよび方法 | |
CN101594203B (zh) | 发送装置、发送方法和接收装置 | |
US10348454B2 (en) | Error resilience for interactive real-time multimedia application | |
JP5094546B2 (ja) | 通信装置、及び通信方法、プログラム | |
JP2006067072A (ja) | エラー訂正用データの生成方法及び生成装置並びに生成プログラム及び同プログラムを格納したコンピュータ読み取り可能な記録媒体 | |
US20120151291A1 (en) | Receiving apparatus and processing method for receiving apparatus | |
JP4506185B2 (ja) | 受信装置および方法、並びにプログラム | |
JP2003318744A (ja) | デジタルマルチメディアデータのエラー復元符号化、格納および送信 | |
JP2006262288A (ja) | 映像データの配信サーバおよび映像データ配信方法 | |
JP5344541B2 (ja) | データ送信装置、送信方法及びプログラム | |
US20120151261A1 (en) | Distribution apparatus and distribution method | |
US20080215949A1 (en) | Server and client for determining error restoration according to image data transmission, and method of determining error restoration according to image data transmission | |
JP4088956B2 (ja) | 情報処理装置 | |
JP6305398B2 (ja) | 送信機に関連する情報を用いたエラー回復のための方法及び装置 | |
US10116415B2 (en) | Transmission device, receiving device, transmission method, and receiving method | |
JP3927486B2 (ja) | ストリーミング配信装置、ストリーミング配信システム、及びストリーミング配信方法 | |
JP2007053745A (ja) | 受信機及びプログラム | |
JP6614145B2 (ja) | 受信装置、受信方法およびコンピュータプログラム | |
JP2023508744A (ja) | 複数の信頼性のないチャネルを介したパケット化データ通信 | |
KR101801565B1 (ko) | 통신 시스템에서 데이터 송수신 장치 및 방법 | |
CN114158089A (zh) | 音频传输方法、终端、电子设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A300 | Application deemed to be withdrawn because no request for examination was validly filed |
Free format text: JAPANESE INTERMEDIATE CODE: A300 Effective date: 20060207 |